@tanstack/ai 0.29.0 → 0.32.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 (72) hide show
  1. package/dist/esm/activities/chat/adapter.d.ts +10 -0
  2. package/dist/esm/activities/chat/adapter.js +1 -0
  3. package/dist/esm/activities/chat/adapter.js.map +1 -1
  4. package/dist/esm/activities/chat/index.d.ts +3 -2
  5. package/dist/esm/activities/chat/index.js +13 -1
  6. package/dist/esm/activities/chat/index.js.map +1 -1
  7. package/dist/esm/activities/chat/middleware/builder.d.ts +46 -0
  8. package/dist/esm/activities/chat/middleware/builder.js +17 -0
  9. package/dist/esm/activities/chat/middleware/builder.js.map +1 -0
  10. package/dist/esm/activities/chat/middleware/capabilities.d.ts +93 -0
  11. package/dist/esm/activities/chat/middleware/capabilities.js +45 -0
  12. package/dist/esm/activities/chat/middleware/capabilities.js.map +1 -0
  13. package/dist/esm/activities/chat/middleware/compose.d.ts +10 -0
  14. package/dist/esm/activities/chat/middleware/compose.js +47 -0
  15. package/dist/esm/activities/chat/middleware/compose.js.map +1 -1
  16. package/dist/esm/activities/chat/middleware/define.d.ts +20 -0
  17. package/dist/esm/activities/chat/middleware/define.js +7 -0
  18. package/dist/esm/activities/chat/middleware/define.js.map +1 -0
  19. package/dist/esm/activities/chat/middleware/index.d.ts +8 -0
  20. package/dist/esm/activities/chat/middleware/types.d.ts +51 -0
  21. package/dist/esm/activities/chat/middleware/validate.d.ts +19 -0
  22. package/dist/esm/activities/chat/middleware/validate.js +30 -0
  23. package/dist/esm/activities/chat/middleware/validate.js.map +1 -0
  24. package/dist/esm/activities/generateImage/adapter.d.ts +8 -4
  25. package/dist/esm/activities/generateImage/adapter.js.map +1 -1
  26. package/dist/esm/activities/generateImage/index.d.ts +19 -3
  27. package/dist/esm/activities/generateImage/index.js +12 -1
  28. package/dist/esm/activities/generateImage/index.js.map +1 -1
  29. package/dist/esm/activities/generateVideo/adapter.d.ts +65 -6
  30. package/dist/esm/activities/generateVideo/adapter.js +14 -0
  31. package/dist/esm/activities/generateVideo/adapter.js.map +1 -1
  32. package/dist/esm/activities/generateVideo/index.d.ts +31 -5
  33. package/dist/esm/activities/generateVideo/index.js.map +1 -1
  34. package/dist/esm/activities/generateVideo/snap.d.ts +14 -0
  35. package/dist/esm/activities/generateVideo/snap.js +54 -0
  36. package/dist/esm/activities/generateVideo/snap.js.map +1 -0
  37. package/dist/esm/activities/index.d.ts +3 -2
  38. package/dist/esm/activities/index.js +2 -0
  39. package/dist/esm/activities/index.js.map +1 -1
  40. package/dist/esm/client.d.ts +1 -1
  41. package/dist/esm/client.js.map +1 -1
  42. package/dist/esm/index.d.ts +4 -0
  43. package/dist/esm/index.js +8 -0
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/middlewares/otel.js +40 -12
  46. package/dist/esm/middlewares/otel.js.map +1 -1
  47. package/dist/esm/types.d.ts +96 -7
  48. package/dist/esm/utilities/media-prompt.d.ts +35 -0
  49. package/dist/esm/utilities/media-prompt.js +43 -0
  50. package/dist/esm/utilities/media-prompt.js.map +1 -0
  51. package/package.json +10 -2
  52. package/skills/ai-core/media-generation/SKILL.md +173 -3
  53. package/src/activities/chat/adapter.ts +11 -0
  54. package/src/activities/chat/index.ts +20 -1
  55. package/src/activities/chat/middleware/builder.ts +109 -0
  56. package/src/activities/chat/middleware/capabilities.ts +162 -0
  57. package/src/activities/chat/middleware/compose.ts +51 -0
  58. package/src/activities/chat/middleware/define.ts +34 -0
  59. package/src/activities/chat/middleware/index.ts +20 -0
  60. package/src/activities/chat/middleware/types.ts +60 -0
  61. package/src/activities/chat/middleware/validate.ts +55 -0
  62. package/src/activities/generateImage/adapter.ts +16 -3
  63. package/src/activities/generateImage/index.ts +48 -4
  64. package/src/activities/generateVideo/adapter.ts +80 -4
  65. package/src/activities/generateVideo/index.ts +53 -4
  66. package/src/activities/generateVideo/snap.ts +100 -0
  67. package/src/activities/index.ts +4 -0
  68. package/src/client.ts +4 -0
  69. package/src/index.ts +18 -0
  70. package/src/middlewares/otel.ts +57 -12
  71. package/src/types.ts +119 -6
  72. package/src/utilities/media-prompt.ts +86 -0
