@langchain/angular 0.4.2 → 0.4.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.
@@ -121,8 +121,8 @@ declare function provideStream<T = Record<string, unknown>, Bag extends BagTempl
121
121
  clear: () => Promise<void>;
122
122
  };
123
123
  switchThread(newThreadId: string | null): void;
124
- subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
125
- activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
124
+ subagents: _angular_core0.Signal<Map<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
125
+ activeSubagents: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
126
126
  getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
127
127
  getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
128
128
  getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
package/dist/context.d.ts CHANGED
@@ -121,8 +121,8 @@ declare function provideStream<T = Record<string, unknown>, Bag extends BagTempl
121
121
  clear: () => Promise<void>;
122
122
  };
123
123
  switchThread(newThreadId: string | null): void;
124
- subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
125
- activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
124
+ subagents: _angular_core0.Signal<Map<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
125
+ activeSubagents: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
126
126
  getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
127
127
  getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
128
128
  getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
@@ -1,3 +1,4 @@
1
+ const require_subagents = require("./subagents.cjs");
1
2
  let _angular_core = require("@angular/core");
2
3
  let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
3
4
  //#region src/stream.custom.ts
@@ -6,6 +7,11 @@ function injectStreamCustom(options) {
6
7
  const version = (0, _angular_core.signal)(0);
7
8
  const subagentVersion = (0, _angular_core.signal)(0);
8
9
  const isLoading = (0, _angular_core.signal)(orchestrator.isLoading);
10
+ const reactiveSubagents = require_subagents.createReactiveSubagentAccessors({
11
+ getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),
12
+ getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),
13
+ getSubagentsByMessage: (messageId) => orchestrator.getSubagentsByMessage(messageId)
14
+ }, subagentVersion);
9
15
  (0, _angular_core.effect)((onCleanup) => {
10
16
  const unsubscribe = orchestrator.subscribe(() => {
11
17
  version.update((v) => v + 1);
@@ -76,20 +82,20 @@ function injectStreamCustom(options) {
76
82
  },
77
83
  subagents: (0, _angular_core.computed)(() => {
78
84
  subagentVersion();
79
- return orchestrator.subagents;
85
+ return reactiveSubagents.mapSubagents(orchestrator.subagents);
80
86
  }),
81
87
  activeSubagents: (0, _angular_core.computed)(() => {
82
88
  subagentVersion();
83
- return orchestrator.activeSubagents;
89
+ return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
84
90
  }),
85
91
  getSubagent(toolCallId) {
86
- return orchestrator.getSubagent(toolCallId);
92
+ return reactiveSubagents.getSubagent(toolCallId);
87
93
  },
88
94
  getSubagentsByType(type) {
89
- return orchestrator.getSubagentsByType(type);
95
+ return reactiveSubagents.getSubagentsByType(type);
90
96
  },
91
97
  getSubagentsByMessage(messageId) {
92
- return orchestrator.getSubagentsByMessage(messageId);
98
+ return reactiveSubagents.getSubagentsByMessage(messageId);
93
99
  }
94
100
  };
95
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function injectStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const isLoading = signal(orchestrator.isLoading);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n isLoading.set(orchestrator.isLoading);\n });\n onCleanup(() => unsubscribe());\n });\n\n effect(() => {\n void version();\n const loading = orchestrator.isLoading;\n const hvMessages = orchestrator.messages;\n if (options.filterSubagentMessages && !loading && hvMessages.length > 0) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n });\n\n const values = computed(() => {\n void version();\n return orchestrator.values;\n });\n\n const branch = signal<string>(\"\");\n\n return {\n values,\n error: computed(() => {\n void version();\n return orchestrator.error;\n }),\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n branch,\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message<ToolCallType>,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n entries: signal([]),\n size: signal(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupts: computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n }),\n\n interrupt: computed((): Interrupt<InterruptType> | undefined => {\n void version();\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n }),\n\n messages: computed(() => {\n void version();\n return ensureMessageInstances(orchestrator.messages);\n }),\n\n toolCalls: computed(() => {\n void version();\n return orchestrator.toolCalls;\n }),\n\n getToolCalls(message: Message<ToolCallType>) {\n return orchestrator.getToolCalls(message);\n },\n\n subagents: computed(() => {\n void subagentVersion();\n return orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n }),\n\n activeSubagents: computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n }),\n\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n\n/**\n * @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be\n * removed in a future major version. `injectStreamCustom` follows Angular's\n * `inject*` naming convention for injection-based patterns.\n */\nexport const useStreamCustom = injectStreamCustom;\n"],"mappings":";;;AAcA,SAAgB,mBAGd,SAAiD;CAMjD,MAAM,eAAe,IAAIA,4BAAAA,yBAAyC,QAAQ;CAE1E,MAAM,WAAA,GAAA,cAAA,QAAiB,EAAE;CACzB,MAAM,mBAAA,GAAA,cAAA,QAAyB,EAAE;CACjC,MAAM,aAAA,GAAA,cAAA,QAAmB,aAAa,UAAU;AAEhD,EAAA,GAAA,cAAA,SAAQ,cAAc;EACpB,MAAM,cAAc,aAAa,gBAAgB;AAC/C,WAAQ,QAAQ,MAAM,IAAI,EAAE;AAC5B,mBAAgB,QAAQ,MAAM,IAAI,EAAE;AACpC,aAAU,IAAI,aAAa,UAAU;IACrC;AACF,kBAAgB,aAAa,CAAC;GAC9B;AAEF,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;EACd,MAAM,UAAU,aAAa;EAC7B,MAAM,aAAa,aAAa;AAChC,MAAI,QAAQ,0BAA0B,CAAC,WAAW,WAAW,SAAS,EACpE,cAAa,8BAA8B;GAE7C;CAEF,MAAM,UAAA,GAAA,cAAA,gBAAwB;AACvB,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,UAAA,GAAA,cAAA,QAAwB,GAAG;AAEjC,QAAO;EACL;EACA,QAAA,GAAA,cAAA,gBAAsB;AACf,YAAS;AACd,UAAO,aAAa;IACpB;EACF;EAEA,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC;EACA,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,UAAA,GAAA,cAAA,QAAgB,EAAE,CAAC;GACnB,OAAA,GAAA,cAAA,QAAa,EAAE;GACf,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,aAAA,GAAA,cAAA,gBAAuD;AAChD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,YAAA,GAAA,cAAA,gBAAgE;AACzD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,WAAA,GAAA,cAAA,gBAAyB;AAClB,YAAS;AACd,WAAA,GAAA,4BAAA,wBAA8B,aAAa,SAAS;IACpD;EAEF,YAAA,GAAA,cAAA,gBAA0B;AACnB,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,aAAa,SAAgC;AAC3C,UAAO,aAAa,aAAa,QAAQ;;EAG3C,YAAA,GAAA,cAAA,gBAA0B;AACnB,oBAAiB;AACtB,UAAO,aAAa;IAIpB;EAEF,kBAAA,GAAA,cAAA,gBAAgC;AACzB,oBAAiB;AACtB,UAAO,aAAa;IAGpB;EAEF,YAAY,YAAoB;AAC9B,UAAO,aAAa,YAAY,WAAW;;EAE7C,mBAAmB,MAAc;AAC/B,UAAO,aAAa,mBAAmB,KAAK;;EAE9C,sBAAsB,WAAmB;AACvC,UAAO,aAAa,sBAAsB,UAAU;;EAEvD;;;;;;;AAQH,MAAa,kBAAkB"}
1
+ {"version":3,"file":"stream.custom.cjs","names":["CustomStreamOrchestrator","createReactiveSubagentAccessors"],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function injectStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const isLoading = signal(orchestrator.isLoading);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n subagentVersion\n );\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n isLoading.set(orchestrator.isLoading);\n });\n onCleanup(() => unsubscribe());\n });\n\n effect(() => {\n void version();\n const loading = orchestrator.isLoading;\n const hvMessages = orchestrator.messages;\n if (options.filterSubagentMessages && !loading && hvMessages.length > 0) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n });\n\n const values = computed(() => {\n void version();\n return orchestrator.values;\n });\n\n const branch = signal<string>(\"\");\n\n return {\n values,\n error: computed(() => {\n void version();\n return orchestrator.error;\n }),\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n branch,\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message<ToolCallType>,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n entries: signal([]),\n size: signal(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupts: computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n }),\n\n interrupt: computed((): Interrupt<InterruptType> | undefined => {\n void version();\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n }),\n\n messages: computed(() => {\n void version();\n return ensureMessageInstances(orchestrator.messages);\n }),\n\n toolCalls: computed(() => {\n void version();\n return orchestrator.toolCalls;\n }),\n\n getToolCalls(message: Message<ToolCallType>) {\n return orchestrator.getToolCalls(message);\n },\n\n subagents: computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapSubagents(\n orchestrator.subagents\n ) as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n }),\n\n activeSubagents: computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n ) as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n }),\n\n getSubagent(toolCallId: string) {\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n\n/**\n * @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be\n * removed in a future major version. `injectStreamCustom` follows Angular's\n * `inject*` naming convention for injection-based patterns.\n */\nexport const useStreamCustom = injectStreamCustom;\n"],"mappings":";;;;AAeA,SAAgB,mBAGd,SAAiD;CAMjD,MAAM,eAAe,IAAIA,4BAAAA,yBAAyC,QAAQ;CAE1E,MAAM,WAAA,GAAA,cAAA,QAAiB,EAAE;CACzB,MAAM,mBAAA,GAAA,cAAA,QAAyB,EAAE;CACjC,MAAM,aAAA,GAAA,cAAA,QAAmB,aAAa,UAAU;CAChD,MAAM,oBAAoBC,kBAAAA,gCACxB;EACE,cAAc,eAAe,aAAa,YAAY,WAAW;EACjE,qBAAqB,SAAS,aAAa,mBAAmB,KAAK;EACnE,wBAAwB,cACtB,aAAa,sBAAsB,UAAU;EAChD,EACD,gBACD;AAED,EAAA,GAAA,cAAA,SAAQ,cAAc;EACpB,MAAM,cAAc,aAAa,gBAAgB;AAC/C,WAAQ,QAAQ,MAAM,IAAI,EAAE;AAC5B,mBAAgB,QAAQ,MAAM,IAAI,EAAE;AACpC,aAAU,IAAI,aAAa,UAAU;IACrC;AACF,kBAAgB,aAAa,CAAC;GAC9B;AAEF,EAAA,GAAA,cAAA,cAAa;AACN,WAAS;EACd,MAAM,UAAU,aAAa;EAC7B,MAAM,aAAa,aAAa;AAChC,MAAI,QAAQ,0BAA0B,CAAC,WAAW,WAAW,SAAS,EACpE,cAAa,8BAA8B;GAE7C;CAEF,MAAM,UAAA,GAAA,cAAA,gBAAwB;AACvB,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,UAAA,GAAA,cAAA,QAAwB,GAAG;AAEjC,QAAO;EACL;EACA,QAAA,GAAA,cAAA,gBAAsB;AACf,YAAS;AACd,UAAO,aAAa;IACpB;EACF;EAEA,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC;EACA,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,UAAA,GAAA,cAAA,QAAgB,EAAE,CAAC;GACnB,OAAA,GAAA,cAAA,QAAa,EAAE;GACf,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,aAAA,GAAA,cAAA,gBAAuD;AAChD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,YAAA,GAAA,cAAA,gBAAgE;AACzD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,WAAA,GAAA,cAAA,gBAAyB;AAClB,YAAS;AACd,WAAA,GAAA,4BAAA,wBAA8B,aAAa,SAAS;IACpD;EAEF,YAAA,GAAA,cAAA,gBAA0B;AACnB,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,aAAa,SAAgC;AAC3C,UAAO,aAAa,aAAa,QAAQ;;EAG3C,YAAA,GAAA,cAAA,gBAA0B;AACnB,oBAAiB;AACtB,UAAO,kBAAkB,aACvB,aAAa,UACd;IAID;EAEF,kBAAA,GAAA,cAAA,gBAAgC;AACzB,oBAAiB;AACtB,UAAO,kBAAkB,mBACvB,aAAa,gBACd;IAGD;EAEF,YAAY,YAAoB;AAC9B,UAAO,kBAAkB,YAAY,WAAW;;EAElD,mBAAmB,MAAc;AAC/B,UAAO,kBAAkB,mBAAmB,KAAK;;EAEnD,sBAAsB,WAAmB;AACvC,UAAO,kBAAkB,sBAAsB,UAAU;;EAE5D;;;;;;;AAQH,MAAa,kBAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.custom.d.cts","names":[],"sources":["../src/stream.custom.ts"],"mappings":";;;;;;;;;iBAcgB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwIhC,eAAA,SAAe,kBAAA"}
1
+ {"version":3,"file":"stream.custom.d.cts","names":[],"sources":["../src/stream.custom.ts"],"mappings":";;;;;;;;;iBAegB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqJhC,eAAA,SAAe,kBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.custom.d.ts","names":[],"sources":["../src/stream.custom.ts"],"mappings":";;;;;;;;;iBAcgB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwIhC,eAAA,SAAe,kBAAA"}
1
+ {"version":3,"file":"stream.custom.d.ts","names":[],"sources":["../src/stream.custom.ts"],"mappings":";;;;;;;;;iBAegB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqJhC,eAAA,SAAe,kBAAA"}
@@ -1,3 +1,4 @@
1
+ import { createReactiveSubagentAccessors } from "./subagents.js";
1
2
  import { computed, effect, signal } from "@angular/core";
