@assistant-ui/react 0.11.4 → 0.11.6

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.
Files changed (106) hide show
  1. package/dist/client/AssistantClient.d.ts +2 -2
  2. package/dist/client/AssistantClient.d.ts.map +1 -1
  3. package/dist/client/AssistantClient.js +1 -2
  4. package/dist/client/AssistantClient.js.map +1 -1
  5. package/dist/client/ToolUIClient.d.ts +3 -2
  6. package/dist/client/ToolUIClient.d.ts.map +1 -1
  7. package/dist/client/ToolUIClient.js +1 -5
  8. package/dist/client/ToolUIClient.js.map +1 -1
  9. package/dist/client/types/ThreadList.d.ts +1 -1
  10. package/dist/client/types/ThreadList.d.ts.map +1 -1
  11. package/dist/context/providers/AttachmentProvider.js +3 -3
  12. package/dist/context/providers/AttachmentProvider.js.map +1 -1
  13. package/dist/context/providers/MessageProvider.d.ts.map +1 -1
  14. package/dist/context/providers/MessageProvider.js +2 -2
  15. package/dist/context/providers/MessageProvider.js.map +1 -1
  16. package/dist/context/providers/PartProvider.js +2 -2
  17. package/dist/context/providers/PartProvider.js.map +1 -1
  18. package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -1
  19. package/dist/context/providers/TextMessagePartProvider.js +6 -7
  20. package/dist/context/providers/TextMessagePartProvider.js.map +1 -1
  21. package/dist/context/providers/ThreadListItemProvider.d.ts.map +1 -1
  22. package/dist/context/providers/ThreadListItemProvider.js +5 -4
  23. package/dist/context/providers/ThreadListItemProvider.js.map +1 -1
  24. package/dist/context/react/AssistantApiContext.d.ts +3 -3
  25. package/dist/context/react/AssistantApiContext.d.ts.map +1 -1
  26. package/dist/context/react/AssistantApiContext.js +4 -3
  27. package/dist/context/react/AssistantApiContext.js.map +1 -1
  28. package/dist/context/react/hooks/useAssistantEvent.d.ts +2 -2
  29. package/dist/context/react/hooks/useAssistantEvent.d.ts.map +1 -1
  30. package/dist/context/react/hooks/useAssistantEvent.js.map +1 -1
  31. package/dist/context/react/index.d.ts +1 -0
  32. package/dist/context/react/index.d.ts.map +1 -1
  33. package/dist/context/react/index.js +2 -0
  34. package/dist/context/react/index.js.map +1 -1
  35. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -1
  36. package/dist/legacy-runtime/AssistantRuntimeProvider.js +1 -5
  37. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  38. package/dist/legacy-runtime/client/AttachmentRuntimeClient.d.ts +2 -4
  39. package/dist/legacy-runtime/client/AttachmentRuntimeClient.d.ts.map +1 -1
  40. package/dist/legacy-runtime/client/AttachmentRuntimeClient.js +10 -10
  41. package/dist/legacy-runtime/client/AttachmentRuntimeClient.js.map +1 -1
  42. package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts +3 -2
  43. package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts.map +1 -1
  44. package/dist/legacy-runtime/client/ComposerRuntimeClient.js +1 -5
  45. package/dist/legacy-runtime/client/ComposerRuntimeClient.js.map +1 -1
  46. package/dist/legacy-runtime/client/EventManagerRuntimeClient.d.ts +6 -7
  47. package/dist/legacy-runtime/client/EventManagerRuntimeClient.d.ts.map +1 -1
  48. package/dist/legacy-runtime/client/EventManagerRuntimeClient.js +11 -3
  49. package/dist/legacy-runtime/client/EventManagerRuntimeClient.js.map +1 -1
  50. package/dist/legacy-runtime/client/MessagePartRuntimeClient.d.ts +1 -1
  51. package/dist/legacy-runtime/client/MessagePartRuntimeClient.d.ts.map +1 -1
  52. package/dist/legacy-runtime/client/MessagePartRuntimeClient.js +10 -10
  53. package/dist/legacy-runtime/client/MessagePartRuntimeClient.js.map +1 -1
  54. package/dist/legacy-runtime/client/MessageRuntimeClient.d.ts +3 -3
  55. package/dist/legacy-runtime/client/MessageRuntimeClient.d.ts.map +1 -1
  56. package/dist/legacy-runtime/client/MessageRuntimeClient.js +31 -31
  57. package/dist/legacy-runtime/client/MessageRuntimeClient.js.map +1 -1
  58. package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.d.ts +2 -2
  59. package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.d.ts.map +1 -1
  60. package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.js +17 -17
  61. package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.js.map +1 -1
  62. package/dist/legacy-runtime/client/ThreadListRuntimeClient.d.ts +3 -2
  63. package/dist/legacy-runtime/client/ThreadListRuntimeClient.d.ts.map +1 -1
  64. package/dist/legacy-runtime/client/ThreadListRuntimeClient.js +2 -6
  65. package/dist/legacy-runtime/client/ThreadListRuntimeClient.js.map +1 -1
  66. package/dist/legacy-runtime/client/ThreadRuntimeClient.d.ts +3 -2
  67. package/dist/legacy-runtime/client/ThreadRuntimeClient.d.ts.map +1 -1
  68. package/dist/legacy-runtime/client/ThreadRuntimeClient.js +1 -5
  69. package/dist/legacy-runtime/client/ThreadRuntimeClient.js.map +1 -1
  70. package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  71. package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.js +0 -1
  72. package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.js.map +1 -1
  73. package/dist/types/EventTypes.d.ts +15 -7
  74. package/dist/types/EventTypes.d.ts.map +1 -1
  75. package/dist/types/EventTypes.js.map +1 -1
  76. package/dist/types/index.d.ts +1 -1
  77. package/dist/types/index.d.ts.map +1 -1
  78. package/dist/utils/tap-store/tap-api.d.ts +9 -1
  79. package/dist/utils/tap-store/tap-api.d.ts.map +1 -1
  80. package/dist/utils/tap-store/tap-api.js +12 -2
  81. package/dist/utils/tap-store/tap-api.js.map +1 -1
  82. package/package.json +1 -1
  83. package/src/client/AssistantClient.ts +7 -13
  84. package/src/client/ToolUIClient.ts +1 -6
  85. package/src/client/types/ThreadList.ts +1 -1
  86. package/src/context/providers/AttachmentProvider.tsx +3 -3
  87. package/src/context/providers/MessageProvider.tsx +3 -8
  88. package/src/context/providers/PartProvider.tsx +2 -2
  89. package/src/context/providers/TextMessagePartProvider.tsx +5 -7
  90. package/src/context/providers/ThreadListItemProvider.tsx +9 -16
  91. package/src/context/react/AssistantApiContext.tsx +11 -5
  92. package/src/context/react/hooks/useAssistantEvent.ts +4 -3
  93. package/src/context/react/index.ts +2 -0
  94. package/src/legacy-runtime/AssistantRuntimeProvider.tsx +1 -15
  95. package/src/legacy-runtime/client/AttachmentRuntimeClient.ts +10 -11
  96. package/src/legacy-runtime/client/ComposerRuntimeClient.ts +1 -6
  97. package/src/legacy-runtime/client/EventManagerRuntimeClient.ts +41 -18
  98. package/src/legacy-runtime/client/MessagePartRuntimeClient.ts +13 -14
  99. package/src/legacy-runtime/client/MessageRuntimeClient.ts +35 -36
  100. package/src/legacy-runtime/client/ThreadListItemRuntimeClient.ts +17 -18
  101. package/src/legacy-runtime/client/ThreadListRuntimeClient.ts +2 -7
  102. package/src/legacy-runtime/client/ThreadRuntimeClient.ts +1 -6
  103. package/src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.tsx +0 -1
  104. package/src/types/EventTypes.ts +23 -12
  105. package/src/types/index.ts +3 -1
  106. package/src/utils/tap-store/tap-api.ts +19 -2
@@ -2,7 +2,7 @@ import { Unsubscribe, ResourceElement } from "@assistant-ui/tap";
2
2
  import { ThreadListClientApi, ThreadListClientState } from "./types/ThreadList";
3
3
  import { AssistantRuntime } from "../legacy-runtime/runtime/AssistantRuntime";
4
4
  import { ModelContextProvider } from "../model-context";
5
- import { AssistantEventSelector, AssistantEvents } from "../types/EventTypes";
5
+ import { AssistantEvent, AssistantEventCallback } from "../types/EventTypes";
6
6
  import { ToolUIApi } from "./types/ToolUI";
7
7
  type AssistantClientProps = {
8
8
  threads: ResourceElement<{
@@ -58,7 +58,7 @@ export declare const useAssistantClient: (props: AssistantClientProps) => {
58
58
  });
59
59
  registerModelContextProvider(provider: ModelContextProvider): Unsubscribe;
60
60
  __internal_getRuntime(): AssistantRuntime | null;
61
- on<TEvent extends keyof AssistantEvents>(selector: AssistantEventSelector<TEvent>, callback: (e: AssistantEvents[TEvent]) => void): Unsubscribe;
61
+ on<TEvent extends AssistantEvent>(selector: import("..").AssistantEventSelector<TEvent>, callback: AssistantEventCallback<TEvent>): Unsubscribe;
62
62
  subscribe: (listener: () => void) => Unsubscribe;
63
63
  flushSync: () => void;
64
64
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantClient.d.ts","sourceRoot":"","sources":["../../src/client/AssistantClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAEX,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EACL,sBAAsB,EACtB,eAAe,EAGhB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,SAAS,EAAe,MAAM,gBAAgB,CAAC;AA8HxD,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,eAAe,CAAC;QACvB,KAAK,EAAE,qBAAqB,CAAC;QAC7B,GAAG,EAAE,mBAAmB,CAAC;KAC1B,CAAC,CAAC;IACH,4BAA4B,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,WAAW,CAAC;CAI/E,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CA5CnB,oBAAoB;;OAMxD,MAAM,SAAS,MAAM,eAAe,YAC3B,sBAAsB,CAAC,MAAM,CAAC,YAC9B,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,GAC7C,WAAW;;;CAsCjB,CAAC"}
1
+ {"version":3,"file":"AssistantClient.d.ts","sourceRoot":"","sources":["../../src/client/AssistantClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EAEX,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EACL,cAAc,EACd,sBAAsB,EAGvB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAAE,SAAS,EAAe,MAAM,gBAAgB,CAAC;AAwHxD,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,eAAe,CAAC;QACvB,KAAK,EAAE,qBAAqB,CAAC;QAC7B,GAAG,EAAE,mBAAmB,CAAC;KAC1B,CAAC,CAAC;IACH,4BAA4B,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,WAAW,CAAC;CAI/E,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2CAzCnB,oBAAoB;;;;;CA4C9D,CAAC"}
@@ -38,7 +38,7 @@ var AssistantStore = resource(
38
38
  }),
39
39
  [threads.state, toolUIs.state]
40
40
  );
