@assistant-ui/react-ag-ui 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runtime/AgUiThreadController.d.ts.map +1 -1
- package/dist/runtime/AgUiThreadController.js +80 -13
- package/dist/runtime/AgUiThreadController.js.map +1 -1
- package/dist/runtime/adapter/run-aggregator.d.ts +37 -31
- package/dist/runtime/adapter/run-aggregator.d.ts.map +1 -1
- package/dist/runtime/adapter/run-aggregator.js +363 -218
- package/dist/runtime/adapter/run-aggregator.js.map +1 -1
- package/package.json +1 -1
- package/src/runtime/AgUiThreadController.disconnect.test.ts +198 -3
- package/src/runtime/AgUiThreadController.replay.test.ts +57 -0
- package/src/runtime/AgUiThreadController.snapshot-head-history.test.ts +34 -2
- package/src/runtime/AgUiThreadController.snapshot-head-move.test.ts +510 -0
- package/src/runtime/AgUiThreadController.ts +179 -28
- package/src/runtime/adapter/run-aggregator.routing.test.ts +359 -0
- package/src/runtime/adapter/run-aggregator.ts +539 -258
|
@@ -4,19 +4,29 @@ import { type AgUiEvent } from "../types.js";
|
|
|
4
4
|
import type { Logger } from "../logger.js";
|
|
5
5
|
type Emit = (update: ChatModelRunResult) => void;
|
|
6
6
|
export declare const isPlainObject: (value: unknown) => value is Record<string, unknown>;
|
|
7
|
+
export type RetainedMessageState = {
|
|
8
|
+
messageId: string;
|
|
9
|
+
/** A root text frame or a sub-agent run is still open. */
|
|
10
|
+
streaming: boolean;
|
|
11
|
+
openToolCallIds: string[];
|
|
12
|
+
};
|
|
7
13
|
export type RunAggregatorOptions = {
|
|
8
14
|
showThinking: boolean;
|
|
9
15
|
joinStrategy?: JoinStrategy | undefined;
|
|
10
16
|
logger: Logger;
|
|
11
17
|
emit: Emit;
|
|
18
|
+
onRetainedMessage?: (update: ChatModelRunResult, state: RetainedMessageState) => void;
|
|
19
|
+
canRetainMessage?: (messageId: string) => boolean;
|
|
12
20
|
onServerMessageId?: (messageId: string) => void;
|
|
13
|
-
|
|
21
|
+
/** Returns the id the outgoing message lives under, when it may keep receiving events. */
|
|
22
|
+
onTextMessageStart?: (messageId: string, openToolCallIds: string[]) => string | void;
|
|
14
23
|
};
|
|
15
24
|
/**
|
|
16
25
|
* Collects AG-UI events into assistant-ui run snapshots that can be yielded from a ChatModelAdapter.
|
|
17
26
|
*
|
|
18
|
-
*
|
|
19
|
-
* emits a fresh snapshot through
|
|
27
|
+
* Each incoming event updates the parts of the assistant message it names and
|
|
28
|
+
* emits a fresh snapshot: through `emit` for the message the run streams into,
|
|
29
|
+
* and through `onRetainedMessage` for one it moved on from. `CUSTOM` events
|
|
20
30
|
* become canonical data parts; integration plumbing names such as
|
|
21
31
|
* `on_interrupt`, `PredictState`, `Exit`, `hook_error`, `state_update_error`,
|
|
22
32
|
* `system:*`, and `MultiAgentHandoff` are forwarded the same way, so apps only
|
|
@@ -29,51 +39,47 @@ export declare class RunAggregator {
|
|
|
29
39
|
private readonly logger;
|
|
30
40
|
private readonly onServerMessageId;
|
|
31
41
|
private readonly onTextMessageStart;
|
|
42
|
+
private readonly onRetainedMessage;
|
|
43
|
+
private readonly canRetainMessage;
|
|
32
44
|
private status;
|
|
33
45
|
private interrupts;
|
|
34
46
|
private pendingToolCallIds;
|
|
35
|
-
private readonly textParts;
|
|
36
47
|
private readonly pendingSnapshotText;
|
|
37
|
-
private
|
|
38
|
-
private
|
|
39
|
-
private readonly
|
|
40
|
-
private
|
|
41
|
-
private readonly hiddenSignatures;
|
|
42
|
-
private readonly hiddenSignatureAnchors;
|
|
43
|
-
private readonly hiddenBlockAnchors;
|
|
44
|
-
private readonly hiddenReasoningIds;
|
|
45
|
-
private hiddenActiveReasoningId;
|
|
46
|
-
private hasEmittedOpaqueReasoning;
|
|
47
|
-
private readonly loggedDroppedOpaqueIds;
|
|
48
|
-
private readonly reasoningMessageIds;
|
|
49
|
-
private readonly activeReasoningKeyByScope;
|
|
50
|
-
private readonly subagentRuns;
|
|
51
|
-
private nestingMemo;
|
|
52
|
-
private readonly toolCalls;
|
|
53
|
-
private readonly a2uiBuckets;
|
|
54
|
-
private readonly a2uiToolCallIds;
|
|
55
|
-
private readonly activityParts;
|
|
56
|
-
private readonly lastResolvedToolCallIdByScope;
|
|
57
|
-
private readonly partOrder;
|
|
58
|
-
private lastReasoningBeforeToolCall;
|
|
59
|
-
private textPartCounter;
|
|
48
|
+
private current;
|
|
49
|
+
private buf;
|
|
50
|
+
private readonly retained;
|
|
51
|
+
private unannounced;
|
|
60
52
|
private serverMessageIdReported;
|
|
61
|
-
private reportedServerMessageId;
|
|
62
53
|
private lastTextMessageId;
|
|
63
54
|
private streamStartTime;
|
|
64
55
|
private firstTokenTime;
|
|
65
56
|
private totalChunks;
|
|
66
57
|
constructor(options: RunAggregatorOptions);
|
|
67
58
|
hasToolCall(toolCallId: string): boolean;
|
|
68
|
-
|
|
59
|
+
isRetained(messageId: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Makes `messageId` the message the run streams into. The previous message
|
|
62
|
+
* keeps its parts under `previousId`, and returns true when it does; call
|
|
63
|
+
* `announceRetained` to publish its state once the caller can apply it.
|
|
64
|
+
*/
|
|
65
|
+
rebaseMessage(messageId: string, previousId?: string): boolean;
|
|
66
|
+
announceRetained(): void;
|
|
69
67
|
handle(event: AgUiEvent): void;
|
|
68
|
+
private buffers;
|
|
69
|
+
private withBuffer;
|
|
70
|
+
private openMessage;
|
|
71
|
+
private ownerForMessage;
|
|
72
|
+
private ownerForToolCall;
|
|
73
|
+
private ownerForSubagent;
|
|
74
|
+
private ownerForActivity;
|
|
75
|
+
private ownerOf;
|
|
76
|
+
private retainedState;
|
|
77
|
+
private apply;
|
|
70
78
|
private handleActivityDelta;
|
|
71
79
|
private handleA2uiActivitySnapshot;
|
|
72
80
|
private handleActivitySnapshot;
|
|
73
81
|
private synthesizeA2uiToolCalls;
|
|
74
82
|
private reportServerMessageId;
|
|
75
|
-
private clearTextParts;
|
|
76
|
-
private resetMessageParts;
|
|
77
83
|
private closeOpenSubagentRuns;
|
|
78
84
|
private scopeOf;
|
|
79
85
|
private partKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-aggregator.d.ts","sourceRoot":"","sources":["../../../src/runtime/adapter/run-aggregator.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EAQxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAY7D,OAAO,EAKL,KAAK,SAAS,EAIf,oBAAiB;AAClB,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAkB;AA0CxC,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;AA+FjD,eAAO,MAAM,aAAa,GACxB,OAAO,OAAO,KACb,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAC6B,CAAC;
|
|
1
|
+
{"version":3,"file":"run-aggregator.d.ts","sourceRoot":"","sources":["../../../src/runtime/adapter/run-aggregator.ts"],"names":[],"mappings":"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"}
|