@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.
Files changed (146) hide show
  1. package/README.md +26 -0
  2. package/dist/esm/activities/chat/adapter.d.ts +100 -0
  3. package/dist/esm/activities/chat/adapter.js +14 -0
  4. package/dist/esm/activities/chat/adapter.js.map +1 -0
  5. package/dist/esm/{utilities → activities/chat}/agent-loop-strategies.d.ts +4 -4
  6. package/dist/esm/activities/chat/agent-loop-strategies.js.map +1 -0
  7. package/dist/esm/activities/chat/index.d.ts +166 -0
  8. package/dist/esm/{core/chat.js → activities/chat/index.js} +131 -33
  9. package/dist/esm/activities/chat/index.js.map +1 -0
  10. package/dist/esm/{message-converters.d.ts → activities/chat/messages.d.ts} +1 -1
  11. package/dist/esm/{message-converters.js → activities/chat/messages.js} +7 -7
  12. package/dist/esm/activities/chat/messages.js.map +1 -0
  13. package/dist/esm/activities/chat/stream/json-parser.js.map +1 -0
  14. package/dist/esm/{stream → activities/chat/stream}/message-updaters.d.ts +1 -1
  15. package/dist/esm/activities/chat/stream/message-updaters.js.map +1 -0
  16. package/dist/esm/{stream → activities/chat/stream}/processor.d.ts +1 -1
  17. package/dist/esm/{stream → activities/chat/stream}/processor.js +1 -1
  18. package/dist/esm/activities/chat/stream/processor.js.map +1 -0
  19. package/dist/esm/activities/chat/stream/strategies.js.map +1 -0
  20. package/dist/esm/{stream → activities/chat/stream}/types.d.ts +2 -9
  21. package/dist/esm/activities/chat/tools/schema-converter.d.ts +116 -0
  22. package/dist/esm/activities/chat/tools/schema-converter.js +115 -0
  23. package/dist/esm/activities/chat/tools/schema-converter.js.map +1 -0
  24. package/dist/esm/{tools → activities/chat/tools}/tool-calls.d.ts +1 -1
  25. package/dist/esm/{tools → activities/chat/tools}/tool-calls.js +23 -30
  26. package/dist/esm/activities/chat/tools/tool-calls.js.map +1 -0
  27. package/dist/esm/{tools → activities/chat/tools}/tool-definition.d.ts +22 -18
  28. package/dist/esm/activities/chat/tools/tool-definition.js.map +1 -0
  29. package/dist/esm/activities/generateImage/adapter.d.ts +68 -0
  30. package/dist/esm/activities/generateImage/adapter.js +14 -0
  31. package/dist/esm/activities/generateImage/adapter.js.map +1 -0
  32. package/dist/esm/activities/generateImage/index.d.ts +89 -0
  33. package/dist/esm/activities/generateImage/index.js +15 -0
  34. package/dist/esm/activities/generateImage/index.js.map +1 -0
  35. package/dist/esm/activities/generateSpeech/adapter.d.ts +62 -0
  36. package/dist/esm/activities/generateSpeech/adapter.js +14 -0
  37. package/dist/esm/activities/generateSpeech/adapter.js.map +1 -0
  38. package/dist/esm/activities/generateSpeech/index.d.ts +69 -0
  39. package/dist/esm/activities/generateSpeech/index.js +15 -0
  40. package/dist/esm/activities/generateSpeech/index.js.map +1 -0
  41. package/dist/esm/activities/generateTranscription/adapter.d.ts +62 -0
  42. package/dist/esm/activities/generateTranscription/adapter.js +14 -0
  43. package/dist/esm/activities/generateTranscription/adapter.js.map +1 -0
  44. package/dist/esm/activities/generateTranscription/index.d.ts +71 -0
  45. package/dist/esm/activities/generateTranscription/index.js +15 -0
  46. package/dist/esm/activities/generateTranscription/index.js.map +1 -0
  47. package/dist/esm/activities/generateVideo/adapter.d.ts +80 -0
  48. package/dist/esm/activities/generateVideo/adapter.js +14 -0
  49. package/dist/esm/activities/generateVideo/adapter.js.map +1 -0
  50. package/dist/esm/activities/generateVideo/index.d.ts +136 -0
  51. package/dist/esm/activities/generateVideo/index.js +47 -0
  52. package/dist/esm/activities/generateVideo/index.js.map +1 -0
  53. package/dist/esm/activities/index.d.ts +22 -0
  54. package/dist/esm/activities/index.js +34 -0
  55. package/dist/esm/activities/index.js.map +1 -0
  56. package/dist/esm/activities/summarize/adapter.d.ts +74 -0
  57. package/dist/esm/activities/summarize/adapter.js +14 -0
  58. package/dist/esm/activities/summarize/adapter.js.map +1 -0
  59. package/dist/esm/activities/summarize/index.d.ts +100 -0
  60. package/dist/esm/activities/summarize/index.js +90 -0
  61. package/dist/esm/activities/summarize/index.js.map +1 -0
  62. package/dist/esm/event-client.d.ts +4 -18
  63. package/dist/esm/event-client.js.map +1 -1
  64. package/dist/esm/index.d.ts +16 -14
  65. package/dist/esm/index.js +29 -20
  66. package/dist/esm/stream-to-response.d.ts +95 -0
  67. package/dist/esm/stream-to-response.js +118 -0
  68. package/dist/esm/stream-to-response.js.map +1 -0
  69. package/dist/esm/types.d.ts +370 -133
  70. package/package.json +7 -6
  71. package/src/activities/chat/adapter.ts +150 -0
  72. package/src/{utilities → activities/chat}/agent-loop-strategies.ts +4 -4
  73. package/src/{core/chat.ts → activities/chat/index.ts} +435 -79
  74. package/src/{message-converters.ts → activities/chat/messages.ts} +10 -13
  75. package/src/{stream → activities/chat/stream}/message-updaters.ts +1 -1
  76. package/src/{stream → activities/chat/stream}/processor.ts +2 -5
  77. package/src/{stream → activities/chat/stream}/types.ts +8 -18
  78. package/src/activities/chat/tools/schema-converter.ts +332 -0
  79. package/src/{tools → activities/chat/tools}/tool-calls.ts +63 -44
  80. package/src/{tools → activities/chat/tools}/tool-definition.ts +51 -38
  81. package/src/activities/generateImage/adapter.ts +104 -0
  82. package/src/activities/generateImage/index.ts +162 -0
  83. package/src/activities/generateSpeech/adapter.ts +87 -0
  84. package/src/activities/generateSpeech/index.ts +122 -0
  85. package/src/activities/generateTranscription/adapter.ts +89 -0
  86. package/src/activities/generateTranscription/index.ts +132 -0
  87. package/src/activities/generateVideo/adapter.ts +116 -0
  88. package/src/activities/generateVideo/index.ts +261 -0
  89. package/src/activities/index.ts +164 -0
  90. package/src/activities/summarize/adapter.ts +107 -0
  91. package/src/activities/summarize/index.ts +287 -0
  92. package/src/event-client.ts +5 -21
  93. package/src/index.ts +60 -15
  94. package/src/stream-to-response.ts +237 -0
  95. package/src/types.ts +429 -284
  96. package/dist/esm/base-adapter.d.ts +0 -36
  97. package/dist/esm/base-adapter.js +0 -12
  98. package/dist/esm/base-adapter.js.map +0 -1
  99. package/dist/esm/core/chat-common-options.d.ts +0 -52
  100. package/dist/esm/core/chat.d.ts +0 -30
  101. package/dist/esm/core/chat.js.map +0 -1
  102. package/dist/esm/core/embedding.d.ts +0 -8
  103. package/dist/esm/core/embedding.js +0 -33
  104. package/dist/esm/core/embedding.js.map +0 -1
  105. package/dist/esm/core/summarize.d.ts +0 -9
  106. package/dist/esm/core/summarize.js +0 -36
  107. package/dist/esm/core/summarize.js.map +0 -1
  108. package/dist/esm/message-converters.js.map +0 -1
  109. package/dist/esm/stream/json-parser.js.map +0 -1
  110. package/dist/esm/stream/message-updaters.js.map +0 -1
  111. package/dist/esm/stream/processor.js.map +0 -1
  112. package/dist/esm/stream/strategies.js.map +0 -1
  113. package/dist/esm/tools/tool-calls.js.map +0 -1
  114. package/dist/esm/tools/tool-definition.js.map +0 -1
  115. package/dist/esm/tools/zod-converter.d.ts +0 -30
  116. package/dist/esm/tools/zod-converter.js +0 -36
  117. package/dist/esm/tools/zod-converter.js.map +0 -1
  118. package/dist/esm/utilities/agent-loop-strategies.js.map +0 -1
  119. package/dist/esm/utilities/chat-options.d.ts +0 -6
  120. package/dist/esm/utilities/chat-options.js +0 -7
  121. package/dist/esm/utilities/chat-options.js.map +0 -1
  122. package/dist/esm/utilities/messages.d.ts +0 -30
  123. package/dist/esm/utilities/messages.js +0 -7
  124. package/dist/esm/utilities/messages.js.map +0 -1
  125. package/dist/esm/utilities/stream-to-response.d.ts +0 -48
  126. package/dist/esm/utilities/stream-to-response.js +0 -62
  127. package/dist/esm/utilities/stream-to-response.js.map +0 -1
  128. package/src/base-adapter.ts +0 -86
  129. package/src/core/chat-common-options.ts +0 -55
  130. package/src/core/embedding.ts +0 -54
  131. package/src/core/summarize.ts +0 -56
  132. package/src/tools/zod-converter.ts +0 -85
  133. package/src/utilities/chat-options.ts +0 -35
  134. package/src/utilities/messages.ts +0 -63
  135. package/src/utilities/stream-to-response.ts +0 -116
  136. /package/dist/esm/{utilities → activities/chat}/agent-loop-strategies.js +0 -0
  137. /package/dist/esm/{stream → activities/chat/stream}/index.d.ts +0 -0
  138. /package/dist/esm/{stream → activities/chat/stream}/json-parser.d.ts +0 -0
  139. /package/dist/esm/{stream → activities/chat/stream}/json-parser.js +0 -0
  140. /package/dist/esm/{stream → activities/chat/stream}/message-updaters.js +0 -0
  141. /package/dist/esm/{stream → activities/chat/stream}/strategies.d.ts +0 -0
  142. /package/dist/esm/{stream → activities/chat/stream}/strategies.js +0 -0
  143. /package/dist/esm/{tools → activities/chat/tools}/tool-definition.js +0 -0
  144. /package/src/{stream → activities/chat/stream}/index.ts +0 -0
  145. /package/src/{stream → activities/chat/stream}/json-parser.ts +0 -0
  146. /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 '../types'
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: openai(),
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: openai(),
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: openai(),
68
+ * adapter: openaiText(),
69
69
  * model: "gpt-4o",
70
70
  * messages: [...],
71
71
  * tools: [weatherTool],