41
- const api = tapApi({
41
+ return tapApi({
42
42
  getState: () => state,
43
43
  threads: threads.api,
44
44
  toolUIs: toolUIs.api,
@@ -46,7 +46,6 @@ var AssistantStore = resource(
46
46
  registerModelContextProvider,
47
47
  __internal_getRuntime: () => __internal_runtime ?? null
48
48
  });
49
- return tapMemo(() => ({ api }), [state]);
50
49
  }
51
50
  );
52
51
  var getClientFromStore = (client) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/AssistantClient.ts"],"sourcesContent":["import {\n tapMemo,\n resource,\n Unsubscribe,\n tapInlineResource,\n ResourceElement,\n tapResource,\n} from \"@assistant-ui/tap\";\nimport { ThreadListClientApi, ThreadListClientState } from \"./types/ThreadList\";\nimport { AssistantRuntime } from \"../legacy-runtime/runtime/AssistantRuntime\";\nimport { ModelContextProvider } from \"../model-context\";\nimport { asStore, Store, tapApi } from \"../utils/tap-store\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { useMemo } from \"react\";\nimport {\n AssistantEventSelector,\n AssistantEvents,\n checkEventScope,\n normalizeEventSelector,\n} from \"../types/EventTypes\";\nimport { EventManager } from \"../legacy-runtime/client/EventManagerRuntimeClient\";\nimport {\n AssistantApi,\n createAssistantApiField,\n} from \"../context/react/AssistantApiContext\";\nimport { ToolUIClient } from \"./ToolUIClient\";\nimport { withEventsProvider } from \"./EventContext\";\nimport { ToolUIApi, ToolUIState } from \"./types/ToolUI\";\n\ntype AssistantClientState = {\n readonly threads: ThreadListClientState;\n readonly toolUIs: ToolUIState;\n};\n\ntype AssistantClientApi = {\n getState(): AssistantClientState;\n\n readonly threads: ThreadListClientApi;\n readonly toolUIs: ToolUIApi;\n\n on<TEvent extends keyof AssistantEvents>(\n event: keyof AssistantEvents,\n callback: (e: AssistantEvents[TEvent]) => void,\n ): Unsubscribe;\n\n registerModelContextProvider(provider: ModelContextProvider): Unsubscribe;\n\n /** @internal */\n __internal_getRuntime(): AssistantRuntime | null;\n};\n\nconst AssistantStore = resource(\n ({\n threads: threadsEl,\n registerModelContextProvider,\n __internal_runtime,\n }: AssistantClientProps) => {\n const events = tapInlineResource(EventManager());\n\n const { threads, toolUIs } = withEventsProvider(events, () => {\n return {\n toolUIs: tapInlineResource(ToolUIClient()),\n threads: tapResource(threadsEl, [threadsEl]),\n };\n });\n\n const state = tapMemo<AssistantClientState>(\n () => ({\n threads: threads.state,\n toolUIs: toolUIs.state,\n }),\n [threads.state, toolUIs.state],\n );\n\n const api = tapApi<AssistantClientApi>({\n getState: () => state,\n\n threads: threads.api,\n toolUIs: toolUIs.api,\n on: events.on,\n\n registerModelContextProvider: registerModelContextProvider,\n __internal_getRuntime: () => __internal_runtime ?? null,\n });\n\n // notify the store of state changes\n return tapMemo(() => ({ api }), [state]);\n },\n);\n\nconst getClientFromStore = (client: Store<{ api: AssistantClientApi }>) => {\n const getItem = () => {\n return client.getState().api.threads.item(\"main\");\n };\n return {\n threads: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => client.getState().api.threads,\n }),\n toolUIs: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => client.getState().api.toolUIs,\n }),\n thread: createAssistantApiField({\n source: \"threads\",\n query: { type: \"main\" },\n get: () => client.getState().api.threads.thread(\"main\"),\n }),\n threadListItem: createAssistantApiField({\n source: \"threads\",\n query: { type: \"main\" },\n get: () => getItem(),\n }),\n composer: createAssistantApiField({\n source: \"thread\",\n query: {},\n get: () => client.getState().api.threads.thread(\"main\").composer,\n }),\n registerModelContextProvider(provider: ModelContextProvider) {\n return client.getState().api.registerModelContextProvider(provider);\n },\n __internal_getRuntime() {\n return client.getState().api.__internal_getRuntime();\n },\n on<TEvent extends keyof AssistantEvents>(\n selector: AssistantEventSelector<TEvent>,\n callback: (e: AssistantEvents[TEvent]) => void,\n ): Unsubscribe {\n const { event, scope } = normalizeEventSelector(selector);\n if (scope === \"*\") return client.getState().api.on(event, callback);\n\n if (\n checkEventScope(\"thread\", scope, event) ||\n checkEventScope(\"thread-list-item\", scope, event) ||\n checkEventScope(\"composer\", scope, event)\n ) {\n return client.getState().api.on(event, (e) => {\n if (e.threadId !== getItem().getState().id) return;\n callback(e);\n });\n }\n\n throw new Error(\n `Event scope is not available in this component: ${scope}`,\n );\n },\n subscribe: client.subscribe,\n flushSync: client.flushSync,\n } satisfies Partial<AssistantApi>;\n};\n\ntype AssistantClientProps = {\n threads: ResourceElement<{\n state: ThreadListClientState;\n api: ThreadListClientApi;\n }>;\n registerModelContextProvider: (provider: ModelContextProvider) => Unsubscribe;\n\n /** @internal */\n __internal_runtime?: AssistantRuntime;\n};\n\nexport const useAssistantClient = (props: AssistantClientProps) => {\n const client = useResource(asStore(AssistantStore(props)));\n return useMemo(() => getClientFromStore(client), [client]);\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/client/AssistantClient.ts"],"sourcesContent":["import {\n tapMemo,\n resource,\n Unsubscribe,\n tapInlineResource,\n ResourceElement,\n tapResource,\n} from \"@assistant-ui/tap\";\nimport { ThreadListClientApi, ThreadListClientState } from \"./types/ThreadList\";\nimport { AssistantRuntime } from \"../legacy-runtime/runtime/AssistantRuntime\";\nimport { ModelContextProvider } from \"../model-context\";\nimport { asStore, Store, tapApi } from \"../utils/tap-store\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { useMemo } from \"react\";\nimport {\n AssistantEvent,\n AssistantEventCallback,\n checkEventScope,\n normalizeEventSelector,\n} from \"../types/EventTypes\";\nimport { EventManager } from \"../legacy-runtime/client/EventManagerRuntimeClient\";\nimport {\n AssistantApi,\n createAssistantApiField,\n} from \"../context/react/AssistantApiContext\";\nimport { ToolUIClient } from \"./ToolUIClient\";\nimport { withEventsProvider } from \"./EventContext\";\nimport { ToolUIApi, ToolUIState } from \"./types/ToolUI\";\n\ntype AssistantClientState = {\n readonly threads: ThreadListClientState;\n readonly toolUIs: ToolUIState;\n};\n\ntype AssistantClientApi = {\n getState(): AssistantClientState;\n\n readonly threads: ThreadListClientApi;\n readonly toolUIs: ToolUIApi;\n\n on<TEvent extends AssistantEvent>(\n event: TEvent,\n callback: AssistantEventCallback<TEvent>,\n ): Unsubscribe;\n\n registerModelContextProvider(provider: ModelContextProvider): Unsubscribe;\n\n /** @internal */\n __internal_getRuntime(): AssistantRuntime | null;\n};\n\nconst AssistantStore = resource(\n ({\n threads: threadsEl,\n registerModelContextProvider,\n __internal_runtime,\n }: AssistantClientProps) => {\n const events = tapInlineResource(EventManager());\n\n const { threads, toolUIs } = withEventsProvider(events, () => {\n return {\n toolUIs: tapInlineResource(ToolUIClient()),\n threads: tapResource(threadsEl, [threadsEl]),\n };\n });\n\n const state = tapMemo<AssistantClientState>(\n () => ({\n threads: threads.state,\n toolUIs: toolUIs.state,\n }),\n [threads.state, toolUIs.state],\n );\n\n return tapApi<AssistantClientApi>({\n getState: () => state,\n\n threads: threads.api,\n toolUIs: toolUIs.api,\n on: events.on,\n\n registerModelContextProvider: registerModelContextProvider,\n __internal_getRuntime: () => __internal_runtime ?? null,\n });\n },\n);\n\nconst getClientFromStore = (client: Store<{ api: AssistantClientApi }>) => {\n const getItem = () => {\n return client.getState().api.threads.item(\"main\");\n };\n return {\n threads: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => client.getState().api.threads,\n }),\n toolUIs: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => client.getState().api.toolUIs,\n }),\n thread: createAssistantApiField({\n source: \"threads\",\n query: { type: \"main\" },\n get: () => client.getState().api.threads.thread(\"main\"),\n }),\n threadListItem: createAssistantApiField({\n source: \"threads\",\n query: { type: \"main\" },\n get: () => getItem(),\n }),\n composer: createAssistantApiField({\n source: \"thread\",\n query: {},\n get: () => client.getState().api.threads.thread(\"main\").composer,\n }),\n registerModelContextProvider(provider: ModelContextProvider) {\n return client.getState().api.registerModelContextProvider(provider);\n },\n __internal_getRuntime() {\n return client.getState().api.__internal_getRuntime();\n },\n on(selector, callback) {\n const { event, scope } = normalizeEventSelector(selector);\n if (scope === \"*\") return client.getState().api.on(event, callback);\n\n if (\n checkEventScope(\"thread\", scope, event) ||\n checkEventScope(\"thread-list-item\", scope, event) ||\n checkEventScope(\"composer\", scope, event)\n ) {\n return client.getState().api.on(event, (e) => {\n if (e.threadId !== getItem().getState().id) return;\n callback(e);\n });\n }\n\n throw new Error(\n `Event scope is not available in this component: ${scope}`,\n );\n },\n subscribe: client.subscribe,\n flushSync: client.flushSync,\n } satisfies Partial<AssistantApi>;\n};\n\ntype AssistantClientProps = {\n threads: ResourceElement<{\n state: ThreadListClientState;\n api: ThreadListClientApi;\n }>;\n registerModelContextProvider: (provider: ModelContextProvider) => Unsubscribe;\n\n /** @internal */\n __internal_runtime?: AssistantRuntime;\n};\n\nexport const useAssistantClient = (props: AssistantClientProps) => {\n const client = useResource(asStore(AssistantStore(props)));\n return useMemo(() => getClientFromStore(client), [client]);\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +1,7 @@
1
- import { ToolUIState, ToolUIApi } from "./types/ToolUI";
1
+ import { ToolUIApi } from "./types/ToolUI";
2
2
  export declare const ToolUIClient: import("@assistant-ui/tap").ResourceElementConstructor<{
3
- state: ToolUIState;
3
+ key: string | undefined;
4
+ state: any;
4
5
  api: ToolUIApi;
5
6
  }, undefined>;
6
7
  //# sourceMappingURL=ToolUIClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToolUIClient.d.ts","sourceRoot":"","sources":["../../src/client/ToolUIClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,YAAY;;;aA6BvB,CAAC"}
1
+ {"version":3,"file":"ToolUIClient.d.ts","sourceRoot":"","sources":["../../src/client/ToolUIClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,YAAY;;;;aAwBvB,CAAC"}
@@ -3,7 +3,7 @@ import { resource, tapState } from "@assistant-ui/tap";
3
3
  import { tapApi } from "../utils/tap-store/index.js";
4
4
  var ToolUIClient = resource(() => {
5
5
  const [state, setState] = tapState(() => ({}));
6
- const api = tapApi({
6
+ return tapApi({
7
7
  getState: () => state,
8
8
  setToolUI: (toolName, render) => {
9
9
  setState((prev) => {
@@ -22,10 +22,6 @@ var ToolUIClient = resource(() => {
22
22
  };
23
23
  }
24
24
  });
25
- return {
26
- state,
27
- api
28
- };
29
25
  });
30
26
  export {
31
27
  ToolUIClient
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/client/ToolUIClient.ts"],"sourcesContent":["import { resource, tapState } from \"@assistant-ui/tap\";\nimport { tapApi } from \"../utils/tap-store\";\nimport { ToolUIState, ToolUIApi } from \"./types/ToolUI\";\n\nexport const ToolUIClient = resource(() => {\n const [state, setState] = tapState<ToolUIState>(() => ({}));\n\n const api = tapApi<ToolUIApi>({\n getState: () => state,\n\n setToolUI: (toolName, render) => {\n setState((prev) => {\n return {\n ...prev,\n [toolName]: [...(prev[toolName] ?? []), render],\n };\n });\n\n return () => {\n setState((prev) => {\n return {\n ...prev,\n [toolName]: prev[toolName]?.filter((r) => r !== render) ?? [],\n };\n });\n };\n },\n });\n\n return {\n state,\n api,\n };\n});\n"],"mappings":";AAAA,SAAS,UAAU,gBAAgB;AACnC,SAAS,cAAc;AAGhB,IAAM,eAAe,SAAS,MAAM;AACzC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,OAAO,CAAC,EAAE;AAE1D,QAAM,MAAM,OAAkB;AAAA,IAC5B,UAAU,MAAM;AAAA,IAEhB,WAAW,CAAC,UAAU,WAAW;AAC/B,eAAS,CAAC,SAAS;AACjB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,CAAC,QAAQ,GAAG,CAAC,GAAI,KAAK,QAAQ,KAAK,CAAC,GAAI,MAAM;AAAA,QAChD;AAAA,MACF,CAAC;AAED,aAAO,MAAM;AACX,iBAAS,CAAC,SAAS;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,CAAC,QAAQ,GAAG,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../src/client/ToolUIClient.ts"],"sourcesContent":["import { resource, tapState } from \"@assistant-ui/tap\";\nimport { tapApi } from \"../utils/tap-store\";\nimport { ToolUIState, ToolUIApi } from \"./types/ToolUI\";\n\nexport const ToolUIClient = resource(() => {\n const [state, setState] = tapState<ToolUIState>(() => ({}));\n\n return tapApi<ToolUIApi>({\n getState: () => state,\n\n setToolUI: (toolName, render) => {\n setState((prev) => {\n return {\n ...prev,\n [toolName]: [...(prev[toolName] ?? []), render],\n };\n });\n\n return () => {\n setState((prev) => {\n return {\n ...prev,\n [toolName]: prev[toolName]?.filter((r) => r !== render) ?? [],\n };\n });\n };\n },\n });\n});\n"],"mappings":";AAAA,SAAS,UAAU,gBAAgB;AACnC,SAAS,cAAc;AAGhB,IAAM,eAAe,SAAS,MAAM;AACzC,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,OAAO,CAAC,EAAE;AAE1D,SAAO,OAAkB;AAAA,IACvB,UAAU,MAAM;AAAA,IAEhB,WAAW,CAAC,UAAU,WAAW;AAC/B,eAAS,CAAC,SAAS;AACjB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,CAAC,QAAQ,GAAG,CAAC,GAAI,KAAK,QAAQ,KAAK,CAAC,GAAI,MAAM;AAAA,QAChD;AAAA,MACF,CAAC;AAED,aAAO,MAAM;AACX,iBAAS,CAAC,SAAS;AACjB,iBAAO;AAAA,YACL,GAAG;AAAA,YACH,CAAC,QAAQ,GAAG,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC;AAAA,UAC9D;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;","names":[]}
@@ -2,7 +2,7 @@ import { ThreadListItemClientState, ThreadListItemClientApi } from "./ThreadList
2
2
  import { ThreadClientApi, ThreadClientState } from "./Thread";
3
3
  export type ThreadListClientState = {
4
4
  readonly mainThreadId: string;
5
- readonly newThreadId: string | undefined;
5
+ readonly newThreadId: string | null;
6
6
  readonly isLoading: boolean;
7
7
  readonly threadIds: readonly string[];
8
8
  readonly archivedThreadIds: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadList.d.ts","sourceRoot":"","sources":["../../../src/client/types/ThreadList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAE3D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,IAAI,qBAAqB,CAAC;IAElC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,iBAAiB,IAAI,IAAI,CAAC;IAC1B,IAAI,CACF,iBAAiB,EACb,MAAM,GACN;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACd;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GACxC,uBAAuB,CAAC;IAE3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC;CAC3C,CAAC"}
1
+ {"version":3,"file":"ThreadList.d.ts","sourceRoot":"","sources":["../../../src/client/types/ThreadList.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAE9C,QAAQ,CAAC,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAE3D,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,IAAI,qBAAqB,CAAC;IAElC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,iBAAiB,IAAI,IAAI,CAAC;IAC1B,IAAI,CACF,iBAAiB,EACb,MAAM,GACN;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACd;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GACxC,uBAAuB,CAAC;IAE3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC;CAC3C,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // src/context/providers/AttachmentProvider.tsx
4
4
  import { useMemo } from "react";
5
5
  import {
6
- AssistantApiProvider,
6
+ AssistantProvider,
7
7
  useAssistantApi,
8
8
  createAssistantApiField
9
9
  } from "../react/AssistantApiContext.js";
@@ -19,7 +19,7 @@ var MessageAttachmentByIndexProvider = ({ index, children }) => {
19
19
  })
20
20
  };
21
21
  }, [api, index]);
22
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api: api2, children });
22
+ return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
23
23
  };
24
24
  var ComposerAttachmentByIndexProvider = ({ index, children }) => {
25
25
  const api = useAssistantApi();
@@ -32,7 +32,7 @@ var ComposerAttachmentByIndexProvider = ({ index, children }) => {
32
32
  })
33
33
  };
