@tanstack/ai 0.36.0 → 0.38.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 (215) hide show
  1. package/dist/esm/activities/chat/adapter.d.ts +163 -0
  2. package/dist/esm/activities/chat/adapter.js +17 -0
  3. package/dist/esm/activities/chat/adapter.js.map +1 -0
  4. package/dist/esm/activities/chat/agent-loop-strategies.d.ts +59 -0
  5. package/dist/esm/activities/chat/agent-loop-strategies.js +23 -0
  6. package/dist/esm/activities/chat/agent-loop-strategies.js.map +1 -0
  7. package/dist/esm/activities/chat/index.d.ts +270 -0
  8. package/dist/esm/activities/chat/index.js +1724 -0
  9. package/dist/esm/activities/chat/index.js.map +1 -0
  10. package/dist/esm/activities/chat/mcp/manager.d.ts +25 -0
  11. package/dist/esm/activities/chat/mcp/manager.js +80 -0
  12. package/dist/esm/activities/chat/mcp/manager.js.map +1 -0
  13. package/dist/esm/activities/chat/mcp/types.d.ts +78 -0
  14. package/dist/esm/activities/chat/messages.d.ts +78 -0
  15. package/dist/esm/activities/chat/messages.js +374 -0
  16. package/dist/esm/activities/chat/messages.js.map +1 -0
  17. package/dist/esm/activities/chat/middleware/builder.d.ts +46 -0
  18. package/dist/esm/activities/chat/middleware/builder.js +17 -0
  19. package/dist/esm/activities/chat/middleware/builder.js.map +1 -0
  20. package/dist/esm/activities/chat/middleware/capabilities.d.ts +93 -0
  21. package/dist/esm/activities/chat/middleware/capabilities.js +45 -0
  22. package/dist/esm/activities/chat/middleware/capabilities.js.map +1 -0
  23. package/dist/esm/activities/chat/middleware/compose.d.ts +87 -0
  24. package/dist/esm/activities/chat/middleware/compose.js +510 -0
  25. package/dist/esm/activities/chat/middleware/compose.js.map +1 -0
  26. package/dist/esm/activities/chat/middleware/define.d.ts +20 -0
  27. package/dist/esm/activities/chat/middleware/define.js +7 -0
  28. package/dist/esm/activities/chat/middleware/define.js.map +1 -0
  29. package/dist/esm/activities/chat/middleware/index.d.ts +10 -0
  30. package/dist/esm/activities/chat/middleware/tool-cache-middleware.d.ts +89 -0
  31. package/dist/esm/activities/chat/middleware/tool-cache-middleware.js +76 -0
  32. package/dist/esm/activities/chat/middleware/tool-cache-middleware.js.map +1 -0
  33. package/dist/esm/activities/chat/middleware/types.d.ts +405 -0
  34. package/dist/esm/activities/chat/middleware/validate.d.ts +19 -0
  35. package/dist/esm/activities/chat/middleware/validate.js +30 -0
  36. package/dist/esm/activities/chat/middleware/validate.js.map +1 -0
  37. package/dist/esm/activities/chat/runtime-context-types.d.ts +43 -0
  38. package/dist/esm/activities/chat/stream/index.d.ts +11 -0
  39. package/dist/esm/activities/chat/stream/json-parser.d.ts +38 -0
  40. package/dist/esm/activities/chat/stream/json-parser.js +28 -0
  41. package/dist/esm/activities/chat/stream/json-parser.js.map +1 -0
  42. package/dist/esm/activities/chat/stream/message-updaters.d.ts +81 -0
  43. package/dist/esm/activities/chat/stream/message-updaters.js +253 -0
  44. package/dist/esm/activities/chat/stream/message-updaters.js.map +1 -0
  45. package/dist/esm/activities/chat/stream/processor.d.ts +439 -0
  46. package/dist/esm/activities/chat/stream/processor.js +1449 -0
  47. package/dist/esm/activities/chat/stream/processor.js.map +1 -0
  48. package/dist/esm/activities/chat/stream/strategies.d.ts +43 -0
  49. package/dist/esm/activities/chat/stream/strategies.js +54 -0
  50. package/dist/esm/activities/chat/stream/strategies.js.map +1 -0
  51. package/dist/esm/activities/chat/stream/types.d.ts +90 -0
  52. package/dist/esm/activities/chat/tools/lazy-tool-manager.d.ts +82 -0
  53. package/dist/esm/activities/chat/tools/lazy-tool-manager.js +194 -0
  54. package/dist/esm/activities/chat/tools/lazy-tool-manager.js.map +1 -0
  55. package/dist/esm/activities/chat/tools/lazy-tools.d.ts +15 -0
  56. package/dist/esm/activities/chat/tools/lazy-tools.js +16 -0
  57. package/dist/esm/activities/chat/tools/lazy-tools.js.map +1 -0
  58. package/dist/esm/activities/chat/tools/schema-converter.d.ts +140 -0
  59. package/dist/esm/activities/chat/tools/schema-converter.js +167 -0
  60. package/dist/esm/activities/chat/tools/schema-converter.js.map +1 -0
  61. package/dist/esm/activities/chat/tools/tool-calls.d.ts +145 -0
  62. package/dist/esm/activities/chat/tools/tool-calls.js +548 -0
  63. package/dist/esm/activities/chat/tools/tool-calls.js.map +1 -0
  64. package/dist/esm/activities/chat/tools/tool-definition.d.ts +135 -0
  65. package/dist/esm/activities/chat/tools/tool-definition.js +25 -0
  66. package/dist/esm/activities/chat/tools/tool-definition.js.map +1 -0
  67. package/dist/esm/activities/error-payload.d.ts +30 -0
  68. package/dist/esm/activities/error-payload.js +54 -0
  69. package/dist/esm/activities/error-payload.js.map +1 -0
  70. package/dist/esm/activities/generateAudio/adapter.d.ts +62 -0
  71. package/dist/esm/activities/generateAudio/adapter.js +16 -0
  72. package/dist/esm/activities/generateAudio/adapter.js.map +1 -0
  73. package/dist/esm/activities/generateAudio/index.d.ts +85 -0
  74. package/dist/esm/activities/generateAudio/index.js +114 -0
  75. package/dist/esm/activities/generateAudio/index.js.map +1 -0
  76. package/dist/esm/activities/generateImage/adapter.d.ts +78 -0
  77. package/dist/esm/activities/generateImage/adapter.js +16 -0
  78. package/dist/esm/activities/generateImage/adapter.js.map +1 -0
  79. package/dist/esm/activities/generateImage/index.d.ts +134 -0
  80. package/dist/esm/activities/generateImage/index.js +121 -0
  81. package/dist/esm/activities/generateImage/index.js.map +1 -0
  82. package/dist/esm/activities/generateSpeech/adapter.d.ts +62 -0
  83. package/dist/esm/activities/generateSpeech/adapter.js +16 -0
  84. package/dist/esm/activities/generateSpeech/adapter.js.map +1 -0
  85. package/dist/esm/activities/generateSpeech/index.d.ts +96 -0
  86. package/dist/esm/activities/generateSpeech/index.js +119 -0
  87. package/dist/esm/activities/generateSpeech/index.js.map +1 -0
  88. package/dist/esm/activities/generateTranscription/adapter.d.ts +62 -0
  89. package/dist/esm/activities/generateTranscription/adapter.js +16 -0
  90. package/dist/esm/activities/generateTranscription/adapter.js.map +1 -0
  91. package/dist/esm/activities/generateTranscription/index.d.ts +109 -0
  92. package/dist/esm/activities/generateTranscription/index.js +109 -0
  93. package/dist/esm/activities/generateTranscription/index.js.map +1 -0
  94. package/dist/esm/activities/generateVideo/adapter.d.ts +145 -0
  95. package/dist/esm/activities/generateVideo/adapter.js +30 -0
  96. package/dist/esm/activities/generateVideo/adapter.js.map +1 -0
  97. package/dist/esm/activities/generateVideo/index.d.ts +223 -0
  98. package/dist/esm/activities/generateVideo/index.js +295 -0
  99. package/dist/esm/activities/generateVideo/index.js.map +1 -0
  100. package/dist/esm/activities/generateVideo/snap.d.ts +14 -0
  101. package/dist/esm/activities/generateVideo/snap.js +54 -0
  102. package/dist/esm/activities/generateVideo/snap.js.map +1 -0
  103. package/dist/esm/activities/index.d.ts +27 -0
  104. package/dist/esm/activities/index.js +43 -0
  105. package/dist/esm/activities/index.js.map +1 -0
  106. package/dist/esm/activities/middleware/index.d.ts +2 -0
  107. package/dist/esm/activities/middleware/run.d.ts +20 -0
  108. package/dist/esm/activities/middleware/run.js +42 -0
  109. package/dist/esm/activities/middleware/run.js.map +1 -0
  110. package/dist/esm/activities/middleware/types.d.ts +118 -0
  111. package/dist/esm/activities/stream-generation-result.d.ts +15 -0
  112. package/dist/esm/activities/stream-generation-result.js +49 -0
  113. package/dist/esm/activities/stream-generation-result.js.map +1 -0
  114. package/dist/esm/activities/summarize/adapter.d.ts +74 -0
  115. package/dist/esm/activities/summarize/adapter.js +16 -0
  116. package/dist/esm/activities/summarize/adapter.js.map +1 -0
  117. package/dist/esm/activities/summarize/chat-stream-summarize.d.ts +45 -0
  118. package/dist/esm/activities/summarize/chat-stream-summarize.js +212 -0
  119. package/dist/esm/activities/summarize/chat-stream-summarize.js.map +1 -0
  120. package/dist/esm/activities/summarize/index.d.ts +108 -0
  121. package/dist/esm/activities/summarize/index.js +113 -0
  122. package/dist/esm/activities/summarize/index.js.map +1 -0
  123. package/dist/esm/adapter-internals.d.ts +5 -0
  124. package/dist/esm/adapter-internals.js +10 -0
  125. package/dist/esm/adapter-internals.js.map +1 -0
  126. package/dist/esm/client.d.ts +44 -0
  127. package/dist/esm/client.js +67 -0
  128. package/dist/esm/client.js.map +1 -0
  129. package/dist/esm/extend-adapter.d.ts +152 -0
  130. package/dist/esm/extend-adapter.js +21 -0
  131. package/dist/esm/extend-adapter.js.map +1 -0
  132. package/dist/esm/index.d.ts +45 -0
  133. package/dist/esm/index.js +109 -0
  134. package/dist/esm/index.js.map +1 -0
  135. package/dist/esm/logger/console-logger.d.ts +29 -0
  136. package/dist/esm/logger/console-logger.js +83 -0
  137. package/dist/esm/logger/console-logger.js.map +1 -0
  138. package/dist/esm/logger/internal-logger.d.ts +41 -0
  139. package/dist/esm/logger/internal-logger.js +86 -0
  140. package/dist/esm/logger/internal-logger.js.map +1 -0
  141. package/dist/esm/logger/resolve.d.ts +14 -0
  142. package/dist/esm/logger/resolve.js +54 -0
  143. package/dist/esm/logger/resolve.js.map +1 -0
  144. package/dist/esm/logger/types.d.ts +75 -0
  145. package/dist/esm/middlewares/content-guard.d.ts +77 -0
  146. package/dist/esm/middlewares/content-guard.js +156 -0
  147. package/dist/esm/middlewares/content-guard.js.map +1 -0
  148. package/dist/esm/middlewares/index.d.ts +2 -0
  149. package/dist/esm/middlewares/index.js +7 -0
  150. package/dist/esm/middlewares/index.js.map +1 -0
  151. package/dist/esm/middlewares/otel.d.ts +81 -0
  152. package/dist/esm/middlewares/otel.js +745 -0
  153. package/dist/esm/middlewares/otel.js.map +1 -0
  154. package/dist/esm/middlewares/tool-cache.d.ts +1 -0
  155. package/dist/esm/middlewares/usage-attributes.d.ts +24 -0
  156. package/dist/esm/middlewares/usage-attributes.js +43 -0
  157. package/dist/esm/middlewares/usage-attributes.js.map +1 -0
  158. package/dist/esm/realtime/index.d.ts +28 -0
  159. package/dist/esm/realtime/index.js +8 -0
  160. package/dist/esm/realtime/index.js.map +1 -0
  161. package/dist/esm/realtime/types.d.ts +282 -0
  162. package/dist/esm/stream-to-response.d.ts +102 -0
  163. package/dist/esm/stream-to-response.js +121 -0
  164. package/dist/esm/stream-to-response.js.map +1 -0
  165. package/dist/esm/strip-to-spec-middleware.d.ts +18 -0
  166. package/dist/esm/strip-to-spec-middleware.js +20 -0
  167. package/dist/esm/strip-to-spec-middleware.js.map +1 -0
  168. package/dist/esm/system-prompts.d.ts +66 -0
  169. package/dist/esm/system-prompts.js +23 -0
  170. package/dist/esm/system-prompts.js.map +1 -0
  171. package/dist/esm/tool-registry.d.ts +81 -0
  172. package/dist/esm/tool-registry.js +49 -0
  173. package/dist/esm/tool-registry.js.map +1 -0
  174. package/dist/esm/tools/provider-tool.d.ts +30 -0
  175. package/dist/esm/tools/provider-tool.js +7 -0
  176. package/dist/esm/tools/provider-tool.js.map +1 -0
  177. package/dist/esm/types.d.ts +1627 -0
  178. package/dist/esm/utilities/ag-ui-wire.d.ts +44 -0
  179. package/dist/esm/utilities/ag-ui-wire.js +107 -0
  180. package/dist/esm/utilities/ag-ui-wire.js.map +1 -0
  181. package/dist/esm/utilities/chat-params.d.ts +85 -0
  182. package/dist/esm/utilities/chat-params.js +100 -0
  183. package/dist/esm/utilities/chat-params.js.map +1 -0
  184. package/dist/esm/utilities/errors.d.ts +13 -0
  185. package/dist/esm/utilities/errors.js +22 -0
  186. package/dist/esm/utilities/errors.js.map +1 -0
  187. package/dist/esm/utilities/media-prompt.d.ts +35 -0
  188. package/dist/esm/utilities/media-prompt.js +43 -0
  189. package/dist/esm/utilities/media-prompt.js.map +1 -0
  190. package/dist/esm/utilities/numbers.d.ts +8 -0
  191. package/dist/esm/utilities/numbers.js +12 -0
  192. package/dist/esm/utilities/numbers.js.map +1 -0
  193. package/dist/esm/utilities/sampling-keys.d.ts +20 -0
  194. package/dist/esm/utilities/sampling-keys.js +20 -0
  195. package/dist/esm/utilities/sampling-keys.js.map +1 -0
  196. package/dist/esm/utilities/tool-result.d.ts +21 -0
  197. package/dist/esm/utilities/tool-result.js +37 -0
  198. package/dist/esm/utilities/tool-result.js.map +1 -0
  199. package/dist/esm/utilities/usage.d.ts +31 -0
  200. package/dist/esm/utilities/usage.js +11 -0
  201. package/dist/esm/utilities/usage.js.map +1 -0
  202. package/dist/esm/utils.d.ts +17 -0
  203. package/dist/esm/utils.js +20 -0
  204. package/dist/esm/utils.js.map +1 -0
  205. package/package.json +3 -3
  206. package/skills/ai-core/chat-experience/SKILL.md +30 -2
  207. package/skills/ai-core/media-generation/SKILL.md +13 -0
  208. package/skills/ai-core/tool-calling/SKILL.md +10 -3
  209. package/src/activities/chat/mcp/manager.ts +31 -1
  210. package/src/activities/chat/mcp/types.ts +23 -0
  211. package/src/activities/chat/messages.ts +5 -0
  212. package/src/activities/chat/stream/processor.ts +42 -0
  213. package/src/activities/chat/tools/tool-calls.ts +96 -2
  214. package/src/client.ts +1 -0
  215. package/src/types.ts +31 -0
