@langchain/langgraph-sdk 1.8.1 → 1.8.3
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/auth/index.cjs.map +1 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/types.d.cts.map +1 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/react/stream.cjs.map +1 -1
- package/dist/react/stream.custom.cjs.map +1 -1
- package/dist/react/stream.custom.d.cts.map +1 -1
- package/dist/react/stream.custom.d.ts.map +1 -1
- package/dist/react/stream.custom.js.map +1 -1
- package/dist/react/stream.js.map +1 -1
- package/dist/react/stream.lgp.cjs +7 -2
- package/dist/react/stream.lgp.cjs.map +1 -1
- package/dist/react/stream.lgp.js +8 -3
- package/dist/react/stream.lgp.js.map +1 -1
- package/dist/react/types.d.cts.map +1 -1
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react-ui/client.cjs.map +1 -1
- package/dist/react-ui/client.d.cts.map +1 -1
- package/dist/react-ui/client.d.ts.map +1 -1
- package/dist/react-ui/client.js.map +1 -1
- package/dist/react-ui/types.cjs.map +1 -1
- package/dist/react-ui/types.js.map +1 -1
- package/dist/schema.d.cts.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/types.messages.d.cts.map +1 -1
- package/dist/types.messages.d.ts.map +1 -1
- package/dist/ui/branching.cjs.map +1 -1
- package/dist/ui/branching.js.map +1 -1
- package/dist/ui/class-messages.d.cts.map +1 -1
- package/dist/ui/class-messages.d.ts.map +1 -1
- package/dist/ui/index.cjs +1 -0
- package/dist/ui/index.d.cts +2 -2
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.js +2 -2
- package/dist/ui/manager.cjs +46 -7
- package/dist/ui/manager.cjs.map +1 -1
- package/dist/ui/manager.d.cts.map +1 -1
- package/dist/ui/manager.d.ts.map +1 -1
- package/dist/ui/manager.js +46 -7
- package/dist/ui/manager.js.map +1 -1
- package/dist/ui/messages.cjs.map +1 -1
- package/dist/ui/messages.d.cts.map +1 -1
- package/dist/ui/messages.d.ts.map +1 -1
- package/dist/ui/messages.js.map +1 -1
- package/dist/ui/orchestrator-custom.cjs.map +1 -1
- package/dist/ui/orchestrator-custom.js.map +1 -1
- package/dist/ui/orchestrator.cjs +7 -2
- package/dist/ui/orchestrator.cjs.map +1 -1
- package/dist/ui/orchestrator.d.cts.map +1 -1
- package/dist/ui/orchestrator.d.ts.map +1 -1
- package/dist/ui/orchestrator.js +8 -3
- package/dist/ui/orchestrator.js.map +1 -1
- package/dist/ui/queue.cjs.map +1 -1
- package/dist/ui/queue.js.map +1 -1
- package/dist/ui/stream/deep-agent.d.cts.map +1 -1
- package/dist/ui/stream/deep-agent.d.ts.map +1 -1
- package/dist/ui/stream/index.d.cts.map +1 -1
- package/dist/ui/stream/index.d.ts.map +1 -1
- package/dist/ui/transport.cjs.map +1 -1
- package/dist/ui/transport.d.cts.map +1 -1
- package/dist/ui/transport.d.ts.map +1 -1
- package/dist/ui/transport.js.map +1 -1
- package/dist/ui/types.d.cts +4 -0
- package/dist/ui/types.d.cts.map +1 -1
- package/dist/ui/types.d.ts +4 -0
- package/dist/ui/types.d.ts.map +1 -1
- package/dist/ui/utils.cjs +15 -0
- package/dist/ui/utils.cjs.map +1 -1
- package/dist/ui/utils.d.cts +12 -1
- package/dist/ui/utils.d.cts.map +1 -1
- package/dist/ui/utils.d.ts +12 -1
- package/dist/ui/utils.d.ts.map +1 -1
- package/dist/ui/utils.js +15 -1
- package/dist/ui/utils.js.map +1 -1
- package/dist/utils/async_caller.cjs.map +1 -1
- package/dist/utils/async_caller.js.map +1 -1
- package/dist/utils/env.cjs +1 -1
- package/dist/utils/env.cjs.map +1 -1
- package/dist/utils/env.js +1 -1
- package/dist/utils/env.js.map +1 -1
- package/package.json +1 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":[],"sources":["../../src/react-ui/client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport type { BagTemplate } from \"@langchain/langgraph-sdk\";\nimport { useStream } from \"../react/index.js\";\nimport type { UIMessage } from \"./types.js\";\nimport type { UseStream } from \"../react/types.js\";\n\nconst UseStreamContext = React.createContext<{\n stream: ReturnType<typeof useStream>;\n meta: unknown;\n}>(null!);\n\ntype GetMetaType<Bag extends BagTemplate> = Bag extends { MetaType: unknown }\n ? Bag[\"MetaType\"]\n : unknown;\n\ninterface UseStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate\n> extends UseStream<StateType, Bag> {\n meta?: GetMetaType<Bag>;\n}\n\nexport function useStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate\n>(): UseStreamContext<StateType, Bag> {\n const ctx = React.useContext(UseStreamContext);\n if (!ctx) {\n throw new Error(\n \"useStreamContext must be used within a LoadExternalComponent\"\n );\n }\n\n return new Proxy(ctx, {\n get(target, prop: keyof UseStreamContext<StateType, Bag>) {\n if (prop === \"meta\") return target.meta;\n return target.stream[prop as keyof typeof target.stream];\n },\n }) as unknown as UseStreamContext<StateType, Bag>;\n}\n\ninterface ComponentTarget {\n comp: React.FunctionComponent | React.ComponentClass;\n target: HTMLElement;\n}\n\nclass ComponentStore {\n private cache: Record<string, ComponentTarget> = {};\n\n private boundCache: Record<\n string,\n {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => ComponentTarget | undefined;\n }\n > = {};\n\n private callbacks: Record<\n string,\n ((\n comp: React.FunctionComponent | React.ComponentClass,\n el: HTMLElement\n ) => void)[]\n > = {};\n\n respond(\n shadowRootId: string,\n comp: React.FunctionComponent | React.ComponentClass,\n targetElement: HTMLElement\n ) {\n this.cache[shadowRootId] = { comp, target: targetElement };\n this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));\n }\n\n getBoundStore(shadowRootId: string) {\n this.boundCache[shadowRootId] ??= {\n subscribe: (onStoreChange: () => void) => {\n this.callbacks[shadowRootId] ??= [];\n this.callbacks[shadowRootId].push(onStoreChange);\n return () => {\n this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter(\n (c) => c !== onStoreChange\n );\n };\n },\n getSnapshot: () => this.cache[shadowRootId],\n };\n\n return this.boundCache[shadowRootId];\n }\n}\n\nconst COMPONENT_STORE = new ComponentStore();\nconst EXT_STORE_SYMBOL = Symbol.for(\"LGUI_EXT_STORE\");\nconst REQUIRE_SYMBOL = Symbol.for(\"LGUI_REQUIRE\");\nconst REQUIRE_EXTRA_SYMBOL = Symbol.for(\"LGUI_REQUIRE_EXTRA\");\n\ninterface LoadExternalComponentProps\n extends Pick<React.HTMLAttributes<HTMLDivElement>, \"style\" | \"className\"> {\n stream: ReturnType<typeof useStream>;\n namespace?: string;\n message: UIMessage;\n meta?: unknown;\n fallback?: React.ReactNode | Record<string, React.ReactNode>;\n components?: Record<string, React.FunctionComponent | React.ComponentClass>;\n}\n\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n value != null && typeof value === \"object\" && Symbol.iterator in value;\n\nconst isPromise = (value: unknown): value is Promise<unknown> =>\n value != null &&\n typeof value === \"object\" &&\n \"then\" in value &&\n typeof value.then === \"function\";\n\nconst isReactNode = (value: unknown): value is React.ReactNode => {\n if (React.isValidElement(value)) return true;\n if (value == null) return true;\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n typeof value === \"boolean\"\n ) {\n return true;\n }\n\n if (isIterable(value)) return true;\n if (isPromise(value)) return true;\n\n return false;\n};\n\nexport function LoadExternalComponent({\n stream,\n namespace,\n message,\n meta,\n fallback,\n components,\n ...props\n}: LoadExternalComponentProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n const shadowRootId = `child-shadow-${id}`;\n\n const store = React.useMemo(\n () => COMPONENT_STORE.getBoundStore(shadowRootId),\n [shadowRootId]\n );\n const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);\n\n const clientComponent = components?.[message.name];\n const hasClientComponent = clientComponent != null;\n\n let fallbackComponent = null;\n if (isReactNode(fallback)) {\n fallbackComponent = fallback;\n } else if (typeof fallback === \"object\" && fallback != null) {\n fallbackComponent = fallback?.[message.name];\n }\n\n const uiNamespace = namespace ?? stream.assistantId;\n const uiClient = stream.client[\"~ui\"];\n React.useEffect(() => {\n if (hasClientComponent) return;\n void uiClient.getComponent(uiNamespace, message.name).then((html) => {\n const dom = ref.current;\n if (!dom) return;\n const root = dom.shadowRoot ?? dom.attachShadow({ mode: \"open\" });\n const fragment = document\n .createRange()\n .createContextualFragment(\n html.replace(\"{{shadowRootId}}\", shadowRootId)\n );\n root.appendChild(fragment);\n });\n }, [uiClient, uiNamespace, message.name, shadowRootId, hasClientComponent]);\n\n if (hasClientComponent) {\n return (\n <UseStreamContext.Provider value={{ stream, meta }}>\n {React.createElement(clientComponent, message.props)}\n </UseStreamContext.Provider>\n );\n }\n\n return (\n <>\n <div id={shadowRootId} ref={ref} {...props} />\n\n <UseStreamContext.Provider value={{ stream, meta }}>\n {state?.target != null\n ? ReactDOM.createPortal(\n React.createElement(state.comp, message.props),\n state.target\n )\n : fallbackComponent}\n </UseStreamContext.Provider>\n </>\n );\n}\n\ndeclare global {\n interface Window {\n [EXT_STORE_SYMBOL]: ComponentStore;\n [REQUIRE_SYMBOL]: (name: string) => unknown;\n [REQUIRE_EXTRA_SYMBOL]: Record<string, unknown>;\n }\n}\n\nexport function experimental_loadShare(name: string, module: unknown) {\n if (typeof window === \"undefined\") return;\n\n window[REQUIRE_EXTRA_SYMBOL] ??= {};\n window[REQUIRE_EXTRA_SYMBOL][name] = module;\n}\n\nexport function bootstrapUiContext() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n window[EXT_STORE_SYMBOL] = COMPONENT_STORE;\n window[REQUIRE_SYMBOL] = (name: string) => {\n if (name === \"react\") return React;\n if (name === \"react-dom\") return ReactDOM;\n if (name === \"react/jsx-runtime\") return JsxRuntime;\n if (name === \"@langchain/langgraph-sdk/react\") return { useStream };\n if (name === \"@langchain/langgraph-sdk/react-ui\") {\n return {\n useStreamContext,\n LoadExternalComponent: () => {\n throw new Error(\"Nesting LoadExternalComponent is not supported\");\n },\n };\n }\n\n if (\n window[REQUIRE_EXTRA_SYMBOL] != null &&\n typeof window[REQUIRE_EXTRA_SYMBOL] === \"object\" &&\n name in window[REQUIRE_EXTRA_SYMBOL]\n ) {\n return window[REQUIRE_EXTRA_SYMBOL][name];\n }\n\n throw new Error(`Unknown module...: ${name}`);\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":[],"sources":["../../src/react-ui/client.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport type { BagTemplate } from \"@langchain/langgraph-sdk\";\nimport { useStream } from \"../react/index.js\";\nimport type { UIMessage } from \"./types.js\";\nimport type { UseStream } from \"../react/types.js\";\n\nconst UseStreamContext = React.createContext<{\n stream: ReturnType<typeof useStream>;\n meta: unknown;\n}>(null!);\n\ntype GetMetaType<Bag extends BagTemplate> = Bag extends { MetaType: unknown }\n ? Bag[\"MetaType\"]\n : unknown;\n\ninterface UseStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n> extends UseStream<StateType, Bag> {\n meta?: GetMetaType<Bag>;\n}\n\nexport function useStreamContext<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(): UseStreamContext<StateType, Bag> {\n const ctx = React.useContext(UseStreamContext);\n if (!ctx) {\n throw new Error(\n \"useStreamContext must be used within a LoadExternalComponent\"\n );\n }\n\n return new Proxy(ctx, {\n get(target, prop: keyof UseStreamContext<StateType, Bag>) {\n if (prop === \"meta\") return target.meta;\n return target.stream[prop as keyof typeof target.stream];\n },\n }) as unknown as UseStreamContext<StateType, Bag>;\n}\n\ninterface ComponentTarget {\n comp: React.FunctionComponent | React.ComponentClass;\n target: HTMLElement;\n}\n\nclass ComponentStore {\n private cache: Record<string, ComponentTarget> = {};\n\n private boundCache: Record<\n string,\n {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => ComponentTarget | undefined;\n }\n > = {};\n\n private callbacks: Record<\n string,\n ((\n comp: React.FunctionComponent | React.ComponentClass,\n el: HTMLElement\n ) => void)[]\n > = {};\n\n respond(\n shadowRootId: string,\n comp: React.FunctionComponent | React.ComponentClass,\n targetElement: HTMLElement\n ) {\n this.cache[shadowRootId] = { comp, target: targetElement };\n this.callbacks[shadowRootId]?.forEach((c) => c(comp, targetElement));\n }\n\n getBoundStore(shadowRootId: string) {\n this.boundCache[shadowRootId] ??= {\n subscribe: (onStoreChange: () => void) => {\n this.callbacks[shadowRootId] ??= [];\n this.callbacks[shadowRootId].push(onStoreChange);\n return () => {\n this.callbacks[shadowRootId] = this.callbacks[shadowRootId].filter(\n (c) => c !== onStoreChange\n );\n };\n },\n getSnapshot: () => this.cache[shadowRootId],\n };\n\n return this.boundCache[shadowRootId];\n }\n}\n\nconst COMPONENT_STORE = new ComponentStore();\nconst EXT_STORE_SYMBOL = Symbol.for(\"LGUI_EXT_STORE\");\nconst REQUIRE_SYMBOL = Symbol.for(\"LGUI_REQUIRE\");\nconst REQUIRE_EXTRA_SYMBOL = Symbol.for(\"LGUI_REQUIRE_EXTRA\");\n\ninterface LoadExternalComponentProps extends Pick<\n React.HTMLAttributes<HTMLDivElement>,\n \"style\" | \"className\"\n> {\n stream: ReturnType<typeof useStream>;\n namespace?: string;\n message: UIMessage;\n meta?: unknown;\n fallback?: React.ReactNode | Record<string, React.ReactNode>;\n components?: Record<string, React.FunctionComponent | React.ComponentClass>;\n}\n\nconst isIterable = (value: unknown): value is Iterable<unknown> =>\n value != null && typeof value === \"object\" && Symbol.iterator in value;\n\nconst isPromise = (value: unknown): value is Promise<unknown> =>\n value != null &&\n typeof value === \"object\" &&\n \"then\" in value &&\n typeof value.then === \"function\";\n\nconst isReactNode = (value: unknown): value is React.ReactNode => {\n if (React.isValidElement(value)) return true;\n if (value == null) return true;\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"bigint\" ||\n typeof value === \"boolean\"\n ) {\n return true;\n }\n\n if (isIterable(value)) return true;\n if (isPromise(value)) return true;\n\n return false;\n};\n\nexport function LoadExternalComponent({\n stream,\n namespace,\n message,\n meta,\n fallback,\n components,\n ...props\n}: LoadExternalComponentProps) {\n const ref = React.useRef<HTMLDivElement>(null);\n const id = React.useId();\n const shadowRootId = `child-shadow-${id}`;\n\n const store = React.useMemo(\n () => COMPONENT_STORE.getBoundStore(shadowRootId),\n [shadowRootId]\n );\n const state = React.useSyncExternalStore(store.subscribe, store.getSnapshot);\n\n const clientComponent = components?.[message.name];\n const hasClientComponent = clientComponent != null;\n\n let fallbackComponent = null;\n if (isReactNode(fallback)) {\n fallbackComponent = fallback;\n } else if (typeof fallback === \"object\" && fallback != null) {\n fallbackComponent = fallback?.[message.name];\n }\n\n const uiNamespace = namespace ?? stream.assistantId;\n const uiClient = stream.client[\"~ui\"];\n React.useEffect(() => {\n if (hasClientComponent) return;\n void uiClient.getComponent(uiNamespace, message.name).then((html) => {\n const dom = ref.current;\n if (!dom) return;\n const root = dom.shadowRoot ?? dom.attachShadow({ mode: \"open\" });\n const fragment = document\n .createRange()\n .createContextualFragment(\n html.replace(\"{{shadowRootId}}\", shadowRootId)\n );\n root.appendChild(fragment);\n });\n }, [uiClient, uiNamespace, message.name, shadowRootId, hasClientComponent]);\n\n if (hasClientComponent) {\n return (\n <UseStreamContext.Provider value={{ stream, meta }}>\n {React.createElement(clientComponent, message.props)}\n </UseStreamContext.Provider>\n );\n }\n\n return (\n <>\n <div id={shadowRootId} ref={ref} {...props} />\n\n <UseStreamContext.Provider value={{ stream, meta }}>\n {state?.target != null\n ? ReactDOM.createPortal(\n React.createElement(state.comp, message.props),\n state.target\n )\n : fallbackComponent}\n </UseStreamContext.Provider>\n </>\n );\n}\n\ndeclare global {\n interface Window {\n [EXT_STORE_SYMBOL]: ComponentStore;\n [REQUIRE_SYMBOL]: (name: string) => unknown;\n [REQUIRE_EXTRA_SYMBOL]: Record<string, unknown>;\n }\n}\n\nexport function experimental_loadShare(name: string, module: unknown) {\n if (typeof window === \"undefined\") return;\n\n window[REQUIRE_EXTRA_SYMBOL] ??= {};\n window[REQUIRE_EXTRA_SYMBOL][name] = module;\n}\n\nexport function bootstrapUiContext() {\n if (typeof window === \"undefined\") {\n return;\n }\n\n window[EXT_STORE_SYMBOL] = COMPONENT_STORE;\n window[REQUIRE_SYMBOL] = (name: string) => {\n if (name === \"react\") return React;\n if (name === \"react-dom\") return ReactDOM;\n if (name === \"react/jsx-runtime\") return JsxRuntime;\n if (name === \"@langchain/langgraph-sdk/react\") return { useStream };\n if (name === \"@langchain/langgraph-sdk/react-ui\") {\n return {\n useStreamContext,\n LoadExternalComponent: () => {\n throw new Error(\"Nesting LoadExternalComponent is not supported\");\n },\n };\n }\n\n if (\n window[REQUIRE_EXTRA_SYMBOL] != null &&\n typeof window[REQUIRE_EXTRA_SYMBOL] === \"object\" &&\n name in window[REQUIRE_EXTRA_SYMBOL]\n ) {\n return window[REQUIRE_EXTRA_SYMBOL][name];\n }\n\n throw new Error(`Unknown module...: ${name}`);\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/react-ui/types.ts"],"sourcesContent":["export interface UIMessage<\n TName extends string = string,\n TProps extends Record<string, unknown> = Record<string, unknown
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/react-ui/types.ts"],"sourcesContent":["export interface UIMessage<\n TName extends string = string,\n TProps extends Record<string, unknown> = Record<string, unknown>,\n> {\n type: \"ui\";\n\n id: string;\n name: TName;\n props: TProps;\n metadata?: {\n merge?: boolean;\n run_id?: string;\n name?: string;\n tags?: string[];\n message_id?: string;\n [key: string]: unknown;\n };\n}\n\nexport interface RemoveUIMessage {\n type: \"remove-ui\";\n id: string;\n}\n\nexport function isUIMessage(message: unknown): message is UIMessage {\n if (typeof message !== \"object\" || message == null) return false;\n if (!(\"type\" in message)) return false;\n return message.type === \"ui\";\n}\n\nexport function isRemoveUIMessage(\n message: unknown\n): message is RemoveUIMessage {\n if (typeof message !== \"object\" || message == null) return false;\n if (!(\"type\" in message)) return false;\n return message.type === \"remove-ui\";\n}\n\nexport function uiMessageReducer(\n state: UIMessage[],\n update: UIMessage | RemoveUIMessage | (UIMessage | RemoveUIMessage)[]\n) {\n const events = Array.isArray(update) ? update : [update];\n let newState = state.slice();\n\n for (const event of events) {\n if (event.type === \"remove-ui\") {\n newState = newState.filter((ui) => ui.id !== event.id);\n continue;\n }\n\n const index = state.findIndex((ui) => ui.id === event.id);\n if (index !== -1) {\n newState[index] =\n typeof event.metadata === \"object\" &&\n event.metadata != null &&\n event.metadata.merge\n ? { ...event, props: { ...state[index].props, ...event.props } }\n : event;\n } else {\n newState.push(event);\n }\n }\n\n return newState;\n}\n"],"mappings":";AAwBA,SAAgB,YAAY,SAAwC;AAClE,KAAI,OAAO,YAAY,YAAY,WAAW,KAAM,QAAO;AAC3D,KAAI,EAAE,UAAU,SAAU,QAAO;AACjC,QAAO,QAAQ,SAAS;;AAG1B,SAAgB,kBACd,SAC4B;AAC5B,KAAI,OAAO,YAAY,YAAY,WAAW,KAAM,QAAO;AAC3D,KAAI,EAAE,UAAU,SAAU,QAAO;AACjC,QAAO,QAAQ,SAAS;;AAG1B,SAAgB,iBACd,OACA,QACA;CACA,MAAM,SAAS,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO;CACxD,IAAI,WAAW,MAAM,OAAO;AAE5B,MAAK,MAAM,SAAS,QAAQ;AAC1B,MAAI,MAAM,SAAS,aAAa;AAC9B,cAAW,SAAS,QAAQ,OAAO,GAAG,OAAO,MAAM,GAAG;AACtD;;EAGF,MAAM,QAAQ,MAAM,WAAW,OAAO,GAAG,OAAO,MAAM,GAAG;AACzD,MAAI,UAAU,GACZ,UAAS,SACP,OAAO,MAAM,aAAa,YAC1B,MAAM,YAAY,QAClB,MAAM,SAAS,QACX;GAAE,GAAG;GAAO,OAAO;IAAE,GAAG,MAAM,OAAO;IAAO,GAAG,MAAM;IAAO;GAAE,GAC9D;MAEN,UAAS,KAAK,MAAM;;AAIxB,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/react-ui/types.ts"],"sourcesContent":["export interface UIMessage<\n TName extends string = string,\n TProps extends Record<string, unknown> = Record<string, unknown
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/react-ui/types.ts"],"sourcesContent":["export interface UIMessage<\n TName extends string = string,\n TProps extends Record<string, unknown> = Record<string, unknown>,\n> {\n type: \"ui\";\n\n id: string;\n name: TName;\n props: TProps;\n metadata?: {\n merge?: boolean;\n run_id?: string;\n name?: string;\n tags?: string[];\n message_id?: string;\n [key: string]: unknown;\n };\n}\n\nexport interface RemoveUIMessage {\n type: \"remove-ui\";\n id: string;\n}\n\nexport function isUIMessage(message: unknown): message is UIMessage {\n if (typeof message !== \"object\" || message == null) return false;\n if (!(\"type\" in message)) return false;\n return message.type === \"ui\";\n}\n\nexport function isRemoveUIMessage(\n message: unknown\n): message is RemoveUIMessage {\n if (typeof message !== \"object\" || message == null) return false;\n if (!(\"type\" in message)) return false;\n return message.type === \"remove-ui\";\n}\n\nexport function uiMessageReducer(\n state: UIMessage[],\n update: UIMessage | RemoveUIMessage | (UIMessage | RemoveUIMessage)[]\n) {\n const events = Array.isArray(update) ? update : [update];\n let newState = state.slice();\n\n for (const event of events) {\n if (event.type === \"remove-ui\") {\n newState = newState.filter((ui) => ui.id !== event.id);\n continue;\n }\n\n const index = state.findIndex((ui) => ui.id === event.id);\n if (index !== -1) {\n newState[index] =\n typeof event.metadata === \"object\" &&\n event.metadata != null &&\n event.metadata.merge\n ? { ...event, props: { ...state[index].props, ...event.props } }\n : event;\n } else {\n newState.push(event);\n }\n }\n\n return newState;\n}\n"],"mappings":";AAwBA,SAAgB,YAAY,SAAwC;AAClE,KAAI,OAAO,YAAY,YAAY,WAAW,KAAM,QAAO;AAC3D,KAAI,EAAE,UAAU,SAAU,QAAO;AACjC,QAAO,QAAQ,SAAS;;AAG1B,SAAgB,kBACd,SAC4B;AAC5B,KAAI,OAAO,YAAY,YAAY,WAAW,KAAM,QAAO;AAC3D,KAAI,EAAE,UAAU,SAAU,QAAO;AACjC,QAAO,QAAQ,SAAS;;AAG1B,SAAgB,iBACd,OACA,QACA;CACA,MAAM,SAAS,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO;CACxD,IAAI,WAAW,MAAM,OAAO;AAE5B,MAAK,MAAM,SAAS,QAAQ;AAC1B,MAAI,MAAM,SAAS,aAAa;AAC9B,cAAW,SAAS,QAAQ,OAAO,GAAG,OAAO,MAAM,GAAG;AACtD;;EAGF,MAAM,QAAQ,MAAM,WAAW,OAAO,GAAG,OAAO,MAAM,GAAG;AACzD,MAAI,UAAU,GACZ,UAAS,SACP,OAAO,MAAM,aAAa,YAC1B,MAAM,YAAY,QAClB,MAAM,SAAS,QACX;GAAE,GAAG;GAAO,OAAO;IAAE,GAAG,MAAM,OAAO;IAAO,GAAG,MAAM;IAAO;GAAE,GAC9D;MAEN,UAAS,KAAK,MAAM;;AAIxB,QAAO"}
|
package/dist/schema.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.cts","names":[],"sources":["../src/schema.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.d.cts","names":[],"sources":["../src/schema.ts"],"mappings":"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"}
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","names":[],"sources":["../src/schema.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.d.ts","names":[],"sources":["../src/schema.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.messages.d.cts","names":[],"sources":["../src/types.messages.ts"],"mappings":";KAAK,WAAA;AAAA,KACA,sBAAA;EACH,IAAA;EACA,SAAA;IAAsB,GAAA;IAAa,MAAA,GAAS,WAAA;EAAA;AAAA;AAAA,KAGzC,kBAAA;EAAuB,IAAA;EAAc,IAAA;AAAA;AAAA,KACrC,qBAAA,GAAwB,kBAAA,GAAqB,sBAAA;AAAA,KAC7C,cAAA,YAA0B,qBAAA;;;;KAK1B,uBAAA,GAA0B,MAAA;AAAA,KAE1B,WAAA;EACH,iBAAA,GAAoB,uBAAA;EACpB,OAAA,EAAS,cAAA;EACT,EAAA;EACA,IAAA;EACA,iBAAA,GAAoB,MAAA;AAAA;AAAA,KAGV,YAAA,GAAe,WAAA;EACzB,IAAA;EACA,OAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EAEA,IAAA;IAAA,CAAS,CAAA;EAAA;EACT,EAAA;EACA,IAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EACA,IAAA;EACA,EAAA;EACA,KAAA;EACA,IAAA;AAAA;;;;KAMU,aAAA;EACV,YAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;IAEM,KAAA;IACA,UAAA;IACA,cAAA;EAAA;EAGN,oBAAA;IACM,KAAA;IAA4B,SAAA;EAAA;AAAA;;;;;;;;;AAvBpC;;;;;;;;;;;AAWA;;;;;;;;KA2CY,SAAA,YAAqB,eAAA,IAAmB,WAAA;EAClD,IAAA;EACA,OAAA;EACA,UAAA,GAAa,QAAA;EACb,kBAAA,GAAqB,eAAA;EACrB,cAAA,GAAiB,aAAA;AAAA;AAAA,KAGP,WAAA,GAAc,WAAA;EACxB,IAAA;EACA,MAAA;EACA,YAAA;EAX+B;;;;;;;EAoB/B,QAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,WAAA;EAC5B,IAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;;;AAxBF;;;KAgCY,OAAA,YAAmB,eAAA,IAC3B,YAAA,GACA,SAAA,CAAU,QAAA,IACV,WAAA,GACA,aAAA,GACA,eAAA,GACA,aAAA;;;;;;;;KAUC,gBAAA,MAAsB,CAAA;EAAY,IAAA;IAAQ,KAAA;EAAA;AAAA,IAC3C,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"types.messages.d.cts","names":[],"sources":["../src/types.messages.ts"],"mappings":";KAAK,WAAA;AAAA,KACA,sBAAA;EACH,IAAA;EACA,SAAA;IAAsB,GAAA;IAAa,MAAA,GAAS,WAAA;EAAA;AAAA;AAAA,KAGzC,kBAAA;EAAuB,IAAA;EAAc,IAAA;AAAA;AAAA,KACrC,qBAAA,GAAwB,kBAAA,GAAqB,sBAAA;AAAA,KAC7C,cAAA,YAA0B,qBAAA;;;;KAK1B,uBAAA,GAA0B,MAAA;AAAA,KAE1B,WAAA;EACH,iBAAA,GAAoB,uBAAA;EACpB,OAAA,EAAS,cAAA;EACT,EAAA;EACA,IAAA;EACA,iBAAA,GAAoB,MAAA;AAAA;AAAA,KAGV,YAAA,GAAe,WAAA;EACzB,IAAA;EACA,OAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EAEA,IAAA;IAAA,CAAS,CAAA;EAAA;EACT,EAAA;EACA,IAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EACA,IAAA;EACA,EAAA;EACA,KAAA;EACA,IAAA;AAAA;;;;KAMU,aAAA;EACV,YAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;IAEM,KAAA;IACA,UAAA;IACA,cAAA;EAAA;EAGN,oBAAA;IACM,KAAA;IAA4B,SAAA;EAAA;AAAA;;;;;;;;;AAvBpC;;;;;;;;;;;AAWA;;;;;;;;KA2CY,SAAA,YAAqB,eAAA,IAAmB,WAAA;EAClD,IAAA;EACA,OAAA;EACA,UAAA,GAAa,QAAA;EACb,kBAAA,GAAqB,eAAA;EACrB,cAAA,GAAiB,aAAA;AAAA;AAAA,KAGP,WAAA,GAAc,WAAA;EACxB,IAAA;EACA,MAAA;EACA,YAAA;EAX+B;;;;;;;EAoB/B,QAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,WAAA;EAC5B,IAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;;;AAxBF;;;KAgCY,OAAA,YAAmB,eAAA,IAC3B,YAAA,GACA,SAAA,CAAU,QAAA,IACV,WAAA,GACA,aAAA,GACA,eAAA,GACA,aAAA;;;;;;;;KAUC,gBAAA,MAAsB,CAAA;EAAY,IAAA;IAAQ,KAAA;EAAA;AAAA,IAC3C,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,IACV,IAAA;;;;AA5BN;;KAoCK,cAAA,MAAoB,CAAA;EAEvB,KAAA,GAAQ,GAAA,iBAAoB,IAAA;AAAA,IAE1B,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,IACV,gBAAA,CAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;AA3BL;KAsDN,gBAAA,MAAsB,CAAA;EAAY,IAAA;AAAA,IAC1C,cAAA,CAAe,CAAA,uBACb,IAAA,yBAGE,IAAA,SAAa,MAAA;EACT,IAAA,EAAM,CAAA;EAAG,IAAA,EAAM,IAAA;EAAM,EAAA;EAAa,IAAA;AAAA;;;;;;;;AA/CpC;;;;;;;;;;;;;;;;;;;;;;KAiFE,kBAAA,iCACV,CAAA,iDACI,gBAAA,CAAiB,KAAA,IAAS,kBAAA,CAAmB,IAAA;AA1CnD;;;;;;;AAAA,KAoDY,aAAA;;;;;;;;;KAUA,kBAAA,YACC,eAAA,iBACI,WAAA,eACF,SAAA,CAAU,QAAA;EAhEW;;;;EAsElC,EAAA;EAjEgB;;;EAsEhB,IAAA,EAAM,QAAA;EAtEsC;;;AAkC9C;EA0CE,MAAA,EAAQ,YAAA;EA1CoB;;;EA+C5B,SAAA,EAAW,UAAA;EA7CsC;;;EAkDjD,KAAA;EApD6B;;;;;;;EA6D7B,KAAA,EAAO,aAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.messages.d.ts","names":[],"sources":["../src/types.messages.ts"],"mappings":";KAAK,WAAA;AAAA,KACA,sBAAA;EACH,IAAA;EACA,SAAA;IAAsB,GAAA;IAAa,MAAA,GAAS,WAAA;EAAA;AAAA;AAAA,KAGzC,kBAAA;EAAuB,IAAA;EAAc,IAAA;AAAA;AAAA,KACrC,qBAAA,GAAwB,kBAAA,GAAqB,sBAAA;AAAA,KAC7C,cAAA,YAA0B,qBAAA;;;;KAK1B,uBAAA,GAA0B,MAAA;AAAA,KAE1B,WAAA;EACH,iBAAA,GAAoB,uBAAA;EACpB,OAAA,EAAS,cAAA;EACT,EAAA;EACA,IAAA;EACA,iBAAA,GAAoB,MAAA;AAAA;AAAA,KAGV,YAAA,GAAe,WAAA;EACzB,IAAA;EACA,OAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EAEA,IAAA;IAAA,CAAS,CAAA;EAAA;EACT,EAAA;EACA,IAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EACA,IAAA;EACA,EAAA;EACA,KAAA;EACA,IAAA;AAAA;;;;KAMU,aAAA;EACV,YAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;IAEM,KAAA;IACA,UAAA;IACA,cAAA;EAAA;EAGN,oBAAA;IACM,KAAA;IAA4B,SAAA;EAAA;AAAA;;;;;;;;;AAvBpC;;;;;;;;;;;AAWA;;;;;;;;KA2CY,SAAA,YAAqB,eAAA,IAAmB,WAAA;EAClD,IAAA;EACA,OAAA;EACA,UAAA,GAAa,QAAA;EACb,kBAAA,GAAqB,eAAA;EACrB,cAAA,GAAiB,aAAA;AAAA;AAAA,KAGP,WAAA,GAAc,WAAA;EACxB,IAAA;EACA,MAAA;EACA,YAAA;EAX+B;;;;;;;EAoB/B,QAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,WAAA;EAC5B,IAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;;;AAxBF;;;KAgCY,OAAA,YAAmB,eAAA,IAC3B,YAAA,GACA,SAAA,CAAU,QAAA,IACV,WAAA,GACA,aAAA,GACA,eAAA,GACA,aAAA;;;;;;;;KAUC,gBAAA,MAAsB,CAAA;EAAY,IAAA;IAAQ,KAAA;EAAA;AAAA,IAC3C,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"types.messages.d.ts","names":[],"sources":["../src/types.messages.ts"],"mappings":";KAAK,WAAA;AAAA,KACA,sBAAA;EACH,IAAA;EACA,SAAA;IAAsB,GAAA;IAAa,MAAA,GAAS,WAAA;EAAA;AAAA;AAAA,KAGzC,kBAAA;EAAuB,IAAA;EAAc,IAAA;AAAA;AAAA,KACrC,qBAAA,GAAwB,kBAAA,GAAqB,sBAAA;AAAA,KAC7C,cAAA,YAA0B,qBAAA;;;;KAK1B,uBAAA,GAA0B,MAAA;AAAA,KAE1B,WAAA;EACH,iBAAA,GAAoB,uBAAA;EACpB,OAAA,EAAS,cAAA;EACT,EAAA;EACA,IAAA;EACA,iBAAA,GAAoB,MAAA;AAAA;AAAA,KAGV,YAAA,GAAe,WAAA;EACzB,IAAA;EACA,OAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EAEA,IAAA;IAAA,CAAS,CAAA;EAAA;EACT,EAAA;EACA,IAAA;AAAA;;;;KAMU,eAAA;EACV,IAAA;EACA,IAAA;EACA,EAAA;EACA,KAAA;EACA,IAAA;AAAA;;;;KAMU,aAAA;EACV,YAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;IAEM,KAAA;IACA,UAAA;IACA,cAAA;EAAA;EAGN,oBAAA;IACM,KAAA;IAA4B,SAAA;EAAA;AAAA;;;;;;;;;AAvBpC;;;;;;;;;;;AAWA;;;;;;;;KA2CY,SAAA,YAAqB,eAAA,IAAmB,WAAA;EAClD,IAAA;EACA,OAAA;EACA,UAAA,GAAa,QAAA;EACb,kBAAA,GAAqB,eAAA;EACrB,cAAA,GAAiB,aAAA;AAAA;AAAA,KAGP,WAAA,GAAc,WAAA;EACxB,IAAA;EACA,MAAA;EACA,YAAA;EAX+B;;;;;;;EAoB/B,QAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;AAAA,KAGU,eAAA,GAAkB,WAAA;EAC5B,IAAA;AAAA;AAAA,KAGU,aAAA,GAAgB,WAAA;EAC1B,IAAA;AAAA;;;AAxBF;;;KAgCY,OAAA,YAAmB,eAAA,IAC3B,YAAA,GACA,SAAA,CAAU,QAAA,IACV,WAAA,GACA,aAAA,GACA,eAAA,GACA,aAAA;;;;;;;;KAUC,gBAAA,MAAsB,CAAA;EAAY,IAAA;IAAQ,KAAA;EAAA;AAAA,IAC3C,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,IACV,IAAA;;;;AA5BN;;KAoCK,cAAA,MAAoB,CAAA;EAEvB,KAAA,GAAQ,GAAA,iBAAoB,IAAA;AAAA,IAE1B,IAAA,GACA,CAAA;EAAY,MAAA;AAAA,IACV,gBAAA,CAAiB,CAAA;;;;;;;;;;;;;;;;;;;;;;;AA3BL;KAsDN,gBAAA,MAAsB,CAAA;EAAY,IAAA;AAAA,IAC1C,cAAA,CAAe,CAAA,uBACb,IAAA,yBAGE,IAAA,SAAa,MAAA;EACT,IAAA,EAAM,CAAA;EAAG,IAAA,EAAM,IAAA;EAAM,EAAA;EAAa,IAAA;AAAA;;;;;;;;AA/CpC;;;;;;;;;;;;;;;;;;;;;;KAiFE,kBAAA,iCACV,CAAA,iDACI,gBAAA,CAAiB,KAAA,IAAS,kBAAA,CAAmB,IAAA;AA1CnD;;;;;;;AAAA,KAoDY,aAAA;;;;;;;;;KAUA,kBAAA,YACC,eAAA,iBACI,WAAA,eACF,SAAA,CAAU,QAAA;EAhEW;;;;EAsElC,EAAA;EAjEgB;;;EAsEhB,IAAA,EAAM,QAAA;EAtEsC;;;AAkC9C;EA0CE,MAAA,EAAQ,YAAA;EA1CoB;;;EA+C5B,SAAA,EAAW,UAAA;EA7CsC;;;EAkDjD,KAAA;EApD6B;;;;;;;EA6D7B,KAAA,EAAO,aAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branching.cjs","names":["findLast"],"sources":["../../src/ui/branching.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\nimport { Message } from \"../types.messages.js\";\nimport { findLast } from \"./utils.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidFork<StateType = any> {\n type: \"fork\";\n items: Array<ValidSequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidSequence<StateType = any> {\n type: \"sequence\";\n items: [Node<StateType>, ...(Node<StateType> | ValidFork<StateType>)[]];\n}\n\nexport function getBranchSequence<StateType extends Record<string, unknown>>(\n history: ThreadState<StateType>[]\n) {\n const nodeIds = new Set<string>();\n const childrenMap: Record<string, ThreadState<StateType>[]> = {};\n\n // Short circuit if there's only a singular one state\n if (history.length <= 1) {\n return {\n rootSequence: {\n type: \"sequence\",\n items: history.map((value) => ({ type: \"node\", value, path: [] })),\n } satisfies Sequence<StateType>,\n paths: [],\n };\n }\n\n // First pass - collect nodes for each checkpoint\n history.forEach((state) => {\n const checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n childrenMap[checkpointId] ??= [];\n childrenMap[checkpointId].push(state);\n\n if (state.checkpoint?.checkpoint_id != null) {\n nodeIds.add(state.checkpoint.checkpoint_id);\n }\n });\n\n // If dealing with partial history, take the branch\n // with the latest checkpoint and mark it as the root.\n const maxId = (...ids: (string | null)[]) =>\n ids\n .filter((i): i is string => i != null)\n .sort((a, b) => a.localeCompare(b))\n .at(-1)!;\n\n const lastOrphanedNode =\n childrenMap.$ == null\n ? Object.keys(childrenMap)\n .filter((parentId) => !nodeIds.has(parentId))\n .map((parentId) => {\n const queue: string[] = [parentId];\n const seen = new Set<string>();\n\n let lastId = parentId;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (seen.has(current)) continue;\n seen.add(current);\n\n const children = (childrenMap[current] ?? []).flatMap(\n (i) => i.checkpoint?.checkpoint_id ?? []\n );\n\n lastId = maxId(lastId, ...children);\n queue.push(...children);\n }\n\n return { parentId, lastId };\n })\n .sort((a, b) => a.lastId.localeCompare(b.lastId))\n .at(-1)?.parentId\n : undefined;\n\n if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\n // Second pass - create a tree of sequences\n type Task = { id: string; sequence: Sequence; path: string[] };\n const rootSequence: Sequence = { type: \"sequence\", items: [] };\n const queue: Task[] = [{ id: \"$\", sequence: rootSequence, path: [] }];\n\n const paths: string[][] = [];\n\n const visited = new Set<string>();\n while (queue.length > 0) {\n const task = queue.shift()!;\n if (visited.has(task.id)) continue;\n visited.add(task.id);\n\n const children = childrenMap[task.id];\n if (children == null || children.length === 0) continue;\n\n // If we've encountered a fork (2+ children), push the fork\n // to the sequence and add a new sequence for each child\n let fork: Fork | undefined;\n if (children.length > 1) {\n fork = { type: \"fork\", items: [] };\n task.sequence.items.push(fork);\n }\n\n for (const value of children) {\n const id = value.checkpoint?.checkpoint_id;\n if (id == null) continue;\n\n let { sequence } = task;\n let { path } = task;\n if (fork != null) {\n sequence = { type: \"sequence\", items: [] };\n fork.items.unshift(sequence);\n\n path = path.slice();\n path.push(id);\n paths.push(path);\n }\n\n sequence.items.push({ type: \"node\", value, path });\n queue.push({ id, sequence, path });\n }\n }\n\n return { rootSequence, paths };\n}\n\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\n\ntype BranchByCheckpoint = Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n>;\n\n// Get flat view\nexport function getBranchView<StateType extends Record<string, unknown>>(\n sequence: Sequence<StateType>,\n paths: string[][],\n branch: string\n) {\n const path = branch.split(PATH_SEP);\n const pathMap: Record<string, string[][]> = {};\n\n for (const path of paths) {\n const parent = path.at(-2) ?? ROOT_ID;\n pathMap[parent] ??= [];\n pathMap[parent].unshift(path);\n }\n\n const history: ThreadState<StateType>[] = [];\n const branchByCheckpoint: BranchByCheckpoint = {};\n\n const forkStack = path.slice();\n const queue: (Node<StateType> | Fork<StateType>)[] = [...sequence.items];\n\n while (queue.length > 0) {\n const item = queue.shift()!;\n\n if (item.type === \"node\") {\n history.push(item.value);\n const checkpointId = item.value.checkpoint?.checkpoint_id;\n if (checkpointId == null) continue;\n\n branchByCheckpoint[checkpointId] = {\n branch: item.path.join(PATH_SEP),\n branchOptions: (item.path.length > 0\n ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? []\n : []\n ).map((p) => p.join(PATH_SEP)),\n };\n }\n if (item.type === \"fork\") {\n const forkId = forkStack.shift();\n const index =\n forkId != null\n ? item.items.findIndex((value) => {\n const firstItem = value.items.at(0);\n if (!firstItem || firstItem.type !== \"node\") return false;\n return firstItem.value.checkpoint?.checkpoint_id === forkId;\n })\n : -1;\n\n const nextItems = item.items.at(index)?.items ?? [];\n queue.push(...nextItems);\n }\n }\n\n return { history, branchByCheckpoint };\n}\n\nexport function getBranchContext<StateType extends Record<string, unknown>>(\n branch: string,\n history: ThreadState<StateType>[] | undefined\n) {\n const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n const { history: flatHistory, branchByCheckpoint } = getBranchView(\n branchTree,\n paths,\n branch\n );\n\n return {\n branchTree,\n flatHistory,\n branchByCheckpoint,\n threadHead: flatHistory.at(-1),\n };\n}\n\nexport function getMessagesMetadataMap<\n StateType extends Record<string, unknown>\n>(options: {\n initialValues: StateType | null | undefined;\n history: ThreadState<StateType>[] | null | undefined;\n getMessages: (values: StateType) => Message[];\n\n branchContext: {\n threadHead: ThreadState<StateType> | undefined;\n branchByCheckpoint: BranchByCheckpoint;\n };\n}) {\n const currentValues =\n options.branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType);\n\n const alreadyShown = new Set<string>();\n return options.getMessages(currentValues).map((message, idx) => {\n const messageId = message.id ?? idx;\n\n // Find the first checkpoint where the message was seen\n const firstSeenState = findLast(\n options.history ?? [],\n (state) =>\n state.values != null &&\n options\n .getMessages(state.values)\n .map((m, idx) => m.id ?? idx)\n .includes(messageId)\n );\n\n const checkpointId = firstSeenState?.checkpoint?.checkpoint_id;\n let branch =\n checkpointId != null\n ? options.branchContext.branchByCheckpoint[checkpointId]\n : undefined;\n if (!branch?.branch?.length) branch = undefined;\n\n // serialize branches\n const optionsShown = branch?.branchOptions?.flat(2).join(\",\");\n if (optionsShown) {\n if (alreadyShown.has(optionsShown)) branch = undefined;\n alreadyShown.add(optionsShown);\n }\n\n return {\n messageId: messageId.toString(),\n firstSeenState,\n\n branch: branch?.branch,\n branchOptions: branch?.branchOptions,\n };\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"branching.cjs","names":["findLast"],"sources":["../../src/ui/branching.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\nimport { Message } from \"../types.messages.js\";\nimport { findLast } from \"./utils.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidFork<StateType = any> {\n type: \"fork\";\n items: Array<ValidSequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidSequence<StateType = any> {\n type: \"sequence\";\n items: [Node<StateType>, ...(Node<StateType> | ValidFork<StateType>)[]];\n}\n\nexport function getBranchSequence<StateType extends Record<string, unknown>>(\n history: ThreadState<StateType>[]\n) {\n const nodeIds = new Set<string>();\n const childrenMap: Record<string, ThreadState<StateType>[]> = {};\n\n // Short circuit if there's only a singular one state\n if (history.length <= 1) {\n return {\n rootSequence: {\n type: \"sequence\",\n items: history.map((value) => ({ type: \"node\", value, path: [] })),\n } satisfies Sequence<StateType>,\n paths: [],\n };\n }\n\n // First pass - collect nodes for each checkpoint\n history.forEach((state) => {\n const checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n childrenMap[checkpointId] ??= [];\n childrenMap[checkpointId].push(state);\n\n if (state.checkpoint?.checkpoint_id != null) {\n nodeIds.add(state.checkpoint.checkpoint_id);\n }\n });\n\n // If dealing with partial history, take the branch\n // with the latest checkpoint and mark it as the root.\n const maxId = (...ids: (string | null)[]) =>\n ids\n .filter((i): i is string => i != null)\n .sort((a, b) => a.localeCompare(b))\n .at(-1)!;\n\n const lastOrphanedNode =\n childrenMap.$ == null\n ? Object.keys(childrenMap)\n .filter((parentId) => !nodeIds.has(parentId))\n .map((parentId) => {\n const queue: string[] = [parentId];\n const seen = new Set<string>();\n\n let lastId = parentId;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (seen.has(current)) continue;\n seen.add(current);\n\n const children = (childrenMap[current] ?? []).flatMap(\n (i) => i.checkpoint?.checkpoint_id ?? []\n );\n\n lastId = maxId(lastId, ...children);\n queue.push(...children);\n }\n\n return { parentId, lastId };\n })\n .sort((a, b) => a.lastId.localeCompare(b.lastId))\n .at(-1)?.parentId\n : undefined;\n\n if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\n // Second pass - create a tree of sequences\n type Task = { id: string; sequence: Sequence; path: string[] };\n const rootSequence: Sequence = { type: \"sequence\", items: [] };\n const queue: Task[] = [{ id: \"$\", sequence: rootSequence, path: [] }];\n\n const paths: string[][] = [];\n\n const visited = new Set<string>();\n while (queue.length > 0) {\n const task = queue.shift()!;\n if (visited.has(task.id)) continue;\n visited.add(task.id);\n\n const children = childrenMap[task.id];\n if (children == null || children.length === 0) continue;\n\n // If we've encountered a fork (2+ children), push the fork\n // to the sequence and add a new sequence for each child\n let fork: Fork | undefined;\n if (children.length > 1) {\n fork = { type: \"fork\", items: [] };\n task.sequence.items.push(fork);\n }\n\n for (const value of children) {\n const id = value.checkpoint?.checkpoint_id;\n if (id == null) continue;\n\n let { sequence } = task;\n let { path } = task;\n if (fork != null) {\n sequence = { type: \"sequence\", items: [] };\n fork.items.unshift(sequence);\n\n path = path.slice();\n path.push(id);\n paths.push(path);\n }\n\n sequence.items.push({ type: \"node\", value, path });\n queue.push({ id, sequence, path });\n }\n }\n\n return { rootSequence, paths };\n}\n\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\n\ntype BranchByCheckpoint = Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n>;\n\n// Get flat view\nexport function getBranchView<StateType extends Record<string, unknown>>(\n sequence: Sequence<StateType>,\n paths: string[][],\n branch: string\n) {\n const path = branch.split(PATH_SEP);\n const pathMap: Record<string, string[][]> = {};\n\n for (const path of paths) {\n const parent = path.at(-2) ?? ROOT_ID;\n pathMap[parent] ??= [];\n pathMap[parent].unshift(path);\n }\n\n const history: ThreadState<StateType>[] = [];\n const branchByCheckpoint: BranchByCheckpoint = {};\n\n const forkStack = path.slice();\n const queue: (Node<StateType> | Fork<StateType>)[] = [...sequence.items];\n\n while (queue.length > 0) {\n const item = queue.shift()!;\n\n if (item.type === \"node\") {\n history.push(item.value);\n const checkpointId = item.value.checkpoint?.checkpoint_id;\n if (checkpointId == null) continue;\n\n branchByCheckpoint[checkpointId] = {\n branch: item.path.join(PATH_SEP),\n branchOptions: (item.path.length > 0\n ? (pathMap[item.path.at(-2) ?? ROOT_ID] ?? [])\n : []\n ).map((p) => p.join(PATH_SEP)),\n };\n }\n if (item.type === \"fork\") {\n const forkId = forkStack.shift();\n const index =\n forkId != null\n ? item.items.findIndex((value) => {\n const firstItem = value.items.at(0);\n if (!firstItem || firstItem.type !== \"node\") return false;\n return firstItem.value.checkpoint?.checkpoint_id === forkId;\n })\n : -1;\n\n const nextItems = item.items.at(index)?.items ?? [];\n queue.push(...nextItems);\n }\n }\n\n return { history, branchByCheckpoint };\n}\n\nexport function getBranchContext<StateType extends Record<string, unknown>>(\n branch: string,\n history: ThreadState<StateType>[] | undefined\n) {\n const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n const { history: flatHistory, branchByCheckpoint } = getBranchView(\n branchTree,\n paths,\n branch\n );\n\n return {\n branchTree,\n flatHistory,\n branchByCheckpoint,\n threadHead: flatHistory.at(-1),\n };\n}\n\nexport function getMessagesMetadataMap<\n StateType extends Record<string, unknown>,\n>(options: {\n initialValues: StateType | null | undefined;\n history: ThreadState<StateType>[] | null | undefined;\n getMessages: (values: StateType) => Message[];\n\n branchContext: {\n threadHead: ThreadState<StateType> | undefined;\n branchByCheckpoint: BranchByCheckpoint;\n };\n}) {\n const currentValues =\n options.branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType);\n\n const alreadyShown = new Set<string>();\n return options.getMessages(currentValues).map((message, idx) => {\n const messageId = message.id ?? idx;\n\n // Find the first checkpoint where the message was seen\n const firstSeenState = findLast(\n options.history ?? [],\n (state) =>\n state.values != null &&\n options\n .getMessages(state.values)\n .map((m, idx) => m.id ?? idx)\n .includes(messageId)\n );\n\n const checkpointId = firstSeenState?.checkpoint?.checkpoint_id;\n let branch =\n checkpointId != null\n ? options.branchContext.branchByCheckpoint[checkpointId]\n : undefined;\n if (!branch?.branch?.length) branch = undefined;\n\n // serialize branches\n const optionsShown = branch?.branchOptions?.flat(2).join(\",\");\n if (optionsShown) {\n if (alreadyShown.has(optionsShown)) branch = undefined;\n alreadyShown.add(optionsShown);\n }\n\n return {\n messageId: messageId.toString(),\n firstSeenState,\n\n branch: branch?.branch,\n branchOptions: branch?.branchOptions,\n };\n });\n}\n"],"mappings":"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"}
|
package/dist/ui/branching.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branching.js","names":[],"sources":["../../src/ui/branching.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\nimport { Message } from \"../types.messages.js\";\nimport { findLast } from \"./utils.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidFork<StateType = any> {\n type: \"fork\";\n items: Array<ValidSequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidSequence<StateType = any> {\n type: \"sequence\";\n items: [Node<StateType>, ...(Node<StateType> | ValidFork<StateType>)[]];\n}\n\nexport function getBranchSequence<StateType extends Record<string, unknown>>(\n history: ThreadState<StateType>[]\n) {\n const nodeIds = new Set<string>();\n const childrenMap: Record<string, ThreadState<StateType>[]> = {};\n\n // Short circuit if there's only a singular one state\n if (history.length <= 1) {\n return {\n rootSequence: {\n type: \"sequence\",\n items: history.map((value) => ({ type: \"node\", value, path: [] })),\n } satisfies Sequence<StateType>,\n paths: [],\n };\n }\n\n // First pass - collect nodes for each checkpoint\n history.forEach((state) => {\n const checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n childrenMap[checkpointId] ??= [];\n childrenMap[checkpointId].push(state);\n\n if (state.checkpoint?.checkpoint_id != null) {\n nodeIds.add(state.checkpoint.checkpoint_id);\n }\n });\n\n // If dealing with partial history, take the branch\n // with the latest checkpoint and mark it as the root.\n const maxId = (...ids: (string | null)[]) =>\n ids\n .filter((i): i is string => i != null)\n .sort((a, b) => a.localeCompare(b))\n .at(-1)!;\n\n const lastOrphanedNode =\n childrenMap.$ == null\n ? Object.keys(childrenMap)\n .filter((parentId) => !nodeIds.has(parentId))\n .map((parentId) => {\n const queue: string[] = [parentId];\n const seen = new Set<string>();\n\n let lastId = parentId;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (seen.has(current)) continue;\n seen.add(current);\n\n const children = (childrenMap[current] ?? []).flatMap(\n (i) => i.checkpoint?.checkpoint_id ?? []\n );\n\n lastId = maxId(lastId, ...children);\n queue.push(...children);\n }\n\n return { parentId, lastId };\n })\n .sort((a, b) => a.lastId.localeCompare(b.lastId))\n .at(-1)?.parentId\n : undefined;\n\n if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\n // Second pass - create a tree of sequences\n type Task = { id: string; sequence: Sequence; path: string[] };\n const rootSequence: Sequence = { type: \"sequence\", items: [] };\n const queue: Task[] = [{ id: \"$\", sequence: rootSequence, path: [] }];\n\n const paths: string[][] = [];\n\n const visited = new Set<string>();\n while (queue.length > 0) {\n const task = queue.shift()!;\n if (visited.has(task.id)) continue;\n visited.add(task.id);\n\n const children = childrenMap[task.id];\n if (children == null || children.length === 0) continue;\n\n // If we've encountered a fork (2+ children), push the fork\n // to the sequence and add a new sequence for each child\n let fork: Fork | undefined;\n if (children.length > 1) {\n fork = { type: \"fork\", items: [] };\n task.sequence.items.push(fork);\n }\n\n for (const value of children) {\n const id = value.checkpoint?.checkpoint_id;\n if (id == null) continue;\n\n let { sequence } = task;\n let { path } = task;\n if (fork != null) {\n sequence = { type: \"sequence\", items: [] };\n fork.items.unshift(sequence);\n\n path = path.slice();\n path.push(id);\n paths.push(path);\n }\n\n sequence.items.push({ type: \"node\", value, path });\n queue.push({ id, sequence, path });\n }\n }\n\n return { rootSequence, paths };\n}\n\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\n\ntype BranchByCheckpoint = Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n>;\n\n// Get flat view\nexport function getBranchView<StateType extends Record<string, unknown>>(\n sequence: Sequence<StateType>,\n paths: string[][],\n branch: string\n) {\n const path = branch.split(PATH_SEP);\n const pathMap: Record<string, string[][]> = {};\n\n for (const path of paths) {\n const parent = path.at(-2) ?? ROOT_ID;\n pathMap[parent] ??= [];\n pathMap[parent].unshift(path);\n }\n\n const history: ThreadState<StateType>[] = [];\n const branchByCheckpoint: BranchByCheckpoint = {};\n\n const forkStack = path.slice();\n const queue: (Node<StateType> | Fork<StateType>)[] = [...sequence.items];\n\n while (queue.length > 0) {\n const item = queue.shift()!;\n\n if (item.type === \"node\") {\n history.push(item.value);\n const checkpointId = item.value.checkpoint?.checkpoint_id;\n if (checkpointId == null) continue;\n\n branchByCheckpoint[checkpointId] = {\n branch: item.path.join(PATH_SEP),\n branchOptions: (item.path.length > 0\n ? pathMap[item.path.at(-2) ?? ROOT_ID] ?? []\n : []\n ).map((p) => p.join(PATH_SEP)),\n };\n }\n if (item.type === \"fork\") {\n const forkId = forkStack.shift();\n const index =\n forkId != null\n ? item.items.findIndex((value) => {\n const firstItem = value.items.at(0);\n if (!firstItem || firstItem.type !== \"node\") return false;\n return firstItem.value.checkpoint?.checkpoint_id === forkId;\n })\n : -1;\n\n const nextItems = item.items.at(index)?.items ?? [];\n queue.push(...nextItems);\n }\n }\n\n return { history, branchByCheckpoint };\n}\n\nexport function getBranchContext<StateType extends Record<string, unknown>>(\n branch: string,\n history: ThreadState<StateType>[] | undefined\n) {\n const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n const { history: flatHistory, branchByCheckpoint } = getBranchView(\n branchTree,\n paths,\n branch\n );\n\n return {\n branchTree,\n flatHistory,\n branchByCheckpoint,\n threadHead: flatHistory.at(-1),\n };\n}\n\nexport function getMessagesMetadataMap<\n StateType extends Record<string, unknown>\n>(options: {\n initialValues: StateType | null | undefined;\n history: ThreadState<StateType>[] | null | undefined;\n getMessages: (values: StateType) => Message[];\n\n branchContext: {\n threadHead: ThreadState<StateType> | undefined;\n branchByCheckpoint: BranchByCheckpoint;\n };\n}) {\n const currentValues =\n options.branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType);\n\n const alreadyShown = new Set<string>();\n return options.getMessages(currentValues).map((message, idx) => {\n const messageId = message.id ?? idx;\n\n // Find the first checkpoint where the message was seen\n const firstSeenState = findLast(\n options.history ?? [],\n (state) =>\n state.values != null &&\n options\n .getMessages(state.values)\n .map((m, idx) => m.id ?? idx)\n .includes(messageId)\n );\n\n const checkpointId = firstSeenState?.checkpoint?.checkpoint_id;\n let branch =\n checkpointId != null\n ? options.branchContext.branchByCheckpoint[checkpointId]\n : undefined;\n if (!branch?.branch?.length) branch = undefined;\n\n // serialize branches\n const optionsShown = branch?.branchOptions?.flat(2).join(\",\");\n if (optionsShown) {\n if (alreadyShown.has(optionsShown)) branch = undefined;\n alreadyShown.add(optionsShown);\n }\n\n return {\n messageId: messageId.toString(),\n firstSeenState,\n\n branch: branch?.branch,\n branchOptions: branch?.branchOptions,\n };\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"branching.js","names":[],"sources":["../../src/ui/branching.ts"],"sourcesContent":["import type { ThreadState } from \"../schema.js\";\nimport { Message } from \"../types.messages.js\";\nimport { findLast } from \"./utils.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Node<StateType = any> {\n type: \"node\";\n value: ThreadState<StateType>;\n path: string[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface Fork<StateType = any> {\n type: \"fork\";\n items: Array<Sequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface Sequence<StateType = any> {\n type: \"sequence\";\n items: Array<Node<StateType> | Fork<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidFork<StateType = any> {\n type: \"fork\";\n items: Array<ValidSequence<StateType>>;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface ValidSequence<StateType = any> {\n type: \"sequence\";\n items: [Node<StateType>, ...(Node<StateType> | ValidFork<StateType>)[]];\n}\n\nexport function getBranchSequence<StateType extends Record<string, unknown>>(\n history: ThreadState<StateType>[]\n) {\n const nodeIds = new Set<string>();\n const childrenMap: Record<string, ThreadState<StateType>[]> = {};\n\n // Short circuit if there's only a singular one state\n if (history.length <= 1) {\n return {\n rootSequence: {\n type: \"sequence\",\n items: history.map((value) => ({ type: \"node\", value, path: [] })),\n } satisfies Sequence<StateType>,\n paths: [],\n };\n }\n\n // First pass - collect nodes for each checkpoint\n history.forEach((state) => {\n const checkpointId = state.parent_checkpoint?.checkpoint_id ?? \"$\";\n childrenMap[checkpointId] ??= [];\n childrenMap[checkpointId].push(state);\n\n if (state.checkpoint?.checkpoint_id != null) {\n nodeIds.add(state.checkpoint.checkpoint_id);\n }\n });\n\n // If dealing with partial history, take the branch\n // with the latest checkpoint and mark it as the root.\n const maxId = (...ids: (string | null)[]) =>\n ids\n .filter((i): i is string => i != null)\n .sort((a, b) => a.localeCompare(b))\n .at(-1)!;\n\n const lastOrphanedNode =\n childrenMap.$ == null\n ? Object.keys(childrenMap)\n .filter((parentId) => !nodeIds.has(parentId))\n .map((parentId) => {\n const queue: string[] = [parentId];\n const seen = new Set<string>();\n\n let lastId = parentId;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n\n if (seen.has(current)) continue;\n seen.add(current);\n\n const children = (childrenMap[current] ?? []).flatMap(\n (i) => i.checkpoint?.checkpoint_id ?? []\n );\n\n lastId = maxId(lastId, ...children);\n queue.push(...children);\n }\n\n return { parentId, lastId };\n })\n .sort((a, b) => a.lastId.localeCompare(b.lastId))\n .at(-1)?.parentId\n : undefined;\n\n if (lastOrphanedNode != null) childrenMap.$ = childrenMap[lastOrphanedNode];\n\n // Second pass - create a tree of sequences\n type Task = { id: string; sequence: Sequence; path: string[] };\n const rootSequence: Sequence = { type: \"sequence\", items: [] };\n const queue: Task[] = [{ id: \"$\", sequence: rootSequence, path: [] }];\n\n const paths: string[][] = [];\n\n const visited = new Set<string>();\n while (queue.length > 0) {\n const task = queue.shift()!;\n if (visited.has(task.id)) continue;\n visited.add(task.id);\n\n const children = childrenMap[task.id];\n if (children == null || children.length === 0) continue;\n\n // If we've encountered a fork (2+ children), push the fork\n // to the sequence and add a new sequence for each child\n let fork: Fork | undefined;\n if (children.length > 1) {\n fork = { type: \"fork\", items: [] };\n task.sequence.items.push(fork);\n }\n\n for (const value of children) {\n const id = value.checkpoint?.checkpoint_id;\n if (id == null) continue;\n\n let { sequence } = task;\n let { path } = task;\n if (fork != null) {\n sequence = { type: \"sequence\", items: [] };\n fork.items.unshift(sequence);\n\n path = path.slice();\n path.push(id);\n paths.push(path);\n }\n\n sequence.items.push({ type: \"node\", value, path });\n queue.push({ id, sequence, path });\n }\n }\n\n return { rootSequence, paths };\n}\n\nconst PATH_SEP = \">\";\nconst ROOT_ID = \"$\";\n\ntype BranchByCheckpoint = Record<\n string,\n { branch: string | undefined; branchOptions: string[] | undefined }\n>;\n\n// Get flat view\nexport function getBranchView<StateType extends Record<string, unknown>>(\n sequence: Sequence<StateType>,\n paths: string[][],\n branch: string\n) {\n const path = branch.split(PATH_SEP);\n const pathMap: Record<string, string[][]> = {};\n\n for (const path of paths) {\n const parent = path.at(-2) ?? ROOT_ID;\n pathMap[parent] ??= [];\n pathMap[parent].unshift(path);\n }\n\n const history: ThreadState<StateType>[] = [];\n const branchByCheckpoint: BranchByCheckpoint = {};\n\n const forkStack = path.slice();\n const queue: (Node<StateType> | Fork<StateType>)[] = [...sequence.items];\n\n while (queue.length > 0) {\n const item = queue.shift()!;\n\n if (item.type === \"node\") {\n history.push(item.value);\n const checkpointId = item.value.checkpoint?.checkpoint_id;\n if (checkpointId == null) continue;\n\n branchByCheckpoint[checkpointId] = {\n branch: item.path.join(PATH_SEP),\n branchOptions: (item.path.length > 0\n ? (pathMap[item.path.at(-2) ?? ROOT_ID] ?? [])\n : []\n ).map((p) => p.join(PATH_SEP)),\n };\n }\n if (item.type === \"fork\") {\n const forkId = forkStack.shift();\n const index =\n forkId != null\n ? item.items.findIndex((value) => {\n const firstItem = value.items.at(0);\n if (!firstItem || firstItem.type !== \"node\") return false;\n return firstItem.value.checkpoint?.checkpoint_id === forkId;\n })\n : -1;\n\n const nextItems = item.items.at(index)?.items ?? [];\n queue.push(...nextItems);\n }\n }\n\n return { history, branchByCheckpoint };\n}\n\nexport function getBranchContext<StateType extends Record<string, unknown>>(\n branch: string,\n history: ThreadState<StateType>[] | undefined\n) {\n const { rootSequence: branchTree, paths } = getBranchSequence(history ?? []);\n const { history: flatHistory, branchByCheckpoint } = getBranchView(\n branchTree,\n paths,\n branch\n );\n\n return {\n branchTree,\n flatHistory,\n branchByCheckpoint,\n threadHead: flatHistory.at(-1),\n };\n}\n\nexport function getMessagesMetadataMap<\n StateType extends Record<string, unknown>,\n>(options: {\n initialValues: StateType | null | undefined;\n history: ThreadState<StateType>[] | null | undefined;\n getMessages: (values: StateType) => Message[];\n\n branchContext: {\n threadHead: ThreadState<StateType> | undefined;\n branchByCheckpoint: BranchByCheckpoint;\n };\n}) {\n const currentValues =\n options.branchContext.threadHead?.values ??\n options.initialValues ??\n ({} as StateType);\n\n const alreadyShown = new Set<string>();\n return options.getMessages(currentValues).map((message, idx) => {\n const messageId = message.id ?? idx;\n\n // Find the first checkpoint where the message was seen\n const firstSeenState = findLast(\n options.history ?? [],\n (state) =>\n state.values != null &&\n options\n .getMessages(state.values)\n .map((m, idx) => m.id ?? idx)\n .includes(messageId)\n );\n\n const checkpointId = firstSeenState?.checkpoint?.checkpoint_id;\n let branch =\n checkpointId != null\n ? options.branchContext.branchByCheckpoint[checkpointId]\n : undefined;\n if (!branch?.branch?.length) branch = undefined;\n\n // serialize branches\n const optionsShown = branch?.branchOptions?.flat(2).join(\",\");\n if (optionsShown) {\n if (alreadyShown.has(optionsShown)) branch = undefined;\n alreadyShown.add(optionsShown);\n }\n\n return {\n messageId: messageId.toString(),\n firstSeenState,\n\n branch: branch?.branch,\n branchOptions: branch?.branchOptions,\n };\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-messages.d.cts","names":[],"sources":["../../src/ui/class-messages.ts"],"mappings":";;;;;;;;AAwBA;;;;;;;;KAAY,uBAAA,
|
|
1
|
+
{"version":3,"file":"class-messages.d.cts","names":[],"sources":["../../src/ui/class-messages.ts"],"mappings":";;;;;;;;AAwBA;;;;;;;;KAAY,uBAAA,MACV,CAAA,SAAU,kBAAA,+BACN,kBAAA,CAAmB,EAAA,EAAI,WAAA,EAAiB,SAAA,IACxC,CAAA;;;;;;;;KASM,4BAAA,aACE,MAAA,8BACD,eAAA,0CAET,IAAA,CACF,uBAAA,CAAwB,SAAA,EAAW,QAAA,EAAU,YAAA;EAG7C,QAAA,EAAU,WAAA;AAAA;;;;;AARZ;;;;;;;;;;;;;;KA6BY,iBAAA,MAAuB,IAAA,CACjC,CAAA;EAaA,QAAA,EAAU,WAAA;EACV,mBAAA,GACE,OAAA,EAAS,WAAA,EACT,KAAA,cACG,eAAA,CAAgB,MAAA;AAAA,6BACM,CAAA;EACrB,OAAA,EAAS,uBAAA,CAAwB,CAAA;AAAA,uCAEf,CAAA;EAElB,MAAA,EAAQ,CAAA;IACN,MAAA,GAAS,MAAA,WAAiB,OAAA;EAAA,KAGtB,MAAA,EACI,kBAAA,CAAmB,OAAA,CAAQ,CAAA,yCAG/B,OAAA,GAAU,CAAA,KACP,GAAA;AAAA,0CAIY,CAAA;EAErB,SAAA,EAAW,CAAA;IAAY,SAAA;EAAA,IACnB,uBAAA,CAAwB,EAAA;AAAA,6CAIJ,CAAA;EAExB,YAAA,EAAc,CAAA;IACZ,YAAA,GAAe,OAAA;EAAA,KAEZ,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA;AAAA,0CAInC,CAAA;EAErB,SAAA,EAAW,CAAA;IACT,SAAA,EAAW,GAAA,SAET,uBAAA;EAAA,IAGA,GAAA,SAAY,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAEpD,eAAA,EAAiB,CAAA;IACf,eAAA,EAAiB,uBAAA;EAAA,IAMf,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAExC,WAAA,EAAa,CAAA;IACX,WAAA,GACE,EAAA,aACG,uBAAA;EAAA,KAGD,UAAA,aACG,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE7C,kBAAA,EAAoB,CAAA;IAClB,kBAAA,GACE,IAAA,aACG,uBAAA;EAAA,KAEF,IAAA,aAAiB,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE1D,qBAAA,EAAuB,CAAA;IACrB,qBAAA,GACE,EAAA,aACG,uBAAA;EAAA,KAEF,SAAA,aAAsB,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"class-messages.d.ts","names":[],"sources":["../../src/ui/class-messages.ts"],"mappings":";;;;;;;;AAwBA;;;;;;;;KAAY,uBAAA,
|
|
1
|
+
{"version":3,"file":"class-messages.d.ts","names":[],"sources":["../../src/ui/class-messages.ts"],"mappings":";;;;;;;;AAwBA;;;;;;;;KAAY,uBAAA,MACV,CAAA,SAAU,kBAAA,+BACN,kBAAA,CAAmB,EAAA,EAAI,WAAA,EAAiB,SAAA,IACxC,CAAA;;;;;;;;KASM,4BAAA,aACE,MAAA,8BACD,eAAA,0CAET,IAAA,CACF,uBAAA,CAAwB,SAAA,EAAW,QAAA,EAAU,YAAA;EAG7C,QAAA,EAAU,WAAA;AAAA;;;;;AARZ;;;;;;;;;;;;;;KA6BY,iBAAA,MAAuB,IAAA,CACjC,CAAA;EAaA,QAAA,EAAU,WAAA;EACV,mBAAA,GACE,OAAA,EAAS,WAAA,EACT,KAAA,cACG,eAAA,CAAgB,MAAA;AAAA,6BACM,CAAA;EACrB,OAAA,EAAS,uBAAA,CAAwB,CAAA;AAAA,uCAEf,CAAA;EAElB,MAAA,EAAQ,CAAA;IACN,MAAA,GAAS,MAAA,WAAiB,OAAA;EAAA,KAGtB,MAAA,EACI,kBAAA,CAAmB,OAAA,CAAQ,CAAA,yCAG/B,OAAA,GAAU,CAAA,KACP,GAAA;AAAA,0CAIY,CAAA;EAErB,SAAA,EAAW,CAAA;IAAY,SAAA;EAAA,IACnB,uBAAA,CAAwB,EAAA;AAAA,6CAIJ,CAAA;EAExB,YAAA,EAAc,CAAA;IACZ,YAAA,GAAe,OAAA;EAAA,KAEZ,OAAA,EAAS,SAAA,KAAkB,uBAAA,CAAwB,EAAA;AAAA,0CAInC,CAAA;EAErB,SAAA,EAAW,CAAA;IACT,SAAA,EAAW,GAAA,SAET,uBAAA;EAAA,IAGA,GAAA,SAAY,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAEpD,eAAA,EAAiB,CAAA;IACf,eAAA,EAAiB,uBAAA;EAAA,IAMf,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAExC,WAAA,EAAa,CAAA;IACX,WAAA,GACE,EAAA,aACG,uBAAA;EAAA,KAGD,UAAA,aACG,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE7C,kBAAA,EAAoB,CAAA;IAClB,kBAAA,GACE,IAAA,aACG,uBAAA;EAAA,KAEF,IAAA,aAAiB,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;EAE1D,qBAAA,EAAuB,CAAA;IACrB,qBAAA,GACE,EAAA,aACG,uBAAA;EAAA,KAEF,SAAA,aAAsB,4BAAA,CAA6B,CAAA,EAAG,EAAA,EAAI,CAAA;AAAA"}
|
package/dist/ui/index.cjs
CHANGED
|
@@ -33,6 +33,7 @@ exports.isSubagentNamespace = require_subagents.isSubagentNamespace;
|
|
|
33
33
|
exports.normalizeHitlInterruptPayload = require_hitl_interrupt_payload.normalizeHitlInterruptPayload;
|
|
34
34
|
exports.normalizeInterruptForClient = require_interrupts.normalizeInterruptForClient;
|
|
35
35
|
exports.normalizeInterruptsList = require_interrupts.normalizeInterruptsList;
|
|
36
|
+
exports.onFinishRequiresThreadState = require_utils.onFinishRequiresThreadState;
|
|
36
37
|
exports.toMessageClass = require_messages.toMessageClass;
|
|
37
38
|
exports.toMessageDict = require_messages.toMessageDict;
|
|
38
39
|
exports.unique = require_utils.unique;
|
package/dist/ui/index.d.cts
CHANGED
|
@@ -13,7 +13,7 @@ import { EventStreamEvent, StreamManager } from "./manager.cjs";
|
|
|
13
13
|
import { extractInterrupts, normalizeInterruptForClient, normalizeInterruptsList } from "./interrupts.cjs";
|
|
14
14
|
import { normalizeHitlInterruptPayload } from "./hitl-interrupt-payload.cjs";
|
|
15
15
|
import { FetchStreamTransport } from "./transport.cjs";
|
|
16
|
-
import { filterStream, findLast, unique } from "./utils.cjs";
|
|
16
|
+
import { filterStream, findLast, onFinishRequiresThreadState, unique } from "./utils.cjs";
|
|
17
17
|
import { OrchestratorAccessors, StreamOrchestrator } from "./orchestrator.cjs";
|
|
18
18
|
import { CustomStreamOrchestrator } from "./orchestrator-custom.cjs";
|
|
19
|
-
export { AcceptBaseMessages, AgentMiddlewareLike, AgentTypeConfigLike, AnyStreamCustomOptions, AnyStreamOptions, BaseStream, BaseSubagentState, type ClassSubagentStreamInterface, type ClassToolCallWithResult, CompiledSubAgentLike, CustomStreamOrchestrator, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, type EventStreamEvent, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, ExtractToolCallsFromState, FetchStreamTransport, GetConfigurableType, GetCustomEventType, GetInterruptType, GetToolCallsType, GetUpdateType, type HistoryWithBaseMessages, InferAgentState, InferAgentToolCalls, InferBag, InferDeepAgentSubagents, InferMiddlewareStatesFromArray, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageTupleManager, type OrchestratorAccessors, PendingRunsTracker, type QueueEntry, type QueueInterface, ResolveStreamInterface, ResolveStreamOptions, RunCallbackMeta, type Sequence, StreamBase, StreamError, StreamManager, StreamOrchestrator, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport, UseStreamTransportPayload, type WithClassMessages, calculateDepthFromNamespace, ensureHistoryMessageInstances, ensureMessageInstances, extractInterrupts, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterStream, findLast, getBranchContext, getMessagesMetadataMap, isSubagentNamespace, normalizeHitlInterruptPayload, normalizeInterruptForClient, normalizeInterruptsList, toMessageClass, toMessageDict, unique };
|
|
19
|
+
export { AcceptBaseMessages, AgentMiddlewareLike, AgentTypeConfigLike, AnyStreamCustomOptions, AnyStreamOptions, BaseStream, BaseSubagentState, type ClassSubagentStreamInterface, type ClassToolCallWithResult, CompiledSubAgentLike, CustomStreamOrchestrator, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, type EventStreamEvent, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, ExtractToolCallsFromState, FetchStreamTransport, GetConfigurableType, GetCustomEventType, GetInterruptType, GetToolCallsType, GetUpdateType, type HistoryWithBaseMessages, InferAgentState, InferAgentToolCalls, InferBag, InferDeepAgentSubagents, InferMiddlewareStatesFromArray, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageTupleManager, type OrchestratorAccessors, PendingRunsTracker, type QueueEntry, type QueueInterface, ResolveStreamInterface, ResolveStreamOptions, RunCallbackMeta, type Sequence, StreamBase, StreamError, StreamManager, StreamOrchestrator, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport, UseStreamTransportPayload, type WithClassMessages, calculateDepthFromNamespace, ensureHistoryMessageInstances, ensureMessageInstances, extractInterrupts, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterStream, findLast, getBranchContext, getMessagesMetadataMap, isSubagentNamespace, normalizeHitlInterruptPayload, normalizeInterruptForClient, normalizeInterruptsList, onFinishRequiresThreadState, toMessageClass, toMessageDict, unique };
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { EventStreamEvent, StreamManager } from "./manager.js";
|
|
|
13
13
|
import { extractInterrupts, normalizeInterruptForClient, normalizeInterruptsList } from "./interrupts.js";
|
|
14
14
|
import { normalizeHitlInterruptPayload } from "./hitl-interrupt-payload.js";
|
|
15
15
|
import { FetchStreamTransport } from "./transport.js";
|
|
16
|
-
import { filterStream, findLast, unique } from "./utils.js";
|
|
16
|
+
import { filterStream, findLast, onFinishRequiresThreadState, unique } from "./utils.js";
|
|
17
17
|
import { OrchestratorAccessors, StreamOrchestrator } from "./orchestrator.js";
|
|
18
18
|
import { CustomStreamOrchestrator } from "./orchestrator-custom.js";
|
|
19
|
-
export { AcceptBaseMessages, AgentMiddlewareLike, AgentTypeConfigLike, AnyStreamCustomOptions, AnyStreamOptions, BaseStream, BaseSubagentState, type ClassSubagentStreamInterface, type ClassToolCallWithResult, CompiledSubAgentLike, CustomStreamOrchestrator, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, type EventStreamEvent, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, ExtractToolCallsFromState, FetchStreamTransport, GetConfigurableType, GetCustomEventType, GetInterruptType, GetToolCallsType, GetUpdateType, type HistoryWithBaseMessages, InferAgentState, InferAgentToolCalls, InferBag, InferDeepAgentSubagents, InferMiddlewareStatesFromArray, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageTupleManager, type OrchestratorAccessors, PendingRunsTracker, type QueueEntry, type QueueInterface, ResolveStreamInterface, ResolveStreamOptions, RunCallbackMeta, type Sequence, StreamBase, StreamError, StreamManager, StreamOrchestrator, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport, UseStreamTransportPayload, type WithClassMessages, calculateDepthFromNamespace, ensureHistoryMessageInstances, ensureMessageInstances, extractInterrupts, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterStream, findLast, getBranchContext, getMessagesMetadataMap, isSubagentNamespace, normalizeHitlInterruptPayload, normalizeInterruptForClient, normalizeInterruptsList, toMessageClass, toMessageDict, unique };
|
|
19
|
+
export { AcceptBaseMessages, AgentMiddlewareLike, AgentTypeConfigLike, AnyStreamCustomOptions, AnyStreamOptions, BaseStream, BaseSubagentState, type ClassSubagentStreamInterface, type ClassToolCallWithResult, CompiledSubAgentLike, CustomStreamOrchestrator, CustomSubmitOptions, DeepAgentTypeConfigLike, DefaultSubagentStates, type EventStreamEvent, ExtractAgentConfig, ExtractDeepAgentConfig, ExtractSubAgentMiddleware, ExtractToolCallsFromState, FetchStreamTransport, GetConfigurableType, GetCustomEventType, GetInterruptType, GetToolCallsType, GetUpdateType, type HistoryWithBaseMessages, InferAgentState, InferAgentToolCalls, InferBag, InferDeepAgentSubagents, InferMiddlewareStatesFromArray, InferNodeNames, InferNodeReturnTypes, InferStateType, InferSubagentByName, InferSubagentNames, InferSubagentState, InferSubagentStates, InferToolCalls, IsAgentLike, IsDeepAgentLike, MessageMetadata, MessageTupleManager, type OrchestratorAccessors, PendingRunsTracker, type QueueEntry, type QueueInterface, ResolveStreamInterface, ResolveStreamOptions, RunCallbackMeta, type Sequence, StreamBase, StreamError, StreamManager, StreamOrchestrator, SubAgentLike, SubagentApi, SubagentManager, SubagentStateMap, SubagentStatus, SubagentStream, SubagentStreamInterface, SubagentToolCall, SubmitOptions, UseAgentStream, UseAgentStreamOptions, UseDeepAgentStream, UseDeepAgentStreamOptions, UseStreamCustomOptions, UseStreamOptions, UseStreamThread, UseStreamTransport, UseStreamTransportPayload, type WithClassMessages, calculateDepthFromNamespace, ensureHistoryMessageInstances, ensureMessageInstances, extractInterrupts, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterStream, findLast, getBranchContext, getMessagesMetadataMap, isSubagentNamespace, normalizeHitlInterruptPayload, normalizeInterruptForClient, normalizeInterruptsList, onFinishRequiresThreadState, toMessageClass, toMessageDict, unique };
|
package/dist/ui/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { StreamError } from "./errors.js";
|
|
|
2
2
|
import { MessageTupleManager, ensureHistoryMessageInstances, ensureMessageInstances, toMessageClass, toMessageDict } from "./messages.js";
|
|
3
3
|
import { SubagentManager, calculateDepthFromNamespace, extractParentIdFromNamespace, extractToolCallIdFromNamespace, isSubagentNamespace } from "./subagents.js";
|
|
4
4
|
import { StreamManager } from "./manager.js";
|
|
5
|
-
import { filterStream, findLast, unique } from "./utils.js";
|
|
5
|
+
import { filterStream, findLast, onFinishRequiresThreadState, unique } from "./utils.js";
|
|
6
6
|
import { getBranchContext, getMessagesMetadataMap } from "./branching.js";
|
|
7
7
|
import { normalizeHitlInterruptPayload } from "./hitl-interrupt-payload.js";
|
|
8
8
|
import { extractInterrupts, normalizeInterruptForClient, normalizeInterruptsList } from "./interrupts.js";
|
|
@@ -10,4 +10,4 @@ import { FetchStreamTransport } from "./transport.js";
|
|
|
10
10
|
import { PendingRunsTracker } from "./queue.js";
|
|
11
11
|
import { StreamOrchestrator } from "./orchestrator.js";
|
|
12
12
|
import { CustomStreamOrchestrator } from "./orchestrator-custom.js";
|
|
13
|
-
export { CustomStreamOrchestrator, FetchStreamTransport, MessageTupleManager, PendingRunsTracker, StreamError, StreamManager, StreamOrchestrator, SubagentManager, calculateDepthFromNamespace, ensureHistoryMessageInstances, ensureMessageInstances, extractInterrupts, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterStream, findLast, getBranchContext, getMessagesMetadataMap, isSubagentNamespace, normalizeHitlInterruptPayload, normalizeInterruptForClient, normalizeInterruptsList, toMessageClass, toMessageDict, unique };
|
|
13
|
+
export { CustomStreamOrchestrator, FetchStreamTransport, MessageTupleManager, PendingRunsTracker, StreamError, StreamManager, StreamOrchestrator, SubagentManager, calculateDepthFromNamespace, ensureHistoryMessageInstances, ensureMessageInstances, extractInterrupts, extractParentIdFromNamespace, extractToolCallIdFromNamespace, filterStream, findLast, getBranchContext, getMessagesMetadataMap, isSubagentNamespace, normalizeHitlInterruptPayload, normalizeInterruptForClient, normalizeInterruptsList, onFinishRequiresThreadState, toMessageClass, toMessageDict, unique };
|
package/dist/ui/manager.cjs
CHANGED
|
@@ -349,6 +349,7 @@ var StreamManager = class {
|
|
|
349
349
|
});
|
|
350
350
|
this.abortRef = new AbortController();
|
|
351
351
|
const run = await action(this.abortRef.signal);
|
|
352
|
+
let clearedPreviousInterrupts = false;
|
|
352
353
|
let streamError;
|
|
353
354
|
for await (const { event, data } of run) {
|
|
354
355
|
if (event === "error") {
|
|
@@ -407,13 +408,51 @@ var StreamManager = class {
|
|
|
407
408
|
}
|
|
408
409
|
this.subagentManager.updateSubagentValues(namespaceId, valuesData);
|
|
409
410
|
}
|
|
410
|
-
} else
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
411
|
+
} else {
|
|
412
|
+
if (!clearedPreviousInterrupts) {
|
|
413
|
+
this.setStreamValues((prev) => {
|
|
414
|
+
if (prev && "__interrupt__" in prev) {
|
|
415
|
+
const { __interrupt__, ...rest } = prev;
|
|
416
|
+
return rest;
|
|
417
|
+
}
|
|
418
|
+
return prev;
|
|
419
|
+
});
|
|
420
|
+
clearedPreviousInterrupts = true;
|
|
421
|
+
}
|
|
422
|
+
if (data && typeof data === "object" && "__interrupt__" in data) {
|
|
423
|
+
const interruptData = data;
|
|
424
|
+
this.setStreamValues((prev) => {
|
|
425
|
+
const prevInterrupts = prev?.__interrupt__;
|
|
426
|
+
let interrupts = interruptData.__interrupt__;
|
|
427
|
+
if (Array.isArray(interrupts)) {
|
|
428
|
+
if (interrupts.length === 0) interrupts = [];
|
|
429
|
+
else if (Array.isArray(prevInterrupts)) {
|
|
430
|
+
const mergedInterrupts = [...prevInterrupts];
|
|
431
|
+
const existingIds = new Set(prevInterrupts.map((i) => i.id).filter((id) => id != null));
|
|
432
|
+
for (const interrupt of interrupts) {
|
|
433
|
+
if (interrupt.id != null) {
|
|
434
|
+
if (existingIds.has(interrupt.id)) continue;
|
|
435
|
+
existingIds.add(interrupt.id);
|
|
436
|
+
}
|
|
437
|
+
mergedInterrupts.push(interrupt);
|
|
438
|
+
}
|
|
439
|
+
interrupts = mergedInterrupts;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
return {
|
|
443
|
+
...prev,
|
|
444
|
+
...interruptData,
|
|
445
|
+
__interrupt__: interrupts
|
|
446
|
+
};
|
|
447
|
+
});
|
|
448
|
+
} else this.setStreamValues((prev) => {
|
|
449
|
+
if (prev && "__interrupt__" in prev && Array.isArray(prev.__interrupt__)) return {
|
|
450
|
+
...data,
|
|
451
|
+
__interrupt__: prev.__interrupt__
|
|
452
|
+
};
|
|
453
|
+
return data;
|
|
454
|
+
});
|
|
455
|
+
}
|
|
417
456
|
if (this.matchEventType("messages", event, data)) {
|
|
418
457
|
const [serialized, metadata] = data;
|
|
419
458
|
const rawCheckpointNs = metadata?.langgraph_checkpoint_ns || metadata?.checkpoint_ns;
|