34
34
  }, [api, index]);
35
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api: api2, children });
35
+ return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
36
36
  };
37
37
  export {
38
38
  ComposerAttachmentByIndexProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/providers/AttachmentProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\n\nimport {\n AssistantApi,\n AssistantApiProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\n\nexport const MessageAttachmentByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n return {\n attachment: createAssistantApiField({\n source: \"message\",\n query: { type: \"index\", index },\n get: () => api.message().attachment({ index }),\n }),\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;\n};\n\nexport const ComposerAttachmentByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n return {\n attachment: createAssistantApiField({\n source: \"composer\",\n query: { type: \"index\", index },\n get: () => api.composer().attachment({ index }),\n }),\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AAEzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAkBE;AAhBF,IAAM,mCAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,YAAY,wBAAwB;AAAA,QAClC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,IAAI,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,wBAAqB,KAAK,MAAO,UAAS;AACpD;AAEO,IAAM,oCAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,YAAY,wBAAwB;AAAA,QAClC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,IAAI,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,wBAAqB,KAAK,MAAO,UAAS;AACpD;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/providers/AttachmentProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\n\nimport {\n AssistantApi,\n AssistantProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\n\nexport const MessageAttachmentByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n return {\n attachment: createAssistantApiField({\n source: \"message\",\n query: { type: \"index\", index },\n get: () => api.message().attachment({ index }),\n }),\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantProvider api={api2}>{children}</AssistantProvider>;\n};\n\nexport const ComposerAttachmentByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n return {\n attachment: createAssistantApiField({\n source: \"composer\",\n query: { type: \"index\", index },\n get: () => api.composer().attachment({ index }),\n }),\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantProvider api={api2}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AAEzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAkBE;AAhBF,IAAM,mCAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,YAAY,wBAAwB;AAAA,QAClC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,IAAI,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,MAC/C,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,qBAAkB,KAAK,MAAO,UAAS;AACjD;AAEO,IAAM,oCAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,YAAY,wBAAwB;AAAA,QAClC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,IAAI,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC;AAAA,MAChD,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,qBAAkB,KAAK,MAAO,UAAS;AACjD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/MessageProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAcjE,eAAO,MAAM,sBAAsB,EAAE,EAAE,CACrC,iBAAiB,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAqCH,CAAC"}
1
+ {"version":3,"file":"MessageProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/MessageProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAYjE,eAAO,MAAM,sBAAsB,EAAE,EAAE,CACrC,iBAAiB,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAkCH,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // src/context/providers/MessageProvider.tsx
4
4
  import { useMemo } from "react";
5
5
  import {
6
- AssistantApiProvider,
6
+ AssistantProvider,
7
7
  useAssistantApi,
8
8
  createAssistantApiField
9
9
  } from "../react/AssistantApiContext.js";
@@ -39,7 +39,7 @@ var MessageByIndexProvider = ({ index, children }) => {
39
39
  }
40
40
  };
41
41
  }, [api, index]);
42
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api: api2, children });
42
+ return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
43
43
  };
