@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.
- package/dist/client/AssistantClient.d.ts +2 -2
- package/dist/client/AssistantClient.d.ts.map +1 -1
- package/dist/client/AssistantClient.js +1 -2
- package/dist/client/AssistantClient.js.map +1 -1
- package/dist/client/ToolUIClient.d.ts +3 -2
- package/dist/client/ToolUIClient.d.ts.map +1 -1
- package/dist/client/ToolUIClient.js +1 -5
- package/dist/client/ToolUIClient.js.map +1 -1
- package/dist/client/types/ThreadList.d.ts +1 -1
- package/dist/client/types/ThreadList.d.ts.map +1 -1
- package/dist/context/providers/AttachmentProvider.js +3 -3
- package/dist/context/providers/AttachmentProvider.js.map +1 -1
- package/dist/context/providers/MessageProvider.d.ts.map +1 -1
- package/dist/context/providers/MessageProvider.js +2 -2
- package/dist/context/providers/MessageProvider.js.map +1 -1
- package/dist/context/providers/PartProvider.js +2 -2
- package/dist/context/providers/PartProvider.js.map +1 -1
- package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/context/providers/TextMessagePartProvider.js +6 -7
- package/dist/context/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/context/providers/ThreadListItemProvider.d.ts.map +1 -1
- package/dist/context/providers/ThreadListItemProvider.js +5 -4
- package/dist/context/providers/ThreadListItemProvider.js.map +1 -1
- package/dist/context/react/AssistantApiContext.d.ts +3 -3
- package/dist/context/react/AssistantApiContext.d.ts.map +1 -1
- package/dist/context/react/AssistantApiContext.js +4 -3
- package/dist/context/react/AssistantApiContext.js.map +1 -1
- package/dist/context/react/hooks/useAssistantEvent.d.ts +2 -2
- package/dist/context/react/hooks/useAssistantEvent.d.ts.map +1 -1
- package/dist/context/react/hooks/useAssistantEvent.js.map +1 -1
- package/dist/context/react/index.d.ts +1 -0
- package/dist/context/react/index.d.ts.map +1 -1
- package/dist/context/react/index.js +2 -0
- package/dist/context/react/index.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +1 -5
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.d.ts +2 -4
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.js +10 -10
- package/dist/legacy-runtime/client/AttachmentRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts +3 -2
- package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.js +1 -5
- package/dist/legacy-runtime/client/ComposerRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/EventManagerRuntimeClient.d.ts +6 -7
- package/dist/legacy-runtime/client/EventManagerRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/EventManagerRuntimeClient.js +11 -3
- package/dist/legacy-runtime/client/EventManagerRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.js +10 -10
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/MessageRuntimeClient.d.ts +3 -3
- package/dist/legacy-runtime/client/MessageRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/MessageRuntimeClient.js +31 -31
- package/dist/legacy-runtime/client/MessageRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.d.ts +2 -2
- package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.js +17 -17
- package/dist/legacy-runtime/client/ThreadListItemRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.d.ts +3 -2
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.js +2 -6
- package/dist/legacy-runtime/client/ThreadListRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.d.ts +3 -2
- package/dist/legacy-runtime/client/ThreadRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js +1 -5
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.js +0 -1
- package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.js.map +1 -1
- package/dist/types/EventTypes.d.ts +15 -7
- package/dist/types/EventTypes.d.ts.map +1 -1
- package/dist/types/EventTypes.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/tap-store/tap-api.d.ts +9 -1
- package/dist/utils/tap-store/tap-api.d.ts.map +1 -1
- package/dist/utils/tap-store/tap-api.js +12 -2
- package/dist/utils/tap-store/tap-api.js.map +1 -1
- package/package.json +1 -1
- package/src/client/AssistantClient.ts +7 -13
- package/src/client/ToolUIClient.ts +1 -6
- package/src/client/types/ThreadList.ts +1 -1
- package/src/context/providers/AttachmentProvider.tsx +3 -3
- package/src/context/providers/MessageProvider.tsx +3 -8
- package/src/context/providers/PartProvider.tsx +2 -2
- package/src/context/providers/TextMessagePartProvider.tsx +5 -7
- package/src/context/providers/ThreadListItemProvider.tsx +9 -16
- package/src/context/react/AssistantApiContext.tsx +11 -5
- package/src/context/react/hooks/useAssistantEvent.ts +4 -3
- package/src/context/react/index.ts +2 -0
- package/src/legacy-runtime/AssistantRuntimeProvider.tsx +1 -15
- package/src/legacy-runtime/client/AttachmentRuntimeClient.ts +10 -11
- package/src/legacy-runtime/client/ComposerRuntimeClient.ts +1 -6
- package/src/legacy-runtime/client/EventManagerRuntimeClient.ts +41 -18
- package/src/legacy-runtime/client/MessagePartRuntimeClient.ts +13 -14
- package/src/legacy-runtime/client/MessageRuntimeClient.ts +35 -36
- package/src/legacy-runtime/client/ThreadListItemRuntimeClient.ts +17 -18
- package/src/legacy-runtime/client/ThreadListRuntimeClient.ts +2 -7
- package/src/legacy-runtime/client/ThreadRuntimeClient.ts +1 -6
- package/src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.tsx +0 -1
- package/src/types/EventTypes.ts +23 -12
- package/src/types/index.ts +3 -1
- package/src/utils/tap-store/tap-api.ts +19 -2
@@ -87,7 +87,7 @@ var ThreadClient = resource(
|
|
87
87
|
messages: messages.state
|
88
88
|
};
|
89
89
|
}, [runtimeState, messages, composer.state]);
|
90
|
-
|
90
|
+
return tapApi({
|
91
91
|
getState: () => state,
|
92
92
|
composer: composer.api,
|
93
93
|
append: runtime.append,
|
@@ -108,10 +108,6 @@ var ThreadClient = resource(
|
|
108
108
|
},
|
109
109
|
__internal_getRuntime: () => runtime
|
110
110
|
});
|
111
|
-
return {
|
112
|
-
state,
|
113
|
-
api
|
114
|
-
};
|
115
111
|
}
|
116
112
|
);
|
117
113
|
export {
|
@@ -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 \"../../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
|
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 return 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);\n"],"mappings":"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","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"BaseComposerRuntimeCore.d.ts","sourceRoot":"","sources":["../../../../src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAK1E,8BAAsB,uBACpB,SAAQ,gBACR,YAAW,mBAAmB;IAE9B,SAAgB,SAAS,QAAQ;IAEjC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAExE,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,OAAO,CAAC,YAAY,CAA6B;IACjD,IAAW,WAAW,0BAErB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE;IAKrD,aAAoB,SAAS,IAAI,OAAO,CAAC;IAEzC,IAAW,OAAO,YAEjB;IAED,OAAO,CAAC,KAAK,CAAM;IAEnB,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,KAAK,CAAuB;IAEpC,IAAI,IAAI,oCAEP;IAED,OAAO,CAAC,UAAU,CAAiB;IAEnC,IAAI,SAAS,cAEZ;IAEM,OAAO,CAAC,KAAK,EAAE,MAAM;IAOrB,OAAO,CAAC,IAAI,EAAE,WAAW;IAOzB,YAAY,CAAC,SAAS,EAAE,SAAS;IAOxC,OAAO,CAAC,wBAAwB;YAMlB,mBAAmB;IAOpB,KAAK;IAkBL,gBAAgB;IAOhB,IAAI;IA4BV,MAAM;IAIb,SAAS,CAAC,QAAQ,CAAC,UAAU,CAC3B,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,CAAC,GACpD,IAAI;IACP,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAEjC,aAAa,CAAC,IAAI,EAAE,IAAI;
|
1
|
+
{"version":3,"file":"BaseComposerRuntimeCore.d.ts","sourceRoot":"","sources":["../../../../src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAK1E,8BAAsB,uBACpB,SAAQ,gBACR,YAAW,mBAAmB;IAE9B,SAAgB,SAAS,QAAQ;IAEjC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,iBAAiB,GAAG,SAAS;IAExE,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,OAAO,CAAC,YAAY,CAA6B;IACjD,IAAW,WAAW,0BAErB;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE;IAKrD,aAAoB,SAAS,IAAI,OAAO,CAAC;IAEzC,IAAW,OAAO,YAEjB;IAED,OAAO,CAAC,KAAK,CAAM;IAEnB,IAAI,IAAI,WAEP;IAED,OAAO,CAAC,KAAK,CAAuB;IAEpC,IAAI,IAAI,oCAEP;IAED,OAAO,CAAC,UAAU,CAAiB;IAEnC,IAAI,SAAS,cAEZ;IAEM,OAAO,CAAC,KAAK,EAAE,MAAM;IAOrB,OAAO,CAAC,IAAI,EAAE,WAAW;IAOzB,YAAY,CAAC,SAAS,EAAE,SAAS;IAOxC,OAAO,CAAC,wBAAwB;YAMlB,mBAAmB;IAOpB,KAAK;IAkBL,gBAAgB;IAOhB,IAAI;IA4BV,MAAM;IAIb,SAAS,CAAC,QAAQ,CAAC,UAAU,CAC3B,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,UAAU,CAAC,GACpD,IAAI;IACP,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAEjC,aAAa,CAAC,IAAI,EAAE,IAAI;IAkCxB,gBAAgB,CAAC,YAAY,EAAE,MAAM;IAkB3C,OAAO,CAAC,iBAAiB,CAGrB;IAEJ,SAAS,CAAC,uBAAuB,CAAC,KAAK,EAAE,wBAAwB;IAO1D,WAAW,CAAC,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,IAAI;CAczE"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.tsx"],"sourcesContent":["import {\n Attachment,\n CompleteAttachment,\n PendingAttachment,\n} from \"../../../types/AttachmentTypes\";\nimport { AppendMessage } from \"../../../types\";\nimport { AttachmentAdapter } from \"../adapters/attachment\";\nimport {\n ComposerRuntimeCore,\n ComposerRuntimeEventType,\n} from \"../core/ComposerRuntimeCore\";\nimport { MessageRole, RunConfig } from \"../../../types/AssistantTypes\";\nimport { BaseSubscribable } from \"../remote-thread-list/BaseSubscribable\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore\n extends BaseSubscribable\n implements ComposerRuntimeCore\n{\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n\n public get attachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this._notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n private _runConfig: RunConfig = {};\n\n get runConfig() {\n return this._runConfig;\n }\n\n public setText(value: string) {\n if (this._text === value) return;\n\n this._text = value;\n this._notifySubscribers();\n }\n\n public setRole(role: MessageRole) {\n if (this._role === role) return;\n\n this._role = role;\n this._notifySubscribers();\n }\n\n public setRunConfig(runConfig: RunConfig) {\n if (this._runConfig === runConfig) return;\n\n this._runConfig = runConfig;\n this._notifySubscribers();\n }\n\n private _emptyTextAndAttachments() {\n this._attachments = [];\n this._text = \"\";\n this._notifySubscribers();\n }\n\n private async _onClearAttachments() {\n const adapter = this.getAttachmentAdapter();\n if (adapter) {\n await Promise.all(this._attachments.map((a) => adapter.remove(a)));\n }\n }\n\n public async reset() {\n if (\n this._attachments.length === 0 &&\n this._text === \"\" &&\n this._role === \"user\" &&\n Object.keys(this._runConfig).length === 0\n ) {\n return;\n }\n\n this._role = \"user\";\n this._runConfig = {};\n\n const task = this._onClearAttachments();\n this._emptyTextAndAttachments();\n await task;\n }\n\n public async clearAttachments() {\n const task = this._onClearAttachments();\n this.setAttachments([]);\n\n await task;\n }\n\n public async send() {\n const adapter = this.getAttachmentAdapter();\n const attachments =\n adapter && this.attachments.length > 0\n ? Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const text = this.text;\n this._emptyTextAndAttachments();\n const message: Omit<AppendMessage, \"parentId\" | \"sourceId\"> = {\n createdAt: new Date(),\n role: this.role,\n content: text ? [{ type: \"text\", text }] : [],\n attachments: await attachments,\n runConfig: this.runConfig,\n metadata: { custom: {} },\n };\n\n this.handleSend(message);\n this._notifyEventSubscribers(\"send\");\n }\n\n public cancel() {\n this.handleCancel();\n }\n\n protected abstract handleSend(\n message: Omit<AppendMessage, \"parentId\" | \"sourceId\">,\n ): void;\n protected abstract handleCancel(): void;\n\n async addAttachment(file: File) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const upsertAttachment = (a: PendingAttachment) => {\n const idx = this._attachments.findIndex(\n (attachment) => attachment.id === a.id,\n );\n if (idx !== -1)\n this._attachments = [\n ...this._attachments.slice(0, idx),\n a,\n ...this._attachments.slice(idx + 1),\n ];\n else {\n this._attachments = [...this._attachments, a];\n this._notifyEventSubscribers(\"attachment-add\");\n }\n\n this._notifySubscribers();\n };\n\n const promiseOrGenerator = adapter.add({ file });\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n upsertAttachment(r);\n }\n } else {\n upsertAttachment(await promiseOrGenerator);\n }\n\n this._notifyEventSubscribers(\"attachment-add\");\n this._notifySubscribers();\n }\n\n async removeAttachment(attachmentId: string) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n await adapter.remove(attachment);\n\n // this._attachments.toSpliced(index, 1); - not yet widely supported\n this._attachments = [\n ...this._attachments.slice(0, index),\n ...this._attachments.slice(index + 1),\n ];\n this._notifySubscribers();\n }\n\n private _eventSubscribers = new Map<\n ComposerRuntimeEventType,\n Set<() => void>\n >();\n\n protected _notifyEventSubscribers(event: ComposerRuntimeEventType) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback();\n }\n\n public unstable_on(event: ComposerRuntimeEventType, callback: () => void) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n this._eventSubscribers.set(event, new Set([callback]));\n } else {\n subscribers.add(callback);\n }\n\n return () => {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n subscribers.delete(callback);\n };\n }\n}\n"],"mappings":"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","names":["subscribers"]}
|
1
|
+
{"version":3,"sources":["../../../../src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.tsx"],"sourcesContent":["import {\n Attachment,\n CompleteAttachment,\n PendingAttachment,\n} from \"../../../types/AttachmentTypes\";\nimport { AppendMessage } from \"../../../types\";\nimport { AttachmentAdapter } from \"../adapters/attachment\";\nimport {\n ComposerRuntimeCore,\n ComposerRuntimeEventType,\n} from \"../core/ComposerRuntimeCore\";\nimport { MessageRole, RunConfig } from \"../../../types/AssistantTypes\";\nimport { BaseSubscribable } from \"../remote-thread-list/BaseSubscribable\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore\n extends BaseSubscribable\n implements ComposerRuntimeCore\n{\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n\n public get attachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this._notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n private _runConfig: RunConfig = {};\n\n get runConfig() {\n return this._runConfig;\n }\n\n public setText(value: string) {\n if (this._text === value) return;\n\n this._text = value;\n this._notifySubscribers();\n }\n\n public setRole(role: MessageRole) {\n if (this._role === role) return;\n\n this._role = role;\n this._notifySubscribers();\n }\n\n public setRunConfig(runConfig: RunConfig) {\n if (this._runConfig === runConfig) return;\n\n this._runConfig = runConfig;\n this._notifySubscribers();\n }\n\n private _emptyTextAndAttachments() {\n this._attachments = [];\n this._text = \"\";\n this._notifySubscribers();\n }\n\n private async _onClearAttachments() {\n const adapter = this.getAttachmentAdapter();\n if (adapter) {\n await Promise.all(this._attachments.map((a) => adapter.remove(a)));\n }\n }\n\n public async reset() {\n if (\n this._attachments.length === 0 &&\n this._text === \"\" &&\n this._role === \"user\" &&\n Object.keys(this._runConfig).length === 0\n ) {\n return;\n }\n\n this._role = \"user\";\n this._runConfig = {};\n\n const task = this._onClearAttachments();\n this._emptyTextAndAttachments();\n await task;\n }\n\n public async clearAttachments() {\n const task = this._onClearAttachments();\n this.setAttachments([]);\n\n await task;\n }\n\n public async send() {\n const adapter = this.getAttachmentAdapter();\n const attachments =\n adapter && this.attachments.length > 0\n ? Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const text = this.text;\n this._emptyTextAndAttachments();\n const message: Omit<AppendMessage, \"parentId\" | \"sourceId\"> = {\n createdAt: new Date(),\n role: this.role,\n content: text ? [{ type: \"text\", text }] : [],\n attachments: await attachments,\n runConfig: this.runConfig,\n metadata: { custom: {} },\n };\n\n this.handleSend(message);\n this._notifyEventSubscribers(\"send\");\n }\n\n public cancel() {\n this.handleCancel();\n }\n\n protected abstract handleSend(\n message: Omit<AppendMessage, \"parentId\" | \"sourceId\">,\n ): void;\n protected abstract handleCancel(): void;\n\n async addAttachment(file: File) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const upsertAttachment = (a: PendingAttachment) => {\n const idx = this._attachments.findIndex(\n (attachment) => attachment.id === a.id,\n );\n if (idx !== -1)\n this._attachments = [\n ...this._attachments.slice(0, idx),\n a,\n ...this._attachments.slice(idx + 1),\n ];\n else {\n this._attachments = [...this._attachments, a];\n }\n\n this._notifySubscribers();\n };\n\n const promiseOrGenerator = adapter.add({ file });\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n upsertAttachment(r);\n }\n } else {\n upsertAttachment(await promiseOrGenerator);\n }\n\n this._notifyEventSubscribers(\"attachment-add\");\n this._notifySubscribers();\n }\n\n async removeAttachment(attachmentId: string) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n await adapter.remove(attachment);\n\n // this._attachments.toSpliced(index, 1); - not yet widely supported\n this._attachments = [\n ...this._attachments.slice(0, index),\n ...this._attachments.slice(index + 1),\n ];\n this._notifySubscribers();\n }\n\n private _eventSubscribers = new Map<\n ComposerRuntimeEventType,\n Set<() => void>\n >();\n\n protected _notifyEventSubscribers(event: ComposerRuntimeEventType) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback();\n }\n\n public unstable_on(event: ComposerRuntimeEventType, callback: () => void) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n this._eventSubscribers.set(event, new Set([callback]));\n } else {\n subscribers.add(callback);\n }\n\n return () => {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n subscribers.delete(callback);\n };\n }\n}\n"],"mappings":";AAYA,SAAS,wBAAwB;AAEjC,IAAM,uBAAuB,CAAC,MAC5B,EAAE,OAAO,SAAS;AAEb,IAAe,0BAAf,cACG,iBAEV;AAAA,EACkB,YAAY;AAAA,EAI5B,IAAW,mBAA2B;AACpC,WAAO,KAAK,qBAAqB,GAAG,UAAU;AAAA,EAChD;AAAA,EAEQ,eAAsC,CAAC;AAAA,EAC/C,IAAW,cAAc;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEU,eAAe,OAA8B;AACrD,SAAK,eAAe;AACpB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAIA,IAAW,UAAU;AACnB,WAAO,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,KAAK,YAAY;AAAA,EAChD;AAAA,EAEQ,QAAQ;AAAA,EAEhB,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,QAAqB;AAAA,EAE7B,IAAI,OAAO;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,aAAwB,CAAC;AAAA,EAEjC,IAAI,YAAY;AACd,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,QAAQ,OAAe;AAC5B,QAAI,KAAK,UAAU,MAAO;AAE1B,SAAK,QAAQ;AACb,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEO,QAAQ,MAAmB;AAChC,QAAI,KAAK,UAAU,KAAM;AAEzB,SAAK,QAAQ;AACb,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEO,aAAa,WAAsB;AACxC,QAAI,KAAK,eAAe,UAAW;AAEnC,SAAK,aAAa;AAClB,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEQ,2BAA2B;AACjC,SAAK,eAAe,CAAC;AACrB,SAAK,QAAQ;AACb,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAc,sBAAsB;AAClC,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,SAAS;AACX,YAAM,QAAQ,IAAI,KAAK,aAAa,IAAI,CAAC,MAAM,QAAQ,OAAO,CAAC,CAAC,CAAC;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,MAAa,QAAQ;AACnB,QACE,KAAK,aAAa,WAAW,KAC7B,KAAK,UAAU,MACf,KAAK,UAAU,UACf,OAAO,KAAK,KAAK,UAAU,EAAE,WAAW,GACxC;AACA;AAAA,IACF;AAEA,SAAK,QAAQ;AACb,SAAK,aAAa,CAAC;AAEnB,UAAM,OAAO,KAAK,oBAAoB;AACtC,SAAK,yBAAyB;AAC9B,UAAM;AAAA,EACR;AAAA,EAEA,MAAa,mBAAmB;AAC9B,UAAM,OAAO,KAAK,oBAAoB;AACtC,SAAK,eAAe,CAAC,CAAC;AAEtB,UAAM;AAAA,EACR;AAAA,EAEA,MAAa,OAAO;AAClB,UAAM,UAAU,KAAK,qBAAqB;AAC1C,UAAM,cACJ,WAAW,KAAK,YAAY,SAAS,IACjC,QAAQ;AAAA,MACN,KAAK,YAAY,IAAI,OAAO,MAAM;AAChC,YAAI,qBAAqB,CAAC,EAAG,QAAO;AACpC,cAAM,SAAS,MAAM,QAAQ,KAAK,CAAC;AACnC,eAAO;AAAA,MACT,CAAC;AAAA,IACH,IACA,CAAC;AAEP,UAAM,OAAO,KAAK;AAClB,SAAK,yBAAyB;AAC9B,UAAM,UAAwD;AAAA,MAC5D,WAAW,oBAAI,KAAK;AAAA,MACpB,MAAM,KAAK;AAAA,MACX,SAAS,OAAO,CAAC,EAAE,MAAM,QAAQ,KAAK,CAAC,IAAI,CAAC;AAAA,MAC5C,aAAa,MAAM;AAAA,MACnB,WAAW,KAAK;AAAA,MAChB,UAAU,EAAE,QAAQ,CAAC,EAAE;AAAA,IACzB;AAEA,SAAK,WAAW,OAAO;AACvB,SAAK,wBAAwB,MAAM;AAAA,EACrC;AAAA,EAEO,SAAS;AACd,SAAK,aAAa;AAAA,EACpB;AAAA,EAOA,MAAM,cAAc,MAAY;AAC9B,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAE7D,UAAM,mBAAmB,CAAC,MAAyB;AACjD,YAAM,MAAM,KAAK,aAAa;AAAA,QAC5B,CAAC,eAAe,WAAW,OAAO,EAAE;AAAA,MACtC;AACA,UAAI,QAAQ;AACV,aAAK,eAAe;AAAA,UAClB,GAAG,KAAK,aAAa,MAAM,GAAG,GAAG;AAAA,UACjC;AAAA,UACA,GAAG,KAAK,aAAa,MAAM,MAAM,CAAC;AAAA,QACpC;AAAA,WACG;AACH,aAAK,eAAe,CAAC,GAAG,KAAK,cAAc,CAAC;AAAA,MAC9C;AAEA,WAAK,mBAAmB;AAAA,IAC1B;AAEA,UAAM,qBAAqB,QAAQ,IAAI,EAAE,KAAK,CAAC;AAC/C,QAAI,OAAO,iBAAiB,oBAAoB;AAC9C,uBAAiB,KAAK,oBAAoB;AACxC,yBAAiB,CAAC;AAAA,MACpB;AAAA,IACF,OAAO;AACL,uBAAiB,MAAM,kBAAkB;AAAA,IAC3C;AAEA,SAAK,wBAAwB,gBAAgB;AAC7C,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAM,iBAAiB,cAAsB;AAC3C,UAAM,UAAU,KAAK,qBAAqB;AAC1C,QAAI,CAAC,QAAS,OAAM,IAAI,MAAM,+BAA+B;AAE7D,UAAM,QAAQ,KAAK,aAAa,UAAU,CAAC,MAAM,EAAE,OAAO,YAAY;AACtE,QAAI,UAAU,GAAI,OAAM,IAAI,MAAM,sBAAsB;AACxD,UAAM,aAAa,KAAK,aAAa,KAAK;AAE1C,UAAM,QAAQ,OAAO,UAAU;AAG/B,SAAK,eAAe;AAAA,MAClB,GAAG,KAAK,aAAa,MAAM,GAAG,KAAK;AAAA,MACnC,GAAG,KAAK,aAAa,MAAM,QAAQ,CAAC;AAAA,IACtC;AACA,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEQ,oBAAoB,oBAAI,IAG9B;AAAA,EAEQ,wBAAwB,OAAiC;AACjE,UAAM,cAAc,KAAK,kBAAkB,IAAI,KAAK;AACpD,QAAI,CAAC,YAAa;AAElB,eAAW,YAAY,YAAa,UAAS;AAAA,EAC/C;AAAA,EAEO,YAAY,OAAiC,UAAsB;AACxE,UAAM,cAAc,KAAK,kBAAkB,IAAI,KAAK;AACpD,QAAI,CAAC,aAAa;AAChB,WAAK,kBAAkB,IAAI,OAAO,oBAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;AAAA,IACvD,OAAO;AACL,kBAAY,IAAI,QAAQ;AAAA,IAC1B;AAEA,WAAO,MAAM;AACX,YAAMA,eAAc,KAAK,kBAAkB,IAAI,KAAK;AACpD,UAAI,CAACA,aAAa;AAClB,MAAAA,aAAY,OAAO,QAAQ;AAAA,IAC7B;AAAA,EACF;AACF;","names":["subscribers"]}
|
@@ -1,18 +1,19 @@
|
|
1
|
-
export type EventSource<T extends
|
1
|
+
export type EventSource<T extends AssistantEvent = AssistantEvent> = T extends `${infer Source}.${string}` ? Source : never;
|
2
2
|
type ScopeConfig = {
|
3
3
|
composer: "thread" | "message";
|
4
4
|
thread: never;
|
5
5
|
"thread-list-item": never;
|
6
6
|
};
|
7
|
-
export type SourceByScope<TScope extends AssistantEventScope<
|
7
|
+
export type SourceByScope<TScope extends AssistantEventScope<AssistantEvent>> = (TScope extends "*" ? EventSource : never) | (TScope extends keyof ScopeConfig ? TScope : never) | {
|
8
8
|
[K in keyof ScopeConfig]: TScope extends ScopeConfig[K] ? K : never;
|
9
9
|
}[keyof ScopeConfig];
|
10
|
-
export type AssistantEventScope<TEvent extends
|
11
|
-
export type AssistantEventSelector<TEvent extends
|
10
|
+
export type AssistantEventScope<TEvent extends AssistantEvent> = "*" | EventSource<TEvent> | ScopeConfig[EventSource<TEvent>];
|
11
|
+
export type AssistantEventSelector<TEvent extends AssistantEvent> = TEvent | {
|
12
12
|
scope: AssistantEventScope<TEvent>;
|
13
13
|
event: TEvent;
|
14
14
|
};
|
15
|
-
export type
|
15
|
+
export type AssistantEvent = keyof AssistantEventMap;
|
16
|
+
export type AssistantEventMap = {
|
16
17
|
"thread.run-start": {
|
17
18
|
threadId: string;
|
18
19
|
};
|
@@ -39,11 +40,18 @@ export type AssistantEvents = {
|
|
39
40
|
"thread-list-item.switched-away": {
|
40
41
|
threadId: string;
|
41
42
|
};
|
43
|
+
"*": {
|
44
|
+
[K in Exclude<keyof AssistantEventMap, "*">]: {
|
45
|
+
event: K;
|
46
|
+
payload: AssistantEventMap[K];
|
47
|
+
};
|
48
|
+
}[Exclude<keyof AssistantEventMap, "*">];
|
42
49
|
};
|
43
|
-
export declare const normalizeEventSelector: <TEvent extends
|
50
|
+
export declare const normalizeEventSelector: <TEvent extends AssistantEvent>(selector: AssistantEventSelector<TEvent>) => {
|
44
51
|
scope: AssistantEventScope<TEvent>;
|
45
52
|
event: TEvent;
|
46
53
|
};
|
47
|
-
export declare const checkEventScope: <TEvent extends
|
54
|
+
export declare const checkEventScope: <TEvent extends AssistantEvent, TExpectedScope extends AssistantEventScope<AssistantEvent>>(expectedScope: TExpectedScope, scope: AssistantEventScope<TEvent>, _event: TEvent) => _event is Extract<TEvent, `${SourceByScope<TExpectedScope>}.${string}`>;
|
55
|
+
export type AssistantEventCallback<TEvent extends AssistantEvent> = (payload: AssistantEventMap[TEvent]) => void;
|
48
56
|
export {};
|
49
57
|
//# sourceMappingURL=EventTypes.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EventTypes.d.ts","sourceRoot":"","sources":["../../src/types/EventTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,
|
1
|
+
{"version":3,"file":"EventTypes.d.ts","sourceRoot":"","sources":["../../src/types/EventTypes.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAC/D,CAAC,SAAS,GAAG,MAAM,MAAM,IAAI,MAAM,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzD,KAAK,WAAW,GAAG;IACjB,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,KAAK,CAAC;IACd,kBAAkB,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,mBAAmB,CAAC,cAAc,CAAC,IACxE,CAAC,MAAM,SAAS,GAAG,GAAG,WAAW,GAAG,KAAK,CAAC,GAC1C,CAAC,MAAM,SAAS,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC,GACnD;KACG,CAAC,IAAI,MAAM,WAAW,GAAG,MAAM,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACpE,CAAC,MAAM,WAAW,CAAC,CAAC;AAEzB,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,cAAc,IACzD,GAAG,GACH,WAAW,CAAC,MAAM,CAAC,GACnB,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAErC,MAAM,MAAM,sBAAsB,CAAC,MAAM,SAAS,cAAc,IAC5D,MAAM,GACN;IACE,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAE9B,kBAAkB,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,gBAAgB,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,mBAAmB,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,6BAA6B,EAAE;QAC7B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,yBAAyB,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAGF,8BAA8B,EAAE;QAC9B,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,gCAAgC,EAAE;QAChC,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,GAAG,EAAE;SACF,CAAC,IAAI,OAAO,CAAC,MAAM,iBAAiB,EAAE,GAAG,CAAC,GAAG;YAC5C,KAAK,EAAE,CAAC,CAAC;YACT,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAC/B;KACF,CAAC,OAAO,CAAC,MAAM,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,cAAc,EAClE,UAAU,sBAAsB,CAAC,MAAM,CAAC;;;CAczC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,SAAS,cAAc,EAC7B,cAAc,SAAS,mBAAmB,CAAC,cAAc,CAAC,EAE1D,eAAe,cAAc,EAC7B,OAAO,mBAAmB,CAAC,MAAM,CAAC,EAClC,QAAQ,MAAM,KACb,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,MAAM,EAAE,CAExE,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,MAAM,SAAS,cAAc,IAAI,CAClE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,KAC/B,IAAI,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/types/EventTypes.ts"],"sourcesContent":["export type EventSource
|
1
|
+
{"version":3,"sources":["../../src/types/EventTypes.ts"],"sourcesContent":["export type EventSource<T extends AssistantEvent = AssistantEvent> =\n T extends `${infer Source}.${string}` ? Source : never;\n\ntype ScopeConfig = {\n composer: \"thread\" | \"message\";\n thread: never;\n \"thread-list-item\": never;\n};\n\nexport type SourceByScope<TScope extends AssistantEventScope<AssistantEvent>> =\n | (TScope extends \"*\" ? EventSource : never)\n | (TScope extends keyof ScopeConfig ? TScope : never)\n | {\n [K in keyof ScopeConfig]: TScope extends ScopeConfig[K] ? K : never;\n }[keyof ScopeConfig];\n\nexport type AssistantEventScope<TEvent extends AssistantEvent> =\n | \"*\"\n | EventSource<TEvent>\n | ScopeConfig[EventSource<TEvent>];\n\nexport type AssistantEventSelector<TEvent extends AssistantEvent> =\n | TEvent\n | {\n scope: AssistantEventScope<TEvent>;\n event: TEvent;\n };\n\nexport type AssistantEvent = keyof AssistantEventMap;\n\nexport type AssistantEventMap = {\n // Thread events (from ThreadRuntimeEventType)\n \"thread.run-start\": {\n threadId: string;\n };\n \"thread.run-end\": {\n threadId: string;\n };\n \"thread.initialize\": {\n threadId: string;\n };\n \"thread.model-context-update\": {\n threadId: string;\n };\n\n // Composer events (from ComposerRuntimeEventType)\n \"composer.send\": {\n threadId: string;\n messageId?: string;\n };\n \"composer.attachment-add\": {\n threadId: string;\n messageId?: string;\n };\n\n // Thread list item events (from ThreadListItemEventType)\n \"thread-list-item.switched-to\": {\n threadId: string;\n };\n \"thread-list-item.switched-away\": {\n threadId: string;\n };\n\n // Catch-all\n \"*\": {\n [K in Exclude<keyof AssistantEventMap, \"*\">]: {\n event: K;\n payload: AssistantEventMap[K];\n };\n }[Exclude<keyof AssistantEventMap, \"*\">];\n};\n\nexport const normalizeEventSelector = <TEvent extends AssistantEvent>(\n selector: AssistantEventSelector<TEvent>,\n) => {\n if (typeof selector === \"string\") {\n const source = selector.split(\".\")[0] as AssistantEventScope<TEvent>;\n return {\n scope: source,\n event: selector,\n };\n }\n\n return {\n scope: selector.scope,\n event: selector.event,\n };\n};\n\nexport const checkEventScope = <\n TEvent extends AssistantEvent,\n TExpectedScope extends AssistantEventScope<AssistantEvent>,\n>(\n expectedScope: TExpectedScope,\n scope: AssistantEventScope<TEvent>,\n _event: TEvent,\n): _event is Extract<TEvent, `${SourceByScope<TExpectedScope>}.${string}`> => {\n return scope === expectedScope;\n};\n\nexport type AssistantEventCallback<TEvent extends AssistantEvent> = (\n payload: AssistantEventMap[TEvent],\n) => void;\n"],"mappings":";AAwEO,IAAM,yBAAyB,CACpC,aACG;AACH,MAAI,OAAO,aAAa,UAAU;AAChC,UAAM,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AACpC,WAAO;AAAA,MACL,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AAAA,IACL,OAAO,SAAS;AAAA,IAChB,OAAO,SAAS;AAAA,EAClB;AACF;AAEO,IAAM,kBAAkB,CAI7B,eACA,OACA,WAC4E;AAC5E,SAAO,UAAU;AACnB;","names":[]}
|
package/dist/types/index.d.ts
CHANGED
@@ -3,5 +3,5 @@ export type { AppendMessage, TextMessagePart, ReasoningMessagePart, SourceMessag
|
|
3
3
|
export type { EmptyMessagePartComponent, EmptyMessagePartProps, TextMessagePartComponent, TextMessagePartProps, ReasoningMessagePartComponent, ReasoningMessagePartProps, SourceMessagePartComponent, SourceMessagePartProps, ImageMessagePartComponent, ImageMessagePartProps, FileMessagePartComponent, FileMessagePartProps, Unstable_AudioMessagePartComponent, Unstable_AudioMessagePartProps, ToolCallMessagePartComponent, ToolCallMessagePartProps, } from "./MessagePartComponentTypes";
|
4
4
|
export type { ThreadListItemStatus } from "../legacy-runtime/runtime/ThreadListItemRuntime";
|
5
5
|
export type { Unsubscribe } from "./Unsubscribe";
|
6
|
-
export type { AssistantEventScope, AssistantEventSelector,
|
6
|
+
export type { AssistantEventScope, AssistantEventSelector, AssistantEvent, AssistantEventMap, AssistantEventCallback, } from "./EventTypes";
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EAGzB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAE5F,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EAGzB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AAE5F,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,cAAc,CAAC"}
|
@@ -1,5 +1,13 @@
|
|
1
1
|
export interface ApiObject {
|
2
2
|
[key: string]: ((...args: any[]) => any) | ApiObject;
|
3
3
|
}
|
4
|
-
export declare const tapApi: <TApi extends ApiObject
|
4
|
+
export declare const tapApi: <TApi extends ApiObject & {
|
5
|
+
getState: () => any;
|
6
|
+
}>(api: TApi, options?: {
|
7
|
+
key?: string | undefined;
|
8
|
+
}) => {
|
9
|
+
key: string | undefined;
|
10
|
+
state: any;
|
11
|
+
api: TApi;
|
12
|
+
};
|
5
13
|
//# sourceMappingURL=tap-api.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tap-api.d.ts","sourceRoot":"","sources":["../../../src/utils/tap-store/tap-api.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;CACtD;AAgCD,eAAO,MAAM,MAAM,GAAI,IAAI,SAAS,SAAS,EAAE,KAAK,IAAI,
|
1
|
+
{"version":3,"file":"tap-api.d.ts","sourceRoot":"","sources":["../../../src/utils/tap-store/tap-api.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC;CACtD;AAgCD,eAAO,MAAM,MAAM,GAAI,IAAI,SAAS,SAAS,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,CAAA;CAAE,EACrE,KAAK,IAAI,EACT,UAAU;IACR,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;;;;CAwBF,CAAC"}
|
@@ -26,15 +26,25 @@ var ReadonlyApiHandler = class {
|
|
26
26
|
return false;
|
27
27
|
}
|
28
28
|
};
|
29
|
-
var tapApi = (api) => {
|
29
|
+
var tapApi = (api, options) => {
|
30
30
|
const ref = tapRef(() => api);
|
31
31
|
tapEffect(() => {
|
32
32
|
ref.current = api;
|
33
33
|
});
|
34
|
-
|
34
|
+
const apiProxy = tapMemo(
|
35
35
|
() => new Proxy({}, new ReadonlyApiHandler(() => ref.current)),
|
36
36
|
[]
|
37
37
|
);
|
38
|
+
const key = options?.key;
|
39
|
+
const state = api.getState();
|
40
|
+
return tapMemo(
|
41
|
+
() => ({
|
42
|
+
key,
|
43
|
+
state,
|
44
|
+
api: apiProxy
|
45
|
+
}),
|
46
|
+
[state, key]
|
47
|
+
);
|
38
48
|
};
|
39
49
|
export {
|
40
50
|
tapApi
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/tap-store/tap-api.ts"],"sourcesContent":["import { tapEffect, tapMemo, tapRef } from \"@assistant-ui/tap\";\n\nexport interface ApiObject {\n [key: string]: ((...args: any[]) => any) | ApiObject;\n}\n\nclass ReadonlyApiHandler<TApi extends ApiObject> implements ProxyHandler<TApi> {\n constructor(private readonly getApi: () => TApi) {}\n\n get(_: unknown, prop: string | symbol) {\n return this.getApi()[prop as keyof TApi];\n }\n\n ownKeys(): ArrayLike<string | symbol> {\n return Object.keys(this.getApi() as object);\n }\n\n has(_: unknown, prop: string | symbol) {\n return prop in (this.getApi() as object);\n }\n\n getOwnPropertyDescriptor(_: unknown, prop: string | symbol) {\n return Object.getOwnPropertyDescriptor(this.getApi(), prop);\n }\n\n set() {\n return false;\n }\n defineProperty() {\n return false;\n }\n deleteProperty() {\n return false;\n }\n}\n\nexport const tapApi = <TApi extends ApiObject>(api: TApi) => {\n const ref = tapRef(() => api);\n tapEffect(() => {\n ref.current = api;\n });\n\n
|
1
|
+
{"version":3,"sources":["../../../src/utils/tap-store/tap-api.ts"],"sourcesContent":["import { tapEffect, tapMemo, tapRef } from \"@assistant-ui/tap\";\n\nexport interface ApiObject {\n [key: string]: ((...args: any[]) => any) | ApiObject;\n}\n\nclass ReadonlyApiHandler<TApi extends ApiObject> implements ProxyHandler<TApi> {\n constructor(private readonly getApi: () => TApi) {}\n\n get(_: unknown, prop: string | symbol) {\n return this.getApi()[prop as keyof TApi];\n }\n\n ownKeys(): ArrayLike<string | symbol> {\n return Object.keys(this.getApi() as object);\n }\n\n has(_: unknown, prop: string | symbol) {\n return prop in (this.getApi() as object);\n }\n\n getOwnPropertyDescriptor(_: unknown, prop: string | symbol) {\n return Object.getOwnPropertyDescriptor(this.getApi(), prop);\n }\n\n set() {\n return false;\n }\n defineProperty() {\n return false;\n }\n deleteProperty() {\n return false;\n }\n}\n\nexport const tapApi = <TApi extends ApiObject & { getState: () => any }>(\n api: TApi,\n options?: {\n key?: string | undefined;\n },\n) => {\n const ref = tapRef(() => api);\n tapEffect(() => {\n ref.current = api;\n });\n\n const apiProxy = tapMemo(\n () =>\n new Proxy<TApi>({} as TApi, new ReadonlyApiHandler(() => ref.current)),\n [],\n );\n\n const key = options?.key;\n const state = api.getState();\n\n return tapMemo(\n () => ({\n key,\n state,\n api: apiProxy,\n }),\n [state, key],\n );\n};\n"],"mappings":";AAAA,SAAS,WAAW,SAAS,cAAc;AAM3C,IAAM,qBAAN,MAA+E;AAAA,EAC7E,YAA6B,QAAoB;AAApB;AAAA,EAAqB;AAAA,EAElD,IAAI,GAAY,MAAuB;AACrC,WAAO,KAAK,OAAO,EAAE,IAAkB;AAAA,EACzC;AAAA,EAEA,UAAsC;AACpC,WAAO,OAAO,KAAK,KAAK,OAAO,CAAW;AAAA,EAC5C;AAAA,EAEA,IAAI,GAAY,MAAuB;AACrC,WAAO,QAAS,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEA,yBAAyB,GAAY,MAAuB;AAC1D,WAAO,OAAO,yBAAyB,KAAK,OAAO,GAAG,IAAI;AAAA,EAC5D;AAAA,EAEA,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AAAA,EACA,iBAAiB;AACf,WAAO;AAAA,EACT;AACF;AAEO,IAAM,SAAS,CACpB,KACA,YAGG;AACH,QAAM,MAAM,OAAO,MAAM,GAAG;AAC5B,YAAU,MAAM;AACd,QAAI,UAAU;AAAA,EAChB,CAAC;AAED,QAAM,WAAW;AAAA,IACf,MACE,IAAI,MAAY,CAAC,GAAW,IAAI,mBAAmB,MAAM,IAAI,OAAO,CAAC;AAAA,IACvE,CAAC;AAAA,EACH;AAEA,QAAM,MAAM,SAAS;AACrB,QAAM,QAAQ,IAAI,SAAS;AAE3B,SAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,KAAK;AAAA,IACP;AAAA,IACA,CAAC,OAAO,GAAG;AAAA,EACb;AACF;","names":[]}
|
package/package.json
CHANGED
@@ -13,8 +13,8 @@ import { asStore, Store, tapApi } from "../utils/tap-store";
|
|
13
13
|
import { useResource } from "@assistant-ui/tap/react";
|
14
14
|
import { useMemo } from "react";
|
15
15
|
import {
|
16
|
-
|
17
|
-
|
16
|
+
AssistantEvent,
|
17
|
+
AssistantEventCallback,
|
18
18
|
checkEventScope,
|
19
19
|
normalizeEventSelector,
|
20
20
|
} from "../types/EventTypes";
|
@@ -38,9 +38,9 @@ type AssistantClientApi = {
|
|
38
38
|
readonly threads: ThreadListClientApi;
|
39
39
|
readonly toolUIs: ToolUIApi;
|
40
40
|
|
41
|
-
on<TEvent extends
|
42
|
-
event:
|
43
|
-
callback:
|
41
|
+
on<TEvent extends AssistantEvent>(
|
42
|
+
event: TEvent,
|
43
|
+
callback: AssistantEventCallback<TEvent>,
|
44
44
|
): Unsubscribe;
|
45
45
|
|
46
46
|
registerModelContextProvider(provider: ModelContextProvider): Unsubscribe;
|
@@ -72,7 +72,7 @@ const AssistantStore = resource(
|
|
72
72
|
[threads.state, toolUIs.state],
|
73
73
|
);
|
74
74
|
|
75
|
-
|
75
|
+
return tapApi<AssistantClientApi>({
|
76
76
|
getState: () => state,
|
77
77
|
|
78
78
|
threads: threads.api,
|
@@ -82,9 +82,6 @@ const AssistantStore = resource(
|
|
82
82
|
registerModelContextProvider: registerModelContextProvider,
|
83
83
|
__internal_getRuntime: () => __internal_runtime ?? null,
|
84
84
|
});
|
85
|
-
|
86
|
-
// notify the store of state changes
|
87
|
-
return tapMemo(() => ({ api }), [state]);
|
88
85
|
},
|
89
86
|
);
|
90
87
|
|
@@ -124,10 +121,7 @@ const getClientFromStore = (client: Store<{ api: AssistantClientApi }>) => {
|
|
124
121
|
__internal_getRuntime() {
|
125
122
|
return client.getState().api.__internal_getRuntime();
|
126
123
|
},
|
127
|
-
on
|
128
|
-
selector: AssistantEventSelector<TEvent>,
|
129
|
-
callback: (e: AssistantEvents[TEvent]) => void,
|
130
|
-
): Unsubscribe {
|
124
|
+
on(selector, callback) {
|
131
125
|
const { event, scope } = normalizeEventSelector(selector);
|
132
126
|
if (scope === "*") return client.getState().api.on(event, callback);
|
133
127
|
|
@@ -5,7 +5,7 @@ import { ToolUIState, ToolUIApi } from "./types/ToolUI";
|
|
5
5
|
export const ToolUIClient = resource(() => {
|
6
6
|
const [state, setState] = tapState<ToolUIState>(() => ({}));
|
7
7
|
|
8
|
-
|
8
|
+
return tapApi<ToolUIApi>({
|
9
9
|
getState: () => state,
|
10
10
|
|
11
11
|
setToolUI: (toolName, render) => {
|
@@ -26,9 +26,4 @@ export const ToolUIClient = resource(() => {
|
|
26
26
|
};
|
27
27
|
},
|
28
28
|
});
|
29
|
-
|
30
|
-
return {
|
31
|
-
state,
|
32
|
-
api,
|
33
|
-
};
|
34
29
|
});
|
@@ -6,7 +6,7 @@ import { ThreadClientApi, ThreadClientState } from "./Thread";
|
|
6
6
|
|
7
7
|
export type ThreadListClientState = {
|
8
8
|
readonly mainThreadId: string;
|
9
|
-
readonly newThreadId: string |
|
9
|
+
readonly newThreadId: string | null;
|
10
10
|
readonly isLoading: boolean;
|
11
11
|
readonly threadIds: readonly string[];
|
12
12
|
readonly archivedThreadIds: readonly string[];
|
@@ -4,7 +4,7 @@ import { useMemo, type FC, type PropsWithChildren } from "react";
|
|
4
4
|
|
5
5
|
import {
|
6
6
|
AssistantApi,
|
7
|
-
|
7
|
+
AssistantProvider,
|
8
8
|
useAssistantApi,
|
9
9
|
createAssistantApiField,
|
10
10
|
} from "../react/AssistantApiContext";
|
@@ -25,7 +25,7 @@ export const MessageAttachmentByIndexProvider: FC<
|
|
25
25
|
} satisfies Partial<AssistantApi>;
|
26
26
|
}, [api, index]);
|
27
27
|
|
28
|
-
return <
|
28
|
+
return <AssistantProvider api={api2}>{children}</AssistantProvider>;
|
29
29
|
};
|
30
30
|
|
31
31
|
export const ComposerAttachmentByIndexProvider: FC<
|
@@ -44,5 +44,5 @@ export const ComposerAttachmentByIndexProvider: FC<
|
|
44
44
|
} satisfies Partial<AssistantApi>;
|
45
45
|
}, [api, index]);
|
46
46
|
|
47
|
-
return <
|
47
|
+
return <AssistantProvider api={api2}>{children}</AssistantProvider>;
|
48
48
|
};
|
@@ -3,12 +3,10 @@
|
|
3
3
|
import { useMemo, type FC, type PropsWithChildren } from "react";
|
4
4
|
import {
|
5
5
|
AssistantApi,
|
6
|
-
|
6
|
+
AssistantProvider,
|
7
7
|
useAssistantApi,
|
8
8
|
createAssistantApiField,
|
9
9
|
} from "../react/AssistantApiContext";
|
10
|
-
import { AssistantEvents, AssistantEventSelector } from "../../types";
|
11
|
-
import { Unsubscribe } from "@assistant-ui/tap";
|
12
10
|
import {
|
13
11
|
checkEventScope,
|
14
12
|
normalizeEventSelector,
|
@@ -33,10 +31,7 @@ export const MessageByIndexProvider: FC<
|
|
33
31
|
query: {},
|
34
32
|
get: () => getMessage().composer,
|
35
33
|
}),
|
36
|
-
on
|
37
|
-
selector: AssistantEventSelector<TEvent>,
|
38
|
-
callback: (e: AssistantEvents[TEvent]) => void,
|
39
|
-
): Unsubscribe {
|
34
|
+
on(selector, callback) {
|
40
35
|
const { event, scope } = normalizeEventSelector(selector);
|
41
36
|
if (
|
42
37
|
!checkEventScope("composer", scope, event) &&
|
@@ -53,5 +48,5 @@ export const MessageByIndexProvider: FC<
|
|
53
48
|
} satisfies Partial<AssistantApi>;
|
54
49
|
}, [api, index]);
|
55
50
|
|
56
|
-
return <
|
51
|
+
return <AssistantProvider api={api2}>{children}</AssistantProvider>;
|
57
52
|
};
|
@@ -3,7 +3,7 @@
|
|
3
3
|
import { useMemo, type FC, type PropsWithChildren } from "react";
|
4
4
|
import {
|
5
5
|
AssistantApi,
|
6
|
-
|
6
|
+
AssistantProvider,
|
7
7
|
useAssistantApi,
|
8
8
|
createAssistantApiField,
|
9
9
|
} from "../react/AssistantApiContext";
|
@@ -24,5 +24,5 @@ export const PartByIndexProvider: FC<
|
|
24
24
|
} satisfies Partial<AssistantApi>;
|
25
25
|
}, [api, index]);
|
26
26
|
|
27
|
-
return <
|
27
|
+
return <AssistantProvider api={api2}>{children}</AssistantProvider>;
|
28
28
|
};
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
import { useMemo, type FC, type PropsWithChildren } from "react";
|
4
4
|
import {
|
5
|
-
|
5
|
+
AssistantProvider,
|
6
6
|
AssistantApi,
|
7
7
|
createAssistantApiField,
|
8
8
|
} from "../react/AssistantApiContext";
|
@@ -25,15 +25,13 @@ const TextMessagePartClient = resource(
|
|
25
25
|
[text, isRunning],
|
26
26
|
);
|
27
27
|
|
28
|
-
|
28
|
+
return tapApi<MessagePartClientApi>({
|
29
29
|
getState: () => state,
|
30
30
|
addToolResult: () => {
|
31
31
|
throw new Error("Not supported");
|
32
32
|
},
|
33
33
|
__internal_getRuntime: () => null,
|
34
34
|
});
|
35
|
-
|
36
|
-
return api;
|
37
35
|
},
|
38
36
|
);
|
39
37
|
|
@@ -51,12 +49,12 @@ export const TextMessagePartProvider: FC<
|
|
51
49
|
part: createAssistantApiField({
|
52
50
|
source: "root",
|
53
51
|
query: {},
|
54
|
-
get: () => store.getState(),
|
52
|
+
get: () => store.getState().api,
|
55
53
|
}),
|
56
54
|
subscribe: store.subscribe,
|
57
|
-
|
55
|
+
flushSync: store.flushSync,
|
58
56
|
} satisfies Partial<AssistantApi>;
|
59
57
|
}, [store]);
|
60
58
|
|
61
|
-
return <
|
59
|
+
return <AssistantProvider api={api}>{children}</AssistantProvider>;
|
62
60
|
};
|
@@ -3,12 +3,10 @@
|
|
3
3
|
import { useMemo, type FC, type PropsWithChildren } from "react";
|
4
4
|
import {
|
5
5
|
AssistantApi,
|
6
|
-
|
6
|
+
AssistantProvider,
|
7
7
|
useAssistantApi,
|
8
8
|
createAssistantApiField,
|
9
9
|
} from "../react/AssistantApiContext";
|
10
|
-
import { AssistantEventSelector, AssistantEvents } from "../../types";
|
11
|
-
import { Unsubscribe } from "@assistant-ui/tap";
|
12
10
|
import {
|
13
11
|
checkEventScope,
|
14
12
|
normalizeEventSelector,
|
@@ -30,14 +28,12 @@ export const ThreadListItemByIndexProvider: FC<
|
|
30
28
|
query: { type: "index", index, archived },
|
31
29
|
get: () => getItem(),
|
32
30
|
}),
|
33
|
-
on
|
34
|
-
selector: AssistantEventSelector<TEvent>,
|
35
|
-
callback: (e: AssistantEvents[TEvent]) => void,
|
36
|
-
): Unsubscribe {
|
31
|
+
on(selector, callback) {
|
37
32
|
const { event, scope } = normalizeEventSelector(selector);
|
38
|
-
if (
|
33
|
+
if (!checkEventScope("thread-list-item", scope, event))
|
34
|
+
return api.on(selector, callback);
|
39
35
|
|
40
|
-
return api.on({ scope: "*", event }, (e
|
36
|
+
return api.on({ scope: "*", event }, (e) => {
|
41
37
|
if (e.threadId === getItem().getState().id) {
|
42
38
|
callback(e);
|
43
39
|
}
|
@@ -46,7 +42,7 @@ export const ThreadListItemByIndexProvider: FC<
|
|
46
42
|
} satisfies Partial<AssistantApi>;
|
47
43
|
}, [api, index, archived]);
|
48
44
|
|
49
|
-
return <
|
45
|
+
return <AssistantProvider api={api2}>{children}</AssistantProvider>;
|
50
46
|
};
|
51
47
|
|
52
48
|
export const ThreadListItemByIdProvider: FC<
|
@@ -64,15 +60,12 @@ export const ThreadListItemByIdProvider: FC<
|
|
64
60
|
query: { type: "id", id },
|
65
61
|
get: () => getItem(),
|
66
62
|
}),
|
67
|
-
on
|
68
|
-
selector: AssistantEventSelector<TEvent>,
|
69
|
-
callback: (e: AssistantEvents[TEvent]) => void,
|
70
|
-
): Unsubscribe {
|
63
|
+
on(selector, callback) {
|
71
64
|
const { event, scope } = normalizeEventSelector(selector);
|
72
65
|
if (!checkEventScope("thread-list-item", scope, event))
|
73
66
|
return api.on(selector, callback);
|
74
67
|
|
75
|
-
return api.on({ scope: "*", event }, (e
|
68
|
+
return api.on({ scope: "*", event }, (e) => {
|
76
69
|
if (e.threadId !== getItem().getState().id) return;
|
77
70
|
callback(e);
|
78
71
|
});
|
@@ -80,5 +73,5 @@ export const ThreadListItemByIdProvider: FC<
|
|
80
73
|
} satisfies Partial<AssistantApi>;
|
81
74
|
}, [api, id]);
|
82
75
|
|
83
|
-
return <
|
76
|
+
return <AssistantProvider api={api2}>{children}</AssistantProvider>;
|
84
77
|
};
|
@@ -34,14 +34,16 @@ import { Unsubscribe } from "@assistant-ui/tap";
|
|
34
34
|
import { ModelContextProvider } from "../../model-context";
|
35
35
|
import { AssistantRuntime } from "../../legacy-runtime/runtime/AssistantRuntime";
|
36
36
|
import {
|
37
|
+
AssistantEvent,
|
38
|
+
AssistantEventCallback,
|
37
39
|
AssistantEventSelector,
|
38
|
-
AssistantEvents,
|
39
40
|
normalizeEventSelector,
|
40
41
|
} from "../../types/EventTypes";
|
41
42
|
import {
|
42
43
|
ThreadListClientApi,
|
43
44
|
ThreadListClientState,
|
44
45
|
} from "../../client/types/ThreadList";
|
46
|
+
import { ThreadViewportProvider } from "../providers/ThreadViewportProvider";
|
45
47
|
|
46
48
|
export type AssistantState = {
|
47
49
|
readonly threads: ThreadListClientState;
|
@@ -115,9 +117,9 @@ export type AssistantApi = {
|
|
115
117
|
subscribe(listener: () => void): Unsubscribe;
|
116
118
|
flushSync(): void;
|
117
119
|
|
118
|
-
on<TEvent extends
|
120
|
+
on<TEvent extends AssistantEvent>(
|
119
121
|
event: AssistantEventSelector<TEvent>,
|
120
|
-
callback:
|
122
|
+
callback: AssistantEventCallback<TEvent>,
|
121
123
|
): Unsubscribe;
|
122
124
|
|
123
125
|
// temp
|
@@ -279,13 +281,17 @@ const extendApi = (
|
|
279
281
|
};
|
280
282
|
};
|
281
283
|
|
282
|
-
export const
|
284
|
+
export const AssistantProvider: FC<
|
283
285
|
PropsWithChildren<{ api: Partial<AssistantApi> }>
|
284
286
|
> = ({ api: api2, children }) => {
|
285
287
|
const api = useAssistantApi();
|
286
288
|
const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);
|
287
289
|
|
288
290
|
return (
|
289
|
-
<AssistantApiContext value={extendedApi}>
|
291
|
+
<AssistantApiContext value={extendedApi}>
|
292
|
+
{/* TODO temporarily allow accessing viewport state from outside the viewport */}
|
293
|
+
{/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}
|
294
|
+
<ThreadViewportProvider>{children}</ThreadViewportProvider>
|
295
|
+
</AssistantApiContext>
|
290
296
|
);
|
291
297
|
};
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import { useEffect, useRef } from "react";
|
2
2
|
import { useAssistantApi } from "../../react/AssistantApiContext";
|
3
3
|
import {
|
4
|
+
AssistantEvent,
|
5
|
+
AssistantEventCallback,
|
4
6
|
AssistantEventSelector,
|
5
|
-
AssistantEvents,
|
6
7
|
normalizeEventSelector,
|
7
8
|
} from "../../../types/EventTypes";
|
8
9
|
|
9
|
-
export const useAssistantEvent = <TEvent extends
|
10
|
+
export const useAssistantEvent = <TEvent extends AssistantEvent>(
|
10
11
|
selector: AssistantEventSelector<TEvent>,
|
11
|
-
callback:
|
12
|
+
callback: AssistantEventCallback<TEvent>,
|
12
13
|
) => {
|
13
14
|
const api = useAssistantApi();
|
14
15
|
const callbackRef = useRef(callback);
|