@tanstack/ai 0.47.2 → 0.48.0
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/README.md +2 -1
- package/dist/esm/activities/chat/adapter.d.ts +5 -4
- package/dist/esm/activities/chat/adapter.js.map +1 -1
- package/dist/esm/activities/chat/index.d.ts +4 -7
- package/dist/esm/activities/chat/index.js +201 -243
- package/dist/esm/activities/chat/index.js.map +1 -1
- package/dist/esm/activities/chat/messages.js +126 -31
- package/dist/esm/activities/chat/messages.js.map +1 -1
- package/dist/esm/activities/chat/stream/processor.d.ts +38 -17
- package/dist/esm/activities/chat/stream/processor.js +197 -110
- package/dist/esm/activities/chat/stream/processor.js.map +1 -1
- package/dist/esm/activities/chat/tools/tool-calls.d.ts +3 -2
- package/dist/esm/activities/chat/tools/tool-calls.js +15 -10
- package/dist/esm/activities/chat/tools/tool-calls.js.map +1 -1
- package/dist/esm/activities/generateVideo/index.js +6 -6
- package/dist/esm/activities/generateVideo/index.js.map +1 -1
- package/dist/esm/activities/stream-generation-result.js +7 -8
- package/dist/esm/activities/stream-generation-result.js.map +1 -1
- package/dist/esm/activities/summarize/chat-stream-summarize.d.ts +2 -1
- package/dist/esm/activities/summarize/chat-stream-summarize.js +59 -54
- package/dist/esm/activities/summarize/chat-stream-summarize.js.map +1 -1
- package/dist/esm/adapter-internals.d.ts +2 -0
- package/dist/esm/adapter-internals.js +3 -1
- package/dist/esm/client.d.ts +8 -1
- package/dist/esm/client.js +7 -2
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -2
- package/dist/esm/middlewares/otel.js +12 -5
- package/dist/esm/middlewares/otel.js.map +1 -1
- package/dist/esm/stream-to-response.js +13 -6
- package/dist/esm/stream-to-response.js.map +1 -1
- package/dist/esm/stream-to-websocket.js +4 -2
- package/dist/esm/stream-to-websocket.js.map +1 -1
- package/dist/esm/strip-to-spec-middleware.d.ts +10 -13
- package/dist/esm/strip-to-spec-middleware.js +24 -22
- package/dist/esm/strip-to-spec-middleware.js.map +1 -1
- package/dist/esm/types.d.ts +82 -305
- package/dist/esm/utilities/adapter-yield-chunk.d.ts +31 -0
- package/dist/esm/utilities/ag-ui-usage.d.ts +24 -0
- package/dist/esm/utilities/ag-ui-usage.js +66 -0
- package/dist/esm/utilities/ag-ui-usage.js.map +1 -0
- package/dist/esm/utilities/ag-ui-wire.d.ts +14 -7
- package/dist/esm/utilities/ag-ui-wire.js +71 -30
- package/dist/esm/utilities/ag-ui-wire.js.map +1 -1
- package/dist/esm/utilities/chat-params.d.ts +3 -3
- package/dist/esm/utilities/chat-params.js +10 -30
- package/dist/esm/utilities/chat-params.js.map +1 -1
- package/dist/esm/utilities/chunk-ids.d.ts +5 -0
- package/dist/esm/utilities/chunk-ids.js +25 -0
- package/dist/esm/utilities/chunk-ids.js.map +1 -0
- package/dist/esm/utilities/errors.d.ts +9 -0
- package/dist/esm/utilities/errors.js +13 -1
- package/dist/esm/utilities/errors.js.map +1 -1
- package/dist/esm/utilities/merge-metadata.d.ts +14 -0
- package/dist/esm/utilities/merge-metadata.js +43 -0
- package/dist/esm/utilities/merge-metadata.js.map +1 -0
- package/dist/esm/utilities/normalize-stream-chunk.d.ts +3 -0
- package/dist/esm/utilities/normalize-stream-chunk.js +100 -0
- package/dist/esm/utilities/normalize-stream-chunk.js.map +1 -0
- package/dist/esm/utilities/reasoning-encrypted-value.d.ts +8 -0
- package/dist/esm/utilities/reasoning-encrypted-value.js +16 -0
- package/dist/esm/utilities/reasoning-encrypted-value.js.map +1 -0
- package/dist/esm/utilities/restore-inbound-chunk.d.ts +15 -0
- package/dist/esm/utilities/restore-inbound-chunk.js +43 -0
- package/dist/esm/utilities/restore-inbound-chunk.js.map +1 -0
- package/dist/esm/utilities/spec-event-keys.d.ts +2 -0
- package/dist/esm/utilities/spec-event-keys.js +56 -0
- package/dist/esm/utilities/spec-event-keys.js.map +1 -0
- package/dist/esm/utilities/structured-output-events.d.ts +3 -3
- package/dist/esm/utilities/structured-output-events.js.map +1 -1
- package/package.json +3 -3
- package/src/activities/chat/adapter.ts +4 -4
- package/src/activities/chat/index.ts +398 -400
- package/src/activities/chat/messages.ts +183 -36
- package/src/activities/chat/stream/processor.ts +313 -239
- package/src/activities/chat/tools/tool-calls.ts +23 -22
- package/src/activities/generateVideo/index.ts +7 -6
- package/src/activities/stream-generation-result.ts +8 -12
- package/src/activities/summarize/chat-stream-summarize.ts +98 -70
- package/src/adapter-internals.ts +2 -0
- package/src/client.ts +13 -0
- package/src/index.ts +6 -0
- package/src/middlewares/otel.ts +16 -8
- package/src/stream-to-response.ts +16 -4
- package/src/stream-to-websocket.ts +3 -1
- package/src/strip-to-spec-middleware.ts +48 -24
- package/src/types.ts +109 -393
- package/src/utilities/adapter-yield-chunk.ts +30 -0
- package/src/utilities/ag-ui-usage.test.ts +194 -0
- package/src/utilities/ag-ui-usage.ts +148 -0
- package/src/utilities/ag-ui-wire.ts +149 -31
- package/src/utilities/chat-params.ts +22 -39
- package/src/utilities/chunk-ids.ts +24 -0
- package/src/utilities/errors.ts +23 -0
- package/src/utilities/merge-metadata.test.ts +117 -0
- package/src/utilities/merge-metadata.ts +59 -0
- package/src/utilities/normalize-stream-chunk.test.ts +423 -0
- package/src/utilities/normalize-stream-chunk.ts +186 -0
- package/src/utilities/reasoning-encrypted-value.ts +18 -0
- package/src/utilities/restore-inbound-chunk.test.ts +133 -0
- package/src/utilities/restore-inbound-chunk.ts +72 -0
- package/src/utilities/spec-event-keys.test.ts +34 -0
- package/src/utilities/spec-event-keys.ts +74 -0
- package/src/utilities/structured-output-events.ts +3 -3
|
@@ -1,34 +1,58 @@
|
|
|
1
|
-
import type { ChatMiddleware } from './activities/chat/middleware/types'
|
|
2
1
|
import type { StreamChunk } from './types'
|
|
2
|
+
import { EventType } from './types'
|
|
3
|
+
import type { AdapterYieldChunk } from './utilities/adapter-yield-chunk'
|
|
4
|
+
import { isTanstackUsage, toSpecTokenUsage } from './utilities/ag-ui-usage'
|
|
5
|
+
import {
|
|
6
|
+
tanstackMetadata,
|
|
7
|
+
withTanstackMetadata,
|
|
8
|
+
} from './utilities/merge-metadata'
|
|
9
|
+
import { normalizeStreamChunk } from './utilities/normalize-stream-chunk'
|
|
10
|
+
import { isSpecTopLevelKey } from './utilities/spec-event-keys'
|
|
3
11
|
|
|
4
12
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* All other fields pass through unchanged. @ag-ui/core's BaseEventSchema
|
|
9
|
-
* uses `.passthrough()`, so extra fields (model, content, usage,
|
|
10
|
-
* finishReason, toolName, stepId, etc.) are allowed and won't break
|
|
11
|
-
* spec validation or verifyEvents.
|
|
13
|
+
* Delete unknown top-level keys from a stream chunk.
|
|
14
|
+
* Keep only AG-UI spec keys for this event type.
|
|
15
|
+
* Convert TanStack TokenUsage objects to the spec `usage[]` array.
|
|
12
16
|
*/
|
|
13
|
-
export function stripToSpec(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
export function stripToSpec(
|
|
18
|
+
chunk: StreamChunk | AdapterYieldChunk,
|
|
19
|
+
): StreamChunk {
|
|
20
|
+
const out: Record<string, unknown> = {}
|
|
21
|
+
for (const [key, value] of Object.entries(chunk)) {
|
|
22
|
+
if (isSpecTopLevelKey(chunk.type, key) && value !== undefined) {
|
|
23
|
+
out[key] = value
|
|
24
|
+
}
|
|
18
25
|
}
|
|
19
|
-
|
|
26
|
+
|
|
27
|
+
if (
|
|
28
|
+
(chunk.type === EventType.RUN_FINISHED ||
|
|
29
|
+
chunk.type === EventType.RUN_ERROR) &&
|
|
30
|
+
isTanstackUsage(out.usage)
|
|
31
|
+
) {
|
|
32
|
+
const model = tanstackMetadata(chunk)?.model
|
|
33
|
+
const { usage, leftover } = toSpecTokenUsage(out.usage, {
|
|
34
|
+
model: typeof model === 'string' ? model : undefined,
|
|
35
|
+
})
|
|
36
|
+
out.usage = usage
|
|
37
|
+
if (leftover !== undefined) {
|
|
38
|
+
return withTanstackMetadata(out as StreamChunk, {
|
|
39
|
+
usage: leftover,
|
|
40
|
+
}) as StreamChunk
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return out as StreamChunk
|
|
20
45
|
}
|
|
21
46
|
|
|
22
47
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
48
|
+
* Move TanStack extras into `metadata.tanstack`, then keep only spec keys.
|
|
49
|
+
* Custom servers that skip `chat()` still round-trip `finishReason` on SSE/HTTP/WS.
|
|
50
|
+
* Fan-out extras (encrypted-value, TOOL_CALL_RESULT) stay on the `chat()` path;
|
|
51
|
+
* this encoder is 1:1 with the durability log offset.
|
|
26
52
|
*/
|
|
27
|
-
export function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
}
|
|
53
|
+
export function toWireChunk(
|
|
54
|
+
chunk: StreamChunk | AdapterYieldChunk,
|
|
55
|
+
): StreamChunk {
|
|
56
|
+
const [normalized] = normalizeStreamChunk(chunk)
|
|
57
|
+
return stripToSpec(normalized ?? chunk)
|
|
34
58
|
}
|