44
44
  export {
45
45
  MessageByIndexProvider
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApi,\n AssistantApiProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport { AssistantEvents, AssistantEventSelector } from \"../../types\";\nimport { Unsubscribe } from \"@assistant-ui/tap\";\nimport {\n checkEventScope,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\n\nexport const MessageByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n const getMessage = () => api.thread().message({ index });\n return {\n message: createAssistantApiField({\n source: \"thread\",\n query: { type: \"index\", index },\n get: () => getMessage(),\n }),\n composer: createAssistantApiField({\n source: \"message\",\n query: {},\n get: () => getMessage().composer,\n }),\n on<TEvent extends keyof AssistantEvents>(\n selector: AssistantEventSelector<TEvent>,\n callback: (e: AssistantEvents[TEvent]) => void,\n ): Unsubscribe {\n const { event, scope } = normalizeEventSelector(selector);\n if (\n !checkEventScope(\"composer\", scope, event) &&\n !checkEventScope(\"message\", scope, event)\n )\n return api.on(selector, callback);\n\n return api.on({ scope: \"thread\", event }, (e) => {\n if (e.messageId === getMessage().getState().id) {\n callback(e);\n }\n });\n },\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAyCE;AAvCF,IAAM,yBAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,aAAa,MAAM,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACvD,WAAO;AAAA,MACL,SAAS,wBAAwB;AAAA,QAC/B,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,WAAW;AAAA,MACxB,CAAC;AAAA,MACD,UAAU,wBAAwB;AAAA,QAChC,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,KAAK,MAAM,WAAW,EAAE;AAAA,MAC1B,CAAC;AAAA,MACD,GACE,UACA,UACa;AACb,cAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YACE,CAAC,gBAAgB,YAAY,OAAO,KAAK,KACzC,CAAC,gBAAgB,WAAW,OAAO,KAAK;AAExC,iBAAO,IAAI,GAAG,UAAU,QAAQ;AAElC,eAAO,IAAI,GAAG,EAAE,OAAO,UAAU,MAAM,GAAG,CAAC,MAAM;AAC/C,cAAI,EAAE,cAAc,WAAW,EAAE,SAAS,EAAE,IAAI;AAC9C,qBAAS,CAAC;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,wBAAqB,KAAK,MAAO,UAAS;AACpD;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApi,\n AssistantProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n checkEventScope,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\n\nexport const MessageByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n const getMessage = () => api.thread().message({ index });\n return {\n message: createAssistantApiField({\n source: \"thread\",\n query: { type: \"index\", index },\n get: () => getMessage(),\n }),\n composer: createAssistantApiField({\n source: \"message\",\n query: {},\n get: () => getMessage().composer,\n }),\n on(selector, callback) {\n const { event, scope } = normalizeEventSelector(selector);\n if (\n !checkEventScope(\"composer\", scope, event) &&\n !checkEventScope(\"message\", scope, event)\n )\n return api.on(selector, callback);\n\n return api.on({ scope: \"thread\", event }, (e) => {\n if (e.messageId === getMessage().getState().id) {\n callback(e);\n }\n });\n },\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantProvider api={api2}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAsCE;AApCF,IAAM,yBAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,aAAa,MAAM,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACvD,WAAO;AAAA,MACL,SAAS,wBAAwB;AAAA,QAC/B,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,WAAW;AAAA,MACxB,CAAC;AAAA,MACD,UAAU,wBAAwB;AAAA,QAChC,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,KAAK,MAAM,WAAW,EAAE;AAAA,MAC1B,CAAC;AAAA,MACD,GAAG,UAAU,UAAU;AACrB,cAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YACE,CAAC,gBAAgB,YAAY,OAAO,KAAK,KACzC,CAAC,gBAAgB,WAAW,OAAO,KAAK;AAExC,iBAAO,IAAI,GAAG,UAAU,QAAQ;AAElC,eAAO,IAAI,GAAG,EAAE,OAAO,UAAU,MAAM,GAAG,CAAC,MAAM;AAC/C,cAAI,EAAE,cAAc,WAAW,EAAE,SAAS,EAAE,IAAI;AAC9C,qBAAS,CAAC;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,qBAAkB,KAAK,MAAO,UAAS;AACjD;","names":[]}
@@ -3,7 +3,7 @@
3
3
  // src/context/providers/PartProvider.tsx
4
4
  import { useMemo } from "react";
5
5
  import {
6
- AssistantApiProvider,
6
+ AssistantProvider,
7
7
  useAssistantApi,
8
8
  createAssistantApiField
9
9
  } from "../react/AssistantApiContext.js";
@@ -19,7 +19,7 @@ var PartByIndexProvider = ({ index, children }) => {
19
19
  })
20
20
  };
21
21
  }, [api, index]);
22
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api: api2, children });
22
+ return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
23
23
  };
24
24
  export {
25
25
  PartByIndexProvider
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/providers/PartProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApi,\n AssistantApiProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\n\nexport const PartByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n return {\n part: createAssistantApiField({\n source: \"message\",\n query: { type: \"index\", index },\n get: () => api.message().part({ index }),\n }),\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAkBE;AAhBF,IAAM,sBAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,MAAM,wBAAwB;AAAA,QAC5B,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,wBAAqB,KAAK,MAAO,UAAS;AACpD;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/providers/PartProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApi,\n AssistantProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\n\nexport const PartByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n }>\n> = ({ index, children }) => {\n const api = useAssistantApi();\n const api2 = useMemo(() => {\n return {\n part: createAssistantApiField({\n source: \"message\",\n query: { type: \"index\", index },\n get: () => api.message().part({ index }),\n }),\n } satisfies Partial<AssistantApi>;\n }, [api, index]);\n\n return <AssistantProvider api={api2}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAkBE;AAhBF,IAAM,sBAIT,CAAC,EAAE,OAAO,SAAS,MAAM;AAC3B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO;AAAA,MACL,MAAM,wBAAwB;AAAA,QAC5B,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,MAAM;AAAA,QAC9B,KAAK,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,KAAK,KAAK,CAAC;AAEf,SAAO,oBAAC,qBAAkB,KAAK,MAAO,UAAS;AACjD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextMessagePartProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAqCjE,eAAO,MAAM,uBAAuB,EAAE,EAAE,CACtC,iBAAiB,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CAkBH,CAAC"}
1
+ {"version":3,"file":"TextMessagePartProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAmCjE,eAAO,MAAM,uBAAuB,EAAE,EAAE,CACtC,iBAAiB,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CAkBH,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // src/context/providers/TextMessagePartProvider.tsx
4
4
  import { useMemo } from "react";
5
5
  import {
6
- AssistantApiProvider,
6
+ AssistantProvider,
7
7
  createAssistantApiField
8
8
  } from "../react/AssistantApiContext.js";
9
9
  import { resource, tapMemo } from "@assistant-ui/tap";
@@ -20,14 +20,13 @@ var TextMessagePartClient = resource(
20
20
  }),
21
21
  [text, isRunning]
22
22
  );
23
- const api = tapApi({
23
+ return tapApi({
24
24
  getState: () => state,
25
25
  addToolResult: () => {
26
26
  throw new Error("Not supported");
27
27
  },
28
28
  __internal_getRuntime: () => null
29
29
  });
30
- return api;
31
30
  }
32
31
  );
33
32
  var TextMessagePartProvider = ({ text, isRunning = false, children }) => {
@@ -39,13 +38,13 @@ var TextMessagePartProvider = ({ text, isRunning = false, children }) => {
39
38
  part: createAssistantApiField({
40
39
  source: "root",
41
40
  query: {},
42
- get: () => store.getState()
41
+ get: () => store.getState().api
43
42
  }),
44
- subscribe: store.subscribe
45
- // flushSync: store.flushSync,
43
+ subscribe: store.subscribe,
44
+ flushSync: store.flushSync
46
45
  };
47
46
  }, [store]);
48
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api, children });
47
+ return /* @__PURE__ */ jsx(AssistantProvider, { api, children });
49
48
  };
50
49
  export {
51
50
  TextMessagePartProvider
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApiProvider,\n AssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { resource, tapMemo } from \"@assistant-ui/tap\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { asStore, tapApi } from \"../../utils/tap-store\";\n\nconst TextMessagePartClient = resource(\n ({ text, isRunning }: { text: string; isRunning: boolean }) => {\n const state = tapMemo<MessagePartClientState>(\n () => ({\n type: \"text\",\n text,\n status: isRunning ? { type: \"running\" } : { type: \"complete\" },\n }),\n [text, isRunning],\n );\n\n const api = tapApi<MessagePartClientApi>({\n getState: () => state,\n addToolResult: () => {\n throw new Error(\"Not supported\");\n },\n __internal_getRuntime: () => null,\n });\n\n return api;\n },\n);\n\nexport const TextMessagePartProvider: FC<\n PropsWithChildren<{\n text: string;\n isRunning?: boolean;\n }>\n> = ({ text, isRunning = false, children }) => {\n const store = useResource(\n asStore(TextMessagePartClient({ text, isRunning })),\n );\n const api = useMemo(() => {\n return {\n part: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => store.getState(),\n }),\n subscribe: store.subscribe,\n // flushSync: store.flushSync,\n } satisfies Partial<AssistantApi>;\n }, [store]);\n\n return <AssistantApiProvider api={api}>{children}</AssistantApiProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AAKP,SAAS,UAAU,eAAe;AAClC,SAAS,mBAAmB;AAC5B,SAAS,SAAS,cAAc;AA8CvB;AA5CT,IAAM,wBAAwB;AAAA,EAC5B,CAAC,EAAE,MAAM,UAAU,MAA4C;AAC7D,UAAM,QAAQ;AAAA,MACZ,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,QAAQ,YAAY,EAAE,MAAM,UAAU,IAAI,EAAE,MAAM,WAAW;AAAA,MAC/D;AAAA,MACA,CAAC,MAAM,SAAS;AAAA,IAClB;AAEA,UAAM,MAAM,OAA6B;AAAA,MACvC,UAAU,MAAM;AAAA,MAChB,eAAe,MAAM;AACnB,cAAM,IAAI,MAAM,eAAe;AAAA,MACjC;AAAA,MACA,uBAAuB,MAAM;AAAA,IAC/B,CAAC;AAED,WAAO;AAAA,EACT;AACF;AAEO,IAAM,0BAKT,CAAC,EAAE,MAAM,YAAY,OAAO,SAAS,MAAM;AAC7C,QAAM,QAAQ;AAAA,IACZ,QAAQ,sBAAsB,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,EACpD;AACA,QAAM,MAAM,QAAQ,MAAM;AACxB,WAAO;AAAA,MACL,MAAM,wBAAwB;AAAA,QAC5B,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,KAAK,MAAM,MAAM,SAAS;AAAA,MAC5B,CAAC;AAAA,MACD,WAAW,MAAM;AAAA;AAAA,IAEnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,oBAAC,wBAAqB,KAAW,UAAS;AACnD;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantProvider,\n AssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { resource, tapMemo } from \"@assistant-ui/tap\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { asStore, tapApi } from \"../../utils/tap-store\";\n\nconst TextMessagePartClient = resource(\n ({ text, isRunning }: { text: string; isRunning: boolean }) => {\n const state = tapMemo<MessagePartClientState>(\n () => ({\n type: \"text\",\n text,\n status: isRunning ? { type: \"running\" } : { type: \"complete\" },\n }),\n [text, isRunning],\n );\n\n return tapApi<MessagePartClientApi>({\n getState: () => state,\n addToolResult: () => {\n throw new Error(\"Not supported\");\n },\n __internal_getRuntime: () => null,\n });\n },\n);\n\nexport const TextMessagePartProvider: FC<\n PropsWithChildren<{\n text: string;\n isRunning?: boolean;\n }>\n> = ({ text, isRunning = false, children }) => {\n const store = useResource(\n asStore(TextMessagePartClient({ text, isRunning })),\n );\n const api = useMemo(() => {\n return {\n part: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => store.getState().api,\n }),\n subscribe: store.subscribe,\n flushSync: store.flushSync,\n } satisfies Partial<AssistantApi>;\n }, [store]);\n\n return <AssistantProvider api={api}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AAKP,SAAS,UAAU,eAAe;AAClC,SAAS,mBAAmB;AAC5B,SAAS,SAAS,cAAc;AA4CvB;AA1CT,IAAM,wBAAwB;AAAA,EAC5B,CAAC,EAAE,MAAM,UAAU,MAA4C;AAC7D,UAAM,QAAQ;AAAA,MACZ,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,QAAQ,YAAY,EAAE,MAAM,UAAU,IAAI,EAAE,MAAM,WAAW;AAAA,MAC/D;AAAA,MACA,CAAC,MAAM,SAAS;AAAA,IAClB;AAEA,WAAO,OAA6B;AAAA,MAClC,UAAU,MAAM;AAAA,MAChB,eAAe,MAAM;AACnB,cAAM,IAAI,MAAM,eAAe;AAAA,MACjC;AAAA,MACA,uBAAuB,MAAM;AAAA,IAC/B,CAAC;AAAA,EACH;AACF;AAEO,IAAM,0BAKT,CAAC,EAAE,MAAM,YAAY,OAAO,SAAS,MAAM;AAC7C,QAAM,QAAQ;AAAA,IACZ,QAAQ,sBAAsB,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,EACpD;AACA,QAAM,MAAM,QAAQ,MAAM;AACxB,WAAO;AAAA,MACL,MAAM,wBAAwB;AAAA,QAC5B,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,KAAK,MAAM,MAAM,SAAS,EAAE;AAAA,MAC9B,CAAC;AAAA,MACD,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,oBAAC,qBAAkB,KAAW,UAAS;AAChD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItemProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/ThreadListItemProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAcjE,eAAO,MAAM,6BAA6B,EAAE,EAAE,CAC5C,iBAAiB,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CA6BH,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,EAAE,CACzC,iBAAiB,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CA6BH,CAAC"}
1
+ {"version":3,"file":"ThreadListItemProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/ThreadListItemProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAYjE,eAAO,MAAM,6BAA6B,EAAE,EAAE,CAC5C,iBAAiB,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CA2BH,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,EAAE,CACzC,iBAAiB,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC,CA0BH,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // src/context/providers/ThreadListItemProvider.tsx
4
4
  import { useMemo } from "react";
5
5
  import {
6
- AssistantApiProvider,
6
+ AssistantProvider,
7
7
  useAssistantApi,
8
8
  createAssistantApiField
9
9
  } from "../react/AssistantApiContext.js";
@@ -24,7 +24,8 @@ var ThreadListItemByIndexProvider = ({ index, archived, children }) => {
24
24
  }),
