@tanstack/ai 0.0.3 → 0.2.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 +26 -0
- package/dist/esm/activities/chat/adapter.d.ts +100 -0
- package/dist/esm/activities/chat/adapter.js +14 -0
- package/dist/esm/activities/chat/adapter.js.map +1 -0
- package/dist/esm/{utilities → activities/chat}/agent-loop-strategies.d.ts +4 -4
- package/dist/esm/activities/chat/agent-loop-strategies.js.map +1 -0
- package/dist/esm/activities/chat/index.d.ts +166 -0
- package/dist/esm/{core/chat.js → activities/chat/index.js} +131 -33
- package/dist/esm/activities/chat/index.js.map +1 -0
- package/dist/esm/{message-converters.d.ts → activities/chat/messages.d.ts} +1 -1
- package/dist/esm/{message-converters.js → activities/chat/messages.js} +7 -7
- package/dist/esm/activities/chat/messages.js.map +1 -0
- package/dist/esm/activities/chat/stream/json-parser.js.map +1 -0
- package/dist/esm/{stream → activities/chat/stream}/message-updaters.d.ts +1 -1
- package/dist/esm/activities/chat/stream/message-updaters.js.map +1 -0
- package/dist/esm/{stream → activities/chat/stream}/processor.d.ts +1 -1
- package/dist/esm/{stream → activities/chat/stream}/processor.js +1 -1
- package/dist/esm/activities/chat/stream/processor.js.map +1 -0
- package/dist/esm/activities/chat/stream/strategies.js.map +1 -0
- package/dist/esm/{stream → activities/chat/stream}/types.d.ts +2 -9
- package/dist/esm/activities/chat/tools/schema-converter.d.ts +116 -0
- package/dist/esm/activities/chat/tools/schema-converter.js +115 -0
- package/dist/esm/activities/chat/tools/schema-converter.js.map +1 -0
- package/dist/esm/{tools → activities/chat/tools}/tool-calls.d.ts +1 -1
- package/dist/esm/{tools → activities/chat/tools}/tool-calls.js +23 -30
- package/dist/esm/activities/chat/tools/tool-calls.js.map +1 -0
- package/dist/esm/{tools → activities/chat/tools}/tool-definition.d.ts +22 -18
- package/dist/esm/activities/chat/tools/tool-definition.js.map +1 -0
- package/dist/esm/activities/generateImage/adapter.d.ts +68 -0
- package/dist/esm/activities/generateImage/adapter.js +14 -0
- package/dist/esm/activities/generateImage/adapter.js.map +1 -0
- package/dist/esm/activities/generateImage/index.d.ts +89 -0
- package/dist/esm/activities/generateImage/index.js +15 -0
- package/dist/esm/activities/generateImage/index.js.map +1 -0
- package/dist/esm/activities/generateSpeech/adapter.d.ts +62 -0
- package/dist/esm/activities/generateSpeech/adapter.js +14 -0
- package/dist/esm/activities/generateSpeech/adapter.js.map +1 -0
- package/dist/esm/activities/generateSpeech/index.d.ts +69 -0
- package/dist/esm/activities/generateSpeech/index.js +15 -0
- package/dist/esm/activities/generateSpeech/index.js.map +1 -0
- package/dist/esm/activities/generateTranscription/adapter.d.ts +62 -0
- package/dist/esm/activities/generateTranscription/adapter.js +14 -0
- package/dist/esm/activities/generateTranscription/adapter.js.map +1 -0
- package/dist/esm/activities/generateTranscription/index.d.ts +71 -0
- package/dist/esm/activities/generateTranscription/index.js +15 -0
- package/dist/esm/activities/generateTranscription/index.js.map +1 -0
- package/dist/esm/activities/generateVideo/adapter.d.ts +80 -0
- package/dist/esm/activities/generateVideo/adapter.js +14 -0
- package/dist/esm/activities/generateVideo/adapter.js.map +1 -0
- package/dist/esm/activities/generateVideo/index.d.ts +136 -0
- package/dist/esm/activities/generateVideo/index.js +47 -0
- package/dist/esm/activities/generateVideo/index.js.map +1 -0
- package/dist/esm/activities/index.d.ts +22 -0
- package/dist/esm/activities/index.js +34 -0
- package/dist/esm/activities/index.js.map +1 -0
- package/dist/esm/activities/summarize/adapter.d.ts +74 -0
- package/dist/esm/activities/summarize/adapter.js +14 -0
- package/dist/esm/activities/summarize/adapter.js.map +1 -0
- package/dist/esm/activities/summarize/index.d.ts +100 -0
- package/dist/esm/activities/summarize/index.js +90 -0
- package/dist/esm/activities/summarize/index.js.map +1 -0
- package/dist/esm/event-client.d.ts +4 -18
- package/dist/esm/event-client.js.map +1 -1
- package/dist/esm/index.d.ts +16 -14
- package/dist/esm/index.js +29 -20
- package/dist/esm/stream-to-response.d.ts +95 -0
- package/dist/esm/stream-to-response.js +118 -0
- package/dist/esm/stream-to-response.js.map +1 -0
- package/dist/esm/types.d.ts +370 -133
- package/package.json +7 -6
- package/src/activities/chat/adapter.ts +150 -0
- package/src/{utilities → activities/chat}/agent-loop-strategies.ts +4 -4
- package/src/{core/chat.ts → activities/chat/index.ts} +435 -79
- package/src/{message-converters.ts → activities/chat/messages.ts} +10 -13
- package/src/{stream → activities/chat/stream}/message-updaters.ts +1 -1
- package/src/{stream → activities/chat/stream}/processor.ts +2 -5
- package/src/{stream → activities/chat/stream}/types.ts +8 -18
- package/src/activities/chat/tools/schema-converter.ts +332 -0
- package/src/{tools → activities/chat/tools}/tool-calls.ts +63 -44
- package/src/{tools → activities/chat/tools}/tool-definition.ts +51 -38
- package/src/activities/generateImage/adapter.ts +104 -0
- package/src/activities/generateImage/index.ts +162 -0
- package/src/activities/generateSpeech/adapter.ts +87 -0
- package/src/activities/generateSpeech/index.ts +122 -0
- package/src/activities/generateTranscription/adapter.ts +89 -0
- package/src/activities/generateTranscription/index.ts +132 -0
- package/src/activities/generateVideo/adapter.ts +116 -0
- package/src/activities/generateVideo/index.ts +261 -0
- package/src/activities/index.ts +164 -0
- package/src/activities/summarize/adapter.ts +107 -0
- package/src/activities/summarize/index.ts +287 -0
- package/src/event-client.ts +5 -21
- package/src/index.ts +60 -15
- package/src/stream-to-response.ts +237 -0
- package/src/types.ts +429 -284
- package/dist/esm/base-adapter.d.ts +0 -36
- package/dist/esm/base-adapter.js +0 -12
- package/dist/esm/base-adapter.js.map +0 -1
- package/dist/esm/core/chat-common-options.d.ts +0 -52
- package/dist/esm/core/chat.d.ts +0 -30
- package/dist/esm/core/chat.js.map +0 -1
- package/dist/esm/core/embedding.d.ts +0 -8
- package/dist/esm/core/embedding.js +0 -33
- package/dist/esm/core/embedding.js.map +0 -1
- package/dist/esm/core/summarize.d.ts +0 -9
- package/dist/esm/core/summarize.js +0 -36
- package/dist/esm/core/summarize.js.map +0 -1
- package/dist/esm/message-converters.js.map +0 -1
- package/dist/esm/stream/json-parser.js.map +0 -1
- package/dist/esm/stream/message-updaters.js.map +0 -1
- package/dist/esm/stream/processor.js.map +0 -1
- package/dist/esm/stream/strategies.js.map +0 -1
- package/dist/esm/tools/tool-calls.js.map +0 -1
- package/dist/esm/tools/tool-definition.js.map +0 -1
- package/dist/esm/tools/zod-converter.d.ts +0 -30
- package/dist/esm/tools/zod-converter.js +0 -36
- package/dist/esm/tools/zod-converter.js.map +0 -1
- package/dist/esm/utilities/agent-loop-strategies.js.map +0 -1
- package/dist/esm/utilities/chat-options.d.ts +0 -6
- package/dist/esm/utilities/chat-options.js +0 -7
- package/dist/esm/utilities/chat-options.js.map +0 -1
- package/dist/esm/utilities/messages.d.ts +0 -30
- package/dist/esm/utilities/messages.js +0 -7
- package/dist/esm/utilities/messages.js.map +0 -1
- package/dist/esm/utilities/stream-to-response.d.ts +0 -48
- package/dist/esm/utilities/stream-to-response.js +0 -62
- package/dist/esm/utilities/stream-to-response.js.map +0 -1
- package/src/base-adapter.ts +0 -86
- package/src/core/chat-common-options.ts +0 -55
- package/src/core/embedding.ts +0 -54
- package/src/core/summarize.ts +0 -56
- package/src/tools/zod-converter.ts +0 -85
- package/src/utilities/chat-options.ts +0 -35
- package/src/utilities/messages.ts +0 -63
- package/src/utilities/stream-to-response.ts +0 -116
- /package/dist/esm/{utilities → activities/chat}/agent-loop-strategies.js +0 -0
- /package/dist/esm/{stream → activities/chat/stream}/index.d.ts +0 -0
- /package/dist/esm/{stream → activities/chat/stream}/json-parser.d.ts +0 -0
- /package/dist/esm/{stream → activities/chat/stream}/json-parser.js +0 -0
- /package/dist/esm/{stream → activities/chat/stream}/message-updaters.js +0 -0
- /package/dist/esm/{stream → activities/chat/stream}/strategies.d.ts +0 -0
- /package/dist/esm/{stream → activities/chat/stream}/strategies.js +0 -0
- /package/dist/esm/{tools → activities/chat/tools}/tool-definition.js +0 -0
- /package/src/{stream → activities/chat/stream}/index.ts +0 -0
- /package/src/{stream → activities/chat/stream}/json-parser.ts +0 -0
- /package/src/{stream → activities/chat/stream}/strategies.ts +0 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
DefaultMessageMetadataByModality,
|
|
3
|
+
JSONSchema,
|
|
4
|
+
Modality,
|
|
5
|
+
StreamChunk,
|
|
6
|
+
TextOptions,
|
|
7
|
+
} from '../../types'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for adapter instances
|
|
11
|
+
*/
|
|
12
|
+
export interface TextAdapterConfig {
|
|
13
|
+
apiKey?: string
|
|
14
|
+
baseUrl?: string
|
|
15
|
+
timeout?: number
|
|
16
|
+
maxRetries?: number
|
|
17
|
+
headers?: Record<string, string>
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Options for structured output generation
|
|
22
|
+
*/
|
|
23
|
+
export interface StructuredOutputOptions<TProviderOptions extends object> {
|
|
24
|
+
/** Text options for the request */
|
|
25
|
+
chatOptions: TextOptions<TProviderOptions>
|
|
26
|
+
/** JSON Schema for structured output - already converted from Zod in the ai layer */
|
|
27
|
+
outputSchema: JSONSchema
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Result from structured output generation
|
|
32
|
+
*/
|
|
33
|
+
export interface StructuredOutputResult<T = unknown> {
|
|
34
|
+
/** The parsed data conforming to the schema */
|
|
35
|
+
data: T
|
|
36
|
+
/** The raw text response from the model before parsing */
|
|
37
|
+
rawText: string
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Text adapter interface with pre-resolved generics.
|
|
42
|
+
*
|
|
43
|
+
* An adapter is created by a provider function: `provider('model')` → `adapter`
|
|
44
|
+
* All type resolution happens at the provider call site, not in this interface.
|
|
45
|
+
*
|
|
46
|
+
* Generic parameters:
|
|
47
|
+
* - TModel: The specific model name (e.g., 'gpt-4o')
|
|
48
|
+
* - TProviderOptions: Provider-specific options for this model (already resolved)
|
|
49
|
+
* - TInputModalities: Supported input modalities for this model (already resolved)
|
|
50
|
+
* - TMessageMetadata: Metadata types for content parts (already resolved)
|
|
51
|
+
*/
|
|
52
|
+
export interface TextAdapter<
|
|
53
|
+
TModel extends string,
|
|
54
|
+
TProviderOptions extends Record<string, any>,
|
|
55
|
+
TInputModalities extends ReadonlyArray<Modality>,
|
|
56
|
+
TMessageMetadataByModality extends DefaultMessageMetadataByModality,
|
|
57
|
+
> {
|
|
58
|
+
/** Discriminator for adapter kind */
|
|
59
|
+
readonly kind: 'text'
|
|
60
|
+
/** Provider name identifier (e.g., 'openai', 'anthropic') */
|
|
61
|
+
readonly name: string
|
|
62
|
+
/** The model this adapter is configured for */
|
|
63
|
+
readonly model: TModel
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @internal Type-only properties for inference. Not assigned at runtime.
|
|
67
|
+
*/
|
|
68
|
+
'~types': {
|
|
69
|
+
providerOptions: TProviderOptions
|
|
70
|
+
inputModalities: TInputModalities
|
|
71
|
+
messageMetadataByModality: TMessageMetadataByModality
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Stream text completions from the model
|
|
76
|
+
*/
|
|
77
|
+
chatStream: (
|
|
78
|
+
options: TextOptions<TProviderOptions>,
|
|
79
|
+
) => AsyncIterable<StreamChunk>
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Generate structured output using the provider's native structured output API.
|
|
83
|
+
* This method uses stream: false and sends the JSON schema to the provider
|
|
84
|
+
* to ensure the response conforms to the expected structure.
|
|
85
|
+
*
|
|
86
|
+
* @param options - Structured output options containing chat options and JSON schema
|
|
87
|
+
* @returns Promise with the raw data (validation is done in the chat function)
|
|
88
|
+
*/
|
|
89
|
+
structuredOutput: (
|
|
90
|
+
options: StructuredOutputOptions<TProviderOptions>,
|
|
91
|
+
) => Promise<StructuredOutputResult<unknown>>
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* A TextAdapter with any/unknown type parameters.
|
|
96
|
+
* Useful as a constraint in generic functions and interfaces.
|
|
97
|
+
*/
|
|
98
|
+
export type AnyTextAdapter = TextAdapter<any, any, any, any>
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Abstract base class for text adapters.
|
|
102
|
+
* Extend this class to implement a text adapter for a specific provider.
|
|
103
|
+
*
|
|
104
|
+
* Generic parameters match TextAdapter - all pre-resolved by the provider function.
|
|
105
|
+
*/
|
|
106
|
+
export abstract class BaseTextAdapter<
|
|
107
|
+
TModel extends string,
|
|
108
|
+
TProviderOptions extends Record<string, any>,
|
|
109
|
+
TInputModalities extends ReadonlyArray<Modality>,
|
|
110
|
+
TMessageMetadataByModality extends DefaultMessageMetadataByModality,
|
|
111
|
+
> implements TextAdapter<
|
|
112
|
+
TModel,
|
|
113
|
+
TProviderOptions,
|
|
114
|
+
TInputModalities,
|
|
115
|
+
TMessageMetadataByModality
|
|
116
|
+
> {
|
|
117
|
+
readonly kind = 'text' as const
|
|
118
|
+
abstract readonly name: string
|
|
119
|
+
readonly model: TModel
|
|
120
|
+
|
|
121
|
+
// Type-only property - never assigned at runtime
|
|
122
|
+
declare '~types': {
|
|
123
|
+
providerOptions: TProviderOptions
|
|
124
|
+
inputModalities: TInputModalities
|
|
125
|
+
messageMetadataByModality: TMessageMetadataByModality
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
protected config: TextAdapterConfig
|
|
129
|
+
|
|
130
|
+
constructor(config: TextAdapterConfig = {}, model: TModel) {
|
|
131
|
+
this.config = config
|
|
132
|
+
this.model = model
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
abstract chatStream(
|
|
136
|
+
options: TextOptions<TProviderOptions>,
|
|
137
|
+
): AsyncIterable<StreamChunk>
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Generate structured output using the provider's native structured output API.
|
|
141
|
+
* Concrete implementations should override this to use provider-specific structured output.
|
|
142
|
+
*/
|
|
143
|
+
abstract structuredOutput(
|
|
144
|
+
options: StructuredOutputOptions<TProviderOptions>,
|
|
145
|
+
): Promise<StructuredOutputResult<unknown>>
|
|
146
|
+
|
|
147
|
+
protected generateId(): string {
|
|
148
|
+
return `${this.name}-${Date.now()}-${Math.random().toString(36).substring(7)}`
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentLoopStrategy } from '
|
|
1
|
+
import type { AgentLoopStrategy } from '../../types'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Creates a strategy that continues for a maximum number of iterations
|
|
@@ -9,7 +9,7 @@ import type { AgentLoopStrategy } from '../types'
|
|
|
9
9
|
* @example
|
|
10
10
|
* ```typescript
|
|
11
11
|
* const stream = chat({
|
|
12
|
-
* adapter:
|
|
12
|
+
* adapter: openaiText(),
|
|
13
13
|
* model: "gpt-4o",
|
|
14
14
|
* messages: [...],
|
|
15
15
|
* tools: [weatherTool],
|
|
@@ -30,7 +30,7 @@ export function maxIterations(max: number): AgentLoopStrategy {
|
|
|
30
30
|
* @example
|
|
31
31
|
* ```typescript
|
|
32
32
|
* const stream = chat({
|
|
33
|
-
* adapter:
|
|
33
|
+
* adapter: openaiText(),
|
|
34
34
|
* model: "gpt-4o",
|
|
35
35
|
* messages: [...],
|
|
36
36
|
* tools: [weatherTool],
|
|
@@ -65,7 +65,7 @@ export function untilFinishReason(
|
|
|
65
65
|
* @example
|
|
66
66
|
* ```typescript
|
|
67
67
|
* const stream = chat({
|
|
68
|
-
* adapter:
|
|
68
|
+
* adapter: openaiText(),
|
|
69
69
|
* model: "gpt-4o",
|
|
70
70
|
* messages: [...],
|
|
71
71
|
* tools: [weatherTool],
|