@langchain/angular 0.4.3 → 0.4.4

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.
@@ -82,19 +82,24 @@ function injectStreamCustom(options) {
82
82
  },
83
83
  subagents: (0, _angular_core.computed)(() => {
84
84
  subagentVersion();
85
+ orchestrator.trackStreamMode("updates", "messages-tuple");
85
86
  return reactiveSubagents.mapSubagents(orchestrator.subagents);
86
87
  }),
87
88
  activeSubagents: (0, _angular_core.computed)(() => {
88
89
  subagentVersion();
90
+ orchestrator.trackStreamMode("updates", "messages-tuple");
89
91
  return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
90
92
  }),
91
93
  getSubagent(toolCallId) {
94
+ orchestrator.trackStreamMode("updates", "messages-tuple");
92
95
  return reactiveSubagents.getSubagent(toolCallId);
93
96
  },
94
97
  getSubagentsByType(type) {
98
+ orchestrator.trackStreamMode("updates", "messages-tuple");
95
99
  return reactiveSubagents.getSubagentsByType(type);
96
100
  },
97
101
  getSubagentsByMessage(messageId) {
102
+ orchestrator.trackStreamMode("updates", "messages-tuple");
98
103
  return reactiveSubagents.getSubagentsByMessage(messageId);
99
104
  }
100
105
  };
@@ -1 +1 @@
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
+ {"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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,aACvB,aAAa,UACd;IAID;EAEF,kBAAA,GAAA,cAAA,gBAAgC;AACzB,oBAAiB;AACtB,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,mBACvB,aAAa,gBACd;IAGD;EAEF,YAAY,YAAoB;AAC9B,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,YAAY,WAAW;;EAElD,mBAAmB,MAAc;AAC/B,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,mBAAmB,KAAK;;EAEnD,sBAAsB,WAAmB;AACvC,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,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":";;;;;;;;;iBAegB,kBAAA,mBACI,MAAA,oBAA0B,MAAA,+BAChC,WAAA,GAAc,WAAA,CAAA,CAC1B,OAAA,EAAS,sBAAA,CAAuB,SAAA,EAAW,GAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAqJhC,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0JhC,eAAA,SAAe,kBAAA"}
@@ -1 +1 @@
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
+ {"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA0JhC,eAAA,SAAe,kBAAA"}
@@ -82,19 +82,24 @@ function injectStreamCustom(options) {
82
82
  },
83
83
  subagents: computed(() => {
84
84
  subagentVersion();
85
+ orchestrator.trackStreamMode("updates", "messages-tuple");
85
86
  return reactiveSubagents.mapSubagents(orchestrator.subagents);
86
87
  }),
87
88
  activeSubagents: computed(() => {
88
89
  subagentVersion();
90
+ orchestrator.trackStreamMode("updates", "messages-tuple");
89
91
  return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
90
92
  }),
91
93
  getSubagent(toolCallId) {
94
+ orchestrator.trackStreamMode("updates", "messages-tuple");
92
95
  return reactiveSubagents.getSubagent(toolCallId);
93
96
  },
94
97
  getSubagentsByType(type) {
98
+ orchestrator.trackStreamMode("updates", "messages-tuple");
95
99
  return reactiveSubagents.getSubagentsByType(type);
96
100
  },
97
101
  getSubagentsByMessage(messageId) {
102
+ orchestrator.trackStreamMode("updates", "messages-tuple");
98
103
  return reactiveSubagents.getSubagentsByMessage(messageId);
99
104
  }
100
105
  };
@@ -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\";\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
+ {"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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return reactiveSubagents.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return reactiveSubagents.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,aACvB,aAAa,UACd;IAID;EAEF,iBAAiB,eAAe;AACzB,oBAAiB;AACtB,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,mBACvB,aAAa,gBACd;IAGD;EAEF,YAAY,YAAoB;AAC9B,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,YAAY,WAAW;;EAElD,mBAAmB,MAAc;AAC/B,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,mBAAmB,KAAK;;EAEnD,sBAAsB,WAAmB;AACvC,gBAAa,gBAAgB,WAAW,iBAAiB;AACzD,UAAO,kBAAkB,sBAAsB,UAAU;;EAE5D;;;;;;;AAQH,MAAa,kBAAkB"}
@@ -109,10 +109,12 @@ function useStreamLGP(options) {
109
109
  });
110
110
  const subagents = (0, _angular_core.computed)(() => {
111
111
  subagentVersion();
112
+ orchestrator.trackStreamMode("updates", "messages-tuple");
112
113
  return reactiveSubagents.mapSubagents(orchestrator.subagents);
113
114
  });
114
115
  const activeSubagents = (0, _angular_core.computed)(() => {
115
116
  subagentVersion();
117
+ orchestrator.trackStreamMode("updates", "messages-tuple");
116
118
  return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
117
119
  });
118
120
  return {
@@ -153,12 +155,15 @@ function useStreamLGP(options) {
153
155
  subagents,
154
156
  activeSubagents,
155
157
  getSubagent(toolCallId) {
158
+ orchestrator.trackStreamMode("updates", "messages-tuple");
156
159
  return orchestrator.getSubagent(toolCallId);
157
160
  },
158
161
  getSubagentsByType(type) {
162
+ orchestrator.trackStreamMode("updates", "messages-tuple");
159
163
  return orchestrator.getSubagentsByType(type);
160
164
  },
161
165
  getSubagentsByMessage(messageId) {
166
+ orchestrator.trackStreamMode("updates", "messages-tuple");
162
167
  return orchestrator.getSubagentsByMessage(messageId);
163
168
  }
164
169
  };
@@ -1 +1 @@
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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"}
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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
@@ -109,10 +109,12 @@ function useStreamLGP(options) {
109
109
  });
110
110
  const subagents = computed(() => {
111
111
  subagentVersion();
112
+ orchestrator.trackStreamMode("updates", "messages-tuple");
112
113
  return reactiveSubagents.mapSubagents(orchestrator.subagents);
113
114
  });
114
115
  const activeSubagents = computed(() => {
115
116
  subagentVersion();
117
+ orchestrator.trackStreamMode("updates", "messages-tuple");
116
118
  return reactiveSubagents.mapActiveSubagents(orchestrator.activeSubagents);
117
119
  });
118
120
  return {
@@ -153,12 +155,15 @@ function useStreamLGP(options) {
153
155
  subagents,
154
156
  activeSubagents,
155
157
  getSubagent(toolCallId) {
158
+ orchestrator.trackStreamMode("updates", "messages-tuple");
156
159
  return orchestrator.getSubagent(toolCallId);
157
160
  },
158
161
  getSubagentsByType(type) {
162
+ orchestrator.trackStreamMode("updates", "messages-tuple");
159
163
  return orchestrator.getSubagentsByType(type);
160
164
  },
161
165
  getSubagentsByMessage(messageId) {
166
+ orchestrator.trackStreamMode("updates", "messages-tuple");
162
167
  return orchestrator.getSubagentsByMessage(messageId);
163
168
  }
164
169
  };
@@ -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\";\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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"}
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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\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 orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.getSubagent(toolCallId);\n },\n getSubagentsByType(type: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.getSubagentsByType(type);\n },\n getSubagentsByMessage(messageId: string) {\n orchestrator.trackStreamMode(\"updates\", \"messages-tuple\");\n return orchestrator.getSubagentsByMessage(messageId);\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/angular",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Angular integration for LangGraph & LangChain",
5
5
  "type": "module",
6
6
  "license": "MIT",