25
25
  on(selector, callback) {
26
26
  const { event, scope } = normalizeEventSelector(selector);
27
- if (scope !== "thread-list-item") return api.on(selector, callback);
27
+ if (!checkEventScope("thread-list-item", scope, event))
28
+ return api.on(selector, callback);
28
29
  return api.on({ scope: "*", event }, (e) => {
29
30
  if (e.threadId === getItem().getState().id) {
30
31
  callback(e);
@@ -33,7 +34,7 @@ var ThreadListItemByIndexProvider = ({ index, archived, children }) => {
33
34
  }
34
35
  };
35
36
  }, [api, index, archived]);
36
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api: api2, children });
37
+ return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
37
38
  };
38
39
  var ThreadListItemByIdProvider = ({ id, children }) => {
39
40
  const api = useAssistantApi();
@@ -56,7 +57,7 @@ var ThreadListItemByIdProvider = ({ id, children }) => {
56
57
  }
57
58
  };
58
59
  }, [api, id]);
59
- return /* @__PURE__ */ jsx(AssistantApiProvider, { api: api2, children });
60
+ return /* @__PURE__ */ jsx(AssistantProvider, { api: api2, children });
60
61
  };
61
62
  export {
62
63
  ThreadListItemByIdProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/providers/ThreadListItemProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApi,\n AssistantApiProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport { AssistantEventSelector, AssistantEvents } from \"../../types\";\nimport { Unsubscribe } from \"@assistant-ui/tap\";\nimport {\n checkEventScope,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\n\nexport const ThreadListItemByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n archived: boolean;\n }>\n> = ({ index, archived, children }) => {\n const api = useAssistantApi();\n\n const api2 = useMemo(() => {\n const getItem = () => api.threads().item({ index, archived });\n return {\n threadListItem: createAssistantApiField({\n source: \"threads\",\n query: { type: \"index\", index, archived },\n get: () => getItem(),\n }),\n on<TEvent extends keyof AssistantEvents>(\n selector: AssistantEventSelector<TEvent>,\n callback: (e: AssistantEvents[TEvent]) => void,\n ): Unsubscribe {\n const { event, scope } = normalizeEventSelector(selector);\n if (scope !== \"thread-list-item\") return api.on(selector, callback);\n\n return api.on({ scope: \"*\", event }, (e: AssistantEvents[TEvent]) => {\n if (e.threadId === getItem().getState().id) {\n callback(e);\n }\n });\n },\n } satisfies Partial<AssistantApi>;\n }, [api, index, archived]);\n\n return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;\n};\n\nexport const ThreadListItemByIdProvider: FC<\n PropsWithChildren<{\n id: string;\n }>\n> = ({ id, children }) => {\n const api = useAssistantApi();\n\n const api2 = useMemo(() => {\n const getItem = () => api.threads().item({ id });\n return {\n threadListItem: createAssistantApiField({\n source: \"threads\",\n query: { type: \"id\", id },\n get: () => getItem(),\n }),\n on<TEvent extends keyof AssistantEvents>(\n selector: AssistantEventSelector<TEvent>,\n callback: (e: AssistantEvents[TEvent]) => void,\n ): Unsubscribe {\n const { event, scope } = normalizeEventSelector(selector);\n if (!checkEventScope(\"thread-list-item\", scope, event))\n return api.on(selector, callback);\n\n return api.on({ scope: \"*\", event }, (e: AssistantEvents[TEvent]) => {\n if (e.threadId !== getItem().getState().id) return;\n callback(e);\n });\n },\n } satisfies Partial<AssistantApi>;\n }, [api, id]);\n\n return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAkCE;AAhCF,IAAM,gCAKT,CAAC,EAAE,OAAO,UAAU,SAAS,MAAM;AACrC,QAAM,MAAM,gBAAgB;AAE5B,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,UAAU,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,OAAO,SAAS,CAAC;AAC5D,WAAO;AAAA,MACL,gBAAgB,wBAAwB;AAAA,QACtC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,OAAO,SAAS;AAAA,QACxC,KAAK,MAAM,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,GACE,UACA,UACa;AACb,cAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YAAI,UAAU,mBAAoB,QAAO,IAAI,GAAG,UAAU,QAAQ;AAElE,eAAO,IAAI,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,MAA+B;AACnE,cAAI,EAAE,aAAa,QAAQ,EAAE,SAAS,EAAE,IAAI;AAC1C,qBAAS,CAAC;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,OAAO,QAAQ,CAAC;AAEzB,SAAO,oBAAC,wBAAqB,KAAK,MAAO,UAAS;AACpD;AAEO,IAAM,6BAIT,CAAC,EAAE,IAAI,SAAS,MAAM;AACxB,QAAM,MAAM,gBAAgB;AAE5B,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,UAAU,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC;AAC/C,WAAO;AAAA,MACL,gBAAgB,wBAAwB;AAAA,QACtC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,MAAM,GAAG;AAAA,QACxB,KAAK,MAAM,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,GACE,UACA,UACa;AACb,cAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YAAI,CAAC,gBAAgB,oBAAoB,OAAO,KAAK;AACnD,iBAAO,IAAI,GAAG,UAAU,QAAQ;AAElC,eAAO,IAAI,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,MAA+B;AACnE,cAAI,EAAE,aAAa,QAAQ,EAAE,SAAS,EAAE,GAAI;AAC5C,mBAAS,CAAC;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,EAAE,CAAC;AAEZ,SAAO,oBAAC,wBAAqB,KAAK,MAAO,UAAS;AACpD;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/providers/ThreadListItemProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantApi,\n AssistantProvider,\n useAssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n checkEventScope,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\n\nexport const ThreadListItemByIndexProvider: FC<\n PropsWithChildren<{\n index: number;\n archived: boolean;\n }>\n> = ({ index, archived, children }) => {\n const api = useAssistantApi();\n\n const api2 = useMemo(() => {\n const getItem = () => api.threads().item({ index, archived });\n return {\n threadListItem: createAssistantApiField({\n source: \"threads\",\n query: { type: \"index\", index, archived },\n get: () => getItem(),\n }),\n on(selector, callback) {\n const { event, scope } = normalizeEventSelector(selector);\n if (!checkEventScope(\"thread-list-item\", scope, event))\n return api.on(selector, callback);\n\n return api.on({ scope: \"*\", event }, (e) => {\n if (e.threadId === getItem().getState().id) {\n callback(e);\n }\n });\n },\n } satisfies Partial<AssistantApi>;\n }, [api, index, archived]);\n\n return <AssistantProvider api={api2}>{children}</AssistantProvider>;\n};\n\nexport const ThreadListItemByIdProvider: FC<\n PropsWithChildren<{\n id: string;\n }>\n> = ({ id, children }) => {\n const api = useAssistantApi();\n\n const api2 = useMemo(() => {\n const getItem = () => api.threads().item({ id });\n return {\n threadListItem: createAssistantApiField({\n source: \"threads\",\n query: { type: \"id\", id },\n get: () => getItem(),\n }),\n on(selector, callback) {\n const { event, scope } = normalizeEventSelector(selector);\n if (!checkEventScope(\"thread-list-item\", scope, event))\n return api.on(selector, callback);\n\n return api.on({ scope: \"*\", event }, (e) => {\n if (e.threadId !== getItem().getState().id) return;\n callback(e);\n });\n },\n } satisfies Partial<AssistantApi>;\n }, [api, id]);\n\n return <AssistantProvider api={api2}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAgCE;AA9BF,IAAM,gCAKT,CAAC,EAAE,OAAO,UAAU,SAAS,MAAM;AACrC,QAAM,MAAM,gBAAgB;AAE5B,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,UAAU,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,OAAO,SAAS,CAAC;AAC5D,WAAO;AAAA,MACL,gBAAgB,wBAAwB;AAAA,QACtC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,SAAS,OAAO,SAAS;AAAA,QACxC,KAAK,MAAM,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,GAAG,UAAU,UAAU;AACrB,cAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YAAI,CAAC,gBAAgB,oBAAoB,OAAO,KAAK;AACnD,iBAAO,IAAI,GAAG,UAAU,QAAQ;AAElC,eAAO,IAAI,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,MAAM;AAC1C,cAAI,EAAE,aAAa,QAAQ,EAAE,SAAS,EAAE,IAAI;AAC1C,qBAAS,CAAC;AAAA,UACZ;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,OAAO,QAAQ,CAAC;AAEzB,SAAO,oBAAC,qBAAkB,KAAK,MAAO,UAAS;AACjD;AAEO,IAAM,6BAIT,CAAC,EAAE,IAAI,SAAS,MAAM;AACxB,QAAM,MAAM,gBAAgB;AAE5B,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,UAAU,MAAM,IAAI,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC;AAC/C,WAAO;AAAA,MACL,gBAAgB,wBAAwB;AAAA,QACtC,QAAQ;AAAA,QACR,OAAO,EAAE,MAAM,MAAM,GAAG;AAAA,QACxB,KAAK,MAAM,QAAQ;AAAA,MACrB,CAAC;AAAA,MACD,GAAG,UAAU,UAAU;AACrB,cAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD,YAAI,CAAC,gBAAgB,oBAAoB,OAAO,KAAK;AACnD,iBAAO,IAAI,GAAG,UAAU,QAAQ;AAElC,eAAO,IAAI,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,MAAM;AAC1C,cAAI,EAAE,aAAa,QAAQ,EAAE,SAAS,EAAE,GAAI;AAC5C,mBAAS,CAAC;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAAC,KAAK,EAAE,CAAC;AAEZ,SAAO,oBAAC,qBAAkB,KAAK,MAAO,UAAS;AACjD;","names":[]}