@@ -0,0 +1,86 @@
1
+ import type {
2
+ AudioPart,
3
+ ImagePart,
4
+ MediaInputMetadata,
5
+ MediaPrompt,
6
+ MediaPromptPart,
7
+ TextPart,
8
+ VideoPart,
9
+ } from '../types'
10
+
11
+ /**
12
+ * A {@link MediaPrompt} decomposed into the views adapters consume.
13
+ *
14
+ * Adapters with native multimodal prompts (Gemini `contents`, OpenRouter
15
+ * chat content parts) consume `parts` to preserve interleaving; named-field
16
+ * providers (fal, OpenAI) consume `text` plus the typed media buckets.
17
+ *
18
+ * Prompt text is **never rewritten**: text parts are concatenated verbatim.
19
+ * Providers that support referencing inputs from the prompt (e.g. fal's
20
+ * `@Image1`, OpenAI's "image 1" prose) expect the user to write that syntax
21
+ * themselves — the SDK does not inject or substitute markers.
22
+ */
23
+ export interface ResolvedMediaPrompt {
24
+ /**
25
+ * Text parts concatenated verbatim (paragraph-separated). Empty string
26
+ * for media-only prompts.
27
+ */
28
+ text: string
29
+ /** The prompt as ordered parts; a string prompt becomes one text part. */
30
+ parts: Array<MediaPromptPart>
31
+ /** Image parts in prompt order. */
32
+ images: Array<ImagePart<MediaInputMetadata>>
33
+ /** Video parts in prompt order. */
34
+ videos: Array<VideoPart<MediaInputMetadata>>
35
+ /** Audio parts in prompt order. */
36
+ audios: Array<AudioPart<MediaInputMetadata>>
37
+ }
38
+
39
+ /**
40
+ * Decompose a {@link MediaPrompt} into flattened text and per-modality part
41
+ * buckets, preserving prompt order everywhere. This is the single downrev
42
+ * point from the canonical interleaved prompt shape to the named-field
43
+ * request shapes most providers expose.
44
+ */
45
+ export function resolveMediaPrompt(prompt: MediaPrompt): ResolvedMediaPrompt {
46
+ if (typeof prompt === 'string') {
47
+ const textPart: TextPart = { type: 'text', content: prompt }
48
+ return {
49
+ text: prompt,
50
+ parts: [textPart],
51
+ images: [],
52
+ videos: [],
53
+ audios: [],
54
+ }
55
+ }
56
+
57
+ const images: Array<ImagePart<MediaInputMetadata>> = []
58
+ const videos: Array<VideoPart<MediaInputMetadata>> = []
59
+ const audios: Array<AudioPart<MediaInputMetadata>> = []
60
+ const textSegments: Array<string> = []
61
+
62
+ for (const part of prompt) {
63
+ switch (part.type) {
64
+ case 'text':
65
+ if (part.content) textSegments.push(part.content)
66
+ break
67
+ case 'image':
68
+ images.push(part)
69
+ break
70
+ case 'video':
71
+ videos.push(part)
72
+ break
73
+ case 'audio':
74
+ audios.push(part)
75
+ break
76
+ }
77
+ }
78
+
79
+ return {
80
+ text: textSegments.join('\n\n'),
81
+ parts: prompt,
82
+ images,
83
+ videos,
84
+ audios,
85
+ }
86
+ }