@@ -0,0 +1,108 @@
1
+ import { DebugOption } from '../../logger/types.js';
2
+ import { SummarizeAdapter } from './adapter.js';
3
+ import { StreamChunk, SummarizationResult } from '../../types.js';
4
+ /** The adapter kind this activity handles */
5
+ export declare const kind: "summarize";
6
+ /** Extract provider options from a SummarizeAdapter via ~types */
7
+ export type SummarizeProviderOptions<TAdapter> = TAdapter extends SummarizeAdapter<any, any> ? TAdapter['~types']['providerOptions'] : object;
8
+ /**
9
+ * Options for the summarize activity.
10
+ * The model is extracted from the adapter's model property.
11
+ *
12
+ * @template TAdapter - The summarize adapter type
13
+ * @template TStream - Whether to stream the output
14
+ */
15
+ export interface SummarizeActivityOptions<TAdapter extends SummarizeAdapter<string, object>, TStream extends boolean = false> {
16
+ /** The summarize adapter to use (must be created with a model) */
17
+ adapter: TAdapter & {
18
+ kind: typeof kind;
19
+ };
20
+ /** The text to summarize */
21
+ text: string;
22
+ /** Maximum length of the summary (in words or characters, provider-dependent) */
23
+ maxLength?: number;
24
+ /** Style of summary to generate */
25
+ style?: 'bullet-points' | 'paragraph' | 'concise';
26
+ /** Topics or aspects to focus on in the summary */
27
+ focus?: Array<string>;
28
+ /** Provider-specific options */
29
+ modelOptions?: SummarizeProviderOptions<TAdapter>;
30
+ /**
31
+ * Whether to stream the summarization result.
32
+ * When true, returns an AsyncIterable<StreamChunk> for streaming output.
33
+ * When false or not provided, returns a Promise<SummarizationResult>.
34
+ *
35
+ * @default false
36
+ */
37
+ stream?: TStream;
38
+ /**
39
+ * Enable debug logging. Pass `true` to enable all categories, `false` to
40
+ * silence everything including errors, or a `DebugConfig` object for granular
41
+ * control and/or a custom `Logger`.
42
+ */
43
+ debug?: DebugOption;
44
+ }
45
+ /**
46
+ * Result type for the summarize activity.
47
+ * - If stream is true: AsyncIterable<StreamChunk>
48
+ * - Otherwise: Promise<SummarizationResult>
49
+ */
50
+ export type SummarizeActivityResult<TStream extends boolean> = TStream extends true ? AsyncIterable<StreamChunk> : Promise<SummarizationResult>;
51
+ /**
52
+ * Summarize activity - generates summaries from text.
53
+ *
54
+ * Supports both streaming and non-streaming modes.
55
+ *
56
+ * @example Basic summarization
57
+ * ```ts
58
+ * import { summarize } from '@tanstack/ai'
59
+ * import { openaiSummarize } from '@tanstack/ai-openai'
60
+ *
61
+ * const result = await summarize({
62
+ * adapter: openaiSummarize('gpt-4o-mini'),
63
+ * text: 'Long article text here...'
64
+ * })
65
+ *
66
+ * console.log(result.summary)
67
+ * ```
68
+ *
69
+ * @example Summarization with style
70
+ * ```ts
71
+ * const result = await summarize({
72
+ * adapter: openaiSummarize('gpt-4o-mini'),
73
+ * text: 'Long article text here...',
74
+ * style: 'bullet-points',
75
+ * maxLength: 100
76
+ * })
77
+ * ```
78
+ *
79
+ * @example Focused summarization
80
+ * ```ts
81
+ * const result = await summarize({
82
+ * adapter: openaiSummarize('gpt-4o-mini'),
83
+ * text: 'Long technical document...',
84
+ * focus: ['key findings', 'methodology']
85
+ * })
86
+ * ```
87
+ *
88
+ * @example Streaming summarization
89
+ * ```ts
90
+ * for await (const chunk of summarize({
91
+ * adapter: openaiSummarize('gpt-4o-mini'),
92
+ * text: 'Long article text here...',
93
+ * stream: true
94
+ * })) {
95
+ * if (chunk.type === 'content') {
96
+ * process.stdout.write(chunk.delta)
97
+ * }
98
+ * }
99
+ * ```
100
+ */
101
+ export declare function summarize<TAdapter extends SummarizeAdapter<string, object>, TStream extends boolean = false>(options: SummarizeActivityOptions<TAdapter, TStream>): SummarizeActivityResult<TStream>;
102
+ /**
103
+ * Create typed options for the summarize() function without executing.
104
+ */
105
+ export declare function createSummarizeOptions<TAdapter extends SummarizeAdapter<string, object>, TStream extends boolean = false>(options: SummarizeActivityOptions<TAdapter, TStream>): SummarizeActivityOptions<TAdapter, TStream>;
106
+ export type { SummarizeAdapter, SummarizeAdapterConfig, AnySummarizeAdapter, } from './adapter.js';
107
+ export { BaseSummarizeAdapter } from './adapter.js';
108
+ export { ChatStreamSummarizeAdapter, type ChatStreamCapable, type InferTextProviderOptions, } from './chat-stream-summarize.js';
@@ -0,0 +1,113 @@
1
+ import { aiEventClient } from "@tanstack/ai-event-client";
2
+ import { streamGenerationResult } from "../stream-generation-result.js";
3
+ import { resolveDebugOption } from "../../logger/resolve.js";
4
+ const kind = "summarize";
5
+ function createId(prefix) {
6
+ return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
7
+ }
8
+ function summarize(options) {
9
+ const { stream } = options;
10
+ if (stream) {
11
+ return runStreamingSummarize(
12
+ options
13
+ );
14
+ }
15
+ return runSummarize(
16
+ options
17
+ );
18
+ }
19
+ async function runSummarize(options) {
20
+ const { adapter, text, maxLength, style, focus, modelOptions } = options;
21
+ const model = adapter.model;
22
+ const requestId = createId("summarize");
23
+ const inputLength = text.length;
24
+ const startTime = Date.now();
25
+ const logger = resolveDebugOption(options.debug);
26
+ aiEventClient.emit("summarize:request:started", {
27
+ requestId,
28
+ provider: adapter.name,
29
+ model,
30
+ inputLength,
31
+ timestamp: startTime
32
+ });
33
+ logger.request(`activity=summarize provider=${adapter.name}`, {
34
+ provider: adapter.name,
35
+ model,
36
+ inputLength
37
+ });
38
+ const summarizeOptions = {
39
+ model,
40
+ text,
41
+ maxLength,
42
+ style,
43
+ focus,
44
+ modelOptions,
45
+ logger
46
+ };
47
+ try {
48
+ const result = await adapter.summarize(summarizeOptions);
49
+ const duration = Date.now() - startTime;
50
+ const outputLength = result.summary.length;
51
+ aiEventClient.emit("summarize:request:completed", {
52
+ requestId,
53
+ provider: adapter.name,
54
+ model,
55
+ inputLength,
56
+ outputLength,
57
+ duration,
58
+ timestamp: Date.now()
59
+ });
60
+ logger.output(`activity=summarize length=${outputLength}`, {
61
+ hasSummary: !!result.summary,
62
+ outputLength
63
+ });
64
+ return result;
65
+ } catch (error) {
66
+ logger.errors("summarize activity failed", {
67
+ error,
68
+ source: "summarize"
69
+ });
70
+ throw error;
71
+ }
72
+ }
73
+ async function* runStreamingSummarize(options) {
74
+ const { adapter, text, maxLength, style, focus, modelOptions } = options;
75
+ const model = adapter.model;
76
+ const logger = resolveDebugOption(options.debug);
77
+ logger.request(`activity=summarize provider=${adapter.name}`, {
78
+ provider: adapter.name,
79
+ model,
80
+ stream: true
81
+ });
82
+ const summarizeOptions = {
83
+ model,
84
+ text,
85
+ maxLength,
86
+ style,
87
+ focus,
88
+ modelOptions,
89
+ logger
90
+ };
91
+ try {
92
+ if (adapter.summarizeStream) {
93
+ yield* adapter.summarizeStream(summarizeOptions);
94
+ return;
95
+ }
96
+ yield* streamGenerationResult(() => adapter.summarize(summarizeOptions));
97
+ } catch (error) {
98
+ logger.errors("summarize activity failed", {
99
+ error,
100
+ source: "summarize"
101
+ });
102
+ throw error;
103
+ }
104
+ }
105
+ function createSummarizeOptions(options) {
106
+ return options;
107
+ }
108
+ export {
109
+ createSummarizeOptions,
110
+ kind,
111
+ summarize
112
+ };
113
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/activities/summarize/index.ts"],"sourcesContent":["/**\n * Summarize Activity\n *\n * Generates summaries from text input.\n * This is a self-contained module with implementation, types, and JSDoc.\n */\n\nimport { aiEventClient } from '@tanstack/ai-event-client'\nimport { streamGenerationResult } from '../stream-generation-result.js'\nimport { resolveDebugOption } from '../../logger/resolve'\nimport type { InternalLogger } from '../../logger/internal-logger'\nimport type { DebugOption } from '../../logger/types'\nimport type { SummarizeAdapter } from './adapter'\nimport type { StreamChunk, SummarizationResult } from '../../types'\n\n// ===========================\n// Activity Kind\n// ===========================\n\n/** The adapter kind this activity handles */\nexport const kind = 'summarize' as const\n\n// ===========================\n// Type Extraction Helpers\n// ===========================\n\n/** Extract provider options from a SummarizeAdapter via ~types */\nexport type SummarizeProviderOptions<TAdapter> =\n TAdapter extends SummarizeAdapter<any, any>\n ? TAdapter['~types']['providerOptions']\n : object\n\n// ===========================\n// Activity Options Type\n// ===========================\n\n/**\n * Options for the summarize activity.\n * The model is extracted from the adapter's model property.\n *\n * @template TAdapter - The summarize adapter type\n * @template TStream - Whether to stream the output\n */\nexport interface SummarizeActivityOptions<\n TAdapter extends SummarizeAdapter<string, object>,\n TStream extends boolean = false,\n> {\n /** The summarize adapter to use (must be created with a model) */\n adapter: TAdapter & { kind: typeof kind }\n /** The text to summarize */\n text: string\n /** Maximum length of the summary (in words or characters, provider-dependent) */\n maxLength?: number\n /** Style of summary to generate */\n style?: 'bullet-points' | 'paragraph' | 'concise'\n /** Topics or aspects to focus on in the summary */\n focus?: Array<string>\n /** Provider-specific options */\n modelOptions?: SummarizeProviderOptions<TAdapter>\n /**\n * Whether to stream the summarization result.\n * When true, returns an AsyncIterable<StreamChunk> for streaming output.\n * When false or not provided, returns a Promise<SummarizationResult>.\n *\n * @default false\n */\n stream?: TStream\n /**\n * Enable debug logging. Pass `true` to enable all categories, `false` to\n * silence everything including errors, or a `DebugConfig` object for granular\n * control and/or a custom `Logger`.\n */\n debug?: DebugOption\n}\n\n// ===========================\n// Activity Result Type\n// ===========================\n\n/**\n * Result type for the summarize activity.\n * - If stream is true: AsyncIterable<StreamChunk>\n * - Otherwise: Promise<SummarizationResult>\n */\nexport type SummarizeActivityResult<TStream extends boolean> =\n TStream extends true\n ? AsyncIterable<StreamChunk>\n : Promise<SummarizationResult>\n\n// ===========================\n// Helper Functions\n// ===========================\n\nfunction createId(prefix: string): string {\n return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`\n}\n\n// ===========================\n// Activity Implementation\n// ===========================\n\n/**\n * Summarize activity - generates summaries from text.\n *\n * Supports both streaming and non-streaming modes.\n *\n * @example Basic summarization\n * ```ts\n * import { summarize } from '@tanstack/ai'\n * import { openaiSummarize } from '@tanstack/ai-openai'\n *\n * const result = await summarize({\n * adapter: openaiSummarize('gpt-4o-mini'),\n * text: 'Long article text here...'\n * })\n *\n * console.log(result.summary)\n * ```\n *\n * @example Summarization with style\n * ```ts\n * const result = await summarize({\n * adapter: openaiSummarize('gpt-4o-mini'),\n * text: 'Long article text here...',\n * style: 'bullet-points',\n * maxLength: 100\n * })\n * ```\n *\n * @example Focused summarization\n * ```ts\n * const result = await summarize({\n * adapter: openaiSummarize('gpt-4o-mini'),\n * text: 'Long technical document...',\n * focus: ['key findings', 'methodology']\n * })\n * ```\n *\n * @example Streaming summarization\n * ```ts\n * for await (const chunk of summarize({\n * adapter: openaiSummarize('gpt-4o-mini'),\n * text: 'Long article text here...',\n * stream: true\n * })) {\n * if (chunk.type === 'content') {\n * process.stdout.write(chunk.delta)\n * }\n * }\n * ```\n */\nexport function summarize<\n TAdapter extends SummarizeAdapter<string, object>,\n TStream extends boolean = false,\n>(\n options: SummarizeActivityOptions<TAdapter, TStream>,\n): SummarizeActivityResult<TStream> {\n const { stream } = options\n\n if (stream) {\n return runStreamingSummarize(\n options as SummarizeActivityOptions<\n SummarizeAdapter<string, object>,\n true\n >,\n ) as SummarizeActivityResult<TStream>\n }\n\n return runSummarize(\n options as SummarizeActivityOptions<\n SummarizeAdapter<string, object>,\n false\n >,\n ) as SummarizeActivityResult<TStream>\n}\n\n/**\n * Run non-streaming summarization\n */\nasync function runSummarize(\n options: SummarizeActivityOptions<SummarizeAdapter<string, object>, false>,\n): Promise<SummarizationResult> {\n const { adapter, text, maxLength, style, focus, modelOptions } = options\n const model = adapter.model\n const requestId = createId('summarize')\n const inputLength = text.length\n const startTime = Date.now()\n const logger: InternalLogger = resolveDebugOption(options.debug)\n\n aiEventClient.emit('summarize:request:started', {\n requestId,\n provider: adapter.name,\n model,\n inputLength,\n timestamp: startTime,\n })\n\n logger.request(`activity=summarize provider=${adapter.name}`, {\n provider: adapter.name,\n model,\n inputLength,\n })\n\n const summarizeOptions = {\n model,\n text,\n maxLength,\n style,\n focus,\n modelOptions,\n logger,\n }\n\n try {\n const result = await adapter.summarize(summarizeOptions)\n\n const duration = Date.now() - startTime\n const outputLength = result.summary.length\n\n aiEventClient.emit('summarize:request:completed', {\n requestId,\n provider: adapter.name,\n model,\n inputLength,\n outputLength,\n duration,\n timestamp: Date.now(),\n })\n\n logger.output(`activity=summarize length=${outputLength}`, {\n hasSummary: !!result.summary,\n outputLength,\n })\n\n return result\n } catch (error) {\n logger.errors('summarize activity failed', {\n error,\n source: 'summarize',\n })\n throw error\n }\n}\n\n/**\n * Run streaming summarization\n * Uses the adapter's native streaming if available, otherwise falls back\n * to non-streaming and yields the result as a single chunk.\n */\nasync function* runStreamingSummarize(\n options: SummarizeActivityOptions<SummarizeAdapter<string, object>, true>,\n): AsyncIterable<StreamChunk> {\n const { adapter, text, maxLength, style, focus, modelOptions } = options\n const model = adapter.model\n const logger: InternalLogger = resolveDebugOption(options.debug)\n\n logger.request(`activity=summarize provider=${adapter.name}`, {\n provider: adapter.name,\n model,\n stream: true,\n })\n\n const summarizeOptions = {\n model,\n text,\n maxLength,\n style,\n focus,\n modelOptions,\n logger,\n }\n\n try {\n // Use real streaming if the adapter supports it\n if (adapter.summarizeStream) {\n yield* adapter.summarizeStream(summarizeOptions)\n return\n }\n\n // Fall back to non-streaming — wrap result with streamGenerationResult\n yield* streamGenerationResult(() => adapter.summarize(summarizeOptions))\n } catch (error) {\n logger.errors('summarize activity failed', {\n error,\n source: 'summarize',\n })\n throw error\n }\n}\n\n// ===========================\n// Options Factory\n// ===========================\n\n/**\n * Create typed options for the summarize() function without executing.\n */\nexport function createSummarizeOptions<\n TAdapter extends SummarizeAdapter<string, object>,\n TStream extends boolean = false,\n>(\n options: SummarizeActivityOptions<TAdapter, TStream>,\n): SummarizeActivityOptions<TAdapter, TStream> {\n return options\n}\n\n// Re-export adapter types\nexport type {\n SummarizeAdapter,\n SummarizeAdapterConfig,\n AnySummarizeAdapter,\n} from './adapter'\nexport { BaseSummarizeAdapter } from './adapter'\nexport {\n ChatStreamSummarizeAdapter,\n type ChatStreamCapable,\n type InferTextProviderOptions,\n} from './chat-stream-summarize'\n"],"names":[],"mappings":";;;AAoBO,MAAM,OAAO;AAyEpB,SAAS,SAAS,QAAwB;AACxC,SAAO,GAAG,MAAM,IAAI,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAC1E;AAwDO,SAAS,UAId,SACkC;AAClC,QAAM,EAAE,WAAW;AAEnB,MAAI,QAAQ;AACV,WAAO;AAAA,MACL;AAAA,IAAA;AAAA,EAKJ;AAEA,SAAO;AAAA,IACL;AAAA,EAAA;AAKJ;AAKA,eAAe,aACb,SAC8B;AAC9B,QAAM,EAAE,SAAS,MAAM,WAAW,OAAO,OAAO,iBAAiB;AACjE,QAAM,QAAQ,QAAQ;AACtB,QAAM,YAAY,SAAS,WAAW;AACtC,QAAM,cAAc,KAAK;AACzB,QAAM,YAAY,KAAK,IAAA;AACvB,QAAM,SAAyB,mBAAmB,QAAQ,KAAK;AAE/D,gBAAc,KAAK,6BAA6B;AAAA,IAC9C;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EAAA,CACZ;AAED,SAAO,QAAQ,+BAA+B,QAAQ,IAAI,IAAI;AAAA,IAC5D,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA;AAAA,EAAA,CACD;AAED,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,MAAI;AACF,UAAM,SAAS,MAAM,QAAQ,UAAU,gBAAgB;AAEvD,UAAM,WAAW,KAAK,IAAA,IAAQ;AAC9B,UAAM,eAAe,OAAO,QAAQ;AAEpC,kBAAc,KAAK,+BAA+B;AAAA,MAChD;AAAA,MACA,UAAU,QAAQ;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,KAAK,IAAA;AAAA,IAAI,CACrB;AAED,WAAO,OAAO,6BAA6B,YAAY,IAAI;AAAA,MACzD,YAAY,CAAC,CAAC,OAAO;AAAA,MACrB;AAAA,IAAA,CACD;AAED,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO,OAAO,6BAA6B;AAAA,MACzC;AAAA,MACA,QAAQ;AAAA,IAAA,CACT;AACD,UAAM;AAAA,EACR;AACF;AAOA,gBAAgB,sBACd,SAC4B;AAC5B,QAAM,EAAE,SAAS,MAAM,WAAW,OAAO,OAAO,iBAAiB;AACjE,QAAM,QAAQ,QAAQ;AACtB,QAAM,SAAyB,mBAAmB,QAAQ,KAAK;AAE/D,SAAO,QAAQ,+BAA+B,QAAQ,IAAI,IAAI;AAAA,IAC5D,UAAU,QAAQ;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,EAAA,CACT;AAED,QAAM,mBAAmB;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAGF,MAAI;AAEF,QAAI,QAAQ,iBAAiB;AAC3B,aAAO,QAAQ,gBAAgB,gBAAgB;AAC/C;AAAA,IACF;AAGA,WAAO,uBAAuB,MAAM,QAAQ,UAAU,gBAAgB,CAAC;AAAA,EACzE,SAAS,OAAO;AACd,WAAO,OAAO,6BAA6B;AAAA,MACzC;AAAA,MACA,QAAQ;AAAA,IAAA,CACT;AACD,UAAM;AAAA,EACR;AACF;AASO,SAAS,uBAId,SAC6C;AAC7C,SAAO;AACT;"}
@@ -0,0 +1,5 @@
1
+ export type { ResolvedCategories } from './logger/internal-logger.js';
2
+ export { InternalLogger } from './logger/internal-logger.js';
3
+ export type { Logger } from './logger/types.js';
4
+ export { resolveDebugOption } from './logger/resolve.js';
5
+ export { toRunErrorPayload, toRunErrorRawEvent, } from './activities/error-payload.js';
@@ -0,0 +1,10 @@
1
+ import { InternalLogger } from "./logger/internal-logger.js";
2
+ import { resolveDebugOption } from "./logger/resolve.js";
3
+ import { toRunErrorPayload, toRunErrorRawEvent } from "./activities/error-payload.js";
4
+ export {
5
+ InternalLogger,
6
+ resolveDebugOption,
7
+ toRunErrorPayload,
8
+ toRunErrorRawEvent
9
+ };
10
+ //# sourceMappingURL=adapter-internals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-internals.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -0,0 +1,44 @@
1
+ export declare enum EventType {
2
+ TEXT_MESSAGE_START = "TEXT_MESSAGE_START",
3
+ TEXT_MESSAGE_CONTENT = "TEXT_MESSAGE_CONTENT",
4
+ TEXT_MESSAGE_END = "TEXT_MESSAGE_END",
5
+ TEXT_MESSAGE_CHUNK = "TEXT_MESSAGE_CHUNK",
6
+ TOOL_CALL_START = "TOOL_CALL_START",
7
+ TOOL_CALL_ARGS = "TOOL_CALL_ARGS",
8
+ TOOL_CALL_END = "TOOL_CALL_END",
9
+ TOOL_CALL_CHUNK = "TOOL_CALL_CHUNK",
10
+ TOOL_CALL_RESULT = "TOOL_CALL_RESULT",
11
+ THINKING_START = "THINKING_START",
12
+ THINKING_END = "THINKING_END",
13
+ THINKING_TEXT_MESSAGE_START = "THINKING_TEXT_MESSAGE_START",
14
+ THINKING_TEXT_MESSAGE_CONTENT = "THINKING_TEXT_MESSAGE_CONTENT",
15
+ THINKING_TEXT_MESSAGE_END = "THINKING_TEXT_MESSAGE_END",
16
+ STATE_SNAPSHOT = "STATE_SNAPSHOT",
17
+ STATE_DELTA = "STATE_DELTA",
18
+ MESSAGES_SNAPSHOT = "MESSAGES_SNAPSHOT",
19
+ ACTIVITY_SNAPSHOT = "ACTIVITY_SNAPSHOT",
20
+ ACTIVITY_DELTA = "ACTIVITY_DELTA",
21
+ RAW = "RAW",
22
+ CUSTOM = "CUSTOM",
23
+ RUN_STARTED = "RUN_STARTED",
24
+ RUN_FINISHED = "RUN_FINISHED",
25
+ RUN_ERROR = "RUN_ERROR",
26
+ STEP_STARTED = "STEP_STARTED",
27
+ STEP_FINISHED = "STEP_FINISHED",
28
+ REASONING_START = "REASONING_START",
29
+ REASONING_MESSAGE_START = "REASONING_MESSAGE_START",
30
+ REASONING_MESSAGE_CONTENT = "REASONING_MESSAGE_CONTENT",
31
+ REASONING_MESSAGE_END = "REASONING_MESSAGE_END",
32
+ REASONING_MESSAGE_CHUNK = "REASONING_MESSAGE_CHUNK",
33
+ REASONING_END = "REASONING_END",
34
+ REASONING_ENCRYPTED_VALUE = "REASONING_ENCRYPTED_VALUE"
35
+ }
36
+ export { toolDefinition, type AnyClientTool, type ClientTool, type InferToolInput, type InferToolName, type InferToolOutput, type ToolDefinition, type ToolDefinitionConfig, type ToolDefinitionInstance, } from './activities/chat/tools/tool-definition.js';
37
+ export { convertSchemaToJsonSchema, isStandardSchema, parseWithStandardSchema, } from './activities/chat/tools/schema-converter.js';
38
+ export { convertMessagesToModelMessages, generateMessageId, modelMessageToUIMessage, modelMessagesToUIMessages, normalizeToUIMessage, uiMessageToModelMessages, } from './activities/chat/messages.js';
39
+ export { BatchStrategy, CompositeStrategy, defaultJSONParser, ImmediateStrategy, parsePartialJSON, PartialJSONParser, PunctuationStrategy, StreamProcessor, WordBoundaryStrategy, } from './activities/chat/stream/index.js';
40
+ export type { ChunkRecording, ChunkStrategy, InternalToolCallState, JSONParser, ProcessorResult, ProcessorState, StreamProcessorEvents, StreamProcessorOptions, ToolCallState, ToolResultState, } from './activities/chat/stream/index.js';
41
+ export { uiMessagesToWire } from './utilities/ag-ui-wire.js';
42
+ export type { WireMessage } from './utilities/ag-ui-wire.js';
43
+ export type { AudioPart, ContentPart, ContentPartDataSource, ContentPartSource, ContentPartUrlSource, CustomEvent, DocumentPart, ImagePart, MediaInputMetadata, MediaInputRole, MediaPrompt, MediaPromptPart, MessagePart, ModelMessage, RunErrorEvent, RunFinishedEvent, SchemaInput, StreamChunk, StructuredOutputPart, TextPart, ThinkingPart, ToolCall, ToolCallPart, ToolResultPart, UIMessage, UIResourcePart, VideoPart, InferSchemaType, } from './types.js';
44
+ export type { AudioVisualization, RealtimeAdapter, RealtimeConnection, RealtimeError, RealtimeErrorCode, RealtimeEvent, RealtimeEventHandler, RealtimeEventPayloads, RealtimeMessage, RealtimeMessagePart, RealtimeMode, RealtimeSessionConfig, RealtimeStatus, RealtimeToken, RealtimeAudioPart, RealtimeImagePart, RealtimeTextPart, RealtimeToolCallPart, RealtimeToolResultPart, VADConfig, } from './realtime/types.js';
@@ -0,0 +1,67 @@
1
+ import { toolDefinition } from "./activities/chat/tools/tool-definition.js";
2
+ import { convertSchemaToJsonSchema, isStandardSchema, parseWithStandardSchema } from "./activities/chat/tools/schema-converter.js";
3
+ import { convertMessagesToModelMessages, generateMessageId, modelMessageToUIMessage, modelMessagesToUIMessages, normalizeToUIMessage, uiMessageToModelMessages } from "./activities/chat/messages.js";
4
+ import { uiMessagesToWire } from "./utilities/ag-ui-wire.js";
5
+ import { BatchStrategy, CompositeStrategy, ImmediateStrategy, PunctuationStrategy, WordBoundaryStrategy } from "./activities/chat/stream/strategies.js";
6
+ import { PartialJSONParser, defaultJSONParser, parsePartialJSON } from "./activities/chat/stream/json-parser.js";
7
+ import { StreamProcessor } from "./activities/chat/stream/processor.js";
8
+ var EventType = /* @__PURE__ */ ((EventType2) => {
9
+ EventType2["TEXT_MESSAGE_START"] = "TEXT_MESSAGE_START";
10
+ EventType2["TEXT_MESSAGE_CONTENT"] = "TEXT_MESSAGE_CONTENT";
11
+ EventType2["TEXT_MESSAGE_END"] = "TEXT_MESSAGE_END";
12
+ EventType2["TEXT_MESSAGE_CHUNK"] = "TEXT_MESSAGE_CHUNK";
13
+ EventType2["TOOL_CALL_START"] = "TOOL_CALL_START";
14
+ EventType2["TOOL_CALL_ARGS"] = "TOOL_CALL_ARGS";
15
+ EventType2["TOOL_CALL_END"] = "TOOL_CALL_END";
16
+ EventType2["TOOL_CALL_CHUNK"] = "TOOL_CALL_CHUNK";
17
+ EventType2["TOOL_CALL_RESULT"] = "TOOL_CALL_RESULT";
18
+ EventType2["THINKING_START"] = "THINKING_START";
19
+ EventType2["THINKING_END"] = "THINKING_END";
20
+ EventType2["THINKING_TEXT_MESSAGE_START"] = "THINKING_TEXT_MESSAGE_START";
21
+ EventType2["THINKING_TEXT_MESSAGE_CONTENT"] = "THINKING_TEXT_MESSAGE_CONTENT";
22
+ EventType2["THINKING_TEXT_MESSAGE_END"] = "THINKING_TEXT_MESSAGE_END";
23
+ EventType2["STATE_SNAPSHOT"] = "STATE_SNAPSHOT";
24
+ EventType2["STATE_DELTA"] = "STATE_DELTA";
25
+ EventType2["MESSAGES_SNAPSHOT"] = "MESSAGES_SNAPSHOT";
26
+ EventType2["ACTIVITY_SNAPSHOT"] = "ACTIVITY_SNAPSHOT";
27
+ EventType2["ACTIVITY_DELTA"] = "ACTIVITY_DELTA";
28
+ EventType2["RAW"] = "RAW";
29
+ EventType2["CUSTOM"] = "CUSTOM";
30
+ EventType2["RUN_STARTED"] = "RUN_STARTED";
31
+ EventType2["RUN_FINISHED"] = "RUN_FINISHED";
32
+ EventType2["RUN_ERROR"] = "RUN_ERROR";
33
+ EventType2["STEP_STARTED"] = "STEP_STARTED";
34
+ EventType2["STEP_FINISHED"] = "STEP_FINISHED";
35
+ EventType2["REASONING_START"] = "REASONING_START";
36
+ EventType2["REASONING_MESSAGE_START"] = "REASONING_MESSAGE_START";
37
+ EventType2["REASONING_MESSAGE_CONTENT"] = "REASONING_MESSAGE_CONTENT";
38
+ EventType2["REASONING_MESSAGE_END"] = "REASONING_MESSAGE_END";
39
+ EventType2["REASONING_MESSAGE_CHUNK"] = "REASONING_MESSAGE_CHUNK";
40
+ EventType2["REASONING_END"] = "REASONING_END";
41
+ EventType2["REASONING_ENCRYPTED_VALUE"] = "REASONING_ENCRYPTED_VALUE";
42
+ return EventType2;
43
+ })(EventType || {});
44
+ export {
45
+ BatchStrategy,
46
+ CompositeStrategy,
47
+ EventType,
48
+ ImmediateStrategy,
49
+ PartialJSONParser,
50
+ PunctuationStrategy,
51
+ StreamProcessor,
52
+ WordBoundaryStrategy,
53
+ convertMessagesToModelMessages,
54
+ convertSchemaToJsonSchema,
55
+ defaultJSONParser,
56
+ generateMessageId,
57
+ isStandardSchema,
58
+ modelMessageToUIMessage,
59
+ modelMessagesToUIMessages,
60
+ normalizeToUIMessage,
61
+ parsePartialJSON,
62
+ parseWithStandardSchema,
63
+ toolDefinition,
64
+ uiMessageToModelMessages,
65
+ uiMessagesToWire
66
+ };
67
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sources":["../../src/client.ts"],"sourcesContent":["export enum EventType {\n TEXT_MESSAGE_START = 'TEXT_MESSAGE_START',\n TEXT_MESSAGE_CONTENT = 'TEXT_MESSAGE_CONTENT',\n TEXT_MESSAGE_END = 'TEXT_MESSAGE_END',\n TEXT_MESSAGE_CHUNK = 'TEXT_MESSAGE_CHUNK',\n TOOL_CALL_START = 'TOOL_CALL_START',\n TOOL_CALL_ARGS = 'TOOL_CALL_ARGS',\n TOOL_CALL_END = 'TOOL_CALL_END',\n TOOL_CALL_CHUNK = 'TOOL_CALL_CHUNK',\n TOOL_CALL_RESULT = 'TOOL_CALL_RESULT',\n THINKING_START = 'THINKING_START',\n THINKING_END = 'THINKING_END',\n THINKING_TEXT_MESSAGE_START = 'THINKING_TEXT_MESSAGE_START',\n THINKING_TEXT_MESSAGE_CONTENT = 'THINKING_TEXT_MESSAGE_CONTENT',\n THINKING_TEXT_MESSAGE_END = 'THINKING_TEXT_MESSAGE_END',\n STATE_SNAPSHOT = 'STATE_SNAPSHOT',\n STATE_DELTA = 'STATE_DELTA',\n MESSAGES_SNAPSHOT = 'MESSAGES_SNAPSHOT',\n ACTIVITY_SNAPSHOT = 'ACTIVITY_SNAPSHOT',\n ACTIVITY_DELTA = 'ACTIVITY_DELTA',\n RAW = 'RAW',\n CUSTOM = 'CUSTOM',\n RUN_STARTED = 'RUN_STARTED',\n RUN_FINISHED = 'RUN_FINISHED',\n RUN_ERROR = 'RUN_ERROR',\n STEP_STARTED = 'STEP_STARTED',\n STEP_FINISHED = 'STEP_FINISHED',\n REASONING_START = 'REASONING_START',\n REASONING_MESSAGE_START = 'REASONING_MESSAGE_START',\n REASONING_MESSAGE_CONTENT = 'REASONING_MESSAGE_CONTENT',\n REASONING_MESSAGE_END = 'REASONING_MESSAGE_END',\n REASONING_MESSAGE_CHUNK = 'REASONING_MESSAGE_CHUNK',\n REASONING_END = 'REASONING_END',\n REASONING_ENCRYPTED_VALUE = 'REASONING_ENCRYPTED_VALUE',\n}\n\nexport {\n toolDefinition,\n type AnyClientTool,\n type ClientTool,\n type InferToolInput,\n type InferToolName,\n type InferToolOutput,\n type ToolDefinition,\n type ToolDefinitionConfig,\n type ToolDefinitionInstance,\n} from './activities/chat/tools/tool-definition'\n\nexport {\n convertSchemaToJsonSchema,\n isStandardSchema,\n parseWithStandardSchema,\n} from './activities/chat/tools/schema-converter'\n\nexport {\n convertMessagesToModelMessages,\n generateMessageId,\n modelMessageToUIMessage,\n modelMessagesToUIMessages,\n normalizeToUIMessage,\n uiMessageToModelMessages,\n} from './activities/chat/messages'\n\nexport {\n BatchStrategy,\n CompositeStrategy,\n defaultJSONParser,\n ImmediateStrategy,\n parsePartialJSON,\n PartialJSONParser,\n PunctuationStrategy,\n StreamProcessor,\n WordBoundaryStrategy,\n} from './activities/chat/stream/index'\nexport type {\n ChunkRecording,\n ChunkStrategy,\n InternalToolCallState,\n JSONParser,\n ProcessorResult,\n ProcessorState,\n StreamProcessorEvents,\n StreamProcessorOptions,\n ToolCallState,\n ToolResultState,\n} from './activities/chat/stream/index'\n\nexport { uiMessagesToWire } from './utilities/ag-ui-wire'\nexport type { WireMessage } from './utilities/ag-ui-wire'\n\nexport type {\n AudioPart,\n ContentPart,\n ContentPartDataSource,\n ContentPartSource,\n ContentPartUrlSource,\n CustomEvent,\n DocumentPart,\n ImagePart,\n MediaInputMetadata,\n MediaInputRole,\n MediaPrompt,\n MediaPromptPart,\n MessagePart,\n ModelMessage,\n RunErrorEvent,\n RunFinishedEvent,\n SchemaInput,\n StreamChunk,\n StructuredOutputPart,\n TextPart,\n ThinkingPart,\n ToolCall,\n ToolCallPart,\n ToolResultPart,\n UIMessage,\n UIResourcePart,\n VideoPart,\n InferSchemaType,\n} from './types'\n\nexport type {\n AudioVisualization,\n RealtimeAdapter,\n RealtimeConnection,\n RealtimeError,\n RealtimeErrorCode,\n RealtimeEvent,\n RealtimeEventHandler,\n RealtimeEventPayloads,\n RealtimeMessage,\n RealtimeMessagePart,\n RealtimeMode,\n RealtimeSessionConfig,\n RealtimeStatus,\n RealtimeToken,\n RealtimeAudioPart,\n RealtimeImagePart,\n RealtimeTextPart,\n RealtimeToolCallPart,\n RealtimeToolResultPart,\n VADConfig,\n} from './realtime/types'\n"],"names":["EventType"],"mappings":";;;;;;;AAAO,IAAK,8BAAAA,eAAL;AACLA,aAAA,oBAAA,IAAqB;AACrBA,aAAA,sBAAA,IAAuB;AACvBA,aAAA,kBAAA,IAAmB;AACnBA,aAAA,oBAAA,IAAqB;AACrBA,aAAA,iBAAA,IAAkB;AAClBA,aAAA,gBAAA,IAAiB;AACjBA,aAAA,eAAA,IAAgB;AAChBA,aAAA,iBAAA,IAAkB;AAClBA,aAAA,kBAAA,IAAmB;AACnBA,aAAA,gBAAA,IAAiB;AACjBA,aAAA,cAAA,IAAe;AACfA,aAAA,6BAAA,IAA8B;AAC9BA,aAAA,+BAAA,IAAgC;AAChCA,aAAA,2BAAA,IAA4B;AAC5BA,aAAA,gBAAA,IAAiB;AACjBA,aAAA,aAAA,IAAc;AACdA,aAAA,mBAAA,IAAoB;AACpBA,aAAA,mBAAA,IAAoB;AACpBA,aAAA,gBAAA,IAAiB;AACjBA,aAAA,KAAA,IAAM;AACNA,aAAA,QAAA,IAAS;AACTA,aAAA,aAAA,IAAc;AACdA,aAAA,cAAA,IAAe;AACfA,aAAA,WAAA,IAAY;AACZA,aAAA,cAAA,IAAe;AACfA,aAAA,eAAA,IAAgB;AAChBA,aAAA,iBAAA,IAAkB;AAClBA,aAAA,yBAAA,IAA0B;AAC1BA,aAAA,2BAAA,IAA4B;AAC5BA,aAAA,uBAAA,IAAwB;AACxBA,aAAA,yBAAA,IAA0B;AAC1BA,aAAA,eAAA,IAAgB;AAChBA,aAAA,2BAAA,IAA4B;AAjClB,SAAAA;AAAA,GAAA,aAAA,CAAA,CAAA;"}
@@ -0,0 +1,152 @@
1
+ import { Modality } from './types.js';
2
+ /**
3
+ * Definition for a custom model to add to an adapter.
4
+ *
5
+ * @template TName - The model name as a literal string type
6
+ * @template TInput - Array of supported input modalities
7
+ * @template TOptions - Provider options type for this model
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const customModels = [
12
+ * createModel('my-custom-model', ['text', 'image']),
13
+ * ] as const
14
+ * ```
15
+ */
16
+ export interface ExtendedModelDef<TName extends string = string, TInput extends ReadonlyArray<Modality> = ReadonlyArray<Modality>, TOptions = unknown, TFeatures extends ReadonlyArray<string> = ReadonlyArray<string>, TTools extends ReadonlyArray<string> = ReadonlyArray<string>> {
17
+ /** The model name identifier */
18
+ name: TName;
19
+ /** Supported input modalities for this model */
20
+ input: TInput;
21
+ /** Type brand for provider options - use `{} as YourOptionsType` */
22
+ modelOptions: TOptions;
23
+ /** Optional declared features (e.g. 'reasoning', 'structured_outputs') */
24
+ features?: TFeatures;
25
+ /** Optional declared provider tools (e.g. 'web_search') */
26
+ tools?: TTools;
27
+ }
28
+ /** Capability bag accepted by the object form of `createModel`. */
29
+ export interface ModelCapabilities<TInput extends ReadonlyArray<Modality> = ReadonlyArray<Modality>, TFeatures extends ReadonlyArray<string> = ReadonlyArray<string>, TTools extends ReadonlyArray<string> = ReadonlyArray<string>, TOptions = unknown> {
30
+ input?: TInput;
31
+ features?: TFeatures;
32
+ tools?: TTools;
33
+ modelOptions?: TOptions;
34
+ }
35
+ /**
36
+ * Creates a custom model definition for use with `extendAdapter`.
37
+ *
38
+ * This is a helper function that provides proper type inference without
39
+ * requiring manual `as const` casts on individual properties.
40
+ *
41
+ * @template TName - The model name (inferred from argument)
42
+ * @template TInput - The input modalities array (inferred from argument)
43
+ *
44
+ * @param name - The model name identifier (literal string)
45
+ * @param input - Array of supported input modalities
46
+ * @returns A properly typed model definition for use with `extendAdapter`
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * import { extendAdapter, createModel } from '@tanstack/ai'
51
+ * import { openaiText } from '@tanstack/ai-openai'
52
+ *
53
+ * // Define custom models with full type inference
54
+ * const customModels = [
55
+ * createModel('my-fine-tuned-gpt4', ['text', 'image']),
56
+ * createModel('local-llama', ['text']),
57
+ * ] as const
58
+ *
59
+ * const myOpenai = extendAdapter(openaiText, customModels)
60
+ * ```
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // Capabilities object form - declare features and provider tools
65
+ * const reasoner = createModel('reasoner', {
66
+ * input: ['text'],
67
+ * features: ['reasoning', 'structured_outputs'],
68
+ * tools: ['web_search'],
69
+ * })
70
+ * ```
71
+ */
72
+ export declare function createModel<const TName extends string, const TInput extends ReadonlyArray<Modality>>(name: TName, input: TInput): ExtendedModelDef<TName, TInput>;
73
+ export declare function createModel<const TName extends string, const TCaps extends ModelCapabilities>(name: TName, capabilities: TCaps): ExtendedModelDef<TName, TCaps['input'] extends ReadonlyArray<Modality> ? TCaps['input'] : ReadonlyArray<Modality>, TCaps['modelOptions'], TCaps['features'] extends ReadonlyArray<string> ? TCaps['features'] : ReadonlyArray<string>, TCaps['tools'] extends ReadonlyArray<string> ? TCaps['tools'] : ReadonlyArray<string>>;
74
+ /**
75
+ * Extract the model name union from an array of model definitions.
76
+ */
77
+ type ExtractCustomModelNames<TDefs extends ReadonlyArray<ExtendedModelDef>> = TDefs[number]['name'];
78
+ /**
79
+ * The widest factory shape `extendAdapter` accepts: any function taking a
80
+ * model as its first parameter. Parameters are contravariant, so `never`
81
+ * params and an `unknown` return accept every factory without resorting
82
+ * to `any`.
83
+ */
84
+ type AnyAdapterFactory = (model: never, ...args: Array<never>) => unknown;
85
+ /**
86
+ * Infer the model parameter type from an adapter factory function.
87
+ * For generic functions like `<T extends Union>(model: T)`, this gets `T` which
88
+ * TypeScript treats as the constraint union when used in parameter position.
89
+ */
90
+ type InferFactoryModels<TFactory> = TFactory extends (model: infer TModel, ...args: Array<never>) => unknown ? TModel extends string ? TModel : string : string;
91
+ /**
92
+ * Infer the adapter return type from a factory function.
93
+ */
94
+ type InferAdapterReturn<TFactory> = TFactory extends (...args: Array<never>) => infer TReturn ? TReturn : never;
95
+ /**
96
+ * Extracts all parameter types after the model parameter from a factory,
97
+ * preserving labels and optionality (e.g. `[apiKey: string, config?: C]`).
98
+ * Note: overloaded factories resolve against their last overload (a
99
+ * `Parameters` limitation).
100
+ */
101
+ type InferRestArgs<TFactory extends AnyAdapterFactory> = Parameters<TFactory> extends [unknown?, ...infer TRest] ? TRest : [];
102
+ /**
103
+ * The factory signature produced by `extendAdapter`: accepts both original
104
+ * and custom model names while preserving all remaining parameters and the
105
+ * return type of the original factory.
106
+ */
107
+ type ExtendedFactory<TFactory extends AnyAdapterFactory, TDefs extends ReadonlyArray<ExtendedModelDef>> = (model: InferFactoryModels<TFactory> | ExtractCustomModelNames<TDefs>, ...args: InferRestArgs<TFactory>) => InferAdapterReturn<TFactory>;
108
+ /**
109
+ * Extends an existing adapter factory with additional custom models.
110
+ *
111
+ * The extended adapter accepts both original models (with full original type inference)
112
+ * and custom models (with types from your definitions).
113
+ *
114
+ * At runtime, this simply passes through to the original factory - no validation is performed.
115
+ * The original factory's signature is fully preserved, including any config parameters.
116
+ *
117
+ * @param factory - The original adapter factory function (e.g., `openaiText`, `anthropicText`)
118
+ * @param models - Array of custom model definitions with `name` and `input`
119
+ * @returns A new factory function that accepts both original and custom models
120
+ *
121
+ * @example
122
+ * ```typescript
123
+ * import { extendAdapter, createModel } from '@tanstack/ai'
124
+ * import { openaiText } from '@tanstack/ai-openai'
125
+ *
126
+ * // Define custom models
127
+ * const customModels = [
128
+ * createModel('my-fine-tuned-gpt4', ['text', 'image']),
129
+ * createModel('local-llama', ['text']),
130
+ * ] as const
131
+ *
132
+ * // Create extended adapter
133
+ * const myOpenai = extendAdapter(openaiText, customModels)
134
+ *
135
+ * // Use with original models - full type inference preserved
136
+ * const gpt4 = myOpenai('gpt-4o')
137
+ *
138
+ * // Use with custom models
139
+ * const custom = myOpenai('my-fine-tuned-gpt4')
140
+ *
141
+ * // Type error: 'invalid-model' is not a valid model
142
+ * // myOpenai('invalid-model')
143
+ *
144
+ * // Works with chat()
145
+ * chat({
146
+ * adapter: myOpenai('my-fine-tuned-gpt4'),
147
+ * messages: [...]
148
+ * })
149
+ * ```
150
+ */
151
+ export declare function extendAdapter<TFactory extends AnyAdapterFactory, const TDefs extends ReadonlyArray<ExtendedModelDef>>(factory: TFactory, _customModels: TDefs): ExtendedFactory<TFactory, TDefs>;
152
+ export {};
@@ -0,0 +1,21 @@
1
+ function createModel(name, second) {
2
+ if (Array.isArray(second)) {
3
+ return { name, input: second, modelOptions: {} };
4
+ }
5
+ const caps = second;
6
+ return {
7
+ name,
8
+ input: caps.input ?? ["text"],
9
+ modelOptions: caps.modelOptions ?? {},
10
+ features: caps.features,
11
+ tools: caps.tools
12
+ };
13
+ }
14
+ function extendAdapter(factory, _customModels) {
15
+ return factory;
16
+ }
17
+ export {
18
+ createModel,
19
+ extendAdapter
20
+ };
21
+ //# sourceMappingURL=extend-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-adapter.js","sources":["../../src/extend-adapter.ts"],"sourcesContent":["import type { Modality } from './types'\n\n// ===========================\n// Extended Model Definition\n// ===========================\n\n/**\n * Definition for a custom model to add to an adapter.\n *\n * @template TName - The model name as a literal string type\n * @template TInput - Array of supported input modalities\n * @template TOptions - Provider options type for this model\n *\n * @example\n * ```typescript\n * const customModels = [\n * createModel('my-custom-model', ['text', 'image']),\n * ] as const\n * ```\n */\nexport interface ExtendedModelDef<\n TName extends string = string,\n TInput extends ReadonlyArray<Modality> = ReadonlyArray<Modality>,\n TOptions = unknown,\n TFeatures extends ReadonlyArray<string> = ReadonlyArray<string>,\n TTools extends ReadonlyArray<string> = ReadonlyArray<string>,\n> {\n /** The model name identifier */\n name: TName\n /** Supported input modalities for this model */\n input: TInput\n /** Type brand for provider options - use `{} as YourOptionsType` */\n modelOptions: TOptions\n /** Optional declared features (e.g. 'reasoning', 'structured_outputs') */\n features?: TFeatures\n /** Optional declared provider tools (e.g. 'web_search') */\n tools?: TTools\n}\n\n/** Capability bag accepted by the object form of `createModel`. */\nexport interface ModelCapabilities<\n TInput extends ReadonlyArray<Modality> = ReadonlyArray<Modality>,\n TFeatures extends ReadonlyArray<string> = ReadonlyArray<string>,\n TTools extends ReadonlyArray<string> = ReadonlyArray<string>,\n TOptions = unknown,\n> {\n input?: TInput\n features?: TFeatures\n tools?: TTools\n modelOptions?: TOptions\n}\n\n/**\n * Creates a custom model definition for use with `extendAdapter`.\n *\n * This is a helper function that provides proper type inference without\n * requiring manual `as const` casts on individual properties.\n *\n * @template TName - The model name (inferred from argument)\n * @template TInput - The input modalities array (inferred from argument)\n *\n * @param name - The model name identifier (literal string)\n * @param input - Array of supported input modalities\n * @returns A properly typed model definition for use with `extendAdapter`\n *\n * @example\n * ```typescript\n * import { extendAdapter, createModel } from '@tanstack/ai'\n * import { openaiText } from '@tanstack/ai-openai'\n *\n * // Define custom models with full type inference\n * const customModels = [\n * createModel('my-fine-tuned-gpt4', ['text', 'image']),\n * createModel('local-llama', ['text']),\n * ] as const\n *\n * const myOpenai = extendAdapter(openaiText, customModels)\n * ```\n *\n * @example\n * ```typescript\n * // Capabilities object form - declare features and provider tools\n * const reasoner = createModel('reasoner', {\n * input: ['text'],\n * features: ['reasoning', 'structured_outputs'],\n * tools: ['web_search'],\n * })\n * ```\n */\n// Overload 1 — legacy positional input array (unchanged behavior)\nexport function createModel<\n const TName extends string,\n const TInput extends ReadonlyArray<Modality>,\n>(name: TName, input: TInput): ExtendedModelDef<TName, TInput>\n// Overload 2 — capabilities object\nexport function createModel<\n const TName extends string,\n const TCaps extends ModelCapabilities,\n>(\n name: TName,\n capabilities: TCaps,\n): ExtendedModelDef<\n TName,\n TCaps['input'] extends ReadonlyArray<Modality>\n ? TCaps['input']\n : ReadonlyArray<Modality>,\n TCaps['modelOptions'],\n TCaps['features'] extends ReadonlyArray<string>\n ? TCaps['features']\n : ReadonlyArray<string>,\n TCaps['tools'] extends ReadonlyArray<string>\n ? TCaps['tools']\n : ReadonlyArray<string>\n>\n// Implementation\nexport function createModel(\n name: string,\n second: ReadonlyArray<Modality> | ModelCapabilities,\n): ExtendedModelDef {\n if (Array.isArray(second)) {\n return { name, input: second, modelOptions: {} }\n }\n const caps = second as ModelCapabilities\n return {\n name,\n input: caps.input ?? (['text'] as ReadonlyArray<Modality>),\n modelOptions: caps.modelOptions ?? {},\n features: caps.features,\n tools: caps.tools,\n }\n}\n\n// ===========================\n// Type Extraction Utilities\n// ===========================\n\n/**\n * Extract the model name union from an array of model definitions.\n */\ntype ExtractCustomModelNames<TDefs extends ReadonlyArray<ExtendedModelDef>> =\n TDefs[number]['name']\n\n// ===========================\n// Factory Type Inference\n// ===========================\n\n/**\n * The widest factory shape `extendAdapter` accepts: any function taking a\n * model as its first parameter. Parameters are contravariant, so `never`\n * params and an `unknown` return accept every factory without resorting\n * to `any`.\n */\ntype AnyAdapterFactory = (model: never, ...args: Array<never>) => unknown\n\n/**\n * Infer the model parameter type from an adapter factory function.\n * For generic functions like `<T extends Union>(model: T)`, this gets `T` which\n * TypeScript treats as the constraint union when used in parameter position.\n */\ntype InferFactoryModels<TFactory> = TFactory extends (\n model: infer TModel,\n ...args: Array<never>\n) => unknown\n ? TModel extends string\n ? TModel\n : string\n : string\n\n/**\n * Infer the adapter return type from a factory function.\n */\ntype InferAdapterReturn<TFactory> = TFactory extends (\n ...args: Array<never>\n) => infer TReturn\n ? TReturn\n : never\n\n/**\n * Extracts all parameter types after the model parameter from a factory,\n * preserving labels and optionality (e.g. `[apiKey: string, config?: C]`).\n * Note: overloaded factories resolve against their last overload (a\n * `Parameters` limitation).\n */\ntype InferRestArgs<TFactory extends AnyAdapterFactory> =\n Parameters<TFactory> extends [unknown?, ...infer TRest] ? TRest : []\n\n/**\n * The factory signature produced by `extendAdapter`: accepts both original\n * and custom model names while preserving all remaining parameters and the\n * return type of the original factory.\n */\ntype ExtendedFactory<\n TFactory extends AnyAdapterFactory,\n TDefs extends ReadonlyArray<ExtendedModelDef>,\n> = (\n model: InferFactoryModels<TFactory> | ExtractCustomModelNames<TDefs>,\n ...args: InferRestArgs<TFactory>\n) => InferAdapterReturn<TFactory>\n\n// ===========================\n// extendAdapter Function\n// ===========================\n\n/**\n * Extends an existing adapter factory with additional custom models.\n *\n * The extended adapter accepts both original models (with full original type inference)\n * and custom models (with types from your definitions).\n *\n * At runtime, this simply passes through to the original factory - no validation is performed.\n * The original factory's signature is fully preserved, including any config parameters.\n *\n * @param factory - The original adapter factory function (e.g., `openaiText`, `anthropicText`)\n * @param models - Array of custom model definitions with `name` and `input`\n * @returns A new factory function that accepts both original and custom models\n *\n * @example\n * ```typescript\n * import { extendAdapter, createModel } from '@tanstack/ai'\n * import { openaiText } from '@tanstack/ai-openai'\n *\n * // Define custom models\n * const customModels = [\n * createModel('my-fine-tuned-gpt4', ['text', 'image']),\n * createModel('local-llama', ['text']),\n * ] as const\n *\n * // Create extended adapter\n * const myOpenai = extendAdapter(openaiText, customModels)\n *\n * // Use with original models - full type inference preserved\n * const gpt4 = myOpenai('gpt-4o')\n *\n * // Use with custom models\n * const custom = myOpenai('my-fine-tuned-gpt4')\n *\n * // Type error: 'invalid-model' is not a valid model\n * // myOpenai('invalid-model')\n *\n * // Works with chat()\n * chat({\n * adapter: myOpenai('my-fine-tuned-gpt4'),\n * messages: [...]\n * })\n * ```\n */\nexport function extendAdapter<\n TFactory extends AnyAdapterFactory,\n const TDefs extends ReadonlyArray<ExtendedModelDef>,\n>(factory: TFactory, _customModels: TDefs): ExtendedFactory<TFactory, TDefs>\n// The implementation signature stays at the honest `AnyAdapterFactory` width;\n// the overload above performs the deliberate model-union widening.\nexport function extendAdapter(\n factory: AnyAdapterFactory,\n _customModels: ReadonlyArray<ExtendedModelDef>,\n): AnyAdapterFactory {\n // At runtime, we simply pass through to the original factory.\n // The _customModels parameter is only used for type inference.\n // No runtime validation - users are trusted to pass valid model names.\n return factory\n}\n"],"names":[],"mappings":"AAmHO,SAAS,YACd,MACA,QACkB;AAClB,MAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,WAAO,EAAE,MAAM,OAAO,QAAQ,cAAc,CAAA,EAAC;AAAA,EAC/C;AACA,QAAM,OAAO;AACb,SAAO;AAAA,IACL;AAAA,IACA,OAAO,KAAK,SAAU,CAAC,MAAM;AAAA,IAC7B,cAAc,KAAK,gBAAgB,CAAA;AAAA,IACnC,UAAU,KAAK;AAAA,IACf,OAAO,KAAK;AAAA,EAAA;AAEhB;AA0HO,SAAS,cACd,SACA,eACmB;AAInB,SAAO;AACT;"}
@@ -0,0 +1,45 @@
1
+ export { chat, summarize, generateImage, generateAudio, generateVideo, getVideoJobStatus, generateSpeech, generateTranscription, } from './activities/index.js';
2
+ export { createChatOptions } from './activities/chat/index.js';
3
+ export { createSummarizeOptions } from './activities/summarize/index.js';
4
+ export { createImageOptions } from './activities/generateImage/index.js';
5
+ export { createAudioOptions } from './activities/generateAudio/index.js';
6
+ export { createVideoOptions } from './activities/generateVideo/index.js';
7
+ export { createSpeechOptions } from './activities/generateSpeech/index.js';
8
+ export { createTranscriptionOptions } from './activities/generateTranscription/index.js';
9
+ export type { AIAdapter, ImageAdapter, AnyImageAdapter, TextAdapter, AnyTextAdapter, AnySummarizeAdapter, SummarizeAdapter, AnyAudioAdapter, AudioAdapter, AnyTTSAdapter, TTSAdapter, AnyTranscriptionAdapter, TranscriptionAdapter, AnyVideoAdapter, VideoAdapter, } from './activities/index.js';
10
+ export { toolDefinition, type ToolDefinition, type ToolDefinitionInstance, type ToolDefinitionConfig, type ServerTool, type ClientTool, type AnyClientTool, type InferToolName, type InferToolInput, type InferToolOutput, } from './activities/chat/tools/tool-definition.js';
11
+ export type { MCPToolSource, ChatMCPOptions, MCPConnectionPolicy, } from './activities/chat/mcp/types.js';
12
+ export { MCPDuplicateToolNameError } from './activities/chat/mcp/manager.js';
13
+ export { convertSchemaToJsonSchema, isStandardSchema, parseWithStandardSchema, StandardSchemaValidationError, } from './activities/chat/tools/schema-converter.js';
14
+ export { streamToText, toServerSentEventsStream, toServerSentEventsResponse, toHttpStream, toHttpResponse, } from './stream-to-response.js';
15
+ export { ToolCallManager } from './activities/chat/tools/tool-calls.js';
16
+ export { DISCOVERY_TOOL_NAME } from './activities/chat/tools/lazy-tool-manager.js';
17
+ export type { ProviderTool } from './tools/provider-tool.js';
18
+ export { brandProviderTool } from './tools/provider-tool.js';
19
+ export { maxIterations, untilFinishReason, combineStrategies, } from './activities/chat/agent-loop-strategies.js';
20
+ export { createToolRegistry, createFrozenRegistry, type ToolRegistry, } from './tool-registry.js';
21
+ export type { ChatMiddleware, ChatMiddlewareContext, ChatMiddlewarePhase, ChatMiddlewareConfig, StructuredOutputMiddlewareConfig, ToolCallHookContext, BeforeToolCallDecision, AfterToolCallInfo, IterationInfo, ToolPhaseCompleteInfo, UsageInfo, FinishInfo, AbortInfo, ErrorInfo, } from './activities/chat/middleware/index.js';
22
+ export type { GenerationMiddleware, GenerationMiddlewareContext, GenerationActivity, GenerationUsageInfo, GenerationFinishInfo, GenerationAbortInfo, GenerationErrorInfo, AnyGenerationMiddleware, } from './activities/middleware/index.js';
23
+ export { createCapability, defineChatMiddleware, createChatMiddleware, } from './activities/chat/middleware/index.js';
24
+ export type { Capability, CapabilityHandle, CapabilityContext, CapabilityGetter, CapabilityProvider, } from './activities/chat/middleware/index.js';
25
+ export * from './types.js';
26
+ export { firstSentence, renderLazyCatalogEntry, } from './activities/chat/tools/lazy-tools.js';
27
+ export { buildBaseUsage, type BaseUsageInput } from './utilities/usage.js';
28
+ export { resolveMediaPrompt } from './utilities/media-prompt.js';
29
+ export type { ResolvedMediaPrompt } from './utilities/media-prompt.js';
30
+ export type { SystemPrompt, NormalizedSystemPrompt } from './system-prompts.js';
31
+ export { normalizeSystemPrompts } from './system-prompts.js';
32
+ export { detectImageMimeType } from './utils.js';
33
+ export { realtimeToken } from './realtime/index.js';
34
+ export type { RealtimeToken, RealtimeTokenAdapter, RealtimeTokenOptions, RealtimeSessionConfig, VADConfig, RealtimeMessage, RealtimeMessagePart, RealtimeTextPart, RealtimeAudioPart, RealtimeToolCallPart, RealtimeToolResultPart, RealtimeImagePart, RealtimeStatus, RealtimeMode, AudioVisualization, RealtimeEvent, RealtimeEventPayloads, RealtimeEventHandler, RealtimeErrorCode, RealtimeError, RealtimeAdapter, RealtimeConnection, } from './realtime/index.js';
35
+ export { convertMessagesToModelMessages, generateMessageId, uiMessageToModelMessages, modelMessageToUIMessage, modelMessagesToUIMessages, normalizeToUIMessage, } from './activities/chat/messages.js';
36
+ export { StreamProcessor, createReplayStream, ImmediateStrategy, PunctuationStrategy, BatchStrategy, WordBoundaryStrategy, CompositeStrategy, PartialJSONParser, defaultJSONParser, parsePartialJSON, } from './activities/chat/stream/index.js';
37
+ export type { ChunkStrategy, ChunkRecording, InternalToolCallState, ProcessorResult, ProcessorState, StreamProcessorEvents, StreamProcessorOptions, ToolCallState, ToolResultState, JSONParser, } from './activities/chat/stream/index.js';
38
+ export { chatParamsFromRequest, chatParamsFromRequestBody, mergeAgentTools, } from './utilities/chat-params.js';
39
+ export { uiMessagesToWire } from './utilities/ag-ui-wire.js';
40
+ export type { WireMessage } from './utilities/ag-ui-wire.js';
41
+ export { isContentPart, isContentPartArray, normalizeToolResult, } from './utilities/tool-result.js';
42
+ export { createModel, extendAdapter } from './extend-adapter.js';
43
+ export type { ExtendedModelDef, ModelCapabilities } from './extend-adapter.js';
44
+ export type { Logger, DebugCategories, DebugConfig, DebugOption, } from './logger/types.js';
45
+ export { ConsoleLogger } from './logger/console-logger.js';