@@ -8,7 +8,7 @@ import { ComposerClientApi, ComposerClientState } from "../../client/types/Compo
8
8
  import { AttachmentClientApi, AttachmentClientState } from "../../client/types/Attachment";
9
9
  import { Unsubscribe } from "@assistant-ui/tap";
10
10
  import { ModelContextProvider } from "../../model-context";
11
- import { AssistantEventSelector, AssistantEvents } from "../../types/EventTypes";
11
+ import { AssistantEvent, AssistantEventCallback, AssistantEventSelector } from "../../types/EventTypes";
12
12
  import { ThreadListClientApi, ThreadListClientState } from "../../client/types/ThreadList";
13
13
  export type AssistantState = {
14
14
  readonly threads: ThreadListClientState;
@@ -86,7 +86,7 @@ export type AssistantApi = {
86
86
  attachment: AssistantApiField<AttachmentClientApi, AttachmentMeta>;
87
87
  subscribe(listener: () => void): Unsubscribe;
88
88
  flushSync(): void;
89
- on<TEvent extends keyof AssistantEvents>(event: AssistantEventSelector<TEvent>, callback: (e: AssistantEvents[TEvent]) => void): Unsubscribe;
89
+ on<TEvent extends AssistantEvent>(event: AssistantEventSelector<TEvent>, callback: AssistantEventCallback<TEvent>): Unsubscribe;
90
90
  registerModelContextProvider(provider: ModelContextProvider): void;
91
91
  };
92
92
  export declare const createAssistantApiField: <TApi, TMeta extends {
@@ -99,7 +99,7 @@ export declare const createAssistantApiField: <TApi, TMeta extends {
99
99
  query: Record<string, never>;
100
100
  })) => AssistantApiField<TApi, TMeta>;
101
101
  export declare const useAssistantApi: () => AssistantApi;
