You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: apps/website/content/docs/langgraph/api/api-docs.json
+12Lines changed: 12 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -946,6 +946,12 @@
946
946
"description": "Custom message deserializer for non-standard message formats.",
947
947
"optional": true
948
948
},
949
+
{
950
+
"name": "transcriptNodeNames",
951
+
"type": "string[]",
952
+
"description": "LangGraph node names whose `messages-tuple` LLM chunks should be projected\ninto the main chat transcript. Omit to accept all top-level message chunks.",
953
+
"optional": true
954
+
},
949
955
{
950
956
"name": "transport",
951
957
"type": "AgentTransport",
@@ -1082,6 +1088,12 @@
1082
1088
"description": "Custom message deserializer for non-standard message formats.",
1083
1089
"optional": true
1084
1090
},
1091
+
{
1092
+
"name": "transcriptNodeNames",
1093
+
"type": "string[]",
1094
+
"description": "LangGraph node names whose `messages-tuple` LLM chunks should be projected\ninto the main chat transcript. Omit to accept all top-level message chunks.\n\nUse this when a graph has side-effect LLM nodes, such as title generation,\nwhose streamed model output should not render as assistant chat content.",
|`telemetry`|`AgentRuntimeTelemetrySink \| false`| Optional app-owned telemetry sink. No telemetry is emitted unless this is provided. |
42
42
|`filterSubagentMessages`|`boolean`| When true, subagent messages are filtered from the main messages signal. |
43
43
|`subagentToolNames`|`string[]`| Tool names that indicate a subagent invocation. |
44
+
|`transcriptNodeNames`|`string[]`| LangGraph node names whose `messages-tuple` chunks should stream into the main chat transcript. Omit to accept all top-level chunks. |
44
45
45
46
## Singleton model
46
47
@@ -56,6 +57,18 @@ provideAgent({
56
57
const chat =injectAgent();
57
58
```
58
59
60
+
## Transcript node filtering
61
+
62
+
LangGraph streams `messages-tuple` chunks for every LLM node in a run. If your graph has side-effect LLM nodes, such as a title generator or evaluator, set `transcriptNodeNames` so only your conversational node updates `messages()`.
63
+
64
+
```ts
65
+
provideAgent({
66
+
apiUrl: 'https://api.example.com',
67
+
assistantId: 'support-agent',
68
+
transcriptNodeNames: ['generate'],
69
+
});
70
+
```
71
+
59
72
## Test transports
60
73
61
74
`transport` is an object that implements `AgentTransport`, not an Angular class token. Create an instance before passing it to `provideAgent()`.
"match": { "userMessage": "stream a markdown comparison table regression" },
5
+
"response": {
6
+
"content": "Here is the comparison:\n\n| Name | Mental model | When to use |\n| --- | --- | --- |\n| Angular Signals | Synchronous value graph | Local component state |\n| RxJS | Event stream | Async flows and cancellation |\n| zone.js | Async task patching | Zone-based change detection |\n\nDone."
7
+
},
8
+
"chunkSize": 4,
9
+
"latency": 75
10
+
},
11
+
{
12
+
"match": { "userMessage": "stream a blockquote then a markdown table regression" },
13
+
"response": {
14
+
"content": "> First line of the quote.\n> Second line of the quote.\n\n| Issue | Expected behavior | Verification |\n| --- | --- | --- |\n| Button click does not update UI | UI reflects new state immediately | Click button and observe state |\n| Slow initial render | Main content appears within target | Measure first meaningful paint |"
15
+
},
16
+
"chunkSize": 6,
17
+
"latency": 25
18
+
},
19
+
{
20
+
"match": { "userMessage": "stream a TypeScript code fence regression" },
21
+
"response": {
22
+
"content": "Here is the snippet:\n\n```typescript\nconst answer = 42;\n```\n\nThe constant is available for later use."
0 commit comments