2
3
  import { CustomStreamOrchestrator, ensureMessageInstances } from "@langchain/langgraph-sdk/ui";
3
4
  //#region src/stream.custom.ts
@@ -6,6 +7,11 @@ function injectStreamCustom(options) {
6
7
  const version = signal(0);
7
8
  const subagentVersion = signal(0);
8
9
  const isLoading = signal(orchestrator.isLoading);
10
+ const reactiveSubagents = createReactiveSubagentAccessors({
11
+ getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),
12
+ getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),
13
+ getSubagentsByMessage: (messageId) => orchestrator.getSubagentsByMessage(messageId)
14
+ }, subagentVersion);
9
15
  effect((onCleanup) => {
10
16
  const unsubscribe = orchestrator.subscribe(() => {
11
17
  version.update((v) => v + 1);
@@ -76,20 +82,20 @@ function injectStreamCustom(options) {
76
82
  },
77
83
  subagents: computed(() => {
78
84
  subagentVersion();
79
- return orchestrator.subagents;
85
+ return reactiveSubagents.mapSubagents(orchestrator.subagents);
80
86
  }),
81
87
  activeSubagents: computed(() => {
82
88
  subagentVersion();
83
- return orchestrator.activeSubagents;
89
+ return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
84
90
  }),
85
91
  getSubagent(toolCallId) {
86
- return orchestrator.getSubagent(toolCallId);
92
+ return reactiveSubagents.getSubagent(toolCallId);
87
93
  },
88
94
  getSubagentsByType(type) {
89
- return orchestrator.getSubagentsByType(type);
95
+ return reactiveSubagents.getSubagentsByType(type);
90
96
  },
91
97
  getSubagentsByMessage(messageId) {
92
- return orchestrator.getSubagentsByMessage(messageId);
98
+ return reactiveSubagents.getSubagentsByMessage(messageId);
93
99
  }
94
100
  };
95
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\n\nexport function injectStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const isLoading = signal(orchestrator.isLoading);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n isLoading.set(orchestrator.isLoading);\n });\n onCleanup(() => unsubscribe());\n });\n\n effect(() => {\n void version();\n const loading = orchestrator.isLoading;\n const hvMessages = orchestrator.messages;\n if (options.filterSubagentMessages && !loading && hvMessages.length > 0) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n });\n\n const values = computed(() => {\n void version();\n return orchestrator.values;\n });\n\n const branch = signal<string>(\"\");\n\n return {\n values,\n error: computed(() => {\n void version();\n return orchestrator.error;\n }),\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n branch,\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message<ToolCallType>,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n entries: signal([]),\n size: signal(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupts: computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n }),\n\n interrupt: computed((): Interrupt<InterruptType> | undefined => {\n void version();\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n }),\n\n messages: computed(() => {\n void version();\n return ensureMessageInstances(orchestrator.messages);\n }),\n\n toolCalls: computed(() => {\n void version();\n return orchestrator.toolCalls;\n }),\n\n getToolCalls(message: Message<ToolCallType>) {\n return orchestrator.getToolCalls(message);\n },\n\n subagents: computed(() => {\n void subagentVersion();\n return orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n }),\n\n activeSubagents: computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n }),\n\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n\n/**\n * @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be\n * removed in a future major version. `injectStreamCustom` follows Angular's\n * `inject*` naming convention for injection-based patterns.\n */\nexport const useStreamCustom = injectStreamCustom;\n"],"mappings":";;;AAcA,SAAgB,mBAGd,SAAiD;CAMjD,MAAM,eAAe,IAAI,yBAAyC,QAAQ;CAE1E,MAAM,UAAU,OAAO,EAAE;CACzB,MAAM,kBAAkB,OAAO,EAAE;CACjC,MAAM,YAAY,OAAO,aAAa,UAAU;AAEhD,SAAQ,cAAc;EACpB,MAAM,cAAc,aAAa,gBAAgB;AAC/C,WAAQ,QAAQ,MAAM,IAAI,EAAE;AAC5B,mBAAgB,QAAQ,MAAM,IAAI,EAAE;AACpC,aAAU,IAAI,aAAa,UAAU;IACrC;AACF,kBAAgB,aAAa,CAAC;GAC9B;AAEF,cAAa;AACN,WAAS;EACd,MAAM,UAAU,aAAa;EAC7B,MAAM,aAAa,aAAa;AAChC,MAAI,QAAQ,0BAA0B,CAAC,WAAW,WAAW,SAAS,EACpE,cAAa,8BAA8B;GAE7C;CAEF,MAAM,SAAS,eAAe;AACvB,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,SAAS,OAAe,GAAG;AAEjC,QAAO;EACL;EACA,OAAO,eAAe;AACf,YAAS;AACd,UAAO,aAAa;IACpB;EACF;EAEA,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC;EACA,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,SAAS,OAAO,EAAE,CAAC;GACnB,MAAM,OAAO,EAAE;GACf,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,YAAY,eAA2C;AAChD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,WAAW,eAAqD;AACzD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,UAAU,eAAe;AAClB,YAAS;AACd,UAAO,uBAAuB,aAAa,SAAS;IACpD;EAEF,WAAW,eAAe;AACnB,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,aAAa,SAAgC;AAC3C,UAAO,aAAa,aAAa,QAAQ;;EAG3C,WAAW,eAAe;AACnB,oBAAiB;AACtB,UAAO,aAAa;IAIpB;EAEF,iBAAiB,eAAe;AACzB,oBAAiB;AACtB,UAAO,aAAa;IAGpB;EAEF,YAAY,YAAoB;AAC9B,UAAO,aAAa,YAAY,WAAW;;EAE7C,mBAAmB,MAAc;AAC/B,UAAO,aAAa,mBAAmB,KAAK;;EAE9C,sBAAsB,WAAmB;AACvC,UAAO,aAAa,sBAAsB,UAAU;;EAEvD;;;;;;;AAQH,MAAa,kBAAkB"}
1
+ {"version":3,"file":"stream.custom.js","names":[],"sources":["../src/stream.custom.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n CustomStreamOrchestrator,\n ensureMessageInstances,\n type AnyStreamCustomOptions,\n type CustomSubmitOptions,\n type GetUpdateType,\n type GetInterruptType,\n type GetConfigurableType,\n type GetToolCallsType,\n type MessageMetadata,\n} from \"@langchain/langgraph-sdk/ui\";\nimport type { BagTemplate, Message, Interrupt } from \"@langchain/langgraph-sdk\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function injectStreamCustom<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends BagTemplate = BagTemplate,\n>(options: AnyStreamCustomOptions<StateType, Bag>) {\n type UpdateType = GetUpdateType<Bag, StateType>;\n type InterruptType = GetInterruptType<Bag>;\n type ConfigurableType = GetConfigurableType<Bag>;\n type ToolCallType = GetToolCallsType<StateType>;\n\n const orchestrator = new CustomStreamOrchestrator<StateType, Bag>(options);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const isLoading = signal(orchestrator.isLoading);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n subagentVersion\n );\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n isLoading.set(orchestrator.isLoading);\n });\n onCleanup(() => unsubscribe());\n });\n\n effect(() => {\n void version();\n const loading = orchestrator.isLoading;\n const hvMessages = orchestrator.messages;\n if (options.filterSubagentMessages && !loading && hvMessages.length > 0) {\n orchestrator.reconstructSubagentsIfNeeded();\n }\n });\n\n const values = computed(() => {\n void version();\n return orchestrator.values;\n });\n\n const branch = signal<string>(\"\");\n\n return {\n values,\n error: computed(() => {\n void version();\n return orchestrator.error;\n }),\n isLoading,\n\n stop: () => orchestrator.stop(),\n\n async submit(\n values: UpdateType | null | undefined,\n submitOptions?: CustomSubmitOptions<StateType, ConfigurableType>\n ) {\n await orchestrator.submit(values, submitOptions);\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n branch,\n setBranch(value: string) {\n branch.set(value);\n orchestrator.setBranch(value);\n },\n\n getMessagesMetadata(\n message: Message<ToolCallType>,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n queue: {\n entries: signal([]),\n size: signal(0),\n async cancel() {\n return false;\n },\n async clear() {},\n },\n\n interrupts: computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n }),\n\n interrupt: computed((): Interrupt<InterruptType> | undefined => {\n void version();\n return orchestrator.interrupt as Interrupt<InterruptType> | undefined;\n }),\n\n messages: computed(() => {\n void version();\n return ensureMessageInstances(orchestrator.messages);\n }),\n\n toolCalls: computed(() => {\n void version();\n return orchestrator.toolCalls;\n }),\n\n getToolCalls(message: Message<ToolCallType>) {\n return orchestrator.getToolCalls(message);\n },\n\n subagents: computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapSubagents(\n orchestrator.subagents\n ) as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n }),\n\n activeSubagents: computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents\n ) as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n }),\n\n getSubagent(toolCallId: string) {\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return reactiveSubagents.getSubagentsByMessage(messageId);\n },\n };\n}\n\n/**\n * @deprecated Use `injectStreamCustom` instead. `useStreamCustom` will be\n * removed in a future major version. `injectStreamCustom` follows Angular's\n * `inject*` naming convention for injection-based patterns.\n */\nexport const useStreamCustom = injectStreamCustom;\n"],"mappings":";;;;AAeA,SAAgB,mBAGd,SAAiD;CAMjD,MAAM,eAAe,IAAI,yBAAyC,QAAQ;CAE1E,MAAM,UAAU,OAAO,EAAE;CACzB,MAAM,kBAAkB,OAAO,EAAE;CACjC,MAAM,YAAY,OAAO,aAAa,UAAU;CAChD,MAAM,oBAAoB,gCACxB;EACE,cAAc,eAAe,aAAa,YAAY,WAAW;EACjE,qBAAqB,SAAS,aAAa,mBAAmB,KAAK;EACnE,wBAAwB,cACtB,aAAa,sBAAsB,UAAU;EAChD,EACD,gBACD;AAED,SAAQ,cAAc;EACpB,MAAM,cAAc,aAAa,gBAAgB;AAC/C,WAAQ,QAAQ,MAAM,IAAI,EAAE;AAC5B,mBAAgB,QAAQ,MAAM,IAAI,EAAE;AACpC,aAAU,IAAI,aAAa,UAAU;IACrC;AACF,kBAAgB,aAAa,CAAC;GAC9B;AAEF,cAAa;AACN,WAAS;EACd,MAAM,UAAU,aAAa;EAC7B,MAAM,aAAa,aAAa;AAChC,MAAI,QAAQ,0BAA0B,CAAC,WAAW,WAAW,SAAS,EACpE,cAAa,8BAA8B;GAE7C;CAEF,MAAM,SAAS,eAAe;AACvB,WAAS;AACd,SAAO,aAAa;GACpB;CAEF,MAAM,SAAS,OAAe,GAAG;AAEjC,QAAO;EACL;EACA,OAAO,eAAe;AACf,YAAS;AACd,UAAO,aAAa;IACpB;EACF;EAEA,YAAY,aAAa,MAAM;EAE/B,MAAM,OACJ,QACA,eACA;AACA,SAAM,aAAa,OAAO,QAAQ,cAAc;;EAGlD,aAAa,aAA4B;AACvC,gBAAa,aAAa,YAAY;;EAGxC;EACA,UAAU,OAAe;AACvB,UAAO,IAAI,MAAM;AACjB,gBAAa,UAAU,MAAM;;EAG/B,oBACE,SACA,OACwC;AACxC,UAAO,aAAa,oBAAoB,SAAS,MAAM;;EAGzD,OAAO;GACL,SAAS,OAAO,EAAE,CAAC;GACnB,MAAM,OAAO,EAAE;GACf,MAAM,SAAS;AACb,WAAO;;GAET,MAAM,QAAQ;GACf;EAED,YAAY,eAA2C;AAChD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,WAAW,eAAqD;AACzD,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,UAAU,eAAe;AAClB,YAAS;AACd,UAAO,uBAAuB,aAAa,SAAS;IACpD;EAEF,WAAW,eAAe;AACnB,YAAS;AACd,UAAO,aAAa;IACpB;EAEF,aAAa,SAAgC;AAC3C,UAAO,aAAa,aAAa,QAAQ;;EAG3C,WAAW,eAAe;AACnB,oBAAiB;AACtB,UAAO,kBAAkB,aACvB,aAAa,UACd;IAID;EAEF,iBAAiB,eAAe;AACzB,oBAAiB;AACtB,UAAO,kBAAkB,mBACvB,aAAa,gBACd;IAGD;EAEF,YAAY,YAAoB;AAC9B,UAAO,kBAAkB,YAAY,WAAW;;EAElD,mBAAmB,MAAc;AAC/B,UAAO,kBAAkB,mBAAmB,KAAK;;EAEnD,sBAAsB,WAAmB;AACvC,UAAO,kBAAkB,sBAAsB,UAAU;;EAE5D;;;;;;;AAQH,MAAa,kBAAkB"}
@@ -1,3 +1,4 @@
1
+ const require_subagents = require("./subagents.cjs");
1
2
  let _angular_core = require("@angular/core");