102
- export declare const AssistantApiProvider: FC<PropsWithChildren<{
102
+ export declare const AssistantProvider: FC<PropsWithChildren<{
103
103
  api: Partial<AssistantApi>;
104
104
  }>>;
105
105
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantApiContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/AssistantApiContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssistantApiContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/AssistantApiContext.tsx"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import {
9
9
  import {
10
10
  normalizeEventSelector
11
11
  } from "../../types/EventTypes.js";
12
+ import { ThreadViewportProvider } from "../providers/ThreadViewportProvider.js";
12
13
  import { jsx } from "react/jsx-runtime";
13
14
  var createAssistantApiField = (config) => {
14
15
  const fn = config.get;
@@ -136,13 +137,13 @@ var extendApi = (api, api2) => {
136
137
  flushSync: mergeFns(api.flushSync, api2FlushSync ?? NO_OP_FN)
137
138
  };
138
139
  };
139
- var AssistantApiProvider = ({ api: api2, children }) => {
140
+ var AssistantProvider = ({ api: api2, children }) => {
140
141
  const api = useAssistantApi();
141
142
  const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);
142
- return /* @__PURE__ */ jsx(AssistantApiContext, { value: extendedApi, children });
143
+ return /* @__PURE__ */ jsx(AssistantApiContext, { value: extendedApi, children: /* @__PURE__ */ jsx(ThreadViewportProvider, { children }) });
143
144
  };
144
145
  export {
145
- AssistantApiProvider,
146
+ AssistantProvider,
146
147
  createAssistantApiField,
147
148
  useAssistantApi
148
149
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/react/AssistantApiContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useMemo,\n} from \"react\";\n\nimport { ToolUIApi, ToolUIState, ToolUIMeta } from \"../../client/types/ToolUI\";\nimport {\n MessageClientApi,\n MessageClientState,\n} from \"../../client/types/Message\";\nimport {\n ThreadListItemClientApi,\n ThreadListItemClientState,\n} from \"../../client/types/ThreadListItem\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { ThreadClientApi, ThreadClientState } from \"../../client/types/Thread\";\nimport {\n ComposerClientApi,\n ComposerClientState,\n} from \"../../client/types/Composer\";\nimport {\n AttachmentClientApi,\n AttachmentClientState,\n} from \"../../client/types/Attachment\";\nimport { Unsubscribe } from \"@assistant-ui/tap\";\nimport { ModelContextProvider } from \"../../model-context\";\nimport { AssistantRuntime } from \"../../legacy-runtime/runtime/AssistantRuntime\";\nimport {\n AssistantEventSelector,\n AssistantEvents,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\nimport {\n ThreadListClientApi,\n ThreadListClientState,\n} from \"../../client/types/ThreadList\";\n\nexport type AssistantState = {\n readonly threads: ThreadListClientState;\n readonly toolUIs: ToolUIState;\n\n readonly threadListItem: ThreadListItemClientState;\n readonly thread: ThreadClientState;\n readonly composer: ComposerClientState;\n readonly message: MessageClientState;\n readonly part: MessagePartClientState;\n readonly attachment: AttachmentClientState;\n};\n\ntype AssistantApiField<\n TApi,\n TMeta extends { source: string | null; query: any },\n> = (() => TApi) & (TMeta | { source: null; query: Record<string, never> });\n\n// Meta types for each API method\ntype ThreadsMeta = {\n source: \"root\";\n query: Record<string, never>;\n};\n\ntype ThreadListItemMeta = {\n source: \"threads\";\n query:\n | { type: \"index\"; index: number; archived: boolean }\n | { type: \"main\" }\n | { type: \"id\"; id: string };\n};\n\ntype ThreadMeta = {\n source: \"threads\";\n query: { type: \"main\" };\n};\n\ntype ComposerMeta = {\n source: \"message\" | \"thread\";\n query: Record<string, never>;\n};\n\ntype MessageMeta = {\n source: \"thread\";\n query: { type: \"index\"; index: number };\n};\n\ntype PartMeta = {\n source: \"message\" | \"root\";\n query: { type: \"index\"; index: number } | Record<string, never>;\n};\n\ntype AttachmentMeta = {\n source: \"message\" | \"composer\";\n query: { type: \"index\"; index: number };\n};\n\nexport type AssistantApi = {\n threads: AssistantApiField<ThreadListClientApi, ThreadsMeta>;\n toolUIs: AssistantApiField<ToolUIApi, ToolUIMeta>;\n threadListItem: AssistantApiField<\n ThreadListItemClientApi,\n ThreadListItemMeta\n >;\n thread: AssistantApiField<ThreadClientApi, ThreadMeta>;\n composer: AssistantApiField<ComposerClientApi, ComposerMeta>;\n message: AssistantApiField<MessageClientApi, MessageMeta>;\n part: AssistantApiField<MessagePartClientApi, PartMeta>;\n attachment: AssistantApiField<AttachmentClientApi, AttachmentMeta>;\n\n subscribe(listener: () => void): Unsubscribe;\n flushSync(): void;\n\n on<TEvent extends keyof AssistantEvents>(\n event: AssistantEventSelector<TEvent>,\n callback: (e: AssistantEvents[TEvent]) => void,\n ): Unsubscribe;\n\n // temp\n registerModelContextProvider(provider: ModelContextProvider): void;\n /** @internal */\n __internal_getRuntime(): AssistantRuntime | null;\n};\n\nexport const createAssistantApiField = <\n TApi,\n TMeta extends { source: any; query: any },\n>(\n config: {\n get: () => TApi;\n } & (TMeta | { source: null; query: Record<string, never> }),\n): AssistantApiField<TApi, TMeta> => {\n const fn = config.get as AssistantApiField<TApi, TMeta>;\n fn.source = config.source;\n fn.query = config.query;\n return fn;\n};\n\nconst NO_OP_FN = () => () => {};\n\nconst AssistantApiContext = createContext<AssistantApi>({\n threads: createAssistantApiField({\n source: null,\n query: {},\n get: () => {\n throw new Error(\"Threads is only available inside <AssistantProvider />\");\n },\n }),\n toolUIs: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"ToolUIs is only available inside <AssistantProvider />\");\n },\n }),\n threadListItem: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"ThreadListItem is only available inside <AssistantProvider />\",\n );\n },\n }),\n thread: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"Thread is only available inside <AssistantProvider />\");\n },\n }),\n composer: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Composer is only available inside <AssistantProvider />\",\n );\n },\n }),\n message: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Message is only available inside <ThreadPrimitive.Messages />\",\n );\n },\n }),\n part: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Part is only available inside <MessagePrimitive.Parts />\",\n );\n },\n }),\n attachment: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Attachment is only available inside <MessagePrimitive.Attachments /> or <ComposerPrimitive.Attachments />\",\n );\n },\n }),\n\n subscribe: NO_OP_FN,\n flushSync: NO_OP_FN,\n on: (selector) => {\n const { scope } = normalizeEventSelector(selector);\n throw new Error(`Event scope is not available in this component: ${scope}`);\n },\n\n registerModelContextProvider: () => {\n throw new Error(\n \"Registering model context providers is only available inside <AssistantProvider />\",\n );\n },\n __internal_getRuntime: () => {\n return null;\n },\n});\n\nexport const useAssistantApi = (): AssistantApi => {\n return useContext(AssistantApiContext);\n};\n\nconst mergeFns = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => void,\n fn2: (...args: TArgs) => void,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n fn1(...args);\n fn2(...args);\n };\n};\n\nconst mergeFnsWithUnsubscribe = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => Unsubscribe,\n fn2: (...args: TArgs) => Unsubscribe,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n const unsubscribe1 = fn1(...args);\n const unsubscribe2 = fn2(...args);\n\n return () => {\n unsubscribe1();\n unsubscribe2();\n };\n };\n};\n\nconst extendApi = (\n api: AssistantApi,\n api2: Partial<AssistantApi>,\n): AssistantApi => {\n const api2Subscribe = api2.subscribe;\n const api2FlushSync = api2.flushSync;\n return {\n ...api,\n ...api2,\n subscribe: mergeFnsWithUnsubscribe(\n api.subscribe,\n api2Subscribe ?? NO_OP_FN,\n ),\n flushSync: mergeFns(api.flushSync, api2FlushSync ?? NO_OP_FN),\n };\n};\n\nexport const AssistantApiProvider: FC<\n PropsWithChildren<{ api: Partial<AssistantApi> }>\n> = ({ api: api2, children }) => {\n const api = useAssistantApi();\n const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);\n\n return (\n <AssistantApiContext value={extendedApi}>{children}</AssistantApiContext>\n );\n};\n"],"mappings":";;;AAEA;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AA2BP;AAAA,EAGE;AAAA,OACK;AAyPH;AAhKG,IAAM,0BAA0B,CAIrC,WAGmC;AACnC,QAAM,KAAK,OAAO;AAClB,KAAG,SAAS,OAAO;AACnB,KAAG,QAAQ,OAAO;AAClB,SAAO;AACT;AAEA,IAAM,WAAW,MAAM,MAAM;AAAC;AAE9B,IAAM,sBAAsB,cAA4B;AAAA,EACtD,SAAS,wBAAwB;AAAA,IAC/B,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAM;AACT,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAAA,EACF,CAAC;AAAA,EACD,SAAS,wBAAwB;AAAA,IAC/B,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAAA,EACF,CAAC;AAAA,EACD,gBAAgB,wBAAwB;AAAA,IACtC,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,QAAQ,wBAAwB;AAAA,IAC9B,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AAAA,EACF,CAAC;AAAA,EACD,UAAU,wBAAwB;AAAA,IAChC,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,SAAS,wBAAwB;AAAA,IAC/B,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,MAAM,wBAAwB;AAAA,IAC5B,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EACD,YAAY,wBAAwB;AAAA,IAClC,QAAQ;AAAA,IACR,OAAO,CAAC;AAAA,IACR,KAAK,MAAa;AAChB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAAA,EAED,WAAW;AAAA,EACX,WAAW;AAAA,EACX,IAAI,CAAC,aAAa;AAChB,UAAM,EAAE,MAAM,IAAI,uBAAuB,QAAQ;AACjD,UAAM,IAAI,MAAM,mDAAmD,KAAK,EAAE;AAAA,EAC5E;AAAA,EAEA,8BAA8B,MAAM;AAClC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAAA,EACA,uBAAuB,MAAM;AAC3B,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,kBAAkB,MAAoB;AACjD,SAAO,WAAW,mBAAmB;AACvC;AAEA,IAAM,WAAW,CACf,KACA,QACG;AACH,MAAI,QAAQ,SAAU,QAAO;AAC7B,MAAI,QAAQ,SAAU,QAAO;AAE7B,SAAO,IAAI,SAAgB;AACzB,QAAI,GAAG,IAAI;AACX,QAAI,GAAG,IAAI;AAAA,EACb;AACF;AAEA,IAAM,0BAA0B,CAC9B,KACA,QACG;AACH,MAAI,QAAQ,SAAU,QAAO;AAC7B,MAAI,QAAQ,SAAU,QAAO;AAE7B,SAAO,IAAI,SAAgB;AACzB,UAAM,eAAe,IAAI,GAAG,IAAI;AAChC,UAAM,eAAe,IAAI,GAAG,IAAI;AAEhC,WAAO,MAAM;AACX,mBAAa;AACb,mBAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,IAAM,YAAY,CAChB,KACA,SACiB;AACjB,QAAM,gBAAgB,KAAK;AAC3B,QAAM,gBAAgB,KAAK;AAC3B,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,WAAW;AAAA,MACT,IAAI;AAAA,MACJ,iBAAiB;AAAA,IACnB;AAAA,IACA,WAAW,SAAS,IAAI,WAAW,iBAAiB,QAAQ;AAAA,EAC9D;AACF;AAEO,IAAM,uBAET,CAAC,EAAE,KAAK,MAAM,SAAS,MAAM;AAC/B,QAAM,MAAM,gBAAgB;AAC5B,QAAM,cAAc,QAAQ,MAAM,UAAU,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC;AAEnE,SACE,oBAAC,uBAAoB,OAAO,aAAc,UAAS;AAEvD;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/react/AssistantApiContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useMemo,\n} from \"react\";\n\nimport { ToolUIApi, ToolUIState, ToolUIMeta } from \"../../client/types/ToolUI\";\nimport {\n MessageClientApi,\n MessageClientState,\n} from \"../../client/types/Message\";\nimport {\n ThreadListItemClientApi,\n ThreadListItemClientState,\n} from \"../../client/types/ThreadListItem\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { ThreadClientApi, ThreadClientState } from \"../../client/types/Thread\";\nimport {\n ComposerClientApi,\n ComposerClientState,\n} from \"../../client/types/Composer\";\nimport {\n AttachmentClientApi,\n AttachmentClientState,\n} from \"../../client/types/Attachment\";\nimport { Unsubscribe } from \"@assistant-ui/tap\";\nimport { ModelContextProvider } from \"../../model-context\";\nimport { AssistantRuntime } from \"../../legacy-runtime/runtime/AssistantRuntime\";\nimport {\n AssistantEvent,\n AssistantEventCallback,\n AssistantEventSelector,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\nimport {\n ThreadListClientApi,\n ThreadListClientState,\n} from \"../../client/types/ThreadList\";\nimport { ThreadViewportProvider } from \"../providers/ThreadViewportProvider\";\n\nexport type AssistantState = {\n readonly threads: ThreadListClientState;\n readonly toolUIs: ToolUIState;\n\n readonly threadListItem: ThreadListItemClientState;\n readonly thread: ThreadClientState;\n readonly composer: ComposerClientState;\n readonly message: MessageClientState;\n readonly part: MessagePartClientState;\n readonly attachment: AttachmentClientState;\n};\n\ntype AssistantApiField<\n TApi,\n TMeta extends { source: string | null; query: any },\n> = (() => TApi) & (TMeta | { source: null; query: Record<string, never> });\n\n// Meta types for each API method\ntype ThreadsMeta = {\n source: \"root\";\n query: Record<string, never>;\n};\n\ntype ThreadListItemMeta = {\n source: \"threads\";\n query:\n | { type: \"index\"; index: number; archived: boolean }\n | { type: \"main\" }\n | { type: \"id\"; id: string };\n};\n\ntype ThreadMeta = {\n source: \"threads\";\n query: { type: \"main\" };\n};\n\ntype ComposerMeta = {\n source: \"message\" | \"thread\";\n query: Record<string, never>;\n};\n\ntype MessageMeta = {\n source: \"thread\";\n query: { type: \"index\"; index: number };\n};\n\ntype PartMeta = {\n source: \"message\" | \"root\";\n query: { type: \"index\"; index: number } | Record<string, never>;\n};\n\ntype AttachmentMeta = {\n source: \"message\" | \"composer\";\n query: { type: \"index\"; index: number };\n};\n\nexport type AssistantApi = {\n threads: AssistantApiField<ThreadListClientApi, ThreadsMeta>;\n toolUIs: AssistantApiField<ToolUIApi, ToolUIMeta>;\n threadListItem: AssistantApiField<\n ThreadListItemClientApi,\n ThreadListItemMeta\n >;\n thread: AssistantApiField<ThreadClientApi, ThreadMeta>;\n composer: AssistantApiField<ComposerClientApi, ComposerMeta>;\n message: AssistantApiField<MessageClientApi, MessageMeta>;\n part: AssistantApiField<MessagePartClientApi, PartMeta>;\n attachment: AssistantApiField<AttachmentClientApi, AttachmentMeta>;\n\n subscribe(listener: () => void): Unsubscribe;\n flushSync(): void;\n\n on<TEvent extends AssistantEvent>(\n event: AssistantEventSelector<TEvent>,\n callback: AssistantEventCallback<TEvent>,\n ): Unsubscribe;\n\n // temp\n registerModelContextProvider(provider: ModelContextProvider): void;\n /** @internal */\n __internal_getRuntime(): AssistantRuntime | null;\n};\n\nexport const createAssistantApiField = <\n TApi,\n TMeta extends { source: any; query: any },\n>(\n config: {\n get: () => TApi;\n } & (TMeta | { source: null; query: Record<string, never> }),\n): AssistantApiField<TApi, TMeta> => {\n const fn = config.get as AssistantApiField<TApi, TMeta>;\n fn.source = config.source;\n fn.query = config.query;\n return fn;\n};\n\nconst NO_OP_FN = () => () => {};\n\nconst AssistantApiContext = createContext<AssistantApi>({\n threads: createAssistantApiField({\n source: null,\n query: {},\n get: () => {\n throw new Error(\"Threads is only available inside <AssistantProvider />\");\n },\n }),\n toolUIs: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"ToolUIs is only available inside <AssistantProvider />\");\n },\n }),\n threadListItem: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"ThreadListItem is only available inside <AssistantProvider />\",\n );\n },\n }),\n thread: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"Thread is only available inside <AssistantProvider />\");\n },\n }),\n composer: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Composer is only available inside <AssistantProvider />\",\n );\n },\n }),\n message: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Message is only available inside <ThreadPrimitive.Messages />\",\n );\n },\n }),\n part: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Part is only available inside <MessagePrimitive.Parts />\",\n );\n },\n }),\n attachment: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Attachment is only available inside <MessagePrimitive.Attachments /> or <ComposerPrimitive.Attachments />\",\n );\n },\n }),\n\n subscribe: NO_OP_FN,\n flushSync: NO_OP_FN,\n on: (selector) => {\n const { scope } = normalizeEventSelector(selector);\n throw new Error(`Event scope is not available in this component: ${scope}`);\n },\n\n registerModelContextProvider: () => {\n throw new Error(\n \"Registering model context providers is only available inside <AssistantProvider />\",\n );\n },\n __internal_getRuntime: () => {\n return null;\n },\n});\n\nexport const useAssistantApi = (): AssistantApi => {\n return useContext(AssistantApiContext);\n};\n\nconst mergeFns = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => void,\n fn2: (...args: TArgs) => void,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n fn1(...args);\n fn2(...args);\n };\n};\n\nconst mergeFnsWithUnsubscribe = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => Unsubscribe,\n fn2: (...args: TArgs) => Unsubscribe,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n const unsubscribe1 = fn1(...args);\n const unsubscribe2 = fn2(...args);\n\n return () => {\n unsubscribe1();\n unsubscribe2();\n };\n };\n};\n\nconst extendApi = (\n api: AssistantApi,\n api2: Partial<AssistantApi>,\n): AssistantApi => {\n const api2Subscribe = api2.subscribe;\n const api2FlushSync = api2.flushSync;\n return {\n ...api,\n ...api2,\n subscribe: mergeFnsWithUnsubscribe(\n api.subscribe,\n api2Subscribe ?? NO_OP_FN,\n ),\n flushSync: mergeFns(api.flushSync, api2FlushSync ?? NO_OP_FN),\n };\n};\n\nexport const AssistantProvider: FC<\n PropsWithChildren<{ api: Partial<AssistantApi> }>\n> = ({ api: api2, children }) => {\n const api = useAssistantApi();\n const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);\n\n return (\n <AssistantApiContext value={extendedApi}>\n {/* TODO temporarily allow accessing viewport state from outside the viewport */}\n {/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}\n <ThreadViewportProvider>{children}</ThreadViewportProvider>\n </AssistantApiContext>\n );\n};\n"],"mappings":"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","names":[]}
@@ -1,3 +1,3 @@
1
- import { AssistantEventSelector, AssistantEvents } from "../../../types/EventTypes";
2
- export declare const useAssistantEvent: <TEvent extends keyof AssistantEvents>(selector: AssistantEventSelector<TEvent>, callback: (e: AssistantEvents[TEvent]) => void) => void;
1
+ import { AssistantEvent, AssistantEventCallback, AssistantEventSelector } from "../../../types/EventTypes";
2
+ export declare const useAssistantEvent: <TEvent extends AssistantEvent>(selector: AssistantEventSelector<TEvent>, callback: AssistantEventCallback<TEvent>) => void;
3
3
  //# sourceMappingURL=useAssistantEvent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantEvent.d.ts","sourceRoot":"","sources":["../../../../src/context/react/hooks/useAssistantEvent.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,eAAe,EAEhB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,iBAAiB,GAAI,MAAM,SAAS,MAAM,eAAe,EACpE,UAAU,sBAAsB,CAAC,MAAM,CAAC,EACxC,UAAU,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,SAa/C,CAAC"}
