@harnessio/ai-chat-core 0.0.4 → 0.0.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/index.js
CHANGED
|
@@ -385,6 +385,12 @@ class R extends y {
|
|
|
385
385
|
reset(t = []) {
|
|
386
386
|
this._core.reset(t);
|
|
387
387
|
}
|
|
388
|
+
setConversationId(t) {
|
|
389
|
+
this._core.setConversationId(t);
|
|
390
|
+
}
|
|
391
|
+
setTitle(t) {
|
|
392
|
+
this._core.setTitle(t);
|
|
393
|
+
}
|
|
388
394
|
subscribe(t) {
|
|
389
395
|
return super.subscribe(t);
|
|
390
396
|
}
|
|
@@ -610,6 +616,12 @@ class v extends y {
|
|
|
610
616
|
reset(t = []) {
|
|
611
617
|
this.updateMessages([...t]);
|
|
612
618
|
}
|
|
619
|
+
setConversationId(t) {
|
|
620
|
+
this._conversationId = t, this.notifySubscribers();
|
|
621
|
+
}
|
|
622
|
+
setTitle(t) {
|
|
623
|
+
this._title = t, this.notifySubscribers();
|
|
624
|
+
}
|
|
613
625
|
}
|
|
614
626
|
class Z extends y {
|
|
615
627
|
constructor(t) {
|
|
@@ -672,7 +684,7 @@ class Z extends y {
|
|
|
672
684
|
const n = this._threadStates.get(this._mainThreadId);
|
|
673
685
|
n && (n.isMain = !1, this._threadStates.set(this._mainThreadId, n), (a = this._threadItems.get(this._mainThreadId)) == null || a.updateState(n)), this._mainThreadId = t;
|
|
674
686
|
const r = this._threadStates.get(t);
|
|
675
|
-
if (r && (r.isMain = !0, this._threadStates.set(t, r), (o = this._threadItems.get(t)) == null || o.updateState(r)), this.config.threadListAdapter && (r != null && r.conversationId)) {
|
|
687
|
+
if (r && (r.isMain = !0, this._threadStates.set(t, r), (o = this._threadItems.get(t)) == null || o.updateState(r), e.setConversationId(r.conversationId), e.setTitle(r.title)), this.config.threadListAdapter && (r != null && r.conversationId)) {
|
|
676
688
|
this._isLoading = !0, this.notifySubscribers();
|
|
677
689
|
try {
|
|
678
690
|
const u = await this.config.threadListAdapter.loadThread(t);
|
|
@@ -777,7 +789,7 @@ class Z extends y {
|
|
|
777
789
|
this.notifySubscribers();
|
|
778
790
|
}
|
|
779
791
|
}
|
|
780
|
-
class
|
|
792
|
+
class ft extends y {
|
|
781
793
|
constructor(t) {
|
|
782
794
|
super();
|
|
783
795
|
c(this, "threads");
|
|
@@ -881,23 +893,23 @@ function tt() {
|
|
|
881
893
|
});
|
|
882
894
|
if (u.join("") !== "0123456789")
|
|
883
895
|
return !1;
|
|
884
|
-
var
|
|
896
|
+
var f = {};
|
|
885
897
|
return "abcdefghijklmnopqrst".split("").forEach(function(l) {
|
|
886
|
-
|
|
887
|
-
}), Object.keys(Object.assign({},
|
|
898
|
+
f[l] = l;
|
|
899
|
+
}), Object.keys(Object.assign({}, f)).join("") === "abcdefghijklmnopqrst";
|
|
888
900
|
} catch {
|
|
889
901
|
return !1;
|
|
890
902
|
}
|
|
891
903
|
}
|
|
892
904
|
return E = n() ? Object.assign : function(r, a) {
|
|
893
|
-
for (var o, u = e(r),
|
|
905
|
+
for (var o, u = e(r), f, l = 1; l < arguments.length; l++) {
|
|
894
906
|
o = Object(arguments[l]);
|
|
895
907
|
for (var h in o)
|
|
896
908
|
s.call(o, h) && (u[h] = o[h]);
|
|
897
909
|
if (i) {
|
|
898
|
-
|
|
899
|
-
for (var d = 0; d <
|
|
900
|
-
t.call(o,
|
|
910
|
+
f = i(o);
|
|
911
|
+
for (var d = 0; d < f.length; d++)
|
|
912
|
+
t.call(o, f[d]) && (u[f[d]] = o[f[d]]);
|
|
901
913
|
}
|
|
902
914
|
}
|
|
903
915
|
return u;
|
|
@@ -921,12 +933,12 @@ function et() {
|
|
|
921
933
|
s = t("react.element"), _.Fragment = t("react.fragment");
|
|
922
934
|
}
|
|
923
935
|
var e = i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, n = Object.prototype.hasOwnProperty, r = { key: !0, ref: !0, __self: !0, __source: !0 };
|
|
924
|
-
function a(o, u,
|
|
925
|
-
var l, h = {}, d = null,
|
|
926
|
-
|
|
936
|
+
function a(o, u, f) {
|
|
937
|
+
var l, h = {}, d = null, p = null;
|
|
938
|
+
f !== void 0 && (d = "" + f), u.key !== void 0 && (d = "" + u.key), u.ref !== void 0 && (p = u.ref);
|
|
927
939
|
for (l in u) n.call(u, l) && !r.hasOwnProperty(l) && (h[l] = u[l]);
|
|
928
940
|
if (o && o.defaultProps) for (l in u = o.defaultProps, u) h[l] === void 0 && (h[l] = u[l]);
|
|
929
|
-
return { $$typeof: s, type: o, key: d, ref:
|
|
941
|
+
return { $$typeof: s, type: o, key: d, ref: p, props: h, _owner: e.current };
|
|
930
942
|
}
|
|
931
943
|
return _.jsx = a, _.jsxs = a, _;
|
|
932
944
|
}
|
|
@@ -936,7 +948,7 @@ function st() {
|
|
|
936
948
|
}
|
|
937
949
|
var S = st();
|
|
938
950
|
const k = H(null);
|
|
939
|
-
function
|
|
951
|
+
function pt({ runtime: i, children: s }) {
|
|
940
952
|
return /* @__PURE__ */ S.jsx(k.Provider, { value: i, children: s });
|
|
941
953
|
}
|
|
942
954
|
function rt() {
|
|
@@ -996,12 +1008,12 @@ function it() {
|
|
|
996
1008
|
}
|
|
997
1009
|
var t = typeof Object.is == "function" ? Object.is : s, e = i.useState, n = i.useEffect, r = i.useLayoutEffect, a = i.useDebugValue;
|
|
998
1010
|
function o(h, d) {
|
|
999
|
-
var
|
|
1011
|
+
var p = d(), m = e({ inst: { value: p, getSnapshot: d } }), b = m[0].inst, T = m[1];
|
|
1000
1012
|
return r(
|
|
1001
1013
|
function() {
|
|
1002
|
-
b.value =
|
|
1014
|
+
b.value = p, b.getSnapshot = d, u(b) && T({ inst: b });
|
|
1003
1015
|
},
|
|
1004
|
-
[h,
|
|
1016
|
+
[h, p, d]
|
|
1005
1017
|
), n(
|
|
1006
1018
|
function() {
|
|
1007
1019
|
return u(b) && T({ inst: b }), h(function() {
|
|
@@ -1009,22 +1021,22 @@ function it() {
|
|
|
1009
1021
|
});
|
|
1010
1022
|
},
|
|
1011
1023
|
[h]
|
|
1012
|
-
), a(
|
|
1024
|
+
), a(p), p;
|
|
1013
1025
|
}
|
|
1014
1026
|
function u(h) {
|
|
1015
1027
|
var d = h.getSnapshot;
|
|
1016
1028
|
h = h.value;
|
|
1017
1029
|
try {
|
|
1018
|
-
var
|
|
1019
|
-
return !t(h,
|
|
1030
|
+
var p = d();
|
|
1031
|
+
return !t(h, p);
|
|
1020
1032
|
} catch {
|
|
1021
1033
|
return !0;
|
|
1022
1034
|
}
|
|
1023
1035
|
}
|
|
1024
|
-
function
|
|
1036
|
+
function f(h, d) {
|
|
1025
1037
|
return d();
|
|
1026
1038
|
}
|
|
1027
|
-
var l = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ?
|
|
1039
|
+
var l = typeof window > "u" || typeof window.document > "u" || typeof window.document.createElement > "u" ? f : o;
|
|
1028
1040
|
return A.useSyncExternalStore = i.useSyncExternalStore !== void 0 ? i.useSyncExternalStore : l, A;
|
|
1029
1041
|
}
|
|
1030
1042
|
var D;
|
|
@@ -1198,10 +1210,10 @@ class Tt {
|
|
|
1198
1210
|
const { done: o, value: u } = await e.read();
|
|
1199
1211
|
if (o || t != null && t.aborted) break;
|
|
1200
1212
|
r += n.decode(u, { stream: !0 });
|
|
1201
|
-
const
|
|
1213
|
+
const f = r.split(`
|
|
1202
1214
|
`);
|
|
1203
|
-
r =
|
|
1204
|
-
for (const l of
|
|
1215
|
+
r = f.pop() || "";
|
|
1216
|
+
for (const l of f) {
|
|
1205
1217
|
const h = l.trim();
|
|
1206
1218
|
if (!h) {
|
|
1207
1219
|
a = null;
|
|
@@ -1217,11 +1229,11 @@ class Tt {
|
|
|
1217
1229
|
if (d === "eof" || h === "eof")
|
|
1218
1230
|
break;
|
|
1219
1231
|
try {
|
|
1220
|
-
const
|
|
1232
|
+
const p = JSON.parse(d);
|
|
1221
1233
|
if (a && this.shouldProcessEvent(a)) {
|
|
1222
1234
|
const m = this.convertEvent({
|
|
1223
1235
|
event: a,
|
|
1224
|
-
data:
|
|
1236
|
+
data: p
|
|
1225
1237
|
});
|
|
1226
1238
|
m && (yield m);
|
|
1227
1239
|
}
|
|
@@ -1238,8 +1250,8 @@ class Tt {
|
|
|
1238
1250
|
}
|
|
1239
1251
|
}
|
|
1240
1252
|
export {
|
|
1241
|
-
|
|
1242
|
-
|
|
1253
|
+
ft as AssistantRuntime,
|
|
1254
|
+
pt as AssistantRuntimeProvider,
|
|
1243
1255
|
St as AuxiliaryRenderer,
|
|
1244
1256
|
Tt as BaseSSEStreamAdapter,
|
|
1245
1257
|
V as CapabilityExecutionManager,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/core/PluginRegistry.ts","../src/core/CapabilityRegistry.ts","../src/core/CapabilityExecutionManager.ts","../src/utils/Subscribable.ts","../src/runtime/ContentFocusRuntime/ContentFocusRuntime.ts","../src/utils/idGenerator.ts","../src/runtime/ThreadListItemRuntime/ThreadListItemRuntime.ts","../src/runtime/ComposerRuntime/ComposerRuntime.ts","../src/runtime/ThreadRuntime/ThreadRuntime.ts","../src/runtime/ThreadRuntime/ThreadRuntimeCore.ts","../src/runtime/ThreadListRuntime/ThreadListRuntime.tsx","../src/runtime/AssistantRuntime/AssistantRuntime.tsx","../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../node_modules/.pnpm/react@17.0.2/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js","../src/react/providers/AssistantRuntimeProvider.tsx","../src/react/hooks/useAssistantRuntime.ts","../src/react/hooks/useThreadList.ts","../src/react/hooks/useCurrentThread.ts","../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@17.0.2/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@17.0.2/node_modules/use-sync-external-store/shim/index.js","../src/react/hooks/useMessages.ts","../src/react/hooks/useComposer.ts","../src/react/hooks/useContentRenderer.ts","../src/react/hooks/useContentFocus.ts","../src/react/hooks/useCapability.ts","../src/react/hooks/useCapabilityExecution.ts","../src/react/components/CapabilityRenderer.tsx","../src/react/components/ContentRenderer.tsx","../src/react/components/AuxiliaryRenderer.tsx","../src/react/utils/makeCapability.tsx","../src/utils/BaseSSEStreamAdapter.ts"],"sourcesContent":["import { ChatPlugin, MessageRenderer } from '../types/plugin'\n\nexport class PluginRegistry {\n private plugins = new Map<string, ChatPlugin>()\n private renderersByType = new Map<string, MessageRenderer[]>()\n\n public registerPlugin(plugin: ChatPlugin): void {\n if (this.plugins.has(plugin.id)) {\n // handle duplicate plugin registration\n // show a warning / error\n }\n\n this.plugins.set(plugin.id, plugin)\n\n plugin.renderers.forEach(renderer => {\n const renderers = this.renderersByType.get(renderer.type) || []\n renderers.push(renderer)\n renderers.sort((a, b) => (b?.priority ?? 0) - (a?.priority ?? 0))\n this.renderersByType.set(renderer.type, renderers)\n })\n }\n\n public unregisterPlugin(pluginId: string): boolean {\n const plugin = this.plugins.get(pluginId)\n if (!plugin) {\n return false\n }\n\n plugin.renderers.forEach(renderer => {\n const renderers = this.renderersByType.get(renderer.type) || []\n const filteredRenderers = renderers.filter(r => !plugin.renderers.includes(r))\n\n if (filteredRenderers.length === 0) {\n this.renderersByType.delete(renderer.type)\n } else {\n this.renderersByType.set(renderer.type, filteredRenderers)\n }\n })\n\n return this.plugins.delete(pluginId)\n }\n\n public getPlugin(pluginId: string): ChatPlugin | undefined {\n return this.plugins.get(pluginId)\n }\n\n public getAllPlugins(): ChatPlugin[] {\n return Array.from(this.plugins.values())\n }\n\n public getRenderersByType(type: string): MessageRenderer[] {\n return this.renderersByType.get(type) || []\n }\n\n public getBestRendererForType(type: string): MessageRenderer | undefined {\n const renderers = this.getRenderersByType(type)\n return renderers[0]\n }\n\n public clear(): void {\n this.plugins.clear()\n this.renderersByType.clear()\n }\n}\n","import { CapabilityHandler, CapabilityRenderer } from '../types/capability'\n\nexport class CapabilityRegistry {\n private handlers = new Map<string, CapabilityHandler>()\n private renderers = new Map<string, CapabilityRenderer>()\n\n public registerHandler(name: string, handler: CapabilityHandler): void {\n this.handlers.set(name, handler)\n }\n\n public registerRenderer(name: string, renderer: CapabilityRenderer): void {\n this.renderers.set(name, renderer)\n }\n\n public unregister(name: string): void {\n this.handlers.delete(name)\n this.renderers.delete(name)\n }\n\n public getHandler(name: string): CapabilityHandler | undefined {\n return this.handlers.get(name)\n }\n\n public getRenderer(name: string): CapabilityRenderer | undefined {\n return this.renderers.get(name)\n }\n\n public getStrategy() {\n return 'queue'\n }\n\n public hasHandler(name: string): boolean {\n return this.handlers.has(name)\n }\n\n public hasRenderer(name: string): boolean {\n return this.renderers.has(name)\n }\n\n public clear(): void {\n this.handlers.clear()\n this.renderers.clear()\n }\n\n public getAllCapabilityNames(): string[] {\n return Array.from(new Set([...this.handlers.keys(), ...this.renderers.keys()]))\n }\n}\n","import { CapabilityExecution, CapabilityHandler } from '../types/capability'\n\nexport class CapabilityExecutionManager {\n private executions = new Map<string, CapabilityExecution>()\n private executionQueue: string[] = []\n private isProcessing = false\n private runningByName = new Map<string, string[]>()\n private subscribers = new Set<(executionId: string) => void>()\n private getHandler: (name: string) => CapabilityHandler | undefined\n\n constructor(getHandler: (name: string) => CapabilityHandler | undefined) {\n this.getHandler = getHandler\n }\n\n public async executeCapability<TArgs, TResult>(\n name: string,\n id: string,\n args: TArgs,\n messageId: string,\n strategy = 'queue'\n ): Promise<void> {\n const handler = this.getHandler(name)\n if (!handler) {\n console.warn(`No handler registered for capability: ${name}`)\n return\n }\n\n const execution: CapabilityExecution<TArgs, TResult> = {\n id,\n name,\n args,\n status: { type: 'queued' },\n timestamp: Date.now(),\n messageId\n }\n\n this.executions.set(id, execution)\n this.notifySubscribers(id)\n\n switch (strategy) {\n case 'queue':\n default:\n this.executionQueue.push(id)\n break\n }\n\n if (!this.isProcessing) {\n this.processQueue()\n }\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessing || this.executionQueue.length === 0) {\n return\n }\n\n this.isProcessing = true\n\n while (this.executionQueue.length > 0) {\n const executionId = this.executionQueue.shift()!\n const execution = this.executions.get(executionId)\n\n if (!execution) continue\n\n const handler = this.getHandler(execution.name)\n if (!handler) continue\n\n execution.status = { type: 'running' }\n this.notifySubscribers(executionId)\n\n const running = this.runningByName.get(execution.name) || []\n running.push(executionId)\n this.runningByName.set(execution.name, running)\n\n try {\n const result = await handler.execute(execution.args, {\n messageId: execution.messageId,\n capabilityId: executionId\n })\n\n execution.status = { type: 'complete', result }\n execution.result = result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n execution.status = { type: 'error', error: errorMessage }\n execution.error = errorMessage\n } finally {\n const running = this.runningByName.get(execution.name) || []\n const index = running.indexOf(executionId)\n if (index > -1) {\n running.splice(index, 1)\n }\n if (running.length === 0) {\n this.runningByName.delete(execution.name)\n } else {\n this.runningByName.set(execution.name, running)\n }\n\n this.notifySubscribers(executionId)\n }\n }\n\n this.isProcessing = false\n }\n\n public getExecution(id: string): CapabilityExecution | undefined {\n return this.executions.get(id)\n }\n\n public getExecutionsByMessage(messageId: string): CapabilityExecution[] {\n return Array.from(this.executions.values()).filter(e => e.messageId === messageId)\n }\n\n public subscribe(callback: (executionId: string) => void): () => void {\n this.subscribers.add(callback)\n return () => this.subscribers.delete(callback)\n }\n\n private notifySubscribers(executionId: string): void {\n this.subscribers.forEach(callback => callback(executionId))\n }\n\n public clear(): void {\n this.executions.clear()\n this.executionQueue = []\n this.runningByName.clear()\n }\n}\n","export type Unsubscribe = () => void\n\nexport abstract class BaseSubscribable {\n private _subscriptions = new Set<() => void>()\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback)\n return () => {\n this._subscriptions.delete(callback)\n }\n }\n\n protected notifySubscribers(): void {\n for (const callback of this._subscriptions) {\n callback()\n }\n }\n\n protected getSubscriberCount(): number {\n return this._subscriptions.size\n }\n}\n","import { Message, MessageContent } from '../../types/message'\nimport { BaseSubscribable } from '../../utils/Subscribable'\n\nexport type FocusContext = 'detail'\n\nexport interface ContentFocusState {\n isActive: boolean\n context: FocusContext | null\n focusedContent: MessageContent | null\n focusedMessage: Message | null\n focusedMessageId: string | null\n focusedContentIndex: number | null\n}\n\nexport class ContentFocusRuntime extends BaseSubscribable {\n private _state: ContentFocusState = {\n isActive: false,\n context: null,\n focusedContent: null,\n focusedMessage: null,\n focusedMessageId: null,\n focusedContentIndex: null\n }\n\n public get state(): ContentFocusState {\n return this._state\n }\n\n public get isActive(): boolean {\n return this._state.isActive\n }\n\n public get context(): FocusContext | null {\n return this._state.context\n }\n\n public get focusedContent(): MessageContent | null {\n return this._state.focusedContent\n }\n\n public get focusedMessage(): Message | null {\n return this._state.focusedMessage\n }\n\n public get focusedMessageId(): string | null {\n return this._state.focusedMessageId\n }\n\n public get focusedContentIndex(): number | null {\n return this._state.focusedContentIndex\n }\n\n public focus(\n content: MessageContent,\n message: Message,\n contentIndex: number,\n context: FocusContext = 'detail'\n ): void {\n this._state = {\n isActive: true,\n context,\n focusedContent: content,\n focusedMessage: message,\n focusedMessageId: message.id,\n focusedContentIndex: contentIndex\n }\n this.notifySubscribers()\n }\n\n public blur(): void {\n this._state = {\n isActive: false,\n context: null,\n focusedContent: null,\n focusedMessage: null,\n focusedMessageId: null,\n focusedContentIndex: null\n }\n this.notifySubscribers()\n }\n\n public toggle(\n content: MessageContent,\n message: Message,\n contentIndex: number,\n context: FocusContext = 'detail'\n ): void {\n if (\n this._state.isActive &&\n this._state.focusedMessageId === message.id &&\n this._state.focusedContentIndex === contentIndex &&\n this._state.context === context\n ) {\n this.blur()\n } else {\n this.focus(content, message, contentIndex, context)\n }\n }\n\n public switchContext(context: FocusContext): void {\n if (this._state.isActive && this._state.focusedContent) {\n this._state = {\n ...this._state,\n context\n }\n this.notifySubscribers()\n }\n }\n\n public focusNext(messages: readonly Message[]): void {\n if (!this._state.focusedMessageId || !messages.length) return\n\n const currentMsgIndex = messages.findIndex(m => m.id === this._state.focusedMessageId)\n if (currentMsgIndex === -1) return\n\n const currentMsg = messages[currentMsgIndex]\n const currentContentIndex = this._state.focusedContentIndex ?? 0\n\n if (currentContentIndex + 1 < currentMsg.content.length) {\n const nextContent = currentMsg.content[currentContentIndex + 1]\n this.focus(nextContent, currentMsg, currentContentIndex + 1, this._state.context || 'detail')\n return\n }\n\n // Try first content in next message\n if (currentMsgIndex + 1 < messages.length) {\n const nextMsg = messages[currentMsgIndex + 1]\n if (nextMsg.content.length > 0) {\n this.focus(nextMsg.content[0], nextMsg, 0, this._state.context || 'detail')\n }\n }\n }\n\n public focusPrevious(messages: readonly Message[]): void {\n if (!this._state.focusedMessageId || !messages.length) return\n\n const currentMsgIndex = messages.findIndex(m => m.id === this._state.focusedMessageId)\n if (currentMsgIndex === -1) return\n\n const currentMsg = messages[currentMsgIndex]\n const currentContentIndex = this._state.focusedContentIndex ?? 0\n\n if (currentContentIndex > 0) {\n const prevContent = currentMsg.content[currentContentIndex - 1]\n this.focus(prevContent, currentMsg, currentContentIndex - 1, this._state.context || 'detail')\n return\n }\n\n // Try last content in previous message\n if (currentMsgIndex > 0) {\n const prevMsg = messages[currentMsgIndex - 1]\n if (prevMsg.content.length > 0) {\n const lastIndex = prevMsg.content.length - 1\n this.focus(prevMsg.content[lastIndex], prevMsg, lastIndex, this._state.context || 'detail')\n }\n }\n }\n}\n","let messageIdCounter = 0\nlet threadIdCounter = 0\n\nexport function generateMessageId(): string {\n return `msg-${Date.now()}-${++messageIdCounter}`\n}\n\nexport function generateThreadId(): string {\n return `thread-${Date.now()}-${++threadIdCounter}`\n}\n\nexport function generateId(prefix = 'id'): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n}\n","import { ThreadListItemState } from '../../types/thread'\nimport { BaseSubscribable, Unsubscribe } from '../../utils/Subscribable'\n\nexport interface ThreadListItemRuntimeConfig {\n state: ThreadListItemState\n onSwitchTo: (threadId: string) => Promise<void>\n onRename: (threadId: string, title: string) => Promise<void>\n onDelete: (threadId: string) => Promise<void>\n}\n\nexport class ThreadListItemRuntime extends BaseSubscribable {\n private _state: ThreadListItemState\n\n constructor(private config: ThreadListItemRuntimeConfig) {\n super()\n this._state = config.state\n }\n\n public get state(): ThreadListItemState {\n return this._state\n }\n\n public getState(): ThreadListItemState {\n return this._state\n }\n\n public updateState(state: ThreadListItemState): void {\n this._state = state\n this.notifySubscribers()\n }\n\n public async switchTo(): Promise<void> {\n await this.config.onSwitchTo(this._state.id)\n }\n\n public async rename(newTitle: string): Promise<void> {\n await this.config.onRename(this._state.id, newTitle)\n }\n\n public async delete(): Promise<void> {\n await this.config.onDelete(this._state.id)\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n return super.subscribe(callback)\n }\n}\n","import { BaseSubscribable } from '../../utils/Subscribable'\n\nexport interface ComposerState {\n text: string\n isSubmitting: boolean\n}\n\nexport class ComposerRuntime extends BaseSubscribable {\n private _text: string = ''\n private _isSubmitting: boolean = false\n\n public get text(): string {\n return this._text\n }\n\n public get isSubmitting(): boolean {\n return this._isSubmitting\n }\n\n public getState(): ComposerState {\n return {\n text: this._text,\n isSubmitting: this._isSubmitting\n }\n }\n\n public setText(text: string): void {\n this._text = text\n this.notifySubscribers()\n }\n\n public clear(): void {\n this._text = ''\n this.notifySubscribers()\n }\n\n public setSubmitting(isSubmitting: boolean): void {\n this._isSubmitting = isSubmitting\n this.notifySubscribers()\n }\n}\n\nexport default ComposerRuntime\n","import { AppendMessage, Message, TextContent } from '../../types/message'\nimport { RuntimeCapabilities, ThreadState } from '../../types/thread'\nimport { BaseSubscribable, Unsubscribe } from '../../utils/Subscribable'\nimport ComposerRuntime from '../ComposerRuntime/ComposerRuntime'\nimport { ThreadRuntimeCore } from './ThreadRuntimeCore'\n\nexport class ThreadRuntime extends BaseSubscribable {\n public readonly composer: ComposerRuntime\n\n constructor(private _core: ThreadRuntimeCore) {\n super()\n this.composer = new ComposerRuntime()\n\n // Subscribe to core changes and propagate\n this._core.subscribe(() => {\n this.notifySubscribers()\n })\n }\n\n public get messages(): readonly Message[] {\n return this._core.messages\n }\n\n public get isRunning(): boolean {\n return this._core.isRunning\n }\n\n public get isDisabled(): boolean {\n return this._core.isDisabled\n }\n\n public get capabilities(): RuntimeCapabilities {\n return this._core.capabilities\n }\n\n public get conversationId(): string | undefined {\n return this._core.conversationId\n }\n\n public get title(): string | undefined {\n return this._core.title\n }\n\n public getState(): ThreadState {\n return {\n threadId: 'main', // Will be set by ThreadListRuntime\n isDisabled: this._core.isDisabled,\n isRunning: this._core.isRunning,\n capabilities: this._core.capabilities,\n conversationId: this._core.conversationId,\n title: this._core.title\n }\n }\n\n public append(message: AppendMessage): void {\n this._core.append(message)\n }\n\n public async send(text: string): Promise<void> {\n if (!text.trim()) return\n\n this.composer.setSubmitting(true)\n\n try {\n this.composer.clear()\n await this._core.startRun({\n role: 'user',\n content: [{ type: 'text', data: text } as TextContent]\n })\n } catch (e) {\n // TODO: Handle error\n } finally {\n this.composer.setSubmitting(false)\n }\n }\n\n public cancelRun(): void {\n this._core.cancelRun()\n }\n\n public clear(): void {\n this._core.clear()\n }\n\n public reset(messages: Message[] = []): void {\n this._core.reset(messages)\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n return super.subscribe(callback)\n }\n}\n","import { CapabilityExecutionManager } from '../../core'\nimport { CapabilityContent } from '../../types'\nimport { StreamAdapter, StreamEvent } from '../../types/adapters'\nimport { AppendMessage, Message, MessageContent, MessageStatus } from '../../types/message'\nimport { RuntimeCapabilities } from '../../types/thread'\nimport { generateMessageId } from '../../utils/idGenerator'\nimport { BaseSubscribable } from '../../utils/Subscribable'\n\nexport interface ThreadRuntimeCoreConfig {\n streamAdapter: StreamAdapter\n initialMessages?: Message[]\n onMessagesChange?: (messages: Message[]) => void\n capabilityExecutionManager?: CapabilityExecutionManager\n}\n\nexport class ThreadRuntimeCore extends BaseSubscribable {\n private _messages: Message[] = []\n private _isRunning = false\n private _isDisabled = false\n private _abortController: AbortController | null = null\n private _conversationId?: string\n private _title?: string\n\n // Track current part being accumulated\n private _currentPart: {\n messageId: string\n contentIndex: number\n type: string\n parentId?: string\n } | null = null\n\n constructor(private config: ThreadRuntimeCoreConfig) {\n super()\n if (config.initialMessages) {\n this._messages = [...config.initialMessages]\n }\n }\n\n public get messages(): readonly Message[] {\n return this._messages\n }\n\n public get isRunning(): boolean {\n return this._isRunning\n }\n\n public get isDisabled(): boolean {\n return this._isDisabled\n }\n\n public get conversationId(): string | undefined {\n return this._conversationId\n }\n\n public get title(): string | undefined {\n return this._title\n }\n\n public get capabilities(): RuntimeCapabilities {\n return {\n cancel: true,\n edit: false,\n reload: false,\n speech: false,\n attachments: false,\n feedback: false\n }\n }\n\n private updateMessages(messages: Message[]): void {\n this._messages = messages\n this.config.onMessagesChange?.(this._messages)\n this.notifySubscribers()\n }\n\n public append(message: AppendMessage): void {\n const newMessage: Message = {\n id: message.id || generateMessageId(),\n parentId: message.parentId,\n role: message.role,\n content: message.content,\n status: message.status || { type: 'complete' },\n timestamp: message.timestamp || Date.now(),\n metadata: message.metadata\n }\n\n this.updateMessages([...this._messages, newMessage])\n }\n\n public async startRun(userMessage: AppendMessage): Promise<void> {\n if (this._isRunning) {\n throw new Error('A run is already in progress')\n }\n\n this.append(userMessage)\n this._isRunning = true\n this._abortController = new AbortController()\n this._currentPart = null // Reset current part\n\n const assistantMessageId = generateMessageId()\n const assistantMessage: Message = {\n id: assistantMessageId,\n role: 'assistant',\n content: [],\n status: { type: 'running' },\n timestamp: Date.now()\n }\n\n this.updateMessages([...this._messages, assistantMessage])\n\n try {\n const stream = this.config.streamAdapter.stream({\n messages: this._messages,\n conversationId: this._conversationId,\n signal: this._abortController.signal\n })\n\n for await (const event of stream) {\n if (this._abortController.signal.aborted) {\n break\n }\n\n this.handleStreamEvent(assistantMessageId, event.event)\n }\n\n this.updateMessageStatus(assistantMessageId, { type: 'complete' })\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n this.updateMessageStatus(assistantMessageId, { type: 'cancelled' })\n } else {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n this.updateMessageStatus(assistantMessageId, {\n type: 'error',\n error: errorMessage\n })\n }\n } finally {\n this._isRunning = false\n this._abortController = null\n this._currentPart = null // Clean up\n this.notifySubscribers()\n }\n }\n\n private handleStreamEvent(messageId: string, event: StreamEvent): void {\n const messageIndex = this._messages.findIndex(m => m.id === messageId)\n if (messageIndex === -1) return\n\n const message = this._messages[messageIndex]\n\n // Handle core events with type guards\n if (event.type === 'part-start') {\n this.handlePartStart(message, event as Extract<StreamEvent, { type: 'part-start' }>)\n } else if (event.type === 'text-delta' || event.type === 'assistant_thought') {\n this.handleTextDelta(message, event as Extract<StreamEvent, { type: 'text-delta' }>)\n } else if (event.type === 'part-finish') {\n this.handlePartFinish()\n } else if (event.type === 'metadata') {\n const metadataEvent = event as Extract<StreamEvent, { type: 'metadata' }>\n message.metadata = {\n ...message.metadata,\n conversationId: metadataEvent.conversationId,\n interactionId: metadataEvent.interactionId\n }\n\n if (metadataEvent.conversationId && !this._conversationId) {\n this._conversationId = metadataEvent.conversationId\n }\n\n if (metadataEvent.title && !this._title) {\n this._title = metadataEvent.title\n }\n } else if (event.type === 'capability_execution') {\n const capabilityEvent = event as Extract<StreamEvent, { type: 'capability_execution' }>\n message.content = [\n ...message.content,\n {\n type: 'capability',\n capabilityId: capabilityEvent.capabilityId,\n capabilityName: capabilityEvent.capabilityName,\n args: capabilityEvent.args\n } as CapabilityContent\n ]\n\n // Execute capability if manager is available\n if (this.config.capabilityExecutionManager) {\n this.config.capabilityExecutionManager.executeCapability(\n capabilityEvent.capabilityName,\n capabilityEvent.capabilityId,\n capabilityEvent.args,\n messageId,\n capabilityEvent.strategy\n )\n }\n } else if (event.type === 'error') {\n const errorEvent = event as Extract<StreamEvent, { type: 'error' }>\n message.content = [\n ...message.content,\n {\n type: 'error',\n data: errorEvent.error\n }\n ]\n } else {\n // Handle custom events\n const customEvent = event as Extract<StreamEvent, { data?: any }>\n message.content = [\n ...message.content,\n {\n type: customEvent.type,\n data: customEvent.data,\n parentId: customEvent.parentId\n }\n ]\n }\n\n // Update message with new reference\n const updatedMessages = [\n ...this._messages.slice(0, messageIndex),\n { ...message, timestamp: Date.now() },\n ...this._messages.slice(messageIndex + 1)\n ]\n\n this.updateMessages(updatedMessages)\n }\n\n private handlePartStart(message: Message, event: Extract<StreamEvent, { type: 'part-start' }>): void {\n const contentIndex = message.content.length\n\n // Create initial content based on type\n let initialContent: MessageContent\n\n switch (event.part.type) {\n case 'assistant_thought':\n // Initialize as array for assistant thoughts\n initialContent = {\n type: event.part.type,\n data: [],\n parentId: event.part.parentId\n } as any\n break\n\n case 'text':\n // Initialize as empty string for text\n initialContent = {\n type: event.part.type,\n data: '',\n parentId: event.part.parentId\n } as any\n break\n\n default:\n initialContent = {\n type: event.part.type,\n parentId: event.part.parentId\n } as any\n }\n\n // Add to message with new reference\n message.content = [...message.content, initialContent]\n\n // Track current part\n this._currentPart = {\n messageId: message.id,\n contentIndex,\n type: event.part.type,\n parentId: event.part.parentId\n }\n }\n\n private handleTextDelta(message: Message, event: Extract<StreamEvent, { type: 'text-delta' }>): void {\n if (!this._currentPart) {\n console.warn('Received text-delta without part-start')\n return\n }\n\n const content = message.content[this._currentPart.contentIndex] as any\n\n if (content.type === 'assistant_thought') {\n // For assistant thoughts, push each delta as a new array item\n if (!Array.isArray(content.data)) {\n content.data = []\n }\n if (event.delta.trim()) {\n content.data.push(event.delta.trim())\n }\n } else {\n // For text and other types, concatenate into a single string\n content.data = (content.data || '') + event.delta\n }\n }\n\n private handlePartFinish(): void {\n if (!this._currentPart) {\n console.warn('Received part-finish without part-start')\n return\n }\n\n // Part is complete, clear tracking\n this._currentPart = null\n }\n\n private updateMessageStatus(messageId: string, status: MessageStatus): void {\n const messageIndex = this._messages.findIndex(m => m.id === messageId)\n if (messageIndex === -1) return\n\n const updatedMessages = [\n ...this._messages.slice(0, messageIndex),\n {\n ...this._messages[messageIndex],\n status\n },\n ...this._messages.slice(messageIndex + 1)\n ]\n\n this.updateMessages(updatedMessages)\n }\n\n public clear(): void {\n this.updateMessages([])\n }\n\n public cancelRun(): void {\n if (!this._isRunning || !this._abortController) {\n return\n }\n\n this._abortController.abort()\n }\n\n public reset(messages: Message[] = []): void {\n this.updateMessages([...messages])\n }\n}\n","import { CapabilityExecutionManager } from '../../core'\nimport { StreamAdapter, ThreadListAdapter } from '../../types/adapters'\nimport { ThreadListItemState } from '../../types/thread'\nimport { generateThreadId } from '../../utils/idGenerator'\nimport { BaseSubscribable } from '../../utils/Subscribable'\nimport { ThreadListItemRuntime } from '../ThreadListItemRuntime/ThreadListItemRuntime'\nimport { ThreadRuntime } from '../ThreadRuntime/ThreadRuntime'\nimport { ThreadRuntimeCore } from '../ThreadRuntime/ThreadRuntimeCore'\n\nexport interface ThreadListState {\n mainThreadId: string\n threads: readonly string[]\n isLoading: boolean\n threadItems: Record<string, ThreadListItemState>\n}\n\nexport interface ThreadListRuntimeConfig {\n streamAdapter: StreamAdapter\n threadListAdapter?: ThreadListAdapter\n capabilityExecutionManager?: CapabilityExecutionManager\n}\n\nexport class ThreadListRuntime extends BaseSubscribable {\n private _mainThreadId: string\n private _threads = new Map<string, ThreadRuntime>()\n private _threadItems = new Map<string, ThreadListItemRuntime>()\n private _threadStates = new Map<string, ThreadListItemState>()\n private _isLoading = false\n public readonly main: ThreadRuntime\n\n constructor(private config: ThreadListRuntimeConfig) {\n super()\n\n // Create main thread\n this._mainThreadId = generateThreadId()\n const mainCore = new ThreadRuntimeCore({\n streamAdapter: config.streamAdapter,\n capabilityExecutionManager: config.capabilityExecutionManager\n })\n this.main = new ThreadRuntime(mainCore)\n this._threads.set(this._mainThreadId, this.main)\n\n // Create main thread state\n const mainState: ThreadListItemState = {\n id: this._mainThreadId,\n title: 'New Chat',\n status: { type: 'regular' },\n isMain: true,\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n this._threadStates.set(this._mainThreadId, mainState)\n\n // Create main thread item\n const mainItem = new ThreadListItemRuntime({\n state: mainState,\n onSwitchTo: this.switchToThread.bind(this),\n onRename: this.renameThread.bind(this),\n onDelete: this.deleteThread.bind(this)\n })\n this._threadItems.set(this._mainThreadId, mainItem)\n }\n\n public get isLoading(): boolean {\n return this._isLoading\n }\n\n /**\n * Get the currently active main thread\n */\n public getMainThread(): ThreadRuntime {\n const mainThread = this._threads.get(this._mainThreadId)\n if (!mainThread) {\n return this.main\n }\n return mainThread\n }\n\n public getState(): ThreadListState {\n const threads: string[] = []\n const threadItems: Record<string, ThreadListItemState> = {}\n\n for (const [id, state] of this._threadStates) {\n threadItems[id] = state\n if (state.status.type === 'regular') {\n threads.push(id)\n }\n }\n\n return {\n mainThreadId: this._mainThreadId,\n threads,\n isLoading: this._isLoading,\n threadItems\n }\n }\n\n public async switchToThread(threadId: string): Promise<void> {\n const thread = this._threads.get(threadId)\n if (!thread) {\n throw new Error(`Thread ${threadId} not found`)\n }\n\n // Update old main thread\n const oldMainState = this._threadStates.get(this._mainThreadId)\n if (oldMainState) {\n oldMainState.isMain = false\n this._threadStates.set(this._mainThreadId, oldMainState)\n this._threadItems.get(this._mainThreadId)?.updateState(oldMainState)\n }\n\n // Update new main thread\n this._mainThreadId = threadId\n const newMainState = this._threadStates.get(threadId)\n if (newMainState) {\n newMainState.isMain = true\n this._threadStates.set(threadId, newMainState)\n this._threadItems.get(threadId)?.updateState(newMainState)\n }\n\n // Load thread messages if adapter exists\n if (this.config.threadListAdapter && newMainState?.conversationId) {\n this._isLoading = true\n this.notifySubscribers()\n\n try {\n const messages = await this.config.threadListAdapter.loadThread(threadId)\n thread.reset(messages)\n } catch (error) {\n console.error('Failed to load thread:', error)\n } finally {\n this._isLoading = false\n }\n }\n\n this.notifySubscribers()\n }\n\n public async switchToNewThread(): Promise<void> {\n const newThreadId = generateThreadId()\n const newCore = new ThreadRuntimeCore({\n streamAdapter: this.config.streamAdapter,\n capabilityExecutionManager: this.config.capabilityExecutionManager\n })\n const newThread = new ThreadRuntime(newCore)\n\n this._threads.set(newThreadId, newThread)\n\n // Create new thread state\n const newState: ThreadListItemState = {\n id: newThreadId,\n title: 'New Chat',\n status: { type: 'regular' },\n isMain: false,\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n this._threadStates.set(newThreadId, newState)\n\n // Create new thread item\n const newItem = new ThreadListItemRuntime({\n state: newState,\n onSwitchTo: this.switchToThread.bind(this),\n onRename: this.renameThread.bind(this),\n onDelete: this.deleteThread.bind(this)\n })\n this._threadItems.set(newThreadId, newItem)\n\n // Subscribe to new thread changes\n newThread.subscribe(() => {\n this.notifySubscribers()\n })\n\n // Create thread via adapter if exists\n if (this.config.threadListAdapter) {\n try {\n const createdState = await this.config.threadListAdapter.createThread()\n newState.conversationId = createdState.conversationId\n this._threadStates.set(newThreadId, newState)\n newItem.updateState(newState)\n } catch (error) {\n console.error('Failed to create thread:', error)\n }\n }\n\n await this.switchToThread(newThreadId)\n }\n\n public async loadThreads(): Promise<void> {\n if (!this.config.threadListAdapter) {\n console.warn('No threadListAdapter configured')\n return\n }\n\n this._isLoading = true\n this.notifySubscribers()\n\n try {\n const threadStates = await this.config.threadListAdapter.loadThreads()\n\n for (const state of threadStates) {\n if (this._threadStates.has(state.id)) {\n continue\n }\n\n const threadCore = new ThreadRuntimeCore({\n streamAdapter: this.config.streamAdapter\n })\n const thread = new ThreadRuntime(threadCore)\n this._threads.set(state.id, thread)\n\n this._threadStates.set(state.id, state)\n\n // Create thread item\n const threadItem = new ThreadListItemRuntime({\n state,\n onSwitchTo: this.switchToThread.bind(this),\n onRename: this.renameThread.bind(this),\n onDelete: this.deleteThread.bind(this)\n })\n this._threadItems.set(state.id, threadItem)\n\n // Subscribe to thread changes\n thread.subscribe(() => {\n this.notifySubscribers()\n })\n }\n } catch (error) {\n console.error('Failed to load threads:', error)\n } finally {\n this._isLoading = false\n this.notifySubscribers()\n }\n }\n\n private async renameThread(threadId: string, newTitle: string): Promise<void> {\n const state = this._threadStates.get(threadId)\n if (!state) return\n\n state.title = newTitle\n state.updatedAt = Date.now()\n this._threadStates.set(threadId, state)\n this._threadItems.get(threadId)?.updateState(state)\n\n if (this.config.threadListAdapter) {\n try {\n await this.config.threadListAdapter.updateThread(threadId, { title: newTitle })\n } catch (error) {\n console.error('Failed to rename thread:', error)\n }\n }\n\n this.notifySubscribers()\n }\n\n private async deleteThread(threadId: string): Promise<void> {\n if (threadId === this._mainThreadId && this._threads.size === 1) {\n throw new Error('Cannot delete the last thread')\n }\n\n // If deleting main thread, switch to another thread first\n if (threadId === this._mainThreadId) {\n const otherThreadId = Array.from(this._threads.keys()).find(id => id !== threadId)\n if (otherThreadId) {\n await this.switchToThread(otherThreadId)\n }\n }\n\n this._threads.delete(threadId)\n this._threadItems.delete(threadId)\n this._threadStates.delete(threadId)\n\n if (this.config.threadListAdapter) {\n try {\n await this.config.threadListAdapter.deleteThread(threadId)\n } catch (error) {\n console.error('Failed to delete thread:', error)\n }\n }\n\n this.notifySubscribers()\n }\n}\n","import { CapabilityExecutionManager, CapabilityRegistry } from '../../core'\nimport { PluginRegistry } from '../../core/PluginRegistry'\nimport { Message } from '../../types/message'\nimport { ChatPlugin } from '../../types/plugin'\nimport { BaseSubscribable } from '../../utils/Subscribable'\nimport { ContentFocusRuntime } from '../ContentFocusRuntime/ContentFocusRuntime'\nimport { ThreadListRuntime, ThreadListRuntimeConfig } from '../ThreadListRuntime/ThreadListRuntime'\nimport { ThreadRuntime } from '../ThreadRuntime/ThreadRuntime'\n\nexport interface AssistantRuntimeConfig extends ThreadListRuntimeConfig {\n plugins?: ChatPlugin[]\n}\n\nexport class AssistantRuntime extends BaseSubscribable {\n public readonly threads: ThreadListRuntime\n public readonly pluginRegistry: PluginRegistry\n public readonly capabilityRegistry: CapabilityRegistry\n public readonly capabilityExecutionManager: CapabilityExecutionManager\n private _contentFocusRuntime: ContentFocusRuntime\n private _currentThreadUnsubscribe?: () => void\n\n constructor(config: AssistantRuntimeConfig) {\n super()\n\n // Initialize plugin registry\n this.pluginRegistry = new PluginRegistry()\n if (config.plugins) {\n config.plugins.forEach(plugin => {\n this.pluginRegistry.registerPlugin(plugin)\n })\n }\n\n // Initialize capability registry\n this.capabilityRegistry = new CapabilityRegistry()\n this.capabilityExecutionManager = new CapabilityExecutionManager(name => this.capabilityRegistry.getHandler(name))\n\n // Initialize thread list\n this.threads = new ThreadListRuntime({\n streamAdapter: config.streamAdapter,\n threadListAdapter: config.threadListAdapter,\n capabilityExecutionManager: this.capabilityExecutionManager\n })\n\n this._contentFocusRuntime = new ContentFocusRuntime()\n\n // Subscribe to content focus changes\n this._contentFocusRuntime.subscribe(() => {\n this.notifySubscribers()\n })\n\n // Subscribe to thread list changes (including thread switches)\n this.threads.subscribe(() => {\n // Re-subscribe to the new main thread when it changes\n this.subscribeToCurrentThread()\n this.notifySubscribers()\n })\n\n // Initial subscription to main thread\n this.subscribeToCurrentThread()\n }\n\n public get thread(): ThreadRuntime {\n return this.threads.getMainThread()\n }\n\n public get contentFocus(): ContentFocusRuntime {\n return this._contentFocusRuntime\n }\n\n /**\n * Register a plugin\n */\n public registerPlugin(plugin: ChatPlugin): void {\n this.pluginRegistry.registerPlugin(plugin)\n\n plugin.init?.({\n streamingEnabled: true,\n feedbackEnabled: false,\n detailPanelEnabled: true\n })\n }\n\n /**\n * Unregister a plugin\n */\n public unregisterPlugin(pluginId: string): boolean {\n return this.pluginRegistry.unregisterPlugin(pluginId)\n }\n\n /**\n * Subscribe to the current main thread\n * Called when thread switches to ensure we listen to the right thread\n */\n private subscribeToCurrentThread(): void {\n // Unsubscribe from previous thread\n if (this._currentThreadUnsubscribe) {\n this._currentThreadUnsubscribe()\n }\n\n // Subscribe to new main thread\n this._currentThreadUnsubscribe = this.thread.subscribe(() => {\n this.handleMessagesChange(this.thread.messages)\n this.notifySubscribers()\n })\n }\n\n private handleMessagesChange(messages: readonly Message[]): void {\n if (messages.length === 0) return\n\n // Only auto-focus when a new assistant message completes\n const lastMessage = messages[messages.length - 1]\n\n if (lastMessage.role === 'assistant' && lastMessage.status.type === 'complete') {\n this.autoFocusLastContent(messages)\n }\n }\n\n private autoFocusLastContent(messages: readonly Message[]): void {\n if (messages.length === 0) return\n if (this._contentFocusRuntime.isActive) return // Don't override existing focus\n\n // Find last assistant message\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]\n if (message.role !== 'assistant') continue\n\n // Find last content with focus capability\n for (let j = message.content.length - 1; j >= 0; j--) {\n const content = message.content[j]\n const renderer = this.pluginRegistry.getRenderersByType(content.type)\n\n if (renderer.length > 0 && renderer[0].capabilities?.supportsFocus) {\n this._contentFocusRuntime.focus(content, message, j, 'detail')\n return\n }\n }\n }\n }\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { createContext, ReactNode, useContext } from 'react'\n\nimport { AssistantRuntime } from '../../runtime/AssistantRuntime/AssistantRuntime'\n\nconst AssistantRuntimeContext = createContext<AssistantRuntime | null>(null)\n\nexport interface AssistantRuntimeProviderProps {\n runtime: AssistantRuntime\n children: ReactNode\n}\n\nexport function AssistantRuntimeProvider({ runtime, children }: AssistantRuntimeProviderProps): JSX.Element {\n return <AssistantRuntimeContext.Provider value={runtime}>{children}</AssistantRuntimeContext.Provider>\n}\n\nexport function useAssistantRuntimeContext(): AssistantRuntime {\n const runtime = useContext(AssistantRuntimeContext)\n if (!runtime) {\n throw new Error('useAssistantRuntimeContext must be used within AssistantRuntimeProvider')\n }\n return runtime\n}\n","import { AssistantRuntime } from '../../runtime/AssistantRuntime/AssistantRuntime'\nimport { useAssistantRuntimeContext } from '../providers/AssistantRuntimeProvider'\n\nexport function useAssistantRuntime(): AssistantRuntime {\n return useAssistantRuntimeContext()\n}\n","import { useEffect, useState } from 'react'\n\nimport { ThreadListState } from '../../runtime/ThreadListRuntime/ThreadListRuntime'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useThreadList() {\n const runtime = useAssistantRuntime()\n\n return {\n switchToThread: (threadId: string) => runtime.threads.switchToThread(threadId),\n switchToNewThread: () => runtime.threads.switchToNewThread(),\n loadThreads: () => runtime.threads.loadThreads?.(),\n renameThread: (threadId: string, title: string) => runtime.threads['renameThread']?.(threadId, title),\n deleteThread: (threadId: string) => runtime.threads['deleteThread']?.(threadId)\n }\n}\n\nexport function useThreadListState() {\n const runtime = useAssistantRuntime()\n const [state, setState] = useState<ThreadListState>(runtime.threads.getState())\n\n useEffect(() => {\n const unsubscribe = runtime.threads.subscribe(() => {\n setState(runtime.threads.getState())\n })\n return unsubscribe\n }, [runtime])\n\n return state\n}\n","import { ThreadRuntime } from '../../runtime/ThreadRuntime/ThreadRuntime'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useCurrentThread(): ThreadRuntime {\n const mainThread = useAssistantRuntime().threads.getMainThread()\n return mainThread\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","import { useSyncExternalStore } from 'use-sync-external-store/shim'\n\nimport { Message } from '../../types/message'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useMessages(): readonly Message[] {\n const runtime = useAssistantRuntime()\n\n return useSyncExternalStore(\n callback => {\n // Subscribe to runtime, which notifies when thread switches\n // or when the current thread's messages change\n return runtime.subscribe(() => {\n callback()\n })\n },\n\n () => {\n // Always get messages from the current main thread\n return runtime.thread.messages\n },\n () => runtime.thread.messages\n )\n}\n","import { useState } from 'react'\n\nimport { useCurrentThread } from './useCurrentThread'\n\nexport function useComposer() {\n const thread = useCurrentThread()\n const [text, setText] = useState('')\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const send = async (e?: React.FormEvent) => {\n e?.preventDefault()\n\n if (!text.trim() || isSubmitting) return\n\n const messageText = text\n setText('')\n setIsSubmitting(true)\n\n try {\n await thread.send(messageText)\n } catch (error) {\n console.error('Failed to send message:', error)\n setText(messageText)\n } finally {\n setIsSubmitting(false)\n }\n }\n\n return {\n text,\n setText,\n isSubmitting,\n send,\n clear: () => setText(''),\n append: (value: string) => setText(prev => prev + value)\n }\n}\n","import { FocusContext } from '../../runtime/ContentFocusRuntime/ContentFocusRuntime'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useContentRenderer(contentType: string, context?: FocusContext) {\n const runtime = useAssistantRuntime()\n const renderer = runtime.pluginRegistry.getBestRendererForType(contentType)\n\n if (!renderer) {\n return {\n component: null,\n auxiliaryComponent: null,\n supportsFocus: false,\n supportsPreview: false,\n supportsFullscreen: false\n }\n }\n\n // Get auxiliary component for specific context\n const auxiliaryComponent = context ? renderer.auxiliary?.[context] : null\n\n return {\n component: renderer.component,\n auxiliaryComponent,\n supportsFocus: renderer.capabilities?.supportsFocus ?? false,\n supportsPreview: renderer.capabilities?.supportsPreview ?? false,\n supportsFullscreen: renderer.capabilities?.supportsFullscreen ?? false\n }\n}\n\nexport function useHasAuxiliaryView(contentType: string, context: FocusContext): boolean {\n const runtime = useAssistantRuntime()\n const renderer = runtime.pluginRegistry.getBestRendererForType(contentType)\n return !!renderer?.auxiliary?.[context]\n}\n\nexport function useSupportsFocus(contentType: string): boolean {\n const runtime = useAssistantRuntime()\n const renderer = runtime.pluginRegistry.getBestRendererForType(contentType)\n return renderer?.capabilities?.supportsFocus ?? false\n}\n","import { useEffect, useState } from 'react'\n\nimport { ContentFocusState, FocusContext } from '../../runtime/ContentFocusRuntime/ContentFocusRuntime'\nimport { Message, MessageContent } from '../../types/message'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useContentFocus() {\n const runtime = useAssistantRuntime()\n const [state, setState] = useState<ContentFocusState>(runtime.contentFocus.state)\n\n useEffect(() => {\n const unsubscribe = runtime.contentFocus.subscribe(() => {\n setState(runtime.contentFocus.state)\n })\n return unsubscribe\n }, [runtime])\n\n return {\n ...state,\n focus: (content: MessageContent, message: Message, contentIndex: number, context?: FocusContext) =>\n runtime.contentFocus.focus(content, message, contentIndex, context),\n blur: () => runtime.contentFocus.blur(),\n toggle: (content: MessageContent, message: Message, contentIndex: number, context?: FocusContext) =>\n runtime.contentFocus.toggle(content, message, contentIndex, context),\n switchContext: (context: FocusContext) => runtime.contentFocus.switchContext(context),\n focusNext: () => runtime.contentFocus.focusNext(runtime.thread.messages),\n focusPrevious: () => runtime.contentFocus.focusPrevious(runtime.thread.messages)\n }\n}\n\nexport function useContentFocusState() {\n const runtime = useAssistantRuntime()\n const [state, setState] = useState<ContentFocusState>(runtime.contentFocus.state)\n\n useEffect(() => {\n const unsubscribe = runtime.contentFocus.subscribe(() => {\n setState(runtime.contentFocus.state)\n })\n return unsubscribe\n }, [runtime])\n\n return state\n}\n","import { useEffect } from 'react'\n\nimport { CapabilityConfig } from '../../types/capability'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useCapability<TArgs = any, TResult = any>(config: CapabilityConfig<TArgs, TResult>): void {\n const runtime = useAssistantRuntime()\n\n useEffect(() => {\n // Register handler\n if (config.execute) {\n runtime.capabilityRegistry.registerHandler(config.name, { execute: config.execute })\n }\n\n // Register renderer\n if (config.render) {\n runtime.capabilityRegistry.registerRenderer(config.name, {\n component: config.render\n })\n }\n\n // Cleanup on unmount\n return () => {\n runtime.capabilityRegistry.unregister(config.name)\n }\n }, [config.name, runtime])\n}\n","import { useEffect, useReducer, useState } from 'react'\n\nimport { CapabilityExecution } from '../../types/capability'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useCapabilityExecution(capabilityId: string): CapabilityExecution | undefined {\n const runtime = useAssistantRuntime()\n const [execution, setExecution] = useState<CapabilityExecution | undefined>(() =>\n runtime.capabilityExecutionManager.getExecution(capabilityId)\n )\n const [, forceUpdate] = useReducer(x => x + 1, 0)\n\n useEffect(() => {\n // Get initial state\n const initialExecution = runtime.capabilityExecutionManager.getExecution(capabilityId)\n setExecution(initialExecution)\n\n // Subscribe to updates\n const unsubscribe = runtime.capabilityExecutionManager.subscribe(id => {\n if (id === capabilityId) {\n const updatedExecution = runtime.capabilityExecutionManager.getExecution(capabilityId)\n setExecution(updatedExecution)\n forceUpdate()\n }\n })\n\n return unsubscribe\n }, [capabilityId, runtime])\n\n return execution\n}\n","import { CapabilityContent } from '../../types/capability'\nimport { Message, MessageContent } from '../../types/message'\nimport { useAssistantRuntime } from '../hooks/useAssistantRuntime'\nimport { useCapabilityExecution } from '../hooks/useCapabilityExecution'\n\nexport interface CapabilityRendererProps {\n message: Message\n content: MessageContent\n}\n\nexport function CapabilityRendererComp({ message, content }: CapabilityRendererProps) {\n const runtime = useAssistantRuntime()\n const capabilityContent = content as CapabilityContent\n const execution = useCapabilityExecution(capabilityContent.capabilityId)\n\n const renderer = runtime.capabilityRegistry.getRenderer(capabilityContent.capabilityName)\n\n if (!renderer || !execution) {\n return null\n }\n\n const Component = renderer.component\n\n return (\n <Component\n capabilityName={execution.name}\n capabilityId={execution.id}\n args={execution.args}\n result={execution.result}\n status={execution.status}\n message={message}\n />\n )\n}\n","import { Message, MessageContent } from '../../types/message'\nimport { useContentRenderer } from '../hooks/useContentRenderer'\nimport { CapabilityRendererComp } from './CapabilityRenderer'\n\nexport function ContentRenderer({ message, content }: { message: Message; content: MessageContent }) {\n const { component } = useContentRenderer(content.type)\n\n if (content.type === 'capability') {\n return <CapabilityRendererComp message={message} content={content} />\n }\n\n if (!component) {\n return null\n }\n\n const Component = component\n return <Component content={content} message={message} />\n}\n","import { AuxiliaryRendererProps } from '../../types/plugin'\nimport { useContentRenderer } from '../hooks'\n\nexport function AuxiliaryRenderer({\n message,\n content,\n context,\n onClose,\n onNavigate,\n onSwitchContext\n}: AuxiliaryRendererProps) {\n const { auxiliaryComponent } = useContentRenderer(content.type, context)\n\n if (!auxiliaryComponent) {\n return null\n }\n\n const Component = auxiliaryComponent\n return (\n <Component\n content={content}\n message={message}\n context={context}\n onClose={onClose}\n onNavigate={onNavigate}\n onSwitchContext={onSwitchContext}\n />\n )\n}\n","import { FC } from 'react'\n\nimport { CapabilityConfig } from '../../types'\nimport { useCapability } from '../hooks/useCapability'\n\nexport function makeCapability<TArgs = any, TResult = any>(config: CapabilityConfig<TArgs, TResult>): FC {\n const Capability: FC = () => {\n useCapability(config)\n return null\n }\n\n Capability.displayName = `Capability(${config.name})`\n\n return Capability\n}\n","import { StreamAdapter, StreamChunk } from '../types/adapters'\nimport { Message } from '../types/message'\n\nexport interface SSEEvent {\n event: string\n data: any\n}\n\nexport abstract class BaseSSEStreamAdapter<TAllowedEvents extends readonly string[] = readonly string[]>\n implements StreamAdapter\n{\n protected abstract prepareRequest(params: { messages: Message[]; conversationId?: string; signal?: AbortSignal }): {\n url: string\n options: RequestInit\n }\n\n protected abstract convertEvent(event: SSEEvent & { event: TAllowedEvents[number] }): StreamChunk | null\n\n protected getAllowedEvents(): TAllowedEvents | null {\n return null\n }\n\n protected shouldProcessEvent(eventType: string): boolean {\n const allowedEvents = this.getAllowedEvents()\n if (!allowedEvents) return true\n return allowedEvents.includes(eventType)\n }\n\n async *stream(params: {\n messages: Message[]\n conversationId?: string\n signal?: AbortSignal\n }): AsyncGenerator<StreamChunk, void, unknown> {\n const { signal } = params\n const { url, options } = this.prepareRequest(params)\n\n const response = await fetch(url, { ...options, signal })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n if (!response.body) {\n throw new Error('Response body is null')\n }\n\n yield* this.parseSSEStream(response.body, signal)\n }\n\n private async *parseSSEStream(\n body: ReadableStream<Uint8Array>,\n signal?: AbortSignal\n ): AsyncGenerator<StreamChunk, void, unknown> {\n const reader = body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n let currentEvent: string | null = null\n\n try {\n while (true) {\n // eslint-disable-next-line no-await-in-loop\n const { done, value } = await reader.read()\n\n if (done) break\n if (signal?.aborted) break\n\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split('\\n')\n buffer = lines.pop() || ''\n\n for (const line of lines) {\n const trimmedLine = line.trim()\n\n if (!trimmedLine) {\n currentEvent = null\n continue\n }\n\n if (trimmedLine === ': ping') {\n continue\n }\n\n if (trimmedLine.startsWith('event:')) {\n currentEvent = trimmedLine.substring(6).trim()\n continue\n }\n\n if (trimmedLine.startsWith('data:')) {\n const dataStr = trimmedLine.substring(5).trim()\n\n if (dataStr === 'eof' || trimmedLine === 'eof') {\n break\n }\n\n try {\n const data = JSON.parse(dataStr)\n\n if (currentEvent && this.shouldProcessEvent(currentEvent)) {\n const chunk = this.convertEvent({\n event: currentEvent as TAllowedEvents[number],\n data\n })\n if (chunk) {\n yield chunk\n }\n }\n } catch (e) {\n // handle error\n }\n\n currentEvent = null\n }\n }\n }\n } finally {\n reader.releaseLock()\n }\n }\n}\n"],"names":["PluginRegistry","__publicField","plugin","renderer","renderers","a","b","pluginId","filteredRenderers","r","type","CapabilityRegistry","name","handler","CapabilityExecutionManager","getHandler","id","args","messageId","strategy","execution","executionId","running","result","error","errorMessage","index","e","callback","BaseSubscribable","ContentFocusRuntime","content","message","contentIndex","context","messages","currentMsgIndex","m","currentMsg","currentContentIndex","nextContent","nextMsg","prevContent","prevMsg","lastIndex","messageIdCounter","threadIdCounter","generateMessageId","generateThreadId","ThreadListItemRuntime","config","state","newTitle","ComposerRuntime","text","isSubmitting","ThreadRuntime","_core","ThreadRuntimeCore","_b","_a","newMessage","userMessage","assistantMessageId","assistantMessage","stream","event","messageIndex","metadataEvent","capabilityEvent","errorEvent","customEvent","updatedMessages","initialContent","status","ThreadListRuntime","mainCore","mainState","mainItem","mainThread","threads","threadItems","threadId","thread","oldMainState","newMainState","newThreadId","newCore","newThread","newState","newItem","createdState","threadStates","threadCore","threadItem","otherThreadId","AssistantRuntime","lastMessage","i","j","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","n","test3","letter","objectAssign","target","source","from","to","symbols","s","key","require$$0","f","require$$1","g","reactJsxRuntime_production_min","h","p","q","c","k","d","l","jsxRuntimeModule","AssistantRuntimeContext","createContext","AssistantRuntimeProvider","runtime","children","useAssistantRuntimeContext","useContext","useAssistantRuntime","useThreadList","title","useThreadListState","setState","useState","useEffect","useCurrentThread","React","is","x","y","objectIs","useLayoutEffect","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","value","_useState","inst","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","shimModule","useMessages","useSyncExternalStore","useComposer","setText","setIsSubmitting","messageText","prev","useContentRenderer","contentType","auxiliaryComponent","_c","_d","useContentFocus","useCapability","useCapabilityExecution","capabilityId","setExecution","useReducer","initialExecution","updatedExecution","CapabilityRendererComp","capabilityContent","Component","jsx","ContentRenderer","component","AuxiliaryRenderer","onClose","onNavigate","onSwitchContext","makeCapability","Capability","BaseSSEStreamAdapter","eventType","allowedEvents","params","signal","url","options","response","body","reader","decoder","buffer","currentEvent","done","lines","line","trimmedLine","dataStr","data","chunk"],"mappings":"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","x_google_ignoreList":[12,13,14,19,20]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/core/PluginRegistry.ts","../src/core/CapabilityRegistry.ts","../src/core/CapabilityExecutionManager.ts","../src/utils/Subscribable.ts","../src/runtime/ContentFocusRuntime/ContentFocusRuntime.ts","../src/utils/idGenerator.ts","../src/runtime/ThreadListItemRuntime/ThreadListItemRuntime.ts","../src/runtime/ComposerRuntime/ComposerRuntime.ts","../src/runtime/ThreadRuntime/ThreadRuntime.ts","../src/runtime/ThreadRuntime/ThreadRuntimeCore.ts","../src/runtime/ThreadListRuntime/ThreadListRuntime.tsx","../src/runtime/AssistantRuntime/AssistantRuntime.tsx","../../../node_modules/.pnpm/object-assign@4.1.1/node_modules/object-assign/index.js","../../../node_modules/.pnpm/react@17.0.2/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/.pnpm/react@17.0.2/node_modules/react/jsx-runtime.js","../src/react/providers/AssistantRuntimeProvider.tsx","../src/react/hooks/useAssistantRuntime.ts","../src/react/hooks/useThreadList.ts","../src/react/hooks/useCurrentThread.ts","../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@17.0.2/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../node_modules/.pnpm/use-sync-external-store@1.5.0_react@17.0.2/node_modules/use-sync-external-store/shim/index.js","../src/react/hooks/useMessages.ts","../src/react/hooks/useComposer.ts","../src/react/hooks/useContentRenderer.ts","../src/react/hooks/useContentFocus.ts","../src/react/hooks/useCapability.ts","../src/react/hooks/useCapabilityExecution.ts","../src/react/components/CapabilityRenderer.tsx","../src/react/components/ContentRenderer.tsx","../src/react/components/AuxiliaryRenderer.tsx","../src/react/utils/makeCapability.tsx","../src/utils/BaseSSEStreamAdapter.ts"],"sourcesContent":["import { ChatPlugin, MessageRenderer } from '../types/plugin'\n\nexport class PluginRegistry {\n private plugins = new Map<string, ChatPlugin>()\n private renderersByType = new Map<string, MessageRenderer[]>()\n\n public registerPlugin(plugin: ChatPlugin): void {\n if (this.plugins.has(plugin.id)) {\n // handle duplicate plugin registration\n // show a warning / error\n }\n\n this.plugins.set(plugin.id, plugin)\n\n plugin.renderers.forEach(renderer => {\n const renderers = this.renderersByType.get(renderer.type) || []\n renderers.push(renderer)\n renderers.sort((a, b) => (b?.priority ?? 0) - (a?.priority ?? 0))\n this.renderersByType.set(renderer.type, renderers)\n })\n }\n\n public unregisterPlugin(pluginId: string): boolean {\n const plugin = this.plugins.get(pluginId)\n if (!plugin) {\n return false\n }\n\n plugin.renderers.forEach(renderer => {\n const renderers = this.renderersByType.get(renderer.type) || []\n const filteredRenderers = renderers.filter(r => !plugin.renderers.includes(r))\n\n if (filteredRenderers.length === 0) {\n this.renderersByType.delete(renderer.type)\n } else {\n this.renderersByType.set(renderer.type, filteredRenderers)\n }\n })\n\n return this.plugins.delete(pluginId)\n }\n\n public getPlugin(pluginId: string): ChatPlugin | undefined {\n return this.plugins.get(pluginId)\n }\n\n public getAllPlugins(): ChatPlugin[] {\n return Array.from(this.plugins.values())\n }\n\n public getRenderersByType(type: string): MessageRenderer[] {\n return this.renderersByType.get(type) || []\n }\n\n public getBestRendererForType(type: string): MessageRenderer | undefined {\n const renderers = this.getRenderersByType(type)\n return renderers[0]\n }\n\n public clear(): void {\n this.plugins.clear()\n this.renderersByType.clear()\n }\n}\n","import { CapabilityHandler, CapabilityRenderer } from '../types/capability'\n\nexport class CapabilityRegistry {\n private handlers = new Map<string, CapabilityHandler>()\n private renderers = new Map<string, CapabilityRenderer>()\n\n public registerHandler(name: string, handler: CapabilityHandler): void {\n this.handlers.set(name, handler)\n }\n\n public registerRenderer(name: string, renderer: CapabilityRenderer): void {\n this.renderers.set(name, renderer)\n }\n\n public unregister(name: string): void {\n this.handlers.delete(name)\n this.renderers.delete(name)\n }\n\n public getHandler(name: string): CapabilityHandler | undefined {\n return this.handlers.get(name)\n }\n\n public getRenderer(name: string): CapabilityRenderer | undefined {\n return this.renderers.get(name)\n }\n\n public getStrategy() {\n return 'queue'\n }\n\n public hasHandler(name: string): boolean {\n return this.handlers.has(name)\n }\n\n public hasRenderer(name: string): boolean {\n return this.renderers.has(name)\n }\n\n public clear(): void {\n this.handlers.clear()\n this.renderers.clear()\n }\n\n public getAllCapabilityNames(): string[] {\n return Array.from(new Set([...this.handlers.keys(), ...this.renderers.keys()]))\n }\n}\n","import { CapabilityExecution, CapabilityHandler } from '../types/capability'\n\nexport class CapabilityExecutionManager {\n private executions = new Map<string, CapabilityExecution>()\n private executionQueue: string[] = []\n private isProcessing = false\n private runningByName = new Map<string, string[]>()\n private subscribers = new Set<(executionId: string) => void>()\n private getHandler: (name: string) => CapabilityHandler | undefined\n\n constructor(getHandler: (name: string) => CapabilityHandler | undefined) {\n this.getHandler = getHandler\n }\n\n public async executeCapability<TArgs, TResult>(\n name: string,\n id: string,\n args: TArgs,\n messageId: string,\n strategy = 'queue'\n ): Promise<void> {\n const handler = this.getHandler(name)\n if (!handler) {\n console.warn(`No handler registered for capability: ${name}`)\n return\n }\n\n const execution: CapabilityExecution<TArgs, TResult> = {\n id,\n name,\n args,\n status: { type: 'queued' },\n timestamp: Date.now(),\n messageId\n }\n\n this.executions.set(id, execution)\n this.notifySubscribers(id)\n\n switch (strategy) {\n case 'queue':\n default:\n this.executionQueue.push(id)\n break\n }\n\n if (!this.isProcessing) {\n this.processQueue()\n }\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessing || this.executionQueue.length === 0) {\n return\n }\n\n this.isProcessing = true\n\n while (this.executionQueue.length > 0) {\n const executionId = this.executionQueue.shift()!\n const execution = this.executions.get(executionId)\n\n if (!execution) continue\n\n const handler = this.getHandler(execution.name)\n if (!handler) continue\n\n execution.status = { type: 'running' }\n this.notifySubscribers(executionId)\n\n const running = this.runningByName.get(execution.name) || []\n running.push(executionId)\n this.runningByName.set(execution.name, running)\n\n try {\n const result = await handler.execute(execution.args, {\n messageId: execution.messageId,\n capabilityId: executionId\n })\n\n execution.status = { type: 'complete', result }\n execution.result = result\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n execution.status = { type: 'error', error: errorMessage }\n execution.error = errorMessage\n } finally {\n const running = this.runningByName.get(execution.name) || []\n const index = running.indexOf(executionId)\n if (index > -1) {\n running.splice(index, 1)\n }\n if (running.length === 0) {\n this.runningByName.delete(execution.name)\n } else {\n this.runningByName.set(execution.name, running)\n }\n\n this.notifySubscribers(executionId)\n }\n }\n\n this.isProcessing = false\n }\n\n public getExecution(id: string): CapabilityExecution | undefined {\n return this.executions.get(id)\n }\n\n public getExecutionsByMessage(messageId: string): CapabilityExecution[] {\n return Array.from(this.executions.values()).filter(e => e.messageId === messageId)\n }\n\n public subscribe(callback: (executionId: string) => void): () => void {\n this.subscribers.add(callback)\n return () => this.subscribers.delete(callback)\n }\n\n private notifySubscribers(executionId: string): void {\n this.subscribers.forEach(callback => callback(executionId))\n }\n\n public clear(): void {\n this.executions.clear()\n this.executionQueue = []\n this.runningByName.clear()\n }\n}\n","export type Unsubscribe = () => void\n\nexport abstract class BaseSubscribable {\n private _subscriptions = new Set<() => void>()\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback)\n return () => {\n this._subscriptions.delete(callback)\n }\n }\n\n protected notifySubscribers(): void {\n for (const callback of this._subscriptions) {\n callback()\n }\n }\n\n protected getSubscriberCount(): number {\n return this._subscriptions.size\n }\n}\n","import { Message, MessageContent } from '../../types/message'\nimport { BaseSubscribable } from '../../utils/Subscribable'\n\nexport type FocusContext = 'detail'\n\nexport interface ContentFocusState {\n isActive: boolean\n context: FocusContext | null\n focusedContent: MessageContent | null\n focusedMessage: Message | null\n focusedMessageId: string | null\n focusedContentIndex: number | null\n}\n\nexport class ContentFocusRuntime extends BaseSubscribable {\n private _state: ContentFocusState = {\n isActive: false,\n context: null,\n focusedContent: null,\n focusedMessage: null,\n focusedMessageId: null,\n focusedContentIndex: null\n }\n\n public get state(): ContentFocusState {\n return this._state\n }\n\n public get isActive(): boolean {\n return this._state.isActive\n }\n\n public get context(): FocusContext | null {\n return this._state.context\n }\n\n public get focusedContent(): MessageContent | null {\n return this._state.focusedContent\n }\n\n public get focusedMessage(): Message | null {\n return this._state.focusedMessage\n }\n\n public get focusedMessageId(): string | null {\n return this._state.focusedMessageId\n }\n\n public get focusedContentIndex(): number | null {\n return this._state.focusedContentIndex\n }\n\n public focus(\n content: MessageContent,\n message: Message,\n contentIndex: number,\n context: FocusContext = 'detail'\n ): void {\n this._state = {\n isActive: true,\n context,\n focusedContent: content,\n focusedMessage: message,\n focusedMessageId: message.id,\n focusedContentIndex: contentIndex\n }\n this.notifySubscribers()\n }\n\n public blur(): void {\n this._state = {\n isActive: false,\n context: null,\n focusedContent: null,\n focusedMessage: null,\n focusedMessageId: null,\n focusedContentIndex: null\n }\n this.notifySubscribers()\n }\n\n public toggle(\n content: MessageContent,\n message: Message,\n contentIndex: number,\n context: FocusContext = 'detail'\n ): void {\n if (\n this._state.isActive &&\n this._state.focusedMessageId === message.id &&\n this._state.focusedContentIndex === contentIndex &&\n this._state.context === context\n ) {\n this.blur()\n } else {\n this.focus(content, message, contentIndex, context)\n }\n }\n\n public switchContext(context: FocusContext): void {\n if (this._state.isActive && this._state.focusedContent) {\n this._state = {\n ...this._state,\n context\n }\n this.notifySubscribers()\n }\n }\n\n public focusNext(messages: readonly Message[]): void {\n if (!this._state.focusedMessageId || !messages.length) return\n\n const currentMsgIndex = messages.findIndex(m => m.id === this._state.focusedMessageId)\n if (currentMsgIndex === -1) return\n\n const currentMsg = messages[currentMsgIndex]\n const currentContentIndex = this._state.focusedContentIndex ?? 0\n\n if (currentContentIndex + 1 < currentMsg.content.length) {\n const nextContent = currentMsg.content[currentContentIndex + 1]\n this.focus(nextContent, currentMsg, currentContentIndex + 1, this._state.context || 'detail')\n return\n }\n\n // Try first content in next message\n if (currentMsgIndex + 1 < messages.length) {\n const nextMsg = messages[currentMsgIndex + 1]\n if (nextMsg.content.length > 0) {\n this.focus(nextMsg.content[0], nextMsg, 0, this._state.context || 'detail')\n }\n }\n }\n\n public focusPrevious(messages: readonly Message[]): void {\n if (!this._state.focusedMessageId || !messages.length) return\n\n const currentMsgIndex = messages.findIndex(m => m.id === this._state.focusedMessageId)\n if (currentMsgIndex === -1) return\n\n const currentMsg = messages[currentMsgIndex]\n const currentContentIndex = this._state.focusedContentIndex ?? 0\n\n if (currentContentIndex > 0) {\n const prevContent = currentMsg.content[currentContentIndex - 1]\n this.focus(prevContent, currentMsg, currentContentIndex - 1, this._state.context || 'detail')\n return\n }\n\n // Try last content in previous message\n if (currentMsgIndex > 0) {\n const prevMsg = messages[currentMsgIndex - 1]\n if (prevMsg.content.length > 0) {\n const lastIndex = prevMsg.content.length - 1\n this.focus(prevMsg.content[lastIndex], prevMsg, lastIndex, this._state.context || 'detail')\n }\n }\n }\n}\n","let messageIdCounter = 0\nlet threadIdCounter = 0\n\nexport function generateMessageId(): string {\n return `msg-${Date.now()}-${++messageIdCounter}`\n}\n\nexport function generateThreadId(): string {\n return `thread-${Date.now()}-${++threadIdCounter}`\n}\n\nexport function generateId(prefix = 'id'): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n}\n","import { ThreadListItemState } from '../../types/thread'\nimport { BaseSubscribable, Unsubscribe } from '../../utils/Subscribable'\n\nexport interface ThreadListItemRuntimeConfig {\n state: ThreadListItemState\n onSwitchTo: (threadId: string) => Promise<void>\n onRename: (threadId: string, title: string) => Promise<void>\n onDelete: (threadId: string) => Promise<void>\n}\n\nexport class ThreadListItemRuntime extends BaseSubscribable {\n private _state: ThreadListItemState\n\n constructor(private config: ThreadListItemRuntimeConfig) {\n super()\n this._state = config.state\n }\n\n public get state(): ThreadListItemState {\n return this._state\n }\n\n public getState(): ThreadListItemState {\n return this._state\n }\n\n public updateState(state: ThreadListItemState): void {\n this._state = state\n this.notifySubscribers()\n }\n\n public async switchTo(): Promise<void> {\n await this.config.onSwitchTo(this._state.id)\n }\n\n public async rename(newTitle: string): Promise<void> {\n await this.config.onRename(this._state.id, newTitle)\n }\n\n public async delete(): Promise<void> {\n await this.config.onDelete(this._state.id)\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n return super.subscribe(callback)\n }\n}\n","import { BaseSubscribable } from '../../utils/Subscribable'\n\nexport interface ComposerState {\n text: string\n isSubmitting: boolean\n}\n\nexport class ComposerRuntime extends BaseSubscribable {\n private _text: string = ''\n private _isSubmitting: boolean = false\n\n public get text(): string {\n return this._text\n }\n\n public get isSubmitting(): boolean {\n return this._isSubmitting\n }\n\n public getState(): ComposerState {\n return {\n text: this._text,\n isSubmitting: this._isSubmitting\n }\n }\n\n public setText(text: string): void {\n this._text = text\n this.notifySubscribers()\n }\n\n public clear(): void {\n this._text = ''\n this.notifySubscribers()\n }\n\n public setSubmitting(isSubmitting: boolean): void {\n this._isSubmitting = isSubmitting\n this.notifySubscribers()\n }\n}\n\nexport default ComposerRuntime\n","import { AppendMessage, Message, TextContent } from '../../types/message'\nimport { RuntimeCapabilities, ThreadState } from '../../types/thread'\nimport { BaseSubscribable, Unsubscribe } from '../../utils/Subscribable'\nimport ComposerRuntime from '../ComposerRuntime/ComposerRuntime'\nimport { ThreadRuntimeCore } from './ThreadRuntimeCore'\n\nexport class ThreadRuntime extends BaseSubscribable {\n public readonly composer: ComposerRuntime\n\n constructor(private _core: ThreadRuntimeCore) {\n super()\n this.composer = new ComposerRuntime()\n\n // Subscribe to core changes and propagate\n this._core.subscribe(() => {\n this.notifySubscribers()\n })\n }\n\n public get messages(): readonly Message[] {\n return this._core.messages\n }\n\n public get isRunning(): boolean {\n return this._core.isRunning\n }\n\n public get isDisabled(): boolean {\n return this._core.isDisabled\n }\n\n public get capabilities(): RuntimeCapabilities {\n return this._core.capabilities\n }\n\n public get conversationId(): string | undefined {\n return this._core.conversationId\n }\n\n public get title(): string | undefined {\n return this._core.title\n }\n\n public getState(): ThreadState {\n return {\n threadId: 'main', // Will be set by ThreadListRuntime\n isDisabled: this._core.isDisabled,\n isRunning: this._core.isRunning,\n capabilities: this._core.capabilities,\n conversationId: this._core.conversationId,\n title: this._core.title\n }\n }\n\n public append(message: AppendMessage): void {\n this._core.append(message)\n }\n\n public async send(text: string): Promise<void> {\n if (!text.trim()) return\n\n this.composer.setSubmitting(true)\n\n try {\n this.composer.clear()\n await this._core.startRun({\n role: 'user',\n content: [{ type: 'text', data: text } as TextContent]\n })\n } catch (e) {\n // TODO: Handle error\n } finally {\n this.composer.setSubmitting(false)\n }\n }\n\n public cancelRun(): void {\n this._core.cancelRun()\n }\n\n public clear(): void {\n this._core.clear()\n }\n\n public reset(messages: Message[] = []): void {\n this._core.reset(messages)\n }\n\n public setConversationId(conversationId: string | undefined): void {\n this._core.setConversationId(conversationId)\n }\n\n public setTitle(title: string | undefined): void {\n this._core.setTitle(title)\n }\n\n public subscribe(callback: () => void): Unsubscribe {\n return super.subscribe(callback)\n }\n}\n","import { CapabilityExecutionManager } from '../../core'\nimport { CapabilityContent } from '../../types'\nimport { StreamAdapter, StreamEvent } from '../../types/adapters'\nimport { AppendMessage, Message, MessageContent, MessageStatus } from '../../types/message'\nimport { RuntimeCapabilities } from '../../types/thread'\nimport { generateMessageId } from '../../utils/idGenerator'\nimport { BaseSubscribable } from '../../utils/Subscribable'\n\nexport interface ThreadRuntimeCoreConfig {\n streamAdapter: StreamAdapter\n initialMessages?: Message[]\n onMessagesChange?: (messages: Message[]) => void\n capabilityExecutionManager?: CapabilityExecutionManager\n}\n\nexport class ThreadRuntimeCore extends BaseSubscribable {\n private _messages: Message[] = []\n private _isRunning = false\n private _isDisabled = false\n private _abortController: AbortController | null = null\n private _conversationId?: string\n private _title?: string\n\n // Track current part being accumulated\n private _currentPart: {\n messageId: string\n contentIndex: number\n type: string\n parentId?: string\n } | null = null\n\n constructor(private config: ThreadRuntimeCoreConfig) {\n super()\n if (config.initialMessages) {\n this._messages = [...config.initialMessages]\n }\n }\n\n public get messages(): readonly Message[] {\n return this._messages\n }\n\n public get isRunning(): boolean {\n return this._isRunning\n }\n\n public get isDisabled(): boolean {\n return this._isDisabled\n }\n\n public get conversationId(): string | undefined {\n return this._conversationId\n }\n\n public get title(): string | undefined {\n return this._title\n }\n\n public get capabilities(): RuntimeCapabilities {\n return {\n cancel: true,\n edit: false,\n reload: false,\n speech: false,\n attachments: false,\n feedback: false\n }\n }\n\n private updateMessages(messages: Message[]): void {\n this._messages = messages\n this.config.onMessagesChange?.(this._messages)\n this.notifySubscribers()\n }\n\n public append(message: AppendMessage): void {\n const newMessage: Message = {\n id: message.id || generateMessageId(),\n parentId: message.parentId,\n role: message.role,\n content: message.content,\n status: message.status || { type: 'complete' },\n timestamp: message.timestamp || Date.now(),\n metadata: message.metadata\n }\n\n this.updateMessages([...this._messages, newMessage])\n }\n\n public async startRun(userMessage: AppendMessage): Promise<void> {\n if (this._isRunning) {\n throw new Error('A run is already in progress')\n }\n\n this.append(userMessage)\n this._isRunning = true\n this._abortController = new AbortController()\n this._currentPart = null // Reset current part\n\n const assistantMessageId = generateMessageId()\n const assistantMessage: Message = {\n id: assistantMessageId,\n role: 'assistant',\n content: [],\n status: { type: 'running' },\n timestamp: Date.now()\n }\n\n this.updateMessages([...this._messages, assistantMessage])\n\n try {\n const stream = this.config.streamAdapter.stream({\n messages: this._messages,\n conversationId: this._conversationId,\n signal: this._abortController.signal\n })\n\n for await (const event of stream) {\n if (this._abortController.signal.aborted) {\n break\n }\n\n this.handleStreamEvent(assistantMessageId, event.event)\n }\n\n this.updateMessageStatus(assistantMessageId, { type: 'complete' })\n } catch (error) {\n if (error instanceof Error && error.name === 'AbortError') {\n this.updateMessageStatus(assistantMessageId, { type: 'cancelled' })\n } else {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error'\n this.updateMessageStatus(assistantMessageId, {\n type: 'error',\n error: errorMessage\n })\n }\n } finally {\n this._isRunning = false\n this._abortController = null\n this._currentPart = null // Clean up\n this.notifySubscribers()\n }\n }\n\n private handleStreamEvent(messageId: string, event: StreamEvent): void {\n const messageIndex = this._messages.findIndex(m => m.id === messageId)\n if (messageIndex === -1) return\n\n const message = this._messages[messageIndex]\n\n // Handle core events with type guards\n if (event.type === 'part-start') {\n this.handlePartStart(message, event as Extract<StreamEvent, { type: 'part-start' }>)\n } else if (event.type === 'text-delta' || event.type === 'assistant_thought') {\n this.handleTextDelta(message, event as Extract<StreamEvent, { type: 'text-delta' }>)\n } else if (event.type === 'part-finish') {\n this.handlePartFinish()\n } else if (event.type === 'metadata') {\n const metadataEvent = event as Extract<StreamEvent, { type: 'metadata' }>\n message.metadata = {\n ...message.metadata,\n conversationId: metadataEvent.conversationId,\n interactionId: metadataEvent.interactionId\n }\n\n if (metadataEvent.conversationId && !this._conversationId) {\n this._conversationId = metadataEvent.conversationId\n }\n\n if (metadataEvent.title && !this._title) {\n this._title = metadataEvent.title\n }\n } else if (event.type === 'capability_execution') {\n const capabilityEvent = event as Extract<StreamEvent, { type: 'capability_execution' }>\n message.content = [\n ...message.content,\n {\n type: 'capability',\n capabilityId: capabilityEvent.capabilityId,\n capabilityName: capabilityEvent.capabilityName,\n args: capabilityEvent.args\n } as CapabilityContent\n ]\n\n // Execute capability if manager is available\n if (this.config.capabilityExecutionManager) {\n this.config.capabilityExecutionManager.executeCapability(\n capabilityEvent.capabilityName,\n capabilityEvent.capabilityId,\n capabilityEvent.args,\n messageId,\n capabilityEvent.strategy\n )\n }\n } else if (event.type === 'error') {\n const errorEvent = event as Extract<StreamEvent, { type: 'error' }>\n message.content = [\n ...message.content,\n {\n type: 'error',\n data: errorEvent.error\n }\n ]\n } else {\n // Handle custom events\n const customEvent = event as Extract<StreamEvent, { data?: any }>\n message.content = [\n ...message.content,\n {\n type: customEvent.type,\n data: customEvent.data,\n parentId: customEvent.parentId\n }\n ]\n }\n\n // Update message with new reference\n const updatedMessages = [\n ...this._messages.slice(0, messageIndex),\n { ...message, timestamp: Date.now() },\n ...this._messages.slice(messageIndex + 1)\n ]\n\n this.updateMessages(updatedMessages)\n }\n\n private handlePartStart(message: Message, event: Extract<StreamEvent, { type: 'part-start' }>): void {\n const contentIndex = message.content.length\n\n // Create initial content based on type\n let initialContent: MessageContent\n\n switch (event.part.type) {\n case 'assistant_thought':\n // Initialize as array for assistant thoughts\n initialContent = {\n type: event.part.type,\n data: [],\n parentId: event.part.parentId\n } as any\n break\n\n case 'text':\n // Initialize as empty string for text\n initialContent = {\n type: event.part.type,\n data: '',\n parentId: event.part.parentId\n } as any\n break\n\n default:\n initialContent = {\n type: event.part.type,\n parentId: event.part.parentId\n } as any\n }\n\n // Add to message with new reference\n message.content = [...message.content, initialContent]\n\n // Track current part\n this._currentPart = {\n messageId: message.id,\n contentIndex,\n type: event.part.type,\n parentId: event.part.parentId\n }\n }\n\n private handleTextDelta(message: Message, event: Extract<StreamEvent, { type: 'text-delta' }>): void {\n if (!this._currentPart) {\n console.warn('Received text-delta without part-start')\n return\n }\n\n const content = message.content[this._currentPart.contentIndex] as any\n\n if (content.type === 'assistant_thought') {\n // For assistant thoughts, push each delta as a new array item\n if (!Array.isArray(content.data)) {\n content.data = []\n }\n if (event.delta.trim()) {\n content.data.push(event.delta.trim())\n }\n } else {\n // For text and other types, concatenate into a single string\n content.data = (content.data || '') + event.delta\n }\n }\n\n private handlePartFinish(): void {\n if (!this._currentPart) {\n console.warn('Received part-finish without part-start')\n return\n }\n\n // Part is complete, clear tracking\n this._currentPart = null\n }\n\n private updateMessageStatus(messageId: string, status: MessageStatus): void {\n const messageIndex = this._messages.findIndex(m => m.id === messageId)\n if (messageIndex === -1) return\n\n const updatedMessages = [\n ...this._messages.slice(0, messageIndex),\n {\n ...this._messages[messageIndex],\n status\n },\n ...this._messages.slice(messageIndex + 1)\n ]\n\n this.updateMessages(updatedMessages)\n }\n\n public clear(): void {\n this.updateMessages([])\n }\n\n public cancelRun(): void {\n if (!this._isRunning || !this._abortController) {\n return\n }\n\n this._abortController.abort()\n }\n\n public reset(messages: Message[] = []): void {\n this.updateMessages([...messages])\n }\n\n public setConversationId(conversationId: string | undefined): void {\n this._conversationId = conversationId\n this.notifySubscribers()\n }\n\n public setTitle(title: string | undefined): void {\n this._title = title\n this.notifySubscribers()\n }\n}\n","import { CapabilityExecutionManager } from '../../core'\nimport { StreamAdapter, ThreadListAdapter } from '../../types/adapters'\nimport { ThreadListItemState } from '../../types/thread'\nimport { generateThreadId } from '../../utils/idGenerator'\nimport { BaseSubscribable } from '../../utils/Subscribable'\nimport { ThreadListItemRuntime } from '../ThreadListItemRuntime/ThreadListItemRuntime'\nimport { ThreadRuntime } from '../ThreadRuntime/ThreadRuntime'\nimport { ThreadRuntimeCore } from '../ThreadRuntime/ThreadRuntimeCore'\n\nexport interface ThreadListState {\n mainThreadId: string\n threads: readonly string[]\n isLoading: boolean\n threadItems: Record<string, ThreadListItemState>\n}\n\nexport interface ThreadListRuntimeConfig {\n streamAdapter: StreamAdapter\n threadListAdapter?: ThreadListAdapter\n capabilityExecutionManager?: CapabilityExecutionManager\n}\n\nexport class ThreadListRuntime extends BaseSubscribable {\n private _mainThreadId: string\n private _threads = new Map<string, ThreadRuntime>()\n private _threadItems = new Map<string, ThreadListItemRuntime>()\n private _threadStates = new Map<string, ThreadListItemState>()\n private _isLoading = false\n public readonly main: ThreadRuntime\n\n constructor(private config: ThreadListRuntimeConfig) {\n super()\n\n // Create main thread\n this._mainThreadId = generateThreadId()\n const mainCore = new ThreadRuntimeCore({\n streamAdapter: config.streamAdapter,\n capabilityExecutionManager: config.capabilityExecutionManager\n })\n this.main = new ThreadRuntime(mainCore)\n this._threads.set(this._mainThreadId, this.main)\n\n // Create main thread state\n const mainState: ThreadListItemState = {\n id: this._mainThreadId,\n title: 'New Chat',\n status: { type: 'regular' },\n isMain: true,\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n this._threadStates.set(this._mainThreadId, mainState)\n\n // Create main thread item\n const mainItem = new ThreadListItemRuntime({\n state: mainState,\n onSwitchTo: this.switchToThread.bind(this),\n onRename: this.renameThread.bind(this),\n onDelete: this.deleteThread.bind(this)\n })\n this._threadItems.set(this._mainThreadId, mainItem)\n }\n\n public get isLoading(): boolean {\n return this._isLoading\n }\n\n /**\n * Get the currently active main thread\n */\n public getMainThread(): ThreadRuntime {\n const mainThread = this._threads.get(this._mainThreadId)\n if (!mainThread) {\n return this.main\n }\n return mainThread\n }\n\n public getState(): ThreadListState {\n const threads: string[] = []\n const threadItems: Record<string, ThreadListItemState> = {}\n\n for (const [id, state] of this._threadStates) {\n threadItems[id] = state\n if (state.status.type === 'regular') {\n threads.push(id)\n }\n }\n\n return {\n mainThreadId: this._mainThreadId,\n threads,\n isLoading: this._isLoading,\n threadItems\n }\n }\n\n public async switchToThread(threadId: string): Promise<void> {\n const thread = this._threads.get(threadId)\n if (!thread) {\n throw new Error(`Thread ${threadId} not found`)\n }\n\n // Update old main thread\n const oldMainState = this._threadStates.get(this._mainThreadId)\n if (oldMainState) {\n oldMainState.isMain = false\n this._threadStates.set(this._mainThreadId, oldMainState)\n this._threadItems.get(this._mainThreadId)?.updateState(oldMainState)\n }\n\n // Update new main thread\n this._mainThreadId = threadId\n const newMainState = this._threadStates.get(threadId)\n if (newMainState) {\n newMainState.isMain = true\n this._threadStates.set(threadId, newMainState)\n this._threadItems.get(threadId)?.updateState(newMainState)\n\n // Update thread's conversationId and title\n thread.setConversationId(newMainState.conversationId)\n thread.setTitle(newMainState.title)\n }\n\n // Load thread messages if adapter exists\n if (this.config.threadListAdapter && newMainState?.conversationId) {\n this._isLoading = true\n this.notifySubscribers()\n\n try {\n const messages = await this.config.threadListAdapter.loadThread(threadId)\n thread.reset(messages)\n } catch (error) {\n console.error('Failed to load thread:', error)\n } finally {\n this._isLoading = false\n }\n }\n\n this.notifySubscribers()\n }\n\n public async switchToNewThread(): Promise<void> {\n const newThreadId = generateThreadId()\n const newCore = new ThreadRuntimeCore({\n streamAdapter: this.config.streamAdapter,\n capabilityExecutionManager: this.config.capabilityExecutionManager\n })\n const newThread = new ThreadRuntime(newCore)\n\n this._threads.set(newThreadId, newThread)\n\n // Create new thread state\n const newState: ThreadListItemState = {\n id: newThreadId,\n title: 'New Chat',\n status: { type: 'regular' },\n isMain: false,\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n this._threadStates.set(newThreadId, newState)\n\n // Create new thread item\n const newItem = new ThreadListItemRuntime({\n state: newState,\n onSwitchTo: this.switchToThread.bind(this),\n onRename: this.renameThread.bind(this),\n onDelete: this.deleteThread.bind(this)\n })\n this._threadItems.set(newThreadId, newItem)\n\n // Subscribe to new thread changes\n newThread.subscribe(() => {\n this.notifySubscribers()\n })\n\n // Create thread via adapter if exists\n if (this.config.threadListAdapter) {\n try {\n const createdState = await this.config.threadListAdapter.createThread()\n newState.conversationId = createdState.conversationId\n this._threadStates.set(newThreadId, newState)\n newItem.updateState(newState)\n } catch (error) {\n console.error('Failed to create thread:', error)\n }\n }\n\n await this.switchToThread(newThreadId)\n }\n\n public async loadThreads(): Promise<void> {\n if (!this.config.threadListAdapter) {\n console.warn('No threadListAdapter configured')\n return\n }\n\n this._isLoading = true\n this.notifySubscribers()\n\n try {\n const threadStates = await this.config.threadListAdapter.loadThreads()\n\n for (const state of threadStates) {\n if (this._threadStates.has(state.id)) {\n continue\n }\n\n const threadCore = new ThreadRuntimeCore({\n streamAdapter: this.config.streamAdapter\n })\n const thread = new ThreadRuntime(threadCore)\n this._threads.set(state.id, thread)\n\n this._threadStates.set(state.id, state)\n\n // Create thread item\n const threadItem = new ThreadListItemRuntime({\n state,\n onSwitchTo: this.switchToThread.bind(this),\n onRename: this.renameThread.bind(this),\n onDelete: this.deleteThread.bind(this)\n })\n this._threadItems.set(state.id, threadItem)\n\n // Subscribe to thread changes\n thread.subscribe(() => {\n this.notifySubscribers()\n })\n }\n } catch (error) {\n console.error('Failed to load threads:', error)\n } finally {\n this._isLoading = false\n this.notifySubscribers()\n }\n }\n\n private async renameThread(threadId: string, newTitle: string): Promise<void> {\n const state = this._threadStates.get(threadId)\n if (!state) return\n\n state.title = newTitle\n state.updatedAt = Date.now()\n this._threadStates.set(threadId, state)\n this._threadItems.get(threadId)?.updateState(state)\n\n if (this.config.threadListAdapter) {\n try {\n await this.config.threadListAdapter.updateThread(threadId, { title: newTitle })\n } catch (error) {\n console.error('Failed to rename thread:', error)\n }\n }\n\n this.notifySubscribers()\n }\n\n private async deleteThread(threadId: string): Promise<void> {\n if (threadId === this._mainThreadId && this._threads.size === 1) {\n throw new Error('Cannot delete the last thread')\n }\n\n // If deleting main thread, switch to another thread first\n if (threadId === this._mainThreadId) {\n const otherThreadId = Array.from(this._threads.keys()).find(id => id !== threadId)\n if (otherThreadId) {\n await this.switchToThread(otherThreadId)\n }\n }\n\n this._threads.delete(threadId)\n this._threadItems.delete(threadId)\n this._threadStates.delete(threadId)\n\n if (this.config.threadListAdapter) {\n try {\n await this.config.threadListAdapter.deleteThread(threadId)\n } catch (error) {\n console.error('Failed to delete thread:', error)\n }\n }\n\n this.notifySubscribers()\n }\n}\n","import { CapabilityExecutionManager, CapabilityRegistry } from '../../core'\nimport { PluginRegistry } from '../../core/PluginRegistry'\nimport { Message } from '../../types/message'\nimport { ChatPlugin } from '../../types/plugin'\nimport { BaseSubscribable } from '../../utils/Subscribable'\nimport { ContentFocusRuntime } from '../ContentFocusRuntime/ContentFocusRuntime'\nimport { ThreadListRuntime, ThreadListRuntimeConfig } from '../ThreadListRuntime/ThreadListRuntime'\nimport { ThreadRuntime } from '../ThreadRuntime/ThreadRuntime'\n\nexport interface AssistantRuntimeConfig extends ThreadListRuntimeConfig {\n plugins?: ChatPlugin[]\n}\n\nexport class AssistantRuntime extends BaseSubscribable {\n public readonly threads: ThreadListRuntime\n public readonly pluginRegistry: PluginRegistry\n public readonly capabilityRegistry: CapabilityRegistry\n public readonly capabilityExecutionManager: CapabilityExecutionManager\n private _contentFocusRuntime: ContentFocusRuntime\n private _currentThreadUnsubscribe?: () => void\n\n constructor(config: AssistantRuntimeConfig) {\n super()\n\n // Initialize plugin registry\n this.pluginRegistry = new PluginRegistry()\n if (config.plugins) {\n config.plugins.forEach(plugin => {\n this.pluginRegistry.registerPlugin(plugin)\n })\n }\n\n // Initialize capability registry\n this.capabilityRegistry = new CapabilityRegistry()\n this.capabilityExecutionManager = new CapabilityExecutionManager(name => this.capabilityRegistry.getHandler(name))\n\n // Initialize thread list\n this.threads = new ThreadListRuntime({\n streamAdapter: config.streamAdapter,\n threadListAdapter: config.threadListAdapter,\n capabilityExecutionManager: this.capabilityExecutionManager\n })\n\n this._contentFocusRuntime = new ContentFocusRuntime()\n\n // Subscribe to content focus changes\n this._contentFocusRuntime.subscribe(() => {\n this.notifySubscribers()\n })\n\n // Subscribe to thread list changes (including thread switches)\n this.threads.subscribe(() => {\n // Re-subscribe to the new main thread when it changes\n this.subscribeToCurrentThread()\n this.notifySubscribers()\n })\n\n // Initial subscription to main thread\n this.subscribeToCurrentThread()\n }\n\n public get thread(): ThreadRuntime {\n return this.threads.getMainThread()\n }\n\n public get contentFocus(): ContentFocusRuntime {\n return this._contentFocusRuntime\n }\n\n /**\n * Register a plugin\n */\n public registerPlugin(plugin: ChatPlugin): void {\n this.pluginRegistry.registerPlugin(plugin)\n\n plugin.init?.({\n streamingEnabled: true,\n feedbackEnabled: false,\n detailPanelEnabled: true\n })\n }\n\n /**\n * Unregister a plugin\n */\n public unregisterPlugin(pluginId: string): boolean {\n return this.pluginRegistry.unregisterPlugin(pluginId)\n }\n\n /**\n * Subscribe to the current main thread\n * Called when thread switches to ensure we listen to the right thread\n */\n private subscribeToCurrentThread(): void {\n // Unsubscribe from previous thread\n if (this._currentThreadUnsubscribe) {\n this._currentThreadUnsubscribe()\n }\n\n // Subscribe to new main thread\n this._currentThreadUnsubscribe = this.thread.subscribe(() => {\n this.handleMessagesChange(this.thread.messages)\n this.notifySubscribers()\n })\n }\n\n private handleMessagesChange(messages: readonly Message[]): void {\n if (messages.length === 0) return\n\n // Only auto-focus when a new assistant message completes\n const lastMessage = messages[messages.length - 1]\n\n if (lastMessage.role === 'assistant' && lastMessage.status.type === 'complete') {\n this.autoFocusLastContent(messages)\n }\n }\n\n private autoFocusLastContent(messages: readonly Message[]): void {\n if (messages.length === 0) return\n if (this._contentFocusRuntime.isActive) return // Don't override existing focus\n\n // Find last assistant message\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]\n if (message.role !== 'assistant') continue\n\n // Find last content with focus capability\n for (let j = message.content.length - 1; j >= 0; j--) {\n const content = message.content[j]\n const renderer = this.pluginRegistry.getRenderersByType(content.type)\n\n if (renderer.length > 0 && renderer[0].capabilities?.supportsFocus) {\n this._contentFocusRuntime.focus(content, message, j, 'detail')\n return\n }\n }\n }\n }\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { createContext, ReactNode, useContext } from 'react'\n\nimport { AssistantRuntime } from '../../runtime/AssistantRuntime/AssistantRuntime'\n\nconst AssistantRuntimeContext = createContext<AssistantRuntime | null>(null)\n\nexport interface AssistantRuntimeProviderProps {\n runtime: AssistantRuntime\n children: ReactNode\n}\n\nexport function AssistantRuntimeProvider({ runtime, children }: AssistantRuntimeProviderProps): JSX.Element {\n return <AssistantRuntimeContext.Provider value={runtime}>{children}</AssistantRuntimeContext.Provider>\n}\n\nexport function useAssistantRuntimeContext(): AssistantRuntime {\n const runtime = useContext(AssistantRuntimeContext)\n if (!runtime) {\n throw new Error('useAssistantRuntimeContext must be used within AssistantRuntimeProvider')\n }\n return runtime\n}\n","import { AssistantRuntime } from '../../runtime/AssistantRuntime/AssistantRuntime'\nimport { useAssistantRuntimeContext } from '../providers/AssistantRuntimeProvider'\n\nexport function useAssistantRuntime(): AssistantRuntime {\n return useAssistantRuntimeContext()\n}\n","import { useEffect, useState } from 'react'\n\nimport { ThreadListState } from '../../runtime/ThreadListRuntime/ThreadListRuntime'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useThreadList() {\n const runtime = useAssistantRuntime()\n\n return {\n switchToThread: (threadId: string) => runtime.threads.switchToThread(threadId),\n switchToNewThread: () => runtime.threads.switchToNewThread(),\n loadThreads: () => runtime.threads.loadThreads?.(),\n renameThread: (threadId: string, title: string) => runtime.threads['renameThread']?.(threadId, title),\n deleteThread: (threadId: string) => runtime.threads['deleteThread']?.(threadId)\n }\n}\n\nexport function useThreadListState() {\n const runtime = useAssistantRuntime()\n const [state, setState] = useState<ThreadListState>(runtime.threads.getState())\n\n useEffect(() => {\n const unsubscribe = runtime.threads.subscribe(() => {\n setState(runtime.threads.getState())\n })\n return unsubscribe\n }, [runtime])\n\n return state\n}\n","import { ThreadRuntime } from '../../runtime/ThreadRuntime/ThreadRuntime'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useCurrentThread(): ThreadRuntime {\n const mainThread = useAssistantRuntime().threads.getMainThread()\n return mainThread\n}\n","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","import { useSyncExternalStore } from 'use-sync-external-store/shim'\n\nimport { Message } from '../../types/message'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useMessages(): readonly Message[] {\n const runtime = useAssistantRuntime()\n\n return useSyncExternalStore(\n callback => {\n // Subscribe to runtime, which notifies when thread switches\n // or when the current thread's messages change\n return runtime.subscribe(() => {\n callback()\n })\n },\n\n () => {\n // Always get messages from the current main thread\n return runtime.thread.messages\n },\n () => runtime.thread.messages\n )\n}\n","import { useState } from 'react'\n\nimport { useCurrentThread } from './useCurrentThread'\n\nexport function useComposer() {\n const thread = useCurrentThread()\n const [text, setText] = useState('')\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const send = async (e?: React.FormEvent) => {\n e?.preventDefault()\n\n if (!text.trim() || isSubmitting) return\n\n const messageText = text\n setText('')\n setIsSubmitting(true)\n\n try {\n await thread.send(messageText)\n } catch (error) {\n console.error('Failed to send message:', error)\n setText(messageText)\n } finally {\n setIsSubmitting(false)\n }\n }\n\n return {\n text,\n setText,\n isSubmitting,\n send,\n clear: () => setText(''),\n append: (value: string) => setText(prev => prev + value)\n }\n}\n","import { FocusContext } from '../../runtime/ContentFocusRuntime/ContentFocusRuntime'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useContentRenderer(contentType: string, context?: FocusContext) {\n const runtime = useAssistantRuntime()\n const renderer = runtime.pluginRegistry.getBestRendererForType(contentType)\n\n if (!renderer) {\n return {\n component: null,\n auxiliaryComponent: null,\n supportsFocus: false,\n supportsPreview: false,\n supportsFullscreen: false\n }\n }\n\n // Get auxiliary component for specific context\n const auxiliaryComponent = context ? renderer.auxiliary?.[context] : null\n\n return {\n component: renderer.component,\n auxiliaryComponent,\n supportsFocus: renderer.capabilities?.supportsFocus ?? false,\n supportsPreview: renderer.capabilities?.supportsPreview ?? false,\n supportsFullscreen: renderer.capabilities?.supportsFullscreen ?? false\n }\n}\n\nexport function useHasAuxiliaryView(contentType: string, context: FocusContext): boolean {\n const runtime = useAssistantRuntime()\n const renderer = runtime.pluginRegistry.getBestRendererForType(contentType)\n return !!renderer?.auxiliary?.[context]\n}\n\nexport function useSupportsFocus(contentType: string): boolean {\n const runtime = useAssistantRuntime()\n const renderer = runtime.pluginRegistry.getBestRendererForType(contentType)\n return renderer?.capabilities?.supportsFocus ?? false\n}\n","import { useEffect, useState } from 'react'\n\nimport { ContentFocusState, FocusContext } from '../../runtime/ContentFocusRuntime/ContentFocusRuntime'\nimport { Message, MessageContent } from '../../types/message'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useContentFocus() {\n const runtime = useAssistantRuntime()\n const [state, setState] = useState<ContentFocusState>(runtime.contentFocus.state)\n\n useEffect(() => {\n const unsubscribe = runtime.contentFocus.subscribe(() => {\n setState(runtime.contentFocus.state)\n })\n return unsubscribe\n }, [runtime])\n\n return {\n ...state,\n focus: (content: MessageContent, message: Message, contentIndex: number, context?: FocusContext) =>\n runtime.contentFocus.focus(content, message, contentIndex, context),\n blur: () => runtime.contentFocus.blur(),\n toggle: (content: MessageContent, message: Message, contentIndex: number, context?: FocusContext) =>\n runtime.contentFocus.toggle(content, message, contentIndex, context),\n switchContext: (context: FocusContext) => runtime.contentFocus.switchContext(context),\n focusNext: () => runtime.contentFocus.focusNext(runtime.thread.messages),\n focusPrevious: () => runtime.contentFocus.focusPrevious(runtime.thread.messages)\n }\n}\n\nexport function useContentFocusState() {\n const runtime = useAssistantRuntime()\n const [state, setState] = useState<ContentFocusState>(runtime.contentFocus.state)\n\n useEffect(() => {\n const unsubscribe = runtime.contentFocus.subscribe(() => {\n setState(runtime.contentFocus.state)\n })\n return unsubscribe\n }, [runtime])\n\n return state\n}\n","import { useEffect } from 'react'\n\nimport { CapabilityConfig } from '../../types/capability'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useCapability<TArgs = any, TResult = any>(config: CapabilityConfig<TArgs, TResult>): void {\n const runtime = useAssistantRuntime()\n\n useEffect(() => {\n // Register handler\n if (config.execute) {\n runtime.capabilityRegistry.registerHandler(config.name, { execute: config.execute })\n }\n\n // Register renderer\n if (config.render) {\n runtime.capabilityRegistry.registerRenderer(config.name, {\n component: config.render\n })\n }\n\n // Cleanup on unmount\n return () => {\n runtime.capabilityRegistry.unregister(config.name)\n }\n }, [config.name, runtime])\n}\n","import { useEffect, useReducer, useState } from 'react'\n\nimport { CapabilityExecution } from '../../types/capability'\nimport { useAssistantRuntime } from './useAssistantRuntime'\n\nexport function useCapabilityExecution(capabilityId: string): CapabilityExecution | undefined {\n const runtime = useAssistantRuntime()\n const [execution, setExecution] = useState<CapabilityExecution | undefined>(() =>\n runtime.capabilityExecutionManager.getExecution(capabilityId)\n )\n const [, forceUpdate] = useReducer(x => x + 1, 0)\n\n useEffect(() => {\n // Get initial state\n const initialExecution = runtime.capabilityExecutionManager.getExecution(capabilityId)\n setExecution(initialExecution)\n\n // Subscribe to updates\n const unsubscribe = runtime.capabilityExecutionManager.subscribe(id => {\n if (id === capabilityId) {\n const updatedExecution = runtime.capabilityExecutionManager.getExecution(capabilityId)\n setExecution(updatedExecution)\n forceUpdate()\n }\n })\n\n return unsubscribe\n }, [capabilityId, runtime])\n\n return execution\n}\n","import { CapabilityContent } from '../../types/capability'\nimport { Message, MessageContent } from '../../types/message'\nimport { useAssistantRuntime } from '../hooks/useAssistantRuntime'\nimport { useCapabilityExecution } from '../hooks/useCapabilityExecution'\n\nexport interface CapabilityRendererProps {\n message: Message\n content: MessageContent\n}\n\nexport function CapabilityRendererComp({ message, content }: CapabilityRendererProps) {\n const runtime = useAssistantRuntime()\n const capabilityContent = content as CapabilityContent\n const execution = useCapabilityExecution(capabilityContent.capabilityId)\n\n const renderer = runtime.capabilityRegistry.getRenderer(capabilityContent.capabilityName)\n\n if (!renderer || !execution) {\n return null\n }\n\n const Component = renderer.component\n\n return (\n <Component\n capabilityName={execution.name}\n capabilityId={execution.id}\n args={execution.args}\n result={execution.result}\n status={execution.status}\n message={message}\n />\n )\n}\n","import { Message, MessageContent } from '../../types/message'\nimport { useContentRenderer } from '../hooks/useContentRenderer'\nimport { CapabilityRendererComp } from './CapabilityRenderer'\n\nexport function ContentRenderer({ message, content }: { message: Message; content: MessageContent }) {\n const { component } = useContentRenderer(content.type)\n\n if (content.type === 'capability') {\n return <CapabilityRendererComp message={message} content={content} />\n }\n\n if (!component) {\n return null\n }\n\n const Component = component\n return <Component content={content} message={message} />\n}\n","import { AuxiliaryRendererProps } from '../../types/plugin'\nimport { useContentRenderer } from '../hooks'\n\nexport function AuxiliaryRenderer({\n message,\n content,\n context,\n onClose,\n onNavigate,\n onSwitchContext\n}: AuxiliaryRendererProps) {\n const { auxiliaryComponent } = useContentRenderer(content.type, context)\n\n if (!auxiliaryComponent) {\n return null\n }\n\n const Component = auxiliaryComponent\n return (\n <Component\n content={content}\n message={message}\n context={context}\n onClose={onClose}\n onNavigate={onNavigate}\n onSwitchContext={onSwitchContext}\n />\n )\n}\n","import { FC } from 'react'\n\nimport { CapabilityConfig } from '../../types'\nimport { useCapability } from '../hooks/useCapability'\n\nexport function makeCapability<TArgs = any, TResult = any>(config: CapabilityConfig<TArgs, TResult>): FC {\n const Capability: FC = () => {\n useCapability(config)\n return null\n }\n\n Capability.displayName = `Capability(${config.name})`\n\n return Capability\n}\n","import { StreamAdapter, StreamChunk } from '../types/adapters'\nimport { Message } from '../types/message'\n\nexport interface SSEEvent {\n event: string\n data: any\n}\n\nexport abstract class BaseSSEStreamAdapter<TAllowedEvents extends readonly string[] = readonly string[]>\n implements StreamAdapter\n{\n protected abstract prepareRequest(params: { messages: Message[]; conversationId?: string; signal?: AbortSignal }): {\n url: string\n options: RequestInit\n }\n\n protected abstract convertEvent(event: SSEEvent & { event: TAllowedEvents[number] }): StreamChunk | null\n\n protected getAllowedEvents(): TAllowedEvents | null {\n return null\n }\n\n protected shouldProcessEvent(eventType: string): boolean {\n const allowedEvents = this.getAllowedEvents()\n if (!allowedEvents) return true\n return allowedEvents.includes(eventType)\n }\n\n async *stream(params: {\n messages: Message[]\n conversationId?: string\n signal?: AbortSignal\n }): AsyncGenerator<StreamChunk, void, unknown> {\n const { signal } = params\n const { url, options } = this.prepareRequest(params)\n\n const response = await fetch(url, { ...options, signal })\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`)\n }\n\n if (!response.body) {\n throw new Error('Response body is null')\n }\n\n yield* this.parseSSEStream(response.body, signal)\n }\n\n private async *parseSSEStream(\n body: ReadableStream<Uint8Array>,\n signal?: AbortSignal\n ): AsyncGenerator<StreamChunk, void, unknown> {\n const reader = body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n let currentEvent: string | null = null\n\n try {\n while (true) {\n // eslint-disable-next-line no-await-in-loop\n const { done, value } = await reader.read()\n\n if (done) break\n if (signal?.aborted) break\n\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split('\\n')\n buffer = lines.pop() || ''\n\n for (const line of lines) {\n const trimmedLine = line.trim()\n\n if (!trimmedLine) {\n currentEvent = null\n continue\n }\n\n if (trimmedLine === ': ping') {\n continue\n }\n\n if (trimmedLine.startsWith('event:')) {\n currentEvent = trimmedLine.substring(6).trim()\n continue\n }\n\n if (trimmedLine.startsWith('data:')) {\n const dataStr = trimmedLine.substring(5).trim()\n\n if (dataStr === 'eof' || trimmedLine === 'eof') {\n break\n }\n\n try {\n const data = JSON.parse(dataStr)\n\n if (currentEvent && this.shouldProcessEvent(currentEvent)) {\n const chunk = this.convertEvent({\n event: currentEvent as TAllowedEvents[number],\n data\n })\n if (chunk) {\n yield chunk\n }\n }\n } catch (e) {\n // handle error\n }\n\n currentEvent = null\n }\n }\n }\n } finally {\n reader.releaseLock()\n }\n }\n}\n"],"names":["PluginRegistry","__publicField","plugin","renderer","renderers","a","b","pluginId","filteredRenderers","r","type","CapabilityRegistry","name","handler","CapabilityExecutionManager","getHandler","id","args","messageId","strategy","execution","executionId","running","result","error","errorMessage","index","e","callback","BaseSubscribable","ContentFocusRuntime","content","message","contentIndex","context","messages","currentMsgIndex","m","currentMsg","currentContentIndex","nextContent","nextMsg","prevContent","prevMsg","lastIndex","messageIdCounter","threadIdCounter","generateMessageId","generateThreadId","ThreadListItemRuntime","config","state","newTitle","ComposerRuntime","text","isSubmitting","ThreadRuntime","_core","conversationId","title","ThreadRuntimeCore","_b","_a","newMessage","userMessage","assistantMessageId","assistantMessage","stream","event","messageIndex","metadataEvent","capabilityEvent","errorEvent","customEvent","updatedMessages","initialContent","status","ThreadListRuntime","mainCore","mainState","mainItem","mainThread","threads","threadItems","threadId","thread","oldMainState","newMainState","newThreadId","newCore","newThread","newState","newItem","createdState","threadStates","threadCore","threadItem","otherThreadId","AssistantRuntime","lastMessage","i","j","getOwnPropertySymbols","hasOwnProperty","propIsEnumerable","toObject","val","shouldUseNative","test1","test2","order2","n","test3","letter","objectAssign","target","source","from","to","symbols","s","key","require$$0","f","require$$1","g","reactJsxRuntime_production_min","h","p","q","c","k","d","l","jsxRuntimeModule","AssistantRuntimeContext","createContext","AssistantRuntimeProvider","runtime","children","useAssistantRuntimeContext","useContext","useAssistantRuntime","useThreadList","useThreadListState","setState","useState","useEffect","useCurrentThread","React","is","x","y","objectIs","useLayoutEffect","useDebugValue","useSyncExternalStore$2","subscribe","getSnapshot","value","_useState","inst","forceUpdate","checkIfSnapshotChanged","latestGetSnapshot","nextValue","useSyncExternalStore$1","shim","useSyncExternalStoreShim_production","shimModule","useMessages","useSyncExternalStore","useComposer","setText","setIsSubmitting","messageText","prev","useContentRenderer","contentType","auxiliaryComponent","_c","_d","useContentFocus","useCapability","useCapabilityExecution","capabilityId","setExecution","useReducer","initialExecution","updatedExecution","CapabilityRendererComp","capabilityContent","Component","jsx","ContentRenderer","component","AuxiliaryRenderer","onClose","onNavigate","onSwitchContext","makeCapability","Capability","BaseSSEStreamAdapter","eventType","allowedEvents","params","signal","url","options","response","body","reader","decoder","buffer","currentEvent","done","lines","line","trimmedLine","dataStr","data","chunk"],"mappings":"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","x_google_ignoreList":[12,13,14,19,20]}
|
|
@@ -19,5 +19,7 @@ export declare class ThreadRuntime extends BaseSubscribable {
|
|
|
19
19
|
cancelRun(): void;
|
|
20
20
|
clear(): void;
|
|
21
21
|
reset(messages?: Message[]): void;
|
|
22
|
+
setConversationId(conversationId: string | undefined): void;
|
|
23
|
+
setTitle(title: string | undefined): void;
|
|
22
24
|
subscribe(callback: () => void): Unsubscribe;
|
|
23
25
|
}
|