2
3
  let _langchain_langgraph_sdk_ui = require("@langchain/langgraph-sdk/ui");
3
4
  let _langchain_langgraph_sdk = require("@langchain/langgraph-sdk");
@@ -12,6 +13,11 @@ function useStreamLGP(options) {
12
13
  orchestrator.initThreadId(options.threadId ?? void 0);
13
14
  const version = (0, _angular_core.signal)(0);
14
15
  const subagentVersion = (0, _angular_core.signal)(0);
16
+ const reactiveSubagents = require_subagents.createReactiveSubagentAccessors({
17
+ getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),
18
+ getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),
19
+ getSubagentsByMessage: (messageId) => orchestrator.getSubagentsByMessage(messageId)
20
+ }, subagentVersion);
15
21
  (0, _angular_core.effect)((onCleanup) => {
16
22
  const unsubscribe = orchestrator.subscribe(() => {
17
23
  version.update((v) => v + 1);
@@ -103,11 +109,11 @@ function useStreamLGP(options) {
103
109
  });
104
110
  const subagents = (0, _angular_core.computed)(() => {
105
111
  subagentVersion();
106
- return orchestrator.subagents;
112
+ return reactiveSubagents.mapSubagents(orchestrator.subagents);
107
113
  });
108
114
  const activeSubagents = (0, _angular_core.computed)(() => {
109
115
  subagentVersion();
110
- return orchestrator.activeSubagents;
116
+ return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
111
117
  });
112
118
  return {
113
119
  assistantId: options.assistantId,
@@ -1 +1 @@
1
- {"version":3,"file":"stream.lgp.cjs","names":["Client","StreamOrchestrator"],"sources":["../src/stream.lgp.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type Message,\n type Interrupt,\n type BagTemplate,\n} from \"@langchain/langgraph-sdk\";\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n const subagents = computed(() => {\n void subagentVersion();\n return orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n });\n\n const activeSubagents = computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n subagents,\n activeSubagents,\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stream.lgp.cjs","names":["Client","StreamOrchestrator","createReactiveSubagentAccessors"],"sources":["../src/stream.lgp.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type Message,\n type Interrupt,\n type BagTemplate,\n} from \"@langchain/langgraph-sdk\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n subagentVersion\n );\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n const subagents = computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapSubagents(\n orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >\n );\n });\n\n const activeSubagents = computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[]\n );\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n subagents,\n activeSubagents,\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
@@ -46,8 +46,8 @@ declare function useStreamLGP<StateType extends Record<string, unknown> = Record
46
46
  clear: () => Promise<void>;
47
47
  };
48
48
  switchThread(newThreadId: string | null): void;
49
- subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
50
- activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
49
+ subagents: _angular_core0.Signal<Map<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
50
+ activeSubagents: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
51
51
  getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
52
52
  getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
53
53
  getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
@@ -1 +1 @@
1
- {"version":3,"file":"stream.lgp.d.cts","names":[],"sources":["../src/stream.lgp.ts"],"mappings":";;;;;;;;;iBAiBgB,YAAA,mBACI,MAAA,oBAA0B,MAAA;EAE1C,gBAAA,GAAmB,MAAA;EACnB,aAAA;EACA,eAAA;EACA,UAAA;AAAA,IACE,WAAA,CAAA,CACJ,OAAA,EAAS,gBAAA,CAAiB,SAAA,EAAW,GAAA;;iBAAZ,yBAAA,CAAA,aAAA"}
1
+ {"version":3,"file":"stream.lgp.d.cts","names":[],"sources":["../src/stream.lgp.ts"],"mappings":";;;;;;;;;iBAkBgB,YAAA,mBACI,MAAA,oBAA0B,MAAA;EAE1C,gBAAA,GAAmB,MAAA;EACnB,aAAA;EACA,eAAA;EACA,UAAA;AAAA,IACE,WAAA,CAAA,CACJ,OAAA,EAAS,gBAAA,CAAiB,SAAA,EAAW,GAAA;;iBAAZ,yBAAA,CAAA,aAAA"}
@@ -46,8 +46,8 @@ declare function useStreamLGP<StateType extends Record<string, unknown> = Record
46
46
  clear: () => Promise<void>;
47
47
  };
48
48
  switchThread(newThreadId: string | null): void;
49
- subagents: _angular_core0.Signal<ReadonlyMap<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
50
- activeSubagents: _angular_core0.Signal<readonly _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
49
+ subagents: _angular_core0.Signal<Map<string, _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>>>;
50
+ activeSubagents: _angular_core0.Signal<_langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[]>;
51
51
  getSubagent(toolCallId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string> | undefined;
52
52
  getSubagentsByType(type: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
53
53
  getSubagentsByMessage(messageId: string): _langchain_langgraph_sdk_ui0.SubagentStreamInterface<Record<string, unknown>, _langchain_langgraph_sdk0.DefaultToolCall, string>[];
@@ -1 +1 @@
1
- {"version":3,"file":"stream.lgp.d.ts","names":[],"sources":["../src/stream.lgp.ts"],"mappings":";;;;;;;;;iBAiBgB,YAAA,mBACI,MAAA,oBAA0B,MAAA;EAE1C,gBAAA,GAAmB,MAAA;EACnB,aAAA;EACA,eAAA;EACA,UAAA;AAAA,IACE,WAAA,CAAA,CACJ,OAAA,EAAS,gBAAA,CAAiB,SAAA,EAAW,GAAA;;iBAAZ,yBAAA,CAAA,aAAA"}
1
+ {"version":3,"file":"stream.lgp.d.ts","names":[],"sources":["../src/stream.lgp.ts"],"mappings":";;;;;;;;;iBAkBgB,YAAA,mBACI,MAAA,oBAA0B,MAAA;EAE1C,gBAAA,GAAmB,MAAA;EACnB,aAAA;EACA,eAAA;EACA,UAAA;AAAA,IACE,WAAA,CAAA,CACJ,OAAA,EAAS,gBAAA,CAAiB,SAAA,EAAW,GAAA;;iBAAZ,yBAAA,CAAA,aAAA"}
@@ -1,3 +1,4 @@
1
+ import { createReactiveSubagentAccessors } from "./subagents.js";
1
2
  import { computed, effect, signal } from "@angular/core";
2
3
  import { StreamOrchestrator, ensureMessageInstances } from "@langchain/langgraph-sdk/ui";
3
4
  import { Client } from "@langchain/langgraph-sdk";
@@ -12,6 +13,11 @@ function useStreamLGP(options) {
12
13
  orchestrator.initThreadId(options.threadId ?? void 0);
13
14
  const version = signal(0);
14
15
  const subagentVersion = signal(0);
16
+ const reactiveSubagents = createReactiveSubagentAccessors({
17
+ getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),
18
+ getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),
19
+ getSubagentsByMessage: (messageId) => orchestrator.getSubagentsByMessage(messageId)
20
+ }, subagentVersion);
15
21
  effect((onCleanup) => {
16
22
  const unsubscribe = orchestrator.subscribe(() => {
17
23
  version.update((v) => v + 1);
@@ -103,11 +109,11 @@ function useStreamLGP(options) {
103
109
  });
104
110
  const subagents = computed(() => {
105
111
  subagentVersion();
106
- return orchestrator.subagents;
112
+ return reactiveSubagents.mapSubagents(orchestrator.subagents);
107
113
  });
108
114
  const activeSubagents = computed(() => {
109
115
  subagentVersion();
110
- return orchestrator.activeSubagents;
116
+ return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
111
117
  });
112
118
  return {
113
119
  assistantId: options.assistantId,
@@ -1 +1 @@
1
- {"version":3,"file":"stream.lgp.js","names":[],"sources":["../src/stream.lgp.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type Message,\n type Interrupt,\n type BagTemplate,\n} from \"@langchain/langgraph-sdk\";\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n const subagents = computed(() => {\n void subagentVersion();\n return orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >;\n });\n\n const activeSubagents = computed(() => {\n void subagentVersion();\n return orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[];\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n subagents,\n activeSubagents,\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"stream.lgp.js","names":[],"sources":["../src/stream.lgp.ts"],"sourcesContent":["import { signal, computed, effect } from \"@angular/core\";\nimport {\n StreamOrchestrator,\n ensureMessageInstances,\n type MessageMetadata,\n type AnyStreamOptions,\n type SubmitOptions,\n type GetConfigurableType,\n type GetInterruptType,\n} from \"@langchain/langgraph-sdk/ui\";\nimport {\n Client,\n type Message,\n type Interrupt,\n type BagTemplate,\n} from \"@langchain/langgraph-sdk\";\nimport { createReactiveSubagentAccessors } from \"./subagents.js\";\n\nexport function useStreamLGP<\n StateType extends Record<string, unknown> = Record<string, unknown>,\n Bag extends {\n ConfigurableType?: Record<string, unknown>;\n InterruptType?: unknown;\n CustomEventType?: unknown;\n UpdateType?: unknown;\n } = BagTemplate,\n>(options: AnyStreamOptions<StateType, Bag>) {\n type ConfigurableType = GetConfigurableType<Bag>;\n type InterruptType = GetInterruptType<Bag>;\n\n const client = options.client ?? new Client({ apiUrl: options.apiUrl });\n\n const orchestrator = new StreamOrchestrator<StateType, Bag>(options, {\n getClient: () => client,\n getAssistantId: () => options.assistantId,\n getMessagesKey: () => options.messagesKey ?? \"messages\",\n });\n\n orchestrator.initThreadId(options.threadId ?? undefined);\n\n const version = signal(0);\n const subagentVersion = signal(0);\n const reactiveSubagents = createReactiveSubagentAccessors(\n {\n getSubagent: (toolCallId) => orchestrator.getSubagent(toolCallId),\n getSubagentsByType: (type) => orchestrator.getSubagentsByType(type),\n getSubagentsByMessage: (messageId) =>\n orchestrator.getSubagentsByMessage(messageId),\n },\n subagentVersion\n );\n\n effect((onCleanup) => {\n const unsubscribe = orchestrator.subscribe(() => {\n version.update((v) => v + 1);\n subagentVersion.update((v) => v + 1);\n });\n onCleanup(() => unsubscribe());\n });\n\n // Subagent reconstruction\n effect((onCleanup) => {\n void version();\n const hvMessages = orchestrator.messages;\n const should =\n options.filterSubagentMessages &&\n !orchestrator.isLoading &&\n !orchestrator.historyData.isLoading &&\n hvMessages.length > 0;\n if (should) {\n const controller = orchestrator.reconstructSubagentsIfNeeded();\n if (controller) {\n onCleanup(() => controller.abort());\n }\n }\n });\n\n // Queue draining - track isLoading changes specifically so the drain\n // fires exactly when stream transitions from loading → idle\n const isLoadingForDrain = computed(() => {\n void version();\n return orchestrator.isLoading;\n });\n effect(() => {\n void isLoadingForDrain();\n orchestrator.drainQueue();\n });\n\n // Auto-reconnect\n const { shouldReconnect } = orchestrator;\n let hasReconnected = false;\n\n effect(() => {\n void version();\n const tid = orchestrator.threadId;\n if (!hasReconnected && shouldReconnect && tid && !orchestrator.isLoading) {\n const reconnected = orchestrator.tryReconnect();\n if (reconnected) hasReconnected = true;\n }\n });\n\n const values = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"values\");\n return orchestrator.values;\n });\n\n const error = computed(() => {\n void version();\n return orchestrator.error;\n });\n\n const isLoading = signal(orchestrator.isLoading);\n effect(() => {\n void version();\n isLoading.set(orchestrator.isLoading);\n });\n\n const branch = signal<string>(\"\");\n effect(() => {\n void version();\n const b = orchestrator.branch;\n if (branch() !== b) branch.set(b);\n });\n\n const messages = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return ensureMessageInstances(orchestrator.messages);\n });\n\n const toolCalls = computed(() => {\n void version();\n orchestrator.trackStreamMode(\"messages-tuple\", \"values\");\n return orchestrator.toolCalls;\n });\n\n const interrupt = computed(() => {\n void version();\n return orchestrator.interrupt;\n });\n\n const interrupts = computed((): Interrupt<InterruptType>[] => {\n void version();\n return orchestrator.interrupts as Interrupt<InterruptType>[];\n });\n\n const historyList = computed(() => {\n void version();\n return orchestrator.flatHistory;\n });\n\n const isThreadLoading = computed(() => {\n void version();\n return orchestrator.isThreadLoading;\n });\n\n const experimentalBranchTree = computed(() => {\n void version();\n return orchestrator.experimental_branchTree;\n });\n\n const queueEntries = signal(orchestrator.queueEntries);\n const queueSize = signal(orchestrator.queueSize);\n effect(() => {\n void version();\n queueEntries.set(orchestrator.queueEntries);\n queueSize.set(orchestrator.queueSize);\n });\n\n const subagents = computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapSubagents(\n orchestrator.subagents as ReadonlyMap<\n string,\n typeof orchestrator.subagents extends Map<string, infer V> ? V : never\n >\n );\n });\n\n const activeSubagents = computed(() => {\n void subagentVersion();\n return reactiveSubagents.mapActiveSubagents(\n orchestrator.activeSubagents as readonly (typeof orchestrator.activeSubagents extends (infer V)[]\n ? V\n : never)[]\n );\n });\n\n return {\n assistantId: options.assistantId,\n client,\n\n values,\n error,\n isLoading,\n\n branch,\n setBranch(value: string) {\n orchestrator.setBranch(value);\n },\n\n messages,\n toolCalls,\n getToolCalls(message: Message) {\n return orchestrator.getToolCalls(message);\n },\n\n interrupt,\n interrupts,\n\n history: historyList,\n isThreadLoading,\n experimental_branchTree: experimentalBranchTree,\n\n getMessagesMetadata(\n message: Message,\n index?: number\n ): MessageMetadata<StateType> | undefined {\n return orchestrator.getMessagesMetadata(message, index);\n },\n\n submit: (\n values: StateType,\n submitOptions?: SubmitOptions<StateType, ConfigurableType>\n ) => orchestrator.submit(values, submitOptions),\n stop: () => orchestrator.stop(),\n joinStream: (...args: Parameters<typeof orchestrator.joinStream>) =>\n orchestrator.joinStream(...args),\n\n queue: {\n entries: queueEntries,\n size: queueSize,\n cancel: (id: string) => orchestrator.cancelQueueItem(id),\n clear: () => orchestrator.clearQueue(),\n },\n\n switchThread(newThreadId: string | null) {\n orchestrator.switchThread(newThreadId);\n },\n\n subagents,\n activeSubagents,\n getSubagent(toolCallId: string) {\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ //#region src/subagents.ts
2
+ /**
3
+ * Create stable proxy objects for subagents so retained references always read
4
+ * from the latest orchestrator snapshot while remaining invalidated by the
5
+ * Angular signal that tracks subagent updates.
6
+ */
7
+ function createReactiveSubagentAccessors(accessors, version) {
8
+ const subagentCache = /* @__PURE__ */ new Map();
9
+ const getCachedSubagent = (toolCallId) => {
10
+ if (!accessors.getSubagent(toolCallId)) {
11
+ subagentCache.delete(toolCallId);
12
+ return;
13
+ }
14
+ let cached = subagentCache.get(toolCallId);
15
+ if (!cached) {
16
+ cached = new Proxy({ id: toolCallId }, {
17
+ get(_target, prop, receiver) {
18
+ version();
19
+ const latest = accessors.getSubagent(toolCallId);
20
+ if (!latest) return void 0;
21
+ const value = Reflect.get(latest, prop, receiver);
22
+ return typeof value === "function" ? value.bind(latest) : value;
23
+ },
24
+ has(_target, prop) {
25
+ const latest = accessors.getSubagent(toolCallId);
26
+ return latest ? prop in latest : false;
27
+ },
28
+ ownKeys() {
29
+ version();
30
+ const latest = accessors.getSubagent(toolCallId);
31
+ return latest ? Reflect.ownKeys(latest) : [];
32
+ },
33
+ getOwnPropertyDescriptor(_target, prop) {
34
+ return {
35
+ configurable: true,
36
+ enumerable: true,
37
+ get() {
38
+ version();
39
+ const latest = accessors.getSubagent(toolCallId);
40
+ if (!latest) return void 0;
41
+ return Reflect.get(latest, prop);
42
+ }
43
+ };
44
+ }
45
+ });
46
+ subagentCache.set(toolCallId, cached);
47
+ }
48
+ return cached;
49
+ };
50
+ const mapSubagents = (subagents) => {
51
+ const nextIds = new Set(subagents.keys());
52
+ for (const toolCallId of subagentCache.keys()) if (!nextIds.has(toolCallId)) subagentCache.delete(toolCallId);
53
+ return new Map([...subagents.keys()].map((toolCallId) => {
54
+ const cached = getCachedSubagent(toolCallId);
55
+ return cached ? [toolCallId, cached] : void 0;
56
+ }).filter((entry) => entry != null));
57
+ };
58
+ const mapActiveSubagents = (subagents) => subagents.map((subagent) => getCachedSubagent(subagent.id)).filter((subagent) => subagent != null);
59
+ return {
60
+ mapSubagents,
61
+ mapActiveSubagents,
62
+ getSubagent: getCachedSubagent,
63
+ getSubagentsByType(type) {
64
+ version();
65
+ return accessors.getSubagentsByType(type).map((subagent) => getCachedSubagent(subagent.id)).filter((subagent) => subagent != null);
66
+ },
67
+ getSubagentsByMessage(messageId) {
68
+ version();
69
+ return accessors.getSubagentsByMessage(messageId).map((subagent) => getCachedSubagent(subagent.id)).filter((subagent) => subagent != null);
70
+ }
71
+ };
72
+ }
73
+ //#endregion
74
+ exports.createReactiveSubagentAccessors = createReactiveSubagentAccessors;
75
+
76
+ //# sourceMappingURL=subagents.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagents.cjs","names":[],"sources":["../src/subagents.ts"],"sourcesContent":["import type { Signal, WritableSignal } from \"@angular/core\";\n\ntype SubagentLike = {\n id: string;\n};\n\ntype SubagentAccessors<TSubagent extends SubagentLike> = {\n getSubagent: (toolCallId: string) => TSubagent | undefined;\n getSubagentsByType: (type: string) => TSubagent[];\n getSubagentsByMessage: (messageId: string) => TSubagent[];\n};\n\n/**\n * Create stable proxy objects for subagents so retained references always read\n * from the latest orchestrator snapshot while remaining invalidated by the\n * Angular signal that tracks subagent updates.\n */\nexport function createReactiveSubagentAccessors<TSubagent extends SubagentLike>(\n accessors: SubagentAccessors<TSubagent>,\n version: Signal<number> | WritableSignal<number>\n) {\n const subagentCache = new Map<string, TSubagent>();\n\n const getCachedSubagent = (toolCallId: string): TSubagent | undefined => {\n const current = accessors.getSubagent(toolCallId);\n if (!current) {\n subagentCache.delete(toolCallId);\n return undefined;\n }\n\n let cached = subagentCache.get(toolCallId);\n if (!cached) {\n cached = new Proxy({ id: toolCallId } as TSubagent, {\n get(_target, prop, receiver) {\n void version();\n const latest = accessors.getSubagent(toolCallId);\n if (!latest) return undefined;\n\n const value = Reflect.get(latest as object, prop, receiver);\n return typeof value === \"function\" ? value.bind(latest) : value;\n },\n has(_target, prop) {\n const latest = accessors.getSubagent(toolCallId);\n return latest ? prop in (latest as object) : false;\n },\n ownKeys() {\n void version();\n const latest = accessors.getSubagent(toolCallId);\n return latest ? Reflect.ownKeys(latest as object) : [];\n },\n getOwnPropertyDescriptor(_target, prop) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n void version();\n const latest = accessors.getSubagent(toolCallId);\n if (!latest) return undefined;\n return Reflect.get(latest as object, prop);\n },\n };\n },\n });\n subagentCache.set(toolCallId, cached);\n }\n\n return cached;\n };\n\n const mapSubagents = (subagents: ReadonlyMap<string, TSubagent>) => {\n const nextIds = new Set(subagents.keys());\n for (const toolCallId of subagentCache.keys()) {\n if (!nextIds.has(toolCallId)) {\n subagentCache.delete(toolCallId);\n }\n }\n\n return new Map(\n [...subagents.keys()]\n .map((toolCallId) => {\n const cached = getCachedSubagent(toolCallId);\n return cached ? ([toolCallId, cached] as const) : undefined;\n })\n .filter((entry): entry is readonly [string, TSubagent] => entry != null)\n );\n };\n\n const mapActiveSubagents = (subagents: readonly TSubagent[]) =>\n subagents\n .map((subagent) => getCachedSubagent(subagent.id))\n .filter((subagent): subagent is TSubagent => subagent != null);\n\n return {\n mapSubagents,\n mapActiveSubagents,\n getSubagent: getCachedSubagent,\n getSubagentsByType(type: string): TSubagent[] {\n void version();\n return accessors\n .getSubagentsByType(type)\n .map((subagent) => getCachedSubagent(subagent.id))\n .filter((subagent): subagent is TSubagent => subagent != null);\n },\n getSubagentsByMessage(messageId: string): TSubagent[] {\n void version();\n return accessors\n .getSubagentsByMessage(messageId)\n .map((subagent) => getCachedSubagent(subagent.id))\n .filter((subagent): subagent is TSubagent => subagent != null);\n },\n };\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,gCACd,WACA,SACA;CACA,MAAM,gCAAgB,IAAI,KAAwB;CAElD,MAAM,qBAAqB,eAA8C;AAEvE,MAAI,CADY,UAAU,YAAY,WAAW,EACnC;AACZ,iBAAc,OAAO,WAAW;AAChC;;EAGF,IAAI,SAAS,cAAc,IAAI,WAAW;AAC1C,MAAI,CAAC,QAAQ;AACX,YAAS,IAAI,MAAM,EAAE,IAAI,YAAY,EAAe;IAClD,IAAI,SAAS,MAAM,UAAU;AACtB,cAAS;KACd,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,SAAI,CAAC,OAAQ,QAAO,KAAA;KAEpB,MAAM,QAAQ,QAAQ,IAAI,QAAkB,MAAM,SAAS;AAC3D,YAAO,OAAO,UAAU,aAAa,MAAM,KAAK,OAAO,GAAG;;IAE5D,IAAI,SAAS,MAAM;KACjB,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,YAAO,SAAS,QAAS,SAAoB;;IAE/C,UAAU;AACH,cAAS;KACd,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,YAAO,SAAS,QAAQ,QAAQ,OAAiB,GAAG,EAAE;;IAExD,yBAAyB,SAAS,MAAM;AACtC,YAAO;MACL,cAAc;MACd,YAAY;MACZ,MAAM;AACC,gBAAS;OACd,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,WAAI,CAAC,OAAQ,QAAO,KAAA;AACpB,cAAO,QAAQ,IAAI,QAAkB,KAAK;;MAE7C;;IAEJ,CAAC;AACF,iBAAc,IAAI,YAAY,OAAO;;AAGvC,SAAO;;CAGT,MAAM,gBAAgB,cAA8C;EAClE,MAAM,UAAU,IAAI,IAAI,UAAU,MAAM,CAAC;AACzC,OAAK,MAAM,cAAc,cAAc,MAAM,CAC3C,KAAI,CAAC,QAAQ,IAAI,WAAW,CAC1B,eAAc,OAAO,WAAW;AAIpC,SAAO,IAAI,IACT,CAAC,GAAG,UAAU,MAAM,CAAC,CAClB,KAAK,eAAe;GACnB,MAAM,SAAS,kBAAkB,WAAW;AAC5C,UAAO,SAAU,CAAC,YAAY,OAAO,GAAa,KAAA;IAClD,CACD,QAAQ,UAAiD,SAAS,KAAK,CAC3E;;CAGH,MAAM,sBAAsB,cAC1B,UACG,KAAK,aAAa,kBAAkB,SAAS,GAAG,CAAC,CACjD,QAAQ,aAAoC,YAAY,KAAK;AAElE,QAAO;EACL;EACA;EACA,aAAa;EACb,mBAAmB,MAA2B;AACvC,YAAS;AACd,UAAO,UACJ,mBAAmB,KAAK,CACxB,KAAK,aAAa,kBAAkB,SAAS,GAAG,CAAC,CACjD,QAAQ,aAAoC,YAAY,KAAK;;EAElE,sBAAsB,WAAgC;AAC/C,YAAS;AACd,UAAO,UACJ,sBAAsB,UAAU,CAChC,KAAK,aAAa,kBAAkB,SAAS,GAAG,CAAC,CACjD,QAAQ,aAAoC,YAAY,KAAK;;EAEnE"}
@@ -0,0 +1,76 @@
1
+ //#region src/subagents.ts
2
+ /**
3
+ * Create stable proxy objects for subagents so retained references always read
4
+ * from the latest orchestrator snapshot while remaining invalidated by the
5
+ * Angular signal that tracks subagent updates.
6
+ */
7
+ function createReactiveSubagentAccessors(accessors, version) {
8
+ const subagentCache = /* @__PURE__ */ new Map();
9
+ const getCachedSubagent = (toolCallId) => {
10
+ if (!accessors.getSubagent(toolCallId)) {
11
+ subagentCache.delete(toolCallId);
12
+ return;
13
+ }
14
+ let cached = subagentCache.get(toolCallId);
15
+ if (!cached) {
16
+ cached = new Proxy({ id: toolCallId }, {
17
+ get(_target, prop, receiver) {
18
+ version();
19
+ const latest = accessors.getSubagent(toolCallId);
20
+ if (!latest) return void 0;
21
+ const value = Reflect.get(latest, prop, receiver);
22
+ return typeof value === "function" ? value.bind(latest) : value;
23
+ },
24
+ has(_target, prop) {
25
+ const latest = accessors.getSubagent(toolCallId);
26
+ return latest ? prop in latest : false;
27
+ },
28
+ ownKeys() {
29
+ version();
30
+ const latest = accessors.getSubagent(toolCallId);
31
+ return latest ? Reflect.ownKeys(latest) : [];
32
+ },
33
+ getOwnPropertyDescriptor(_target, prop) {
34
+ return {
35
+ configurable: true,
36
+ enumerable: true,
37
+ get() {
38
+ version();
39
+ const latest = accessors.getSubagent(toolCallId);
40
+ if (!latest) return void 0;
41
+ return Reflect.get(latest, prop);
42
+ }
43
+ };
44
+ }
45
+ });
46
+ subagentCache.set(toolCallId, cached);
47
+ }
48
+ return cached;
49
+ };
50
+ const mapSubagents = (subagents) => {
51
+ const nextIds = new Set(subagents.keys());
52
+ for (const toolCallId of subagentCache.keys()) if (!nextIds.has(toolCallId)) subagentCache.delete(toolCallId);
53
+ return new Map([...subagents.keys()].map((toolCallId) => {
54
+ const cached = getCachedSubagent(toolCallId);
55
+ return cached ? [toolCallId, cached] : void 0;
56
+ }).filter((entry) => entry != null));
57
+ };
58
+ const mapActiveSubagents = (subagents) => subagents.map((subagent) => getCachedSubagent(subagent.id)).filter((subagent) => subagent != null);
59
+ return {
60
+ mapSubagents,
61
+ mapActiveSubagents,
62
+ getSubagent: getCachedSubagent,
63
+ getSubagentsByType(type) {
64
+ version();
65
+ return accessors.getSubagentsByType(type).map((subagent) => getCachedSubagent(subagent.id)).filter((subagent) => subagent != null);
66
+ },
67
+ getSubagentsByMessage(messageId) {
68
+ version();
69
+ return accessors.getSubagentsByMessage(messageId).map((subagent) => getCachedSubagent(subagent.id)).filter((subagent) => subagent != null);
70
+ }
71
+ };
72
+ }
73
+ //#endregion
74
+ export { createReactiveSubagentAccessors };
75
+
76
+ //# sourceMappingURL=subagents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagents.js","names":[],"sources":["../src/subagents.ts"],"sourcesContent":["import type { Signal, WritableSignal } from \"@angular/core\";\n\ntype SubagentLike = {\n id: string;\n};\n\ntype SubagentAccessors<TSubagent extends SubagentLike> = {\n getSubagent: (toolCallId: string) => TSubagent | undefined;\n getSubagentsByType: (type: string) => TSubagent[];\n getSubagentsByMessage: (messageId: string) => TSubagent[];\n};\n\n/**\n * Create stable proxy objects for subagents so retained references always read\n * from the latest orchestrator snapshot while remaining invalidated by the\n * Angular signal that tracks subagent updates.\n */\nexport function createReactiveSubagentAccessors<TSubagent extends SubagentLike>(\n accessors: SubagentAccessors<TSubagent>,\n version: Signal<number> | WritableSignal<number>\n) {\n const subagentCache = new Map<string, TSubagent>();\n\n const getCachedSubagent = (toolCallId: string): TSubagent | undefined => {\n const current = accessors.getSubagent(toolCallId);\n if (!current) {\n subagentCache.delete(toolCallId);\n return undefined;\n }\n\n let cached = subagentCache.get(toolCallId);\n if (!cached) {\n cached = new Proxy({ id: toolCallId } as TSubagent, {\n get(_target, prop, receiver) {\n void version();\n const latest = accessors.getSubagent(toolCallId);\n if (!latest) return undefined;\n\n const value = Reflect.get(latest as object, prop, receiver);\n return typeof value === \"function\" ? value.bind(latest) : value;\n },\n has(_target, prop) {\n const latest = accessors.getSubagent(toolCallId);\n return latest ? prop in (latest as object) : false;\n },\n ownKeys() {\n void version();\n const latest = accessors.getSubagent(toolCallId);\n return latest ? Reflect.ownKeys(latest as object) : [];\n },\n getOwnPropertyDescriptor(_target, prop) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n void version();\n const latest = accessors.getSubagent(toolCallId);\n if (!latest) return undefined;\n return Reflect.get(latest as object, prop);\n },\n };\n },\n });\n subagentCache.set(toolCallId, cached);\n }\n\n return cached;\n };\n\n const mapSubagents = (subagents: ReadonlyMap<string, TSubagent>) => {\n const nextIds = new Set(subagents.keys());\n for (const toolCallId of subagentCache.keys()) {\n if (!nextIds.has(toolCallId)) {\n subagentCache.delete(toolCallId);\n }\n }\n\n return new Map(\n [...subagents.keys()]\n .map((toolCallId) => {\n const cached = getCachedSubagent(toolCallId);\n return cached ? ([toolCallId, cached] as const) : undefined;\n })\n .filter((entry): entry is readonly [string, TSubagent] => entry != null)\n );\n };\n\n const mapActiveSubagents = (subagents: readonly TSubagent[]) =>\n subagents\n .map((subagent) => getCachedSubagent(subagent.id))\n .filter((subagent): subagent is TSubagent => subagent != null);\n\n return {\n mapSubagents,\n mapActiveSubagents,\n getSubagent: getCachedSubagent,\n getSubagentsByType(type: string): TSubagent[] {\n void version();\n return accessors\n .getSubagentsByType(type)\n .map((subagent) => getCachedSubagent(subagent.id))\n .filter((subagent): subagent is TSubagent => subagent != null);\n },\n getSubagentsByMessage(messageId: string): TSubagent[] {\n void version();\n return accessors\n .getSubagentsByMessage(messageId)\n .map((subagent) => getCachedSubagent(subagent.id))\n .filter((subagent): subagent is TSubagent => subagent != null);\n },\n };\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,gCACd,WACA,SACA;CACA,MAAM,gCAAgB,IAAI,KAAwB;CAElD,MAAM,qBAAqB,eAA8C;AAEvE,MAAI,CADY,UAAU,YAAY,WAAW,EACnC;AACZ,iBAAc,OAAO,WAAW;AAChC;;EAGF,IAAI,SAAS,cAAc,IAAI,WAAW;AAC1C,MAAI,CAAC,QAAQ;AACX,YAAS,IAAI,MAAM,EAAE,IAAI,YAAY,EAAe;IAClD,IAAI,SAAS,MAAM,UAAU;AACtB,cAAS;KACd,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,SAAI,CAAC,OAAQ,QAAO,KAAA;KAEpB,MAAM,QAAQ,QAAQ,IAAI,QAAkB,MAAM,SAAS;AAC3D,YAAO,OAAO,UAAU,aAAa,MAAM,KAAK,OAAO,GAAG;;IAE5D,IAAI,SAAS,MAAM;KACjB,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,YAAO,SAAS,QAAS,SAAoB;;IAE/C,UAAU;AACH,cAAS;KACd,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,YAAO,SAAS,QAAQ,QAAQ,OAAiB,GAAG,EAAE;;IAExD,yBAAyB,SAAS,MAAM;AACtC,YAAO;MACL,cAAc;MACd,YAAY;MACZ,MAAM;AACC,gBAAS;OACd,MAAM,SAAS,UAAU,YAAY,WAAW;AAChD,WAAI,CAAC,OAAQ,QAAO,KAAA;AACpB,cAAO,QAAQ,IAAI,QAAkB,KAAK;;MAE7C;;IAEJ,CAAC;AACF,iBAAc,IAAI,YAAY,OAAO;;AAGvC,SAAO;;CAGT,MAAM,gBAAgB,cAA8C;EAClE,MAAM,UAAU,IAAI,IAAI,UAAU,MAAM,CAAC;AACzC,OAAK,MAAM,cAAc,cAAc,MAAM,CAC3C,KAAI,CAAC,QAAQ,IAAI,WAAW,CAC1B,eAAc,OAAO,WAAW;AAIpC,SAAO,IAAI,IACT,CAAC,GAAG,UAAU,MAAM,CAAC,CAClB,KAAK,eAAe;GACnB,MAAM,SAAS,kBAAkB,WAAW;AAC5C,UAAO,SAAU,CAAC,YAAY,OAAO,GAAa,KAAA;IAClD,CACD,QAAQ,UAAiD,SAAS,KAAK,CAC3E;;CAGH,MAAM,sBAAsB,cAC1B,UACG,KAAK,aAAa,kBAAkB,SAAS,GAAG,CAAC,CACjD,QAAQ,aAAoC,YAAY,KAAK;AAElE,QAAO;EACL;EACA;EACA,aAAa;EACb,mBAAmB,MAA2B;AACvC,YAAS;AACd,UAAO,UACJ,mBAAmB,KAAK,CACxB,KAAK,aAAa,kBAAkB,SAAS,GAAG,CAAC,CACjD,QAAQ,aAAoC,YAAY,KAAK;;EAElE,sBAAsB,WAAgC;AAC/C,YAAS;AACd,UAAO,UACJ,sBAAsB,UAAU,CAChC,KAAK,aAAa,kBAAkB,SAAS,GAAG,CAAC,CACjD,QAAQ,aAAoC,YAAY,KAAK;;EAEnE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/angular",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Angular integration for LangGraph & LangChain",
5
5
  "type": "module",
6
6
  "license": "MIT",