1
+ {"version":3,"file":"useAssistantEvent.d.ts","sourceRoot":"","sources":["../../../../src/context/react/hooks/useAssistantEvent.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,2BAA2B,CAAC;AAEnC,eAAO,MAAM,iBAAiB,GAAI,MAAM,SAAS,cAAc,EAC7D,UAAU,sBAAsB,CAAC,MAAM,CAAC,EACxC,UAAU,sBAAsB,CAAC,MAAM,CAAC,SAazC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/context/react/hooks/useAssistantEvent.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useAssistantApi } from \"../../react/AssistantApiContext\";\nimport {\n AssistantEventSelector,\n AssistantEvents,\n normalizeEventSelector,\n} from \"../../../types/EventTypes\";\n\nexport const useAssistantEvent = <TEvent extends keyof AssistantEvents>(\n selector: AssistantEventSelector<TEvent>,\n callback: (e: AssistantEvents[TEvent]) => void,\n) => {\n const api = useAssistantApi();\n const callbackRef = useRef(callback);\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n const { scope, event } = normalizeEventSelector(selector);\n useEffect(\n () => api.on({ scope, event }, (e) => callbackRef.current(e)),\n [api, scope, event],\n );\n};\n"],"mappings":";AAAA,SAAS,WAAW,cAAc;AAClC,SAAS,uBAAuB;AAChC;AAAA,EAGE;AAAA,OACK;AAEA,IAAM,oBAAoB,CAC/B,UACA,aACG;AACH,QAAM,MAAM,gBAAgB;AAC5B,QAAM,cAAc,OAAO,QAAQ;AACnC,YAAU,MAAM;AACd,gBAAY,UAAU;AAAA,EACxB,CAAC;AAED,QAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD;AAAA,IACE,MAAM,IAAI,GAAG,EAAE,OAAO,MAAM,GAAG,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC;AAAA,IAC5D,CAAC,KAAK,OAAO,KAAK;AAAA,EACpB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/context/react/hooks/useAssistantEvent.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { useAssistantApi } from \"../../react/AssistantApiContext\";\nimport {\n AssistantEvent,\n AssistantEventCallback,\n AssistantEventSelector,\n normalizeEventSelector,\n} from \"../../../types/EventTypes\";\n\nexport const useAssistantEvent = <TEvent extends AssistantEvent>(\n selector: AssistantEventSelector<TEvent>,\n callback: AssistantEventCallback<TEvent>,\n) => {\n const api = useAssistantApi();\n const callbackRef = useRef(callback);\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n const { scope, event } = normalizeEventSelector(selector);\n useEffect(\n () => api.on({ scope, event }, (e) => callbackRef.current(e)),\n [api, scope, event],\n );\n};\n"],"mappings":";AAAA,SAAS,WAAW,cAAc;AAClC,SAAS,uBAAuB;AAChC;AAAA,EAIE;AAAA,OACK;AAEA,IAAM,oBAAoB,CAC/B,UACA,aACG;AACH,QAAM,MAAM,gBAAgB;AAC5B,QAAM,cAAc,OAAO,QAAQ;AACnC,YAAU,MAAM;AACd,gBAAY,UAAU;AAAA,EACxB,CAAC;AAED,QAAM,EAAE,OAAO,MAAM,IAAI,uBAAuB,QAAQ;AACxD;AAAA,IACE,MAAM,IAAI,GAAG,EAAE,OAAO,MAAM,GAAG,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC;AAAA,IAC5D,CAAC,KAAK,OAAO,KAAK;AAAA,EACpB;AACF;","names":[]}
@@ -9,4 +9,5 @@ export { useMessageRuntime, useEditComposer, useMessage, } from "../../legacy-ru
9
9
  export { useMessagePartRuntime, useMessagePart, } from "../../legacy-runtime/hooks/MessagePartContext";
10
10
  export { useThreadRuntime, useThread, useThreadComposer, useThreadModelContext, } from "../../legacy-runtime/hooks/ThreadContext";
11
11
  export { useThreadListItemRuntime, useThreadListItem, } from "../../legacy-runtime/hooks/ThreadListItemContext";
12
+ export { AssistantProvider } from "./AssistantApiContext";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/react/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,kCAAkC,EAClC,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,kBAAkB,EAClB,WAAW,GACZ,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,qBAAqB,EACrB,cAAc,GACf,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,kDAAkD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/context/react/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,kCAAkC,EAClC,2BAA2B,EAC3B,gCAAgC,EAChC,yBAAyB,EACzB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,kBAAkB,EAClB,WAAW,GACZ,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,qBAAqB,EACrB,cAAc,GACf,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACL,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,kDAAkD,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -45,7 +45,9 @@ import {
45
45
  useThreadListItemRuntime,
46
46
  useThreadListItem
47
47
  } from "../../legacy-runtime/hooks/ThreadListItemContext.js";
48
+ import { AssistantProvider } from "./AssistantApiContext.js";
48
49
  export {
50
+ AssistantProvider,
49
51
  useAssistantApi,
50
52
  useAssistantEvent,
51
53
  useAssistantRuntime,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/react/index.ts"],"sourcesContent":["\"use client\";\n// TODO createContextStoreHook does not work well with server-side nextjs bundler\n// use client necessary here for now\n\nexport { useAssistantApi } from \"./AssistantApiContext\";\nexport { useAssistantState } from \"./hooks/useAssistantState\";\nexport { useAssistantEvent } from \"./hooks/useAssistantEvent\";\n\nexport {\n useThreadViewport,\n useThreadViewportStore,\n} from \"./ThreadViewportContext\";\n\nexport {\n useAssistantRuntime,\n useThreadList,\n} from \"../../legacy-runtime/hooks/AssistantContext\";\n\nexport {\n useAttachmentRuntime,\n useAttachment,\n useThreadComposerAttachmentRuntime,\n useThreadComposerAttachment,\n useEditComposerAttachmentRuntime,\n useEditComposerAttachment,\n useMessageAttachment,\n useMessageAttachmentRuntime,\n} from \"../../legacy-runtime/hooks/AttachmentContext\";\n\nexport {\n useComposerRuntime,\n useComposer,\n} from \"../../legacy-runtime/hooks/ComposerContext\";\n\nexport {\n useMessageRuntime,\n useEditComposer,\n useMessage,\n} from \"../../legacy-runtime/hooks/MessageContext\";\n\nexport {\n useMessagePartRuntime,\n useMessagePart,\n} from \"../../legacy-runtime/hooks/MessagePartContext\";\n\nexport {\n useThreadRuntime,\n useThread,\n useThreadComposer,\n useThreadModelContext,\n} from \"../../legacy-runtime/hooks/ThreadContext\";\n\nexport {\n useThreadListItemRuntime,\n useThreadListItem,\n} from \"../../legacy-runtime/hooks/ThreadListItemContext\";\n"],"mappings":";;;AAIA,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAElC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/react/index.ts"],"sourcesContent":["\"use client\";\n// TODO createContextStoreHook does not work well with server-side nextjs bundler\n// use client necessary here for now\n\nexport { useAssistantApi } from \"./AssistantApiContext\";\nexport { useAssistantState } from \"./hooks/useAssistantState\";\nexport { useAssistantEvent } from \"./hooks/useAssistantEvent\";\n\nexport {\n useThreadViewport,\n useThreadViewportStore,\n} from \"./ThreadViewportContext\";\n\nexport {\n useAssistantRuntime,\n useThreadList,\n} from \"../../legacy-runtime/hooks/AssistantContext\";\n\nexport {\n useAttachmentRuntime,\n useAttachment,\n useThreadComposerAttachmentRuntime,\n useThreadComposerAttachment,\n useEditComposerAttachmentRuntime,\n useEditComposerAttachment,\n useMessageAttachment,\n useMessageAttachmentRuntime,\n} from \"../../legacy-runtime/hooks/AttachmentContext\";\n\nexport {\n useComposerRuntime,\n useComposer,\n} from \"../../legacy-runtime/hooks/ComposerContext\";\n\nexport {\n useMessageRuntime,\n useEditComposer,\n useMessage,\n} from \"../../legacy-runtime/hooks/MessageContext\";\n\nexport {\n useMessagePartRuntime,\n useMessagePart,\n} from \"../../legacy-runtime/hooks/MessagePartContext\";\n\nexport {\n useThreadRuntime,\n useThread,\n useThreadComposer,\n useThreadModelContext,\n} from \"../../legacy-runtime/hooks/ThreadContext\";\n\nexport {\n useThreadListItemRuntime,\n useThreadListItem,\n} from \"../../legacy-runtime/hooks/ThreadListItemContext\";\n\nexport { AssistantProvider } from \"./AssistantApiContext\";\n"],"mappings":";;;AAIA,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAClC,SAAS,yBAAyB;AAElC;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,yBAAyB;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantRuntimeProvider.d.ts","sourceRoot":"","sources":["../../src/legacy-runtime/AssistantRuntimeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAO9D,yBAAiB,iBAAiB,CAAC;IACjC,KAAY,KAAK,GAAG,iBAAiB,CAAC;QACpC;;WAEG;QACH,OAAO,EAAE,gBAAgB,CAAC;KAC3B,CAAC,CAAC;CACJ;AAMD,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAqBpE,CAAC;AAEF,eAAO,MAAM,wBAAwB,+DAAqC,CAAC"}
1
+ {"version":3,"file":"AssistantRuntimeProvider.d.ts","sourceRoot":"","sources":["../../src/legacy-runtime/AssistantRuntimeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAQ,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAK9D,yBAAiB,iBAAiB,CAAC;IACjC,KAAY,KAAK,GAAG,iBAAiB,CAAC;QACpC;;WAEG;QACH,OAAO,EAAE,gBAAgB,CAAC;KAC3B,CAAC,CAAC;CACJ;AAMD,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAqBpE,CAAC;AAEF,eAAO,MAAM,wBAAwB,+DAAqC,CAAC"}