@ably/ai-transport 0.0.1
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/LICENSE +176 -0
- package/README.md +426 -0
- package/dist/ably-ai-transport.js +1388 -0
- package/dist/ably-ai-transport.js.map +1 -0
- package/dist/ably-ai-transport.umd.cjs +2 -0
- package/dist/ably-ai-transport.umd.cjs.map +1 -0
- package/dist/constants.d.ts +50 -0
- package/dist/core/codec/decoder.d.ts +62 -0
- package/dist/core/codec/encoder.d.ts +56 -0
- package/dist/core/codec/index.d.ts +8 -0
- package/dist/core/codec/lifecycle-tracker.d.ts +74 -0
- package/dist/core/codec/types.d.ts +188 -0
- package/dist/core/transport/client-transport.d.ts +10 -0
- package/dist/core/transport/conversation-tree.d.ts +9 -0
- package/dist/core/transport/decode-history.d.ts +41 -0
- package/dist/core/transport/headers.d.ts +26 -0
- package/dist/core/transport/index.d.ts +4 -0
- package/dist/core/transport/pipe-stream.d.ts +16 -0
- package/dist/core/transport/server-transport.d.ts +7 -0
- package/dist/core/transport/stream-router.d.ts +19 -0
- package/dist/core/transport/turn-manager.d.ts +34 -0
- package/dist/core/transport/types.d.ts +407 -0
- package/dist/errors.d.ts +46 -0
- package/dist/event-emitter.d.ts +65 -0
- package/dist/index.d.ts +11 -0
- package/dist/logger.d.ts +103 -0
- package/dist/react/ably-ai-transport-react.js +823 -0
- package/dist/react/ably-ai-transport-react.js.map +1 -0
- package/dist/react/ably-ai-transport-react.umd.cjs +2 -0
- package/dist/react/ably-ai-transport-react.umd.cjs.map +1 -0
- package/dist/react/index.d.ts +11 -0
- package/dist/react/use-ably-messages.d.ts +18 -0
- package/dist/react/use-active-turns.d.ts +8 -0
- package/dist/react/use-client-transport.d.ts +7 -0
- package/dist/react/use-conversation-tree.d.ts +20 -0
- package/dist/react/use-edit.d.ts +7 -0
- package/dist/react/use-history.d.ts +19 -0
- package/dist/react/use-messages.d.ts +7 -0
- package/dist/react/use-regenerate.d.ts +7 -0
- package/dist/react/use-send.d.ts +7 -0
- package/dist/utils.d.ts +127 -0
- package/dist/vercel/ably-ai-transport-vercel.js +2331 -0
- package/dist/vercel/ably-ai-transport-vercel.js.map +1 -0
- package/dist/vercel/ably-ai-transport-vercel.umd.cjs +2 -0
- package/dist/vercel/ably-ai-transport-vercel.umd.cjs.map +1 -0
- package/dist/vercel/codec/accumulator.d.ts +21 -0
- package/dist/vercel/codec/decoder.d.ts +22 -0
- package/dist/vercel/codec/encoder.d.ts +41 -0
- package/dist/vercel/codec/index.d.ts +22 -0
- package/dist/vercel/index.d.ts +3 -0
- package/dist/vercel/react/ably-ai-transport-vercel-react.js +2082 -0
- package/dist/vercel/react/ably-ai-transport-vercel-react.js.map +1 -0
- package/dist/vercel/react/ably-ai-transport-vercel-react.umd.cjs +2 -0
- package/dist/vercel/react/ably-ai-transport-vercel-react.umd.cjs.map +1 -0
- package/dist/vercel/react/index.d.ts +3 -0
- package/dist/vercel/react/use-chat-transport.d.ts +29 -0
- package/dist/vercel/react/use-message-sync.d.ts +19 -0
- package/dist/vercel/transport/chat-transport.d.ts +118 -0
- package/dist/vercel/transport/index.d.ts +36 -0
- package/package.json +123 -0
- package/react/README.md +3 -0
- package/react/index.d.ts +1 -0
- package/react/index.js +1 -0
- package/react/index.umd.cjs +1 -0
- package/src/constants.ts +98 -0
- package/src/core/codec/decoder.ts +402 -0
- package/src/core/codec/encoder.ts +470 -0
- package/src/core/codec/index.ts +28 -0
- package/src/core/codec/lifecycle-tracker.ts +140 -0
- package/src/core/codec/types.ts +249 -0
- package/src/core/transport/client-transport.ts +959 -0
- package/src/core/transport/conversation-tree.ts +434 -0
- package/src/core/transport/decode-history.ts +337 -0
- package/src/core/transport/headers.ts +46 -0
- package/src/core/transport/index.ts +34 -0
- package/src/core/transport/pipe-stream.ts +95 -0
- package/src/core/transport/server-transport.ts +458 -0
- package/src/core/transport/stream-router.ts +118 -0
- package/src/core/transport/turn-manager.ts +147 -0
- package/src/core/transport/types.ts +533 -0
- package/src/errors.ts +58 -0
- package/src/event-emitter.ts +103 -0
- package/src/index.ts +89 -0
- package/src/logger.ts +241 -0
- package/src/react/index.ts +11 -0
- package/src/react/use-ably-messages.ts +37 -0
- package/src/react/use-active-turns.ts +61 -0
- package/src/react/use-client-transport.ts +37 -0
- package/src/react/use-conversation-tree.ts +71 -0
- package/src/react/use-edit.ts +24 -0
- package/src/react/use-history.ts +111 -0
- package/src/react/use-messages.ts +32 -0
- package/src/react/use-regenerate.ts +24 -0
- package/src/react/use-send.ts +25 -0
- package/src/react/vite.config.ts +32 -0
- package/src/tsconfig.json +25 -0
- package/src/utils.ts +230 -0
- package/src/vercel/codec/accumulator.ts +603 -0
- package/src/vercel/codec/decoder.ts +615 -0
- package/src/vercel/codec/encoder.ts +396 -0
- package/src/vercel/codec/index.ts +37 -0
- package/src/vercel/index.ts +12 -0
- package/src/vercel/react/index.ts +4 -0
- package/src/vercel/react/use-chat-transport.ts +60 -0
- package/src/vercel/react/use-message-sync.ts +34 -0
- package/src/vercel/react/vite.config.ts +33 -0
- package/src/vercel/transport/chat-transport.ts +278 -0
- package/src/vercel/transport/index.ts +56 -0
- package/src/vercel/vite.config.ts +33 -0
- package/src/vite.config.ts +31 -0
- package/vercel/README.md +3 -0
- package/vercel/index.d.ts +1 -0
- package/vercel/index.js +1 -0
- package/vercel/index.umd.cjs +1 -0
- package/vercel/react/README.md +3 -0
- package/vercel/react/index.d.ts +1 -0
- package/vercel/react/index.js +1 -0
- package/vercel/react/index.umd.cjs +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { MessageAccumulator } from '../../core/codec/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Vercel AI SDK Message Accumulator
|
|
4
|
+
*
|
|
5
|
+
* Builds and maintains a UIMessage[] list from decoder outputs.
|
|
6
|
+
* Implements MessageAccumulator<UIMessageChunk, UIMessage>.
|
|
7
|
+
*
|
|
8
|
+
* The accumulator consumes DecoderOutput[] from the decoder and groups
|
|
9
|
+
* streaming events into UIMessage objects using lifecycle boundaries
|
|
10
|
+
* (start/finish). Complete messages (from writeMessages) are inserted
|
|
11
|
+
* directly.
|
|
12
|
+
*
|
|
13
|
+
* Multiple messages can be in-progress concurrently — each is identified
|
|
14
|
+
* by the `messageId` field on DecoderOutput (read from x-ably-msg-id).
|
|
15
|
+
*/
|
|
16
|
+
import type * as AI from 'ai';
|
|
17
|
+
/**
|
|
18
|
+
* Create a Vercel AI SDK accumulator that builds UIMessage[] from decoder outputs.
|
|
19
|
+
* @returns A {@link MessageAccumulator} for UIMessageChunk/UIMessage.
|
|
20
|
+
*/
|
|
21
|
+
export declare const createAccumulator: () => MessageAccumulator<AI.UIMessageChunk, AI.UIMessage>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DecoderCoreOptions } from '../../core/codec/decoder.js';
|
|
2
|
+
import { StreamDecoder } from '../../core/codec/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vercel AI SDK Decoder
|
|
5
|
+
*
|
|
6
|
+
* Maps Ably inbound messages to DecoderOutput<UIMessageChunk, UIMessage>[].
|
|
7
|
+
*
|
|
8
|
+
* Delegates action dispatch and serial tracking to the decoder core.
|
|
9
|
+
* This file contains only the Vercel-specific event building, discrete
|
|
10
|
+
* event decoding, and synthetic event emission.
|
|
11
|
+
*
|
|
12
|
+
* Domain-specific headers use the `x-domain-` prefix. Transport-level
|
|
13
|
+
* headers use the `x-ably-` prefix.
|
|
14
|
+
*/
|
|
15
|
+
import type * as AI from 'ai';
|
|
16
|
+
/**
|
|
17
|
+
* Create a Vercel AI SDK decoder that maps Ably messages to UIMessageChunk
|
|
18
|
+
* events and UIMessage objects via the decoder core.
|
|
19
|
+
* @param options - Decoder configuration (callbacks, logger).
|
|
20
|
+
* @returns A {@link StreamDecoder} for UIMessageChunk/UIMessage.
|
|
21
|
+
*/
|
|
22
|
+
export declare const createDecoder: (options?: DecoderCoreOptions) => StreamDecoder<AI.UIMessageChunk, AI.UIMessage>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { EncoderCoreOptions } from '../../core/codec/encoder.js';
|
|
2
|
+
import { ChannelWriter, StreamEncoder } from '../../core/codec/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Vercel AI SDK Encoder
|
|
5
|
+
*
|
|
6
|
+
* Maps UIMessageChunk events and complete UIMessage objects to Ably channel
|
|
7
|
+
* operations (publish, appendMessage, updateMessage).
|
|
8
|
+
*
|
|
9
|
+
* Delegates the message append lifecycle (publish, append, close, abort,
|
|
10
|
+
* flush/recover) to the encoder core. This file contains only the
|
|
11
|
+
* Vercel-specific event-to-operation mapping.
|
|
12
|
+
*
|
|
13
|
+
* Domain-specific headers use the `x-domain-` prefix to distinguish them
|
|
14
|
+
* from transport-level `x-ably-` headers.
|
|
15
|
+
*
|
|
16
|
+
* ## Core operations and domain headers
|
|
17
|
+
*
|
|
18
|
+
* Each UIMessageChunk maps to exactly one encoder core operation. Domain
|
|
19
|
+
* headers are passed to every operation that accepts them — the core handles
|
|
20
|
+
* merging, persistence, and deduplication:
|
|
21
|
+
*
|
|
22
|
+
* - **`startStream`**: Opens a message stream. Domain headers become
|
|
23
|
+
* "persistent headers" — the core repeats them on every subsequent append.
|
|
24
|
+
* - **`appendStream`**: Appends a text delta. Data only, no headers parameter.
|
|
25
|
+
* The core automatically carries persistent headers from start.
|
|
26
|
+
* - **`closeStream`**: Closes the stream. Pass all domain headers from the
|
|
27
|
+
* chunk — the core merges them on top of persistent headers, so changed
|
|
28
|
+
* values (e.g. updated providerMetadata) are picked up and unchanged
|
|
29
|
+
* values are harmlessly deduplicated.
|
|
30
|
+
* - **`publishDiscrete`**: Publishes a standalone message. All domain headers
|
|
31
|
+
* for the chunk are passed directly.
|
|
32
|
+
*/
|
|
33
|
+
import type * as AI from 'ai';
|
|
34
|
+
/**
|
|
35
|
+
* Create a Vercel AI SDK encoder that maps UIMessageChunk events to Ably
|
|
36
|
+
* channel operations via the encoder core.
|
|
37
|
+
* @param writer - The channel writer to publish messages through.
|
|
38
|
+
* @param options - Encoder configuration (clientId, extras, hooks, logger).
|
|
39
|
+
* @returns A {@link StreamEncoder} for UIMessageChunk/UIMessage.
|
|
40
|
+
*/
|
|
41
|
+
export declare const createEncoder: (writer: ChannelWriter, options?: EncoderCoreOptions) => StreamEncoder<AI.UIMessageChunk, AI.UIMessage>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Codec } from '../../core/codec/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Vercel AI SDK codec — maps UIMessageChunk events and UIMessage objects
|
|
4
|
+
* to/from native Ably message primitives (publish, append, update, delete).
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { UIMessageCodec } from '@ably/ai-transport/vercel';
|
|
8
|
+
*
|
|
9
|
+
* const encoder = UIMessageCodec.createEncoder(writer, options);
|
|
10
|
+
* const decoder = UIMessageCodec.createDecoder();
|
|
11
|
+
* const accumulator = UIMessageCodec.createAccumulator();
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
import type * as AI from 'ai';
|
|
15
|
+
/**
|
|
16
|
+
* Vercel AI SDK codec implementing `Codec<UIMessageChunk, UIMessage>`.
|
|
17
|
+
*
|
|
18
|
+
* Provides factory methods for creating encoders, decoders, and accumulators
|
|
19
|
+
* that map between Vercel's UIMessageChunk/UIMessage types and Ably's native
|
|
20
|
+
* message primitives.
|
|
21
|
+
*/
|
|
22
|
+
export declare const UIMessageCodec: Codec<AI.UIMessageChunk, AI.UIMessage>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { UIMessageCodec } from './codec/index.js';
|
|
2
|
+
export type { ChatTransport, ChatTransportOptions, SendMessagesRequestContext, VercelClientTransportOptions, VercelServerTransportOptions, } from './transport/index.js';
|
|
3
|
+
export { createChatTransport, createClientTransport, createServerTransport } from './transport/index.js';
|