@tanstack/ai 0.31.0 → 0.33.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 (83) hide show
  1. package/dist/esm/activities/chat/index.js +24 -3
  2. package/dist/esm/activities/chat/index.js.map +1 -1
  3. package/dist/esm/activities/chat/middleware/types.d.ts +7 -0
  4. package/dist/esm/activities/chat/tools/lazy-tool-manager.d.ts +25 -1
  5. package/dist/esm/activities/chat/tools/lazy-tool-manager.js +26 -2
  6. package/dist/esm/activities/chat/tools/lazy-tool-manager.js.map +1 -1
  7. package/dist/esm/activities/generateAudio/index.d.ts +7 -0
  8. package/dist/esm/activities/generateAudio/index.js +26 -1
  9. package/dist/esm/activities/generateAudio/index.js.map +1 -1
  10. package/dist/esm/activities/generateImage/adapter.d.ts +8 -4
  11. package/dist/esm/activities/generateImage/adapter.js.map +1 -1
  12. package/dist/esm/activities/generateImage/index.d.ts +26 -3
  13. package/dist/esm/activities/generateImage/index.js +38 -2
  14. package/dist/esm/activities/generateImage/index.js.map +1 -1
  15. package/dist/esm/activities/generateSpeech/index.d.ts +7 -0
  16. package/dist/esm/activities/generateSpeech/index.js +26 -1
  17. package/dist/esm/activities/generateSpeech/index.js.map +1 -1
  18. package/dist/esm/activities/generateTranscription/index.d.ts +7 -0
  19. package/dist/esm/activities/generateTranscription/index.js +26 -1
  20. package/dist/esm/activities/generateTranscription/index.js.map +1 -1
  21. package/dist/esm/activities/generateVideo/adapter.d.ts +65 -6
  22. package/dist/esm/activities/generateVideo/adapter.js +14 -0
  23. package/dist/esm/activities/generateVideo/adapter.js.map +1 -1
  24. package/dist/esm/activities/generateVideo/index.d.ts +40 -5
  25. package/dist/esm/activities/generateVideo/index.js +52 -2
  26. package/dist/esm/activities/generateVideo/index.js.map +1 -1
  27. package/dist/esm/activities/generateVideo/snap.d.ts +14 -0
  28. package/dist/esm/activities/generateVideo/snap.js +54 -0
  29. package/dist/esm/activities/generateVideo/snap.js.map +1 -0
  30. package/dist/esm/activities/index.d.ts +3 -2
  31. package/dist/esm/activities/index.js +2 -0
  32. package/dist/esm/activities/index.js.map +1 -1
  33. package/dist/esm/activities/middleware/index.d.ts +2 -0
  34. package/dist/esm/activities/middleware/run.d.ts +20 -0
  35. package/dist/esm/activities/middleware/run.js +42 -0
  36. package/dist/esm/activities/middleware/run.js.map +1 -0
  37. package/dist/esm/activities/middleware/types.d.ts +118 -0
  38. package/dist/esm/client.d.ts +1 -1
  39. package/dist/esm/client.js.map +1 -1
  40. package/dist/esm/index.d.ts +4 -0
  41. package/dist/esm/index.js +4 -0
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/middlewares/otel.d.ts +8 -2
  44. package/dist/esm/middlewares/otel.js +145 -95
  45. package/dist/esm/middlewares/otel.js.map +1 -1
  46. package/dist/esm/middlewares/usage-attributes.d.ts +24 -0
  47. package/dist/esm/middlewares/usage-attributes.js +43 -0
  48. package/dist/esm/middlewares/usage-attributes.js.map +1 -0
  49. package/dist/esm/types.d.ts +103 -14
  50. package/dist/esm/utilities/errors.d.ts +13 -0
  51. package/dist/esm/utilities/errors.js +22 -0
  52. package/dist/esm/utilities/errors.js.map +1 -0
  53. package/dist/esm/utilities/media-prompt.d.ts +35 -0
  54. package/dist/esm/utilities/media-prompt.js +43 -0
  55. package/dist/esm/utilities/media-prompt.js.map +1 -0
  56. package/dist/esm/utilities/numbers.d.ts +8 -0
  57. package/dist/esm/utilities/numbers.js +12 -0
  58. package/dist/esm/utilities/numbers.js.map +1 -0
  59. package/package.json +2 -2
  60. package/skills/ai-core/media-generation/SKILL.md +173 -3
  61. package/src/activities/chat/index.ts +32 -4
  62. package/src/activities/chat/middleware/types.ts +7 -0
  63. package/src/activities/chat/tools/lazy-tool-manager.ts +46 -4
  64. package/src/activities/generateAudio/index.ts +42 -1
  65. package/src/activities/generateImage/adapter.ts +16 -3
  66. package/src/activities/generateImage/index.ts +90 -5
  67. package/src/activities/generateSpeech/index.ts +42 -1
  68. package/src/activities/generateTranscription/index.ts +42 -1
  69. package/src/activities/generateVideo/adapter.ts +80 -4
  70. package/src/activities/generateVideo/index.ts +141 -6
  71. package/src/activities/generateVideo/snap.ts +100 -0
  72. package/src/activities/index.ts +4 -0
  73. package/src/activities/middleware/index.ts +20 -0
  74. package/src/activities/middleware/run.ts +88 -0
  75. package/src/activities/middleware/types.ts +173 -0
  76. package/src/client.ts +4 -0
  77. package/src/index.ts +23 -0
  78. package/src/middlewares/otel.ts +195 -120
  79. package/src/middlewares/usage-attributes.ts +65 -0
  80. package/src/types.ts +126 -13
  81. package/src/utilities/errors.ts +29 -0
  82. package/src/utilities/media-prompt.ts +86 -0
  83. package/src/utilities/numbers.ts +15 -0
