@tambo-ai/react 0.73.0 → 0.74.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -12
- package/dist/hooks/use-component-state.d.ts +1 -1
- package/dist/hooks/use-component-state.js.map +1 -1
- package/dist/hooks/use-streaming-props.d.ts +1 -1
- package/dist/hooks/use-streaming-props.js +1 -1
- package/dist/hooks/use-streaming-props.js.map +1 -1
- package/dist/hooks/use-tambo-stream-status.d.ts +1 -1
- package/dist/hooks/use-tambo-stream-status.js +1 -1
- package/dist/hooks/use-tambo-stream-status.js.map +1 -1
- package/dist/mcp/mcp-hooks.d.ts +4 -0
- package/dist/mcp/mcp-hooks.d.ts.map +1 -1
- package/dist/mcp/mcp-hooks.js +4 -0
- package/dist/mcp/mcp-hooks.js.map +1 -1
- package/dist/providers/tambo-interactable-provider-partial-updates.test.js +3 -3
- package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
- package/dist/providers/tambo-interactable-provider.js +2 -2
- package/dist/providers/tambo-interactable-provider.js.map +1 -1
- package/dist/providers/tambo-interactable-provider.test.js +3 -3
- package/dist/providers/tambo-interactable-provider.test.js.map +1 -1
- package/dist/providers/tambo-provider.d.ts +3 -0
- package/dist/providers/tambo-provider.d.ts.map +1 -1
- package/dist/providers/tambo-provider.js +3 -0
- package/dist/providers/tambo-provider.js.map +1 -1
- package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
- package/dist/providers/tambo-thread-input-provider.js +1 -0
- package/dist/providers/tambo-thread-input-provider.js.map +1 -1
- package/dist/util/resource-content-resolver.d.ts.map +1 -1
- package/dist/util/resource-content-resolver.js +2 -0
- package/dist/util/resource-content-resolver.js.map +1 -1
- package/dist/v1/__tests__/v1-interactables.test.d.ts +2 -0
- package/dist/v1/__tests__/v1-interactables.test.d.ts.map +1 -0
- package/dist/v1/__tests__/v1-interactables.test.js +135 -0
- package/dist/v1/__tests__/v1-interactables.test.js.map +1 -0
- package/dist/v1/components/v1-component-renderer.d.ts +48 -0
- package/dist/v1/components/v1-component-renderer.d.ts.map +1 -0
- package/dist/v1/components/v1-component-renderer.js +137 -0
- package/dist/v1/components/v1-component-renderer.js.map +1 -0
- package/dist/v1/components/v1-component-renderer.test.d.ts +2 -0
- package/dist/v1/components/v1-component-renderer.test.d.ts.map +1 -0
- package/dist/v1/components/v1-component-renderer.test.js +270 -0
- package/dist/v1/components/v1-component-renderer.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-component-state.js +2 -25
- package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-component-state.test.js +2 -1
- package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-messages.test.js +25 -1
- package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +18 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.js +204 -17
- package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js +261 -7
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts +90 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.js +179 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +371 -0
- package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +78 -54
- package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-suggestions.js +153 -87
- package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +213 -134
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +148 -13
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +8 -21
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.js +11 -10
- package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +37 -2
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.d.ts +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.js +2 -7
- package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.test.js +2 -0
- package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.d.ts +12 -28
- package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.js +164 -31
- package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.test.js +891 -18
- package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
- package/dist/v1/index.d.ts +7 -1
- package/dist/v1/index.d.ts.map +1 -1
- package/dist/v1/index.js +18 -1
- package/dist/v1/index.js.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.d.ts +16 -6
- package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.js +14 -19
- package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.test.js +34 -20
- package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.d.ts +3 -3
- package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.js +60 -12
- package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.test.js +49 -20
- package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.js +2 -0
- package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.test.js +7 -6
- package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +1 -6
- package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-thread-input-provider.js +14 -12
- package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
- package/dist/v1/types/event.d.ts +9 -1
- package/dist/v1/types/event.d.ts.map +1 -1
- package/dist/v1/types/event.js.map +1 -1
- package/dist/v1/types/event.test.js +5 -1
- package/dist/v1/types/event.test.js.map +1 -1
- package/dist/v1/types/message.d.ts +65 -7
- package/dist/v1/types/message.d.ts.map +1 -1
- package/dist/v1/types/message.js.map +1 -1
- package/dist/v1/types/thread.d.ts +4 -0
- package/dist/v1/types/thread.d.ts.map +1 -1
- package/dist/v1/types/thread.js.map +1 -1
- package/dist/v1/utils/event-accumulator.d.ts +40 -4
- package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
- package/dist/v1/utils/event-accumulator.js +444 -35
- package/dist/v1/utils/event-accumulator.js.map +1 -1
- package/dist/v1/utils/event-accumulator.test.js +1041 -28
- package/dist/v1/utils/event-accumulator.test.js.map +1 -1
- package/dist/v1/utils/registry-conversion.d.ts +9 -9
- package/dist/v1/utils/registry-conversion.d.ts.map +1 -1
- package/dist/v1/utils/registry-conversion.js +10 -11
- package/dist/v1/utils/registry-conversion.js.map +1 -1
- package/dist/v1/utils/registry-conversion.test.js +39 -11
- package/dist/v1/utils/registry-conversion.test.js.map +1 -1
- package/dist/v1/utils/thread-utils.d.ts +16 -0
- package/dist/v1/utils/thread-utils.d.ts.map +1 -0
- package/dist/v1/utils/thread-utils.js +34 -0
- package/dist/v1/utils/thread-utils.js.map +1 -0
- package/dist/v1/utils/tool-executor.d.ts.map +1 -1
- package/dist/v1/utils/tool-executor.js +2 -0
- package/dist/v1/utils/tool-executor.js.map +1 -1
- package/dist/v1/utils/tool-executor.test.js +5 -0
- package/dist/v1/utils/tool-executor.test.js.map +1 -1
- package/esm/context-helpers/context-helpers-provider.test.js +2 -2
- package/esm/context-helpers/context-helpers.test.js +1 -1
- package/esm/context-helpers/current-interactables-context-helper.d.ts +1 -1
- package/esm/context-helpers/current-page-context-helper.d.ts +1 -1
- package/esm/context-helpers/current-time-context-helper.d.ts +1 -1
- package/esm/context-helpers/index.d.ts +4 -4
- package/esm/context-helpers/index.js +4 -4
- package/esm/hoc/with-tambo-interactable.d.ts +1 -1
- package/esm/hoc/with-tambo-interactable.js +2 -2
- package/esm/hoc/with-tambo-interactable.test.js +3 -3
- package/esm/hooks/index.d.ts +8 -8
- package/esm/hooks/index.js +8 -8
- package/esm/hooks/react-query-hooks.js +1 -1
- package/esm/hooks/use-component-state.d.ts +1 -1
- package/esm/hooks/use-component-state.js +3 -3
- package/esm/hooks/use-component-state.js.map +1 -1
- package/esm/hooks/use-component-state.test.js +5 -5
- package/esm/hooks/use-current-message.d.ts +1 -1
- package/esm/hooks/use-current-message.test.js +1 -1
- package/esm/hooks/use-message-images.test.js +1 -1
- package/esm/hooks/use-streaming-props.d.ts +1 -1
- package/esm/hooks/use-streaming-props.js +1 -1
- package/esm/hooks/use-streaming-props.js.map +1 -1
- package/esm/hooks/use-suggestions.d.ts +2 -2
- package/esm/hooks/use-suggestions.js +10 -10
- package/esm/hooks/use-suggestions.test.js +7 -7
- package/esm/hooks/use-tambo-stream-status.d.ts +1 -1
- package/esm/hooks/use-tambo-stream-status.js +4 -4
- package/esm/hooks/use-tambo-stream-status.js.map +1 -1
- package/esm/hooks/use-tambo-stream-status.test.js +4 -4
- package/esm/hooks/use-tambo-threads.js +3 -3
- package/esm/hooks/use-tambo-threads.test.js +3 -3
- package/esm/hooks/use-tambo-voice.js +2 -2
- package/esm/hooks/use-tambo-voice.test.js +3 -3
- package/esm/index.d.ts +22 -22
- package/esm/index.js +15 -15
- package/esm/mcp/elicitation.d.ts +1 -1
- package/esm/mcp/elicitation.test.js +1 -1
- package/esm/mcp/index.d.ts +7 -7
- package/esm/mcp/index.js +3 -3
- package/esm/mcp/mcp-client.d.ts +1 -1
- package/esm/mcp/mcp-client.js +1 -1
- package/esm/mcp/mcp-client.test.js +1 -1
- package/esm/mcp/mcp-hooks.d.ts +5 -1
- package/esm/mcp/mcp-hooks.d.ts.map +1 -1
- package/esm/mcp/mcp-hooks.js +8 -4
- package/esm/mcp/mcp-hooks.js.map +1 -1
- package/esm/mcp/mcp-hooks.test.js +6 -6
- package/esm/mcp/tambo-mcp-provider.d.ts +4 -4
- package/esm/mcp/tambo-mcp-provider.js +7 -7
- package/esm/mcp/tambo-mcp-provider.test.js +5 -5
- package/esm/mcp/use-mcp-servers.test.js +4 -4
- package/esm/model/generate-component-response.d.ts +1 -1
- package/esm/model/tambo-interactable.d.ts +1 -1
- package/esm/model/tambo-thread.d.ts +1 -1
- package/esm/providers/__tests__/thread-input-resource-resolution.test.js +3 -3
- package/esm/providers/hooks/use-tambo-session-token.test.js +1 -1
- package/esm/providers/index.d.ts +12 -12
- package/esm/providers/index.js +10 -10
- package/esm/providers/tambo-client-provider.js +1 -1
- package/esm/providers/tambo-client-provider.test.js +2 -2
- package/esm/providers/tambo-component-provider.d.ts +1 -1
- package/esm/providers/tambo-component-provider.js +2 -2
- package/esm/providers/tambo-context-attachment-provider.js +1 -1
- package/esm/providers/tambo-context-attachment-provider.test.js +2 -2
- package/esm/providers/tambo-context-helpers-provider.d.ts +1 -1
- package/esm/providers/tambo-context-helpers-provider.js +1 -1
- package/esm/providers/tambo-context-helpers-provider.test.js +2 -2
- package/esm/providers/tambo-interactable-provider-partial-updates.test.js +4 -4
- package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -1
- package/esm/providers/tambo-interactable-provider.d.ts +5 -5
- package/esm/providers/tambo-interactable-provider.js +6 -6
- package/esm/providers/tambo-interactable-provider.js.map +1 -1
- package/esm/providers/tambo-interactable-provider.test.js +4 -4
- package/esm/providers/tambo-interactable-provider.test.js.map +1 -1
- package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +4 -4
- package/esm/providers/tambo-interactables-additional-context.test.js +4 -4
- package/esm/providers/tambo-mcp-token-provider.js +2 -2
- package/esm/providers/tambo-prop-stream-provider/index.d.ts +8 -8
- package/esm/providers/tambo-prop-stream-provider/index.js +9 -9
- package/esm/providers/tambo-prop-stream-provider/pending.d.ts +1 -1
- package/esm/providers/tambo-prop-stream-provider/pending.js +2 -2
- package/esm/providers/tambo-prop-stream-provider/provider.d.ts +1 -1
- package/esm/providers/tambo-prop-stream-provider/provider.js +2 -2
- package/esm/providers/tambo-prop-stream-provider/streaming.d.ts +1 -1
- package/esm/providers/tambo-prop-stream-provider/streaming.js +2 -2
- package/esm/providers/tambo-prop-stream-provider/success.d.ts +1 -1
- package/esm/providers/tambo-prop-stream-provider/success.js +2 -2
- package/esm/providers/tambo-prop-stream-provider/types.d.ts +1 -1
- package/esm/providers/tambo-prop-stream-provider.test.js +4 -4
- package/esm/providers/tambo-provider.d.ts +10 -7
- package/esm/providers/tambo-provider.d.ts.map +1 -1
- package/esm/providers/tambo-provider.js +13 -10
- package/esm/providers/tambo-provider.js.map +1 -1
- package/esm/providers/tambo-registry-provider.d.ts +3 -3
- package/esm/providers/tambo-registry-provider.js +3 -3
- package/esm/providers/tambo-registry-provider.test.js +2 -2
- package/esm/providers/tambo-registry-schema-compat.test.js +2 -2
- package/esm/providers/tambo-stubs.d.ts +4 -4
- package/esm/providers/tambo-stubs.js +9 -9
- package/esm/providers/tambo-stubs.test.js +2 -2
- package/esm/providers/tambo-thread-input-provider.d.ts +2 -2
- package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
- package/esm/providers/tambo-thread-input-provider.js +11 -10
- package/esm/providers/tambo-thread-input-provider.js.map +1 -1
- package/esm/providers/tambo-thread-provider-initial-messages.test.js +6 -6
- package/esm/providers/tambo-thread-provider.d.ts +2 -2
- package/esm/providers/tambo-thread-provider.js +8 -8
- package/esm/providers/tambo-thread-provider.test.js +7 -7
- package/esm/schema/index.d.ts +4 -4
- package/esm/schema/index.js +4 -4
- package/esm/schema/json-schema.test.js +1 -1
- package/esm/schema/schema.d.ts +1 -1
- package/esm/schema/schema.js +2 -2
- package/esm/schema/schema.test.js +3 -3
- package/esm/schema/standard-schema.test.js +1 -1
- package/esm/schema/validate.js +2 -2
- package/esm/schema/validate.test.js +1 -1
- package/esm/testing/tools.d.ts +3 -3
- package/esm/testing/tools.js +2 -2
- package/esm/util/content-parts.test.js +1 -1
- package/esm/util/generate-component.d.ts +2 -2
- package/esm/util/generate-component.js +4 -4
- package/esm/util/generate-component.test.js +2 -2
- package/esm/util/is-promise.test.js +1 -1
- package/esm/util/mcp-server-utils.d.ts +1 -1
- package/esm/util/mcp-server-utils.js +1 -1
- package/esm/util/mcp-server-utils.test.js +2 -2
- package/esm/util/message-builder.d.ts +1 -1
- package/esm/util/message-builder.test.js +1 -1
- package/esm/util/query-utils.test.js +1 -1
- package/esm/util/registry-validators.d.ts +1 -1
- package/esm/util/registry-validators.js +2 -2
- package/esm/util/registry-validators.test.js +1 -1
- package/esm/util/registry.d.ts +1 -1
- package/esm/util/registry.js +1 -1
- package/esm/util/registry.test.js +2 -2
- package/esm/util/resource-content-resolver.d.ts +2 -2
- package/esm/util/resource-content-resolver.d.ts.map +1 -1
- package/esm/util/resource-content-resolver.js +3 -1
- package/esm/util/resource-content-resolver.js.map +1 -1
- package/esm/util/resource-content-resolver.test.js +3 -3
- package/esm/util/resource-validators.d.ts +1 -1
- package/esm/util/resource-validators.test.js +1 -1
- package/esm/util/tool-caller.d.ts +1 -1
- package/esm/util/tool-caller.js +1 -1
- package/esm/util/validate-component-name.test.js +1 -1
- package/esm/v1/__tests__/v1-interactables.test.d.ts +2 -0
- package/esm/v1/__tests__/v1-interactables.test.d.ts.map +1 -0
- package/esm/v1/__tests__/v1-interactables.test.js +130 -0
- package/esm/v1/__tests__/v1-interactables.test.js.map +1 -0
- package/esm/v1/components/v1-component-renderer.d.ts +48 -0
- package/esm/v1/components/v1-component-renderer.d.ts.map +1 -0
- package/esm/v1/components/v1-component-renderer.js +100 -0
- package/esm/v1/components/v1-component-renderer.js.map +1 -0
- package/esm/v1/components/v1-component-renderer.test.d.ts +2 -0
- package/esm/v1/components/v1-component-renderer.test.d.ts.map +1 -0
- package/esm/v1/components/v1-component-renderer.test.js +265 -0
- package/esm/v1/components/v1-component-renderer.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-component-state.js +4 -27
- package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-component-state.test.js +6 -5
- package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.d.ts +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.js +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.test.js +27 -3
- package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +20 -2
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.js +213 -26
- package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js +266 -12
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts +90 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.js +176 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +369 -0
- package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +78 -54
- package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-suggestions.js +157 -91
- package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +218 -139
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-input.js +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +151 -16
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +8 -21
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.js +12 -11
- package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +39 -4
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.d.ts +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.js +3 -8
- package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.test.js +4 -2
- package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.d.ts +15 -31
- package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.js +134 -34
- package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.test.js +862 -19
- package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
- package/esm/v1/index.d.ts +28 -22
- package/esm/v1/index.d.ts.map +1 -1
- package/esm/v1/index.js +30 -18
- package/esm/v1/index.js.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.d.ts +21 -11
- package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.js +20 -25
- package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.test.js +40 -26
- package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.d.ts +4 -4
- package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.js +62 -14
- package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.test.js +50 -21
- package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.d.ts +3 -3
- package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.js +7 -5
- package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.test.js +12 -11
- package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +3 -8
- package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-thread-input-provider.js +18 -16
- package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
- package/esm/v1/types/event.d.ts +9 -1
- package/esm/v1/types/event.d.ts.map +1 -1
- package/esm/v1/types/event.js.map +1 -1
- package/esm/v1/types/event.test.js +6 -2
- package/esm/v1/types/event.test.js.map +1 -1
- package/esm/v1/types/message.d.ts +65 -7
- package/esm/v1/types/message.d.ts.map +1 -1
- package/esm/v1/types/message.js.map +1 -1
- package/esm/v1/types/thread.d.ts +5 -1
- package/esm/v1/types/thread.d.ts.map +1 -1
- package/esm/v1/types/thread.js.map +1 -1
- package/esm/v1/utils/component-renderer.test.js +1 -1
- package/esm/v1/utils/event-accumulator.d.ts +41 -5
- package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
- package/esm/v1/utils/event-accumulator.js +444 -36
- package/esm/v1/utils/event-accumulator.js.map +1 -1
- package/esm/v1/utils/event-accumulator.test.js +1042 -29
- package/esm/v1/utils/event-accumulator.test.js.map +1 -1
- package/esm/v1/utils/json-patch.test.js +1 -1
- package/esm/v1/utils/registry-conversion.d.ts +9 -9
- package/esm/v1/utils/registry-conversion.d.ts.map +1 -1
- package/esm/v1/utils/registry-conversion.js +11 -12
- package/esm/v1/utils/registry-conversion.js.map +1 -1
- package/esm/v1/utils/registry-conversion.test.js +40 -12
- package/esm/v1/utils/registry-conversion.test.js.map +1 -1
- package/esm/v1/utils/stream-handler.test.js +1 -1
- package/esm/v1/utils/thread-utils.d.ts +16 -0
- package/esm/v1/utils/thread-utils.d.ts.map +1 -0
- package/esm/v1/utils/thread-utils.js +31 -0
- package/esm/v1/utils/thread-utils.js.map +1 -0
- package/esm/v1/utils/tool-call-tracker.d.ts +1 -1
- package/esm/v1/utils/tool-executor.d.ts +1 -1
- package/esm/v1/utils/tool-executor.d.ts.map +1 -1
- package/esm/v1/utils/tool-executor.js +2 -0
- package/esm/v1/utils/tool-executor.js.map +1 -1
- package/esm/v1/utils/tool-executor.test.js +6 -1
- package/esm/v1/utils/tool-executor.test.js.map +1 -1
- package/package.json +11 -10
|
@@ -15,10 +15,16 @@ const tambo_v1_stream_context_1 = require("../providers/tambo-v1-stream-context"
|
|
|
15
15
|
const use_tambo_v1_send_message_1 = require("./use-tambo-v1-send-message");
|
|
16
16
|
jest.mock("../../providers/tambo-client-provider", () => ({
|
|
17
17
|
useTamboClient: jest.fn(),
|
|
18
|
+
useTamboQueryClient: jest.fn(),
|
|
18
19
|
}));
|
|
19
20
|
jest.mock("../providers/tambo-v1-provider", () => ({
|
|
20
21
|
useTamboV1Config: jest.fn(),
|
|
21
22
|
}));
|
|
23
|
+
jest.mock("../../providers/tambo-context-helpers-provider", () => ({
|
|
24
|
+
useTamboContextHelpers: () => ({
|
|
25
|
+
getAdditionalContext: jest.fn().mockResolvedValue([]),
|
|
26
|
+
}),
|
|
27
|
+
}));
|
|
22
28
|
describe("useTamboV1SendMessage", () => {
|
|
23
29
|
const mockThreadsRunsApi = {
|
|
24
30
|
run: jest.fn(),
|
|
@@ -48,6 +54,7 @@ describe("useTamboV1SendMessage", () => {
|
|
|
48
54
|
},
|
|
49
55
|
});
|
|
50
56
|
jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboAI);
|
|
57
|
+
jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
|
|
51
58
|
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({ userKey: undefined });
|
|
52
59
|
mockThreadsRunsApi.run.mockReset();
|
|
53
60
|
mockThreadsRunsApi.create.mockReset();
|
|
@@ -91,7 +98,13 @@ describe("createRunStream", () => {
|
|
|
91
98
|
name: "TestComponent",
|
|
92
99
|
description: "A test component",
|
|
93
100
|
component: () => null,
|
|
94
|
-
|
|
101
|
+
// RegisteredComponent has props as JSON Schema (already converted from propsSchema)
|
|
102
|
+
props: {
|
|
103
|
+
type: "object",
|
|
104
|
+
properties: { title: { type: "string" } },
|
|
105
|
+
required: ["title"],
|
|
106
|
+
},
|
|
107
|
+
contextTools: [],
|
|
95
108
|
},
|
|
96
109
|
],
|
|
97
110
|
]),
|
|
@@ -123,17 +136,39 @@ describe("createRunStream", () => {
|
|
|
123
136
|
message: testMessage,
|
|
124
137
|
registry: mockRegistry,
|
|
125
138
|
userKey: undefined,
|
|
139
|
+
previousRunId: undefined,
|
|
126
140
|
});
|
|
127
141
|
expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", {
|
|
128
142
|
message: testMessage,
|
|
129
143
|
availableComponents: expect.any(Array),
|
|
130
144
|
tools: expect.any(Array),
|
|
131
145
|
userKey: undefined,
|
|
146
|
+
previousRunId: undefined,
|
|
132
147
|
});
|
|
133
148
|
expect(mockThreadsRunsApi.create).not.toHaveBeenCalled();
|
|
134
149
|
expect(result.stream).toBe(mockStream);
|
|
135
150
|
expect(result.initialThreadId).toBe("thread_123");
|
|
136
151
|
});
|
|
152
|
+
it("calls client.threads.runs.run with previousRunId when provided", async () => {
|
|
153
|
+
mockThreadsRunsApi.run.mockResolvedValue(mockStream);
|
|
154
|
+
const result = await (0, use_tambo_v1_send_message_1.createRunStream)({
|
|
155
|
+
client: mockClient,
|
|
156
|
+
threadId: "thread_123",
|
|
157
|
+
message: testMessage,
|
|
158
|
+
registry: mockRegistry,
|
|
159
|
+
userKey: undefined,
|
|
160
|
+
previousRunId: "run_456",
|
|
161
|
+
});
|
|
162
|
+
expect(mockThreadsRunsApi.run).toHaveBeenCalledWith("thread_123", {
|
|
163
|
+
message: testMessage,
|
|
164
|
+
availableComponents: expect.any(Array),
|
|
165
|
+
tools: expect.any(Array),
|
|
166
|
+
userKey: undefined,
|
|
167
|
+
previousRunId: "run_456",
|
|
168
|
+
});
|
|
169
|
+
expect(result.stream).toBe(mockStream);
|
|
170
|
+
expect(result.initialThreadId).toBe("thread_123");
|
|
171
|
+
});
|
|
137
172
|
it("calls client.threads.runs.create when threadId is not provided", async () => {
|
|
138
173
|
mockThreadsRunsApi.create.mockResolvedValue(mockStream);
|
|
139
174
|
const result = await (0, use_tambo_v1_send_message_1.createRunStream)({
|
|
@@ -142,6 +177,7 @@ describe("createRunStream", () => {
|
|
|
142
177
|
message: testMessage,
|
|
143
178
|
registry: mockRegistry,
|
|
144
179
|
userKey: undefined,
|
|
180
|
+
previousRunId: undefined,
|
|
145
181
|
});
|
|
146
182
|
expect(mockThreadsRunsApi.create).toHaveBeenCalledWith({
|
|
147
183
|
message: testMessage,
|
|
@@ -161,6 +197,7 @@ describe("createRunStream", () => {
|
|
|
161
197
|
message: testMessage,
|
|
162
198
|
registry: mockRegistry,
|
|
163
199
|
userKey: undefined,
|
|
200
|
+
previousRunId: undefined,
|
|
164
201
|
});
|
|
165
202
|
const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
|
|
166
203
|
expect(callArgs.availableComponents).toEqual([
|
|
@@ -179,6 +216,7 @@ describe("createRunStream", () => {
|
|
|
179
216
|
message: testMessage,
|
|
180
217
|
registry: mockRegistry,
|
|
181
218
|
userKey: undefined,
|
|
219
|
+
previousRunId: undefined,
|
|
182
220
|
});
|
|
183
221
|
const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
|
|
184
222
|
expect(callArgs.tools).toEqual([
|
|
@@ -200,6 +238,7 @@ describe("createRunStream", () => {
|
|
|
200
238
|
message: testMessage,
|
|
201
239
|
registry: emptyRegistry,
|
|
202
240
|
userKey: undefined,
|
|
241
|
+
previousRunId: undefined,
|
|
203
242
|
});
|
|
204
243
|
const callArgs = mockThreadsRunsApi.run.mock.calls[0][1];
|
|
205
244
|
expect(callArgs.availableComponents).toEqual([]);
|
|
@@ -235,6 +274,7 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
235
274
|
},
|
|
236
275
|
});
|
|
237
276
|
jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboAI);
|
|
277
|
+
jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
|
|
238
278
|
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({ userKey: undefined });
|
|
239
279
|
mockThreadsRunsApi.run.mockReset();
|
|
240
280
|
mockThreadsRunsApi.create.mockReset();
|
|
@@ -340,7 +380,11 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
340
380
|
{
|
|
341
381
|
type: core_1.EventType.CUSTOM,
|
|
342
382
|
name: "tambo.run.awaiting_input",
|
|
343
|
-
value: {
|
|
383
|
+
value: {
|
|
384
|
+
pendingToolCalls: [
|
|
385
|
+
{ toolCallId: "call_1", toolName: "test", arguments: "{}" },
|
|
386
|
+
],
|
|
387
|
+
},
|
|
344
388
|
},
|
|
345
389
|
]);
|
|
346
390
|
const continueStream = createAsyncIterator([
|
|
@@ -434,7 +478,11 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
434
478
|
{
|
|
435
479
|
type: core_1.EventType.CUSTOM,
|
|
436
480
|
name: "tambo.run.awaiting_input",
|
|
437
|
-
value: {
|
|
481
|
+
value: {
|
|
482
|
+
pendingToolCalls: [
|
|
483
|
+
{ toolCallId: "call_1", toolName: "test", arguments: "{}" },
|
|
484
|
+
],
|
|
485
|
+
},
|
|
438
486
|
},
|
|
439
487
|
]);
|
|
440
488
|
const continueStream = createAsyncIterator([
|
|
@@ -506,7 +554,11 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
506
554
|
{
|
|
507
555
|
type: core_1.EventType.CUSTOM,
|
|
508
556
|
name: "tambo.run.awaiting_input",
|
|
509
|
-
value: {
|
|
557
|
+
value: {
|
|
558
|
+
pendingToolCalls: [
|
|
559
|
+
{ toolCallId: "call_1", toolName: "test", arguments: "{}" },
|
|
560
|
+
],
|
|
561
|
+
},
|
|
510
562
|
},
|
|
511
563
|
]);
|
|
512
564
|
const continueStream = createAsyncIterator([
|
|
@@ -573,7 +625,11 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
573
625
|
{
|
|
574
626
|
type: core_1.EventType.CUSTOM,
|
|
575
627
|
name: "tambo.run.awaiting_input",
|
|
576
|
-
value: {
|
|
628
|
+
value: {
|
|
629
|
+
pendingToolCalls: [
|
|
630
|
+
{ toolCallId: "call_1", toolName: "test", arguments: "{}" },
|
|
631
|
+
],
|
|
632
|
+
},
|
|
577
633
|
},
|
|
578
634
|
]);
|
|
579
635
|
const continueStream = createAsyncIterator([
|
|
@@ -610,6 +666,7 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
610
666
|
expect(continueCall[1].message.content[0]).toEqual({
|
|
611
667
|
type: "tool_result",
|
|
612
668
|
toolUseId: "call_1",
|
|
669
|
+
isError: true,
|
|
613
670
|
content: [
|
|
614
671
|
{ type: "text", text: 'Tool "unknown_tool" not found in registry' },
|
|
615
672
|
],
|
|
@@ -716,7 +773,11 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
716
773
|
{
|
|
717
774
|
type: core_1.EventType.CUSTOM,
|
|
718
775
|
name: "tambo.run.awaiting_input",
|
|
719
|
-
value: {
|
|
776
|
+
value: {
|
|
777
|
+
pendingToolCalls: [
|
|
778
|
+
{ toolCallId: "call_1", toolName: "test", arguments: "{}" },
|
|
779
|
+
],
|
|
780
|
+
},
|
|
720
781
|
},
|
|
721
782
|
]);
|
|
722
783
|
// Second stream: AI receives tool_1 result, then calls tool_2
|
|
@@ -746,7 +807,11 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
746
807
|
{
|
|
747
808
|
type: core_1.EventType.CUSTOM,
|
|
748
809
|
name: "tambo.run.awaiting_input",
|
|
749
|
-
value: {
|
|
810
|
+
value: {
|
|
811
|
+
pendingToolCalls: [
|
|
812
|
+
{ toolCallId: "call_2", toolName: "test", arguments: "{}" },
|
|
813
|
+
],
|
|
814
|
+
},
|
|
750
815
|
},
|
|
751
816
|
]);
|
|
752
817
|
// Third stream: AI receives tool_2 result, finishes
|
|
@@ -837,4 +902,193 @@ describe("useTamboV1SendMessage mutation", () => {
|
|
|
837
902
|
consoleSpy.mockRestore();
|
|
838
903
|
});
|
|
839
904
|
});
|
|
905
|
+
describe("useTamboV1SendMessage auto thread name generation", () => {
|
|
906
|
+
const mockGenerateName = jest.fn();
|
|
907
|
+
const mockThreadsRunsApi = {
|
|
908
|
+
run: jest.fn(),
|
|
909
|
+
create: jest.fn(),
|
|
910
|
+
};
|
|
911
|
+
const mockTamboAI = {
|
|
912
|
+
apiKey: "",
|
|
913
|
+
threads: {
|
|
914
|
+
runs: mockThreadsRunsApi,
|
|
915
|
+
},
|
|
916
|
+
beta: {
|
|
917
|
+
threads: {
|
|
918
|
+
generateName: mockGenerateName,
|
|
919
|
+
},
|
|
920
|
+
},
|
|
921
|
+
};
|
|
922
|
+
let queryClient;
|
|
923
|
+
function createAsyncIterator(events) {
|
|
924
|
+
return {
|
|
925
|
+
[Symbol.asyncIterator]: async function* () {
|
|
926
|
+
for (const event of events) {
|
|
927
|
+
yield event;
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
};
|
|
931
|
+
}
|
|
932
|
+
const mockRegistry = {
|
|
933
|
+
componentList: new Map(),
|
|
934
|
+
toolRegistry: new Map(),
|
|
935
|
+
};
|
|
936
|
+
function TestWrapper({ children }) {
|
|
937
|
+
return (react_2.default.createElement(react_query_1.QueryClientProvider, { client: queryClient },
|
|
938
|
+
react_2.default.createElement(tambo_registry_provider_1.TamboRegistryContext.Provider, { value: mockRegistry },
|
|
939
|
+
react_2.default.createElement(tambo_v1_stream_context_1.TamboV1StreamProvider, null, children))));
|
|
940
|
+
}
|
|
941
|
+
function createFinishedStream(threadId) {
|
|
942
|
+
return createAsyncIterator([
|
|
943
|
+
{
|
|
944
|
+
type: core_1.EventType.RUN_STARTED,
|
|
945
|
+
runId: "run_1",
|
|
946
|
+
threadId,
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
type: core_1.EventType.TEXT_MESSAGE_START,
|
|
950
|
+
messageId: "msg_assistant_1",
|
|
951
|
+
role: "assistant",
|
|
952
|
+
},
|
|
953
|
+
{
|
|
954
|
+
type: core_1.EventType.TEXT_MESSAGE_CONTENT,
|
|
955
|
+
messageId: "msg_assistant_1",
|
|
956
|
+
delta: "Hello!",
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
type: core_1.EventType.TEXT_MESSAGE_END,
|
|
960
|
+
messageId: "msg_assistant_1",
|
|
961
|
+
},
|
|
962
|
+
{ type: core_1.EventType.RUN_FINISHED },
|
|
963
|
+
]);
|
|
964
|
+
}
|
|
965
|
+
beforeEach(() => {
|
|
966
|
+
queryClient = new react_query_1.QueryClient({
|
|
967
|
+
defaultOptions: {
|
|
968
|
+
queries: { retry: false },
|
|
969
|
+
mutations: { retry: false },
|
|
970
|
+
},
|
|
971
|
+
});
|
|
972
|
+
jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue(mockTamboAI);
|
|
973
|
+
jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
|
|
974
|
+
mockThreadsRunsApi.run.mockReset();
|
|
975
|
+
mockThreadsRunsApi.create.mockReset();
|
|
976
|
+
mockGenerateName.mockReset();
|
|
977
|
+
});
|
|
978
|
+
it("calls generateName when message count reaches threshold", async () => {
|
|
979
|
+
// Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
|
|
980
|
+
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
|
|
981
|
+
userKey: undefined,
|
|
982
|
+
autoGenerateThreadName: true,
|
|
983
|
+
autoGenerateNameThreshold: 2,
|
|
984
|
+
});
|
|
985
|
+
mockGenerateName.mockResolvedValue({ name: "Generated Thread Name" });
|
|
986
|
+
mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
|
|
987
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
|
|
988
|
+
wrapper: TestWrapper,
|
|
989
|
+
});
|
|
990
|
+
await (0, react_1.act)(async () => {
|
|
991
|
+
await result.current.mutateAsync({
|
|
992
|
+
message: {
|
|
993
|
+
role: "user",
|
|
994
|
+
content: [{ type: "text", text: "Hello" }],
|
|
995
|
+
},
|
|
996
|
+
});
|
|
997
|
+
});
|
|
998
|
+
await (0, react_1.waitFor)(() => {
|
|
999
|
+
expect(mockGenerateName).toHaveBeenCalledWith("thread_123");
|
|
1000
|
+
});
|
|
1001
|
+
});
|
|
1002
|
+
it("does not call generateName when autoGenerateThreadName is false", async () => {
|
|
1003
|
+
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
|
|
1004
|
+
userKey: undefined,
|
|
1005
|
+
autoGenerateThreadName: false,
|
|
1006
|
+
autoGenerateNameThreshold: 3,
|
|
1007
|
+
});
|
|
1008
|
+
mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
|
|
1009
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
|
|
1010
|
+
wrapper: TestWrapper,
|
|
1011
|
+
});
|
|
1012
|
+
await (0, react_1.act)(async () => {
|
|
1013
|
+
await result.current.mutateAsync({
|
|
1014
|
+
message: {
|
|
1015
|
+
role: "user",
|
|
1016
|
+
content: [{ type: "text", text: "Hello" }],
|
|
1017
|
+
},
|
|
1018
|
+
});
|
|
1019
|
+
});
|
|
1020
|
+
// mutateAsync resolves after onSuccess, so all async work has settled
|
|
1021
|
+
expect(mockGenerateName).not.toHaveBeenCalled();
|
|
1022
|
+
});
|
|
1023
|
+
it("does not call generateName when message count is below threshold", async () => {
|
|
1024
|
+
// With threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → skip
|
|
1025
|
+
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
|
|
1026
|
+
userKey: undefined,
|
|
1027
|
+
autoGenerateThreadName: true,
|
|
1028
|
+
autoGenerateNameThreshold: 3,
|
|
1029
|
+
});
|
|
1030
|
+
mockThreadsRunsApi.create.mockResolvedValue(createFinishedStream("new_thread"));
|
|
1031
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)(), {
|
|
1032
|
+
wrapper: TestWrapper,
|
|
1033
|
+
});
|
|
1034
|
+
await (0, react_1.act)(async () => {
|
|
1035
|
+
await result.current.mutateAsync({
|
|
1036
|
+
message: {
|
|
1037
|
+
role: "user",
|
|
1038
|
+
content: [{ type: "text", text: "Hello" }],
|
|
1039
|
+
},
|
|
1040
|
+
});
|
|
1041
|
+
});
|
|
1042
|
+
expect(mockGenerateName).not.toHaveBeenCalled();
|
|
1043
|
+
});
|
|
1044
|
+
it("logs error when generateName fails (does not throw)", async () => {
|
|
1045
|
+
// Threshold=2. Pre-mutation=0, 0 + 2 = 2 >= 2 → fire
|
|
1046
|
+
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
|
|
1047
|
+
userKey: undefined,
|
|
1048
|
+
autoGenerateThreadName: true,
|
|
1049
|
+
autoGenerateNameThreshold: 2,
|
|
1050
|
+
});
|
|
1051
|
+
const consoleSpy = jest
|
|
1052
|
+
.spyOn(console, "error")
|
|
1053
|
+
.mockImplementation(() => { });
|
|
1054
|
+
mockGenerateName.mockRejectedValue(new Error("API error"));
|
|
1055
|
+
mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
|
|
1056
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
|
|
1057
|
+
wrapper: TestWrapper,
|
|
1058
|
+
});
|
|
1059
|
+
await (0, react_1.act)(async () => {
|
|
1060
|
+
await result.current.mutateAsync({
|
|
1061
|
+
message: {
|
|
1062
|
+
role: "user",
|
|
1063
|
+
content: [{ type: "text", text: "Hello" }],
|
|
1064
|
+
},
|
|
1065
|
+
});
|
|
1066
|
+
});
|
|
1067
|
+
await (0, react_1.waitFor)(() => {
|
|
1068
|
+
expect(consoleSpy).toHaveBeenCalledWith("[useTamboV1SendMessage] Failed to auto-generate thread name:", expect.any(Error));
|
|
1069
|
+
});
|
|
1070
|
+
consoleSpy.mockRestore();
|
|
1071
|
+
});
|
|
1072
|
+
it("uses default config values (enabled, threshold=3)", async () => {
|
|
1073
|
+
// Don't set autoGenerateThreadName/autoGenerateNameThreshold — defaults apply
|
|
1074
|
+
jest.mocked(tambo_v1_provider_1.useTamboV1Config).mockReturnValue({
|
|
1075
|
+
userKey: undefined,
|
|
1076
|
+
});
|
|
1077
|
+
mockGenerateName.mockResolvedValue({ name: "Auto Name" });
|
|
1078
|
+
mockThreadsRunsApi.run.mockResolvedValue(createFinishedStream("thread_123"));
|
|
1079
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_send_message_1.useTamboV1SendMessage)("thread_123"), {
|
|
1080
|
+
wrapper: TestWrapper,
|
|
1081
|
+
});
|
|
1082
|
+
await (0, react_1.act)(async () => {
|
|
1083
|
+
await result.current.mutateAsync({
|
|
1084
|
+
message: {
|
|
1085
|
+
role: "user",
|
|
1086
|
+
content: [{ type: "text", text: "Hello" }],
|
|
1087
|
+
},
|
|
1088
|
+
});
|
|
1089
|
+
});
|
|
1090
|
+
// Default threshold=3, preMutation=0 messages, 0 + 2 = 2 < 3 → should NOT fire
|
|
1091
|
+
expect(mockGenerateName).not.toHaveBeenCalled();
|
|
1092
|
+
});
|
|
1093
|
+
});
|
|
840
1094
|
//# sourceMappingURL=use-tambo-v1-send-message.test.js.map
|