@@ -155,6 +155,7 @@ class TextEngine {
155
155
  this.deferredPromises.push(promise);
156
156
  },
157
157
  // Provider / adapter info
158
+ activity: "chat",
158
159
  provider: config.adapter.name,
159
160
  model: config.params.model,
160
161
  source: "server",
@@ -525,6 +526,20 @@ class TextEngine {
525
526
  this.currentThinkingSignature = chunk.signature;
526
527
  }
527
528
  }
529
+ /**
530
+ * Tools available for execution this turn. The discovery tool is dropped
531
+ * from the advertised set (`this.tools`) once every lazy tool is discovered,
532
+ * but a model may still re-request discovery; this widens execution lookup
533
+ * to include it so such calls don't fail with "Unknown tool". Centralised so
534
+ * both execution sites (`processToolCalls` and `checkForPendingToolCalls`)
535
+ * stay in sync.
536
+ */
537
+ resolveExecutableTools(toolCalls) {
538
+ return this.lazyToolManager.getExecutableTools(
539
+ this.tools,
540
+ toolCalls.map((tc) => tc.function.name)
541
+ );
542
+ }
528
543
  async *checkForPendingToolCalls() {
529
544
  const pendingToolCalls = this.getPendingToolCallsFromMessages();
530
545
  if (pendingToolCalls.length === 0) {
@@ -562,7 +577,7 @@ class TextEngine {
562
577
  const { approvals, clientToolResults } = this.collectClientState();
563
578
  const generator = executeToolCalls(
564
579
  executablePendingCalls,
565
- this.tools,
580
+ this.resolveExecutableTools(executablePendingCalls),
566
581
  approvals,
567
582
  clientToolResults,
568
583
  (eventName, data) => this.createCustomEventChunk(eventName, data),
@@ -694,7 +709,7 @@ class TextEngine {
694
709
  const { approvals, clientToolResults } = this.collectClientState();
695
710
  const generator = executeToolCalls(
696
711
  executableToolCalls,
697
- this.tools,
712
+ this.resolveExecutableTools(executableToolCalls),
698
713
  approvals,
699
714
  clientToolResults,
700
715
  (eventName, data) => this.createCustomEventChunk(eventName, data),
@@ -1629,7 +1644,13 @@ async function* fallbackStructuredOutputStream(adapter, options, onAdapterError)
1629
1644
  threadId,
1630
1645
  model,
1631
1646
  timestamp,
1632
- finishReason: "stop"
1647
+ finishReason: "stop",
1648
+ // Forward adapter-reported token usage so consumers reading
1649
+ // `RUN_FINISHED.usage` (and the engine's `runOnUsage` middleware hook) see
1650
+ // it on the fallback path, mirroring the native streaming path. The
1651
+ // conditional spread avoids emitting `usage: undefined` for adapters that
1652
+ // don't report it. See #758.
1653
+ ...result.usage ? { usage: result.usage } : {}
1633
1654
  };
1634
1655
  }
1635
1656
  function runStreamingStructuredOutput(options) {