@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tambo-v1.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React from \"react\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { TamboV1StreamProvider } from \"../providers/tambo-v1-stream-context\";\nimport { useTamboV1 } from \"./use-tambo-v1\";\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n}));\n\ndescribe(\"useTamboV1\", () => {\n const mockTamboClient = {\n apiKey: \"\",\n threads: {},\n } as unknown as TamboAI;\n\n const mockRegistry: TamboRegistryContextType = {\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n registerComponent: jest.fn(),\n registerTool: jest.fn(),\n registerTools: jest.fn(),\n addToolAssociation: jest.fn(),\n registerMcpServer: jest.fn(),\n registerMcpServers: jest.fn(),\n registerResource: jest.fn(),\n registerResources: jest.fn(),\n registerResourceSource: jest.fn(),\n };\n\n function TestWrapper({ children }: { children: React.ReactNode }) {\n return (\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n );\n }\n\n beforeEach(() => {\n jest.mocked(useTamboClient).mockReturnValue(mockTamboClient);\n jest.clearAllMocks();\n });\n\n it(\"returns client from useTamboClient\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.client).toBe(mockTamboClient);\n });\n\n it(\"returns registry functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.registerComponent).toBe(\n mockRegistry.registerComponent,\n );\n expect(result.current.registerTool).toBe(mockRegistry.registerTool);\n expect(result.current.registerTools).toBe(mockRegistry.registerTools);\n expect(result.current.componentList).toBe(mockRegistry.componentList);\n expect(result.current.toolRegistry).toBe(mockRegistry.toolRegistry);\n });\n\n it(\"returns undefined thread when no threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.thread).toBeUndefined();\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns thread state when threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapper,\n });\n\n // Initialize thread first\n act(() => {\n result.current.initThread(\"thread_123\");\n });\n\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns default streaming state when thread not loaded\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.streamingState).toEqual({ status: \"idle\" });\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"returns thread streaming state when thread loaded\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapper,\n });\n\n // Initialize thread first\n act(() => {\n result.current.initThread(\"thread_123\");\n });\n\n expect(result.current.streamingState.status).toBe(\"idle\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"provides dispatch function for advanced usage\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.dispatch).toBe(\"function\");\n });\n\n it(\"provides thread management functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.initThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.startNewThread).toBe(\"function\");\n });\n\n it(\"initializes and switches threads\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initially no current thread\n expect(result.current.currentThreadId).toBeNull();\n expect(result.current.thread).toBeUndefined();\n\n // Initialize a new thread\n act(() => {\n result.current.initThread(\"new_thread_1\");\n });\n\n // Switch to the new thread\n act(() => {\n result.current.switchThread(\"new_thread_1\");\n });\n\n expect(result.current.currentThreadId).toBe(\"new_thread_1\");\n });\n\n it(\"starts new thread with generated ID\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n let newThreadId: string;\n act(() => {\n newThreadId = result.current.startNewThread();\n });\n\n expect(newThreadId!).toMatch(/^temp_/);\n expect(result.current.currentThreadId).toBe(newThreadId!);\n expect(result.current.thread).toBeDefined();\n });\n\n it(\"uses current thread when no threadId argument provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initialize and switch to a thread\n act(() => {\n result.current.initThread(\"thread_123\");\n result.current.switchThread(\"thread_123\");\n });\n\n // Should use current thread from context (thread_123)\n expect(result.current.currentThreadId).toBe(\"thread_123\");\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"use-tambo-v1.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React, { useReducer } from \"react\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { TamboV1StreamProvider } from \"../providers/tambo-v1-stream-context\";\nimport {\n streamReducer,\n type StreamState,\n type StreamAction,\n} from \"../utils/event-accumulator\";\nimport type { V1ComponentContent, V1ToolUseContent } from \"../types/message\";\nimport { useTamboV1 } from \"./use-tambo-v1\";\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n useTamboQueryClient: jest.fn(),\n}));\n\nimport { useTamboQueryClient } from \"../../providers/tambo-client-provider\";\n\ndescribe(\"useTamboV1\", () => {\n let queryClient: QueryClient;\n\n const mockTamboClient = {\n apiKey: \"\",\n threads: {\n messages: {\n list: jest.fn().mockResolvedValue({ messages: [], hasMore: false }),\n },\n runs: {\n delete: jest.fn().mockResolvedValue({}),\n },\n },\n } as unknown as TamboAI;\n\n const mockRegistry: TamboRegistryContextType = {\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n registerComponent: jest.fn(),\n registerTool: jest.fn(),\n registerTools: jest.fn(),\n addToolAssociation: jest.fn(),\n registerMcpServer: jest.fn(),\n registerMcpServers: jest.fn(),\n registerResource: jest.fn(),\n registerResources: jest.fn(),\n registerResourceSource: jest.fn(),\n };\n\n function TestWrapper({ children }: { children: React.ReactNode }) {\n return (\n <QueryClientProvider client={queryClient}>\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n </QueryClientProvider>\n );\n }\n\n function createWrapperWithState(\n state: StreamState,\n registry: TamboRegistryContextType = mockRegistry,\n ) {\n const noopDispatch: React.Dispatch<StreamAction> = () => {};\n return function WrapperWithState({\n children,\n }: {\n children: React.ReactNode;\n }) {\n return (\n <QueryClientProvider client={queryClient}>\n <TamboRegistryContext.Provider value={registry}>\n <TamboV1StreamProvider state={state} dispatch={noopDispatch}>\n {children}\n </TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n </QueryClientProvider>\n );\n };\n }\n\n // Wrapper that uses the real reducer so state updates properly\n function createWrapperWithRealReducer(initialState: StreamState) {\n return function WrapperWithRealReducer({\n children,\n }: {\n children: React.ReactNode;\n }) {\n const [state, dispatch] = useReducer(streamReducer, initialState);\n return (\n <QueryClientProvider client={queryClient}>\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider state={state} dispatch={dispatch}>\n {children}\n </TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n </QueryClientProvider>\n );\n };\n }\n\n beforeEach(() => {\n queryClient = new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n },\n });\n jest.mocked(useTamboClient).mockReturnValue(mockTamboClient);\n jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);\n jest.clearAllMocks();\n });\n\n it(\"returns client from useTamboClient\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.client).toBe(mockTamboClient);\n });\n\n it(\"returns registry functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.registerComponent).toBe(\n mockRegistry.registerComponent,\n );\n expect(result.current.registerTool).toBe(mockRegistry.registerTool);\n expect(result.current.registerTools).toBe(mockRegistry.registerTools);\n expect(result.current.componentList).toBe(mockRegistry.componentList);\n expect(result.current.toolRegistry).toBe(mockRegistry.toolRegistry);\n });\n\n it(\"returns placeholder thread when no threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Default state has placeholder thread for optimistic UI\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"placeholder\");\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns thread state when switched to a thread\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initialize and switch to thread\n act(() => {\n result.current.initThread(\"thread_123\");\n result.current.switchThread(\"thread_123\");\n });\n\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns default streaming state when thread not loaded\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.streamingState).toEqual({ status: \"idle\" });\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"returns thread streaming state when thread loaded\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initialize and switch to thread\n act(() => {\n result.current.initThread(\"thread_123\");\n result.current.switchThread(\"thread_123\");\n });\n\n expect(result.current.streamingState.status).toBe(\"idle\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"provides dispatch function for advanced usage\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.dispatch).toBe(\"function\");\n });\n\n it(\"provides thread management functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.initThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.startNewThread).toBe(\"function\");\n });\n\n it(\"initializes and switches threads\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initially has placeholder thread for optimistic UI\n expect(result.current.currentThreadId).toBe(\"placeholder\");\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"placeholder\");\n\n // Initialize a new thread\n act(() => {\n result.current.initThread(\"new_thread_1\");\n });\n\n // Switch to the new thread\n act(() => {\n result.current.switchThread(\"new_thread_1\");\n });\n\n expect(result.current.currentThreadId).toBe(\"new_thread_1\");\n });\n\n it(\"starts new thread with generated ID\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n let newThreadId: string;\n act(() => {\n newThreadId = result.current.startNewThread();\n });\n\n expect(newThreadId!).toBe(\"placeholder\");\n expect(result.current.currentThreadId).toBe(newThreadId!);\n expect(result.current.thread).toBeDefined();\n });\n\n it(\"uses current thread when no threadId argument provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initialize and switch to a thread\n act(() => {\n result.current.initThread(\"thread_123\");\n result.current.switchThread(\"thread_123\");\n });\n\n // Should use current thread from context (thread_123)\n expect(result.current.currentThreadId).toBe(\"thread_123\");\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n });\n\n describe(\"component content transformation\", () => {\n const createComponentContent = (\n id: string,\n name: string,\n props: Record<string, unknown>,\n ): V1ComponentContent => ({\n type: \"component\",\n id,\n name,\n props,\n streamingState: \"done\",\n });\n\n it(\"adds renderedComponent to component content blocks\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n createComponentContent(\"comp_1\", \"TestComponent\", {\n title: \"Hello\",\n }),\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n expect(result.current.messages).toHaveLength(1);\n const content = result.current.messages[0].content[0];\n expect(content.type).toBe(\"component\");\n expect((content as V1ComponentContent).renderedComponent).toBeDefined();\n });\n\n it(\"preserves non-component content blocks unchanged\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n { type: \"text\", text: \"Hello world\" },\n createComponentContent(\"comp_1\", \"TestComponent\", {\n title: \"Hi\",\n }),\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n expect(result.current.messages).toHaveLength(1);\n const textContent = result.current.messages[0].content[0];\n expect(textContent.type).toBe(\"text\");\n expect(textContent).toEqual({ type: \"text\", text: \"Hello world\" });\n\n const componentContent = result.current.messages[0].content[1];\n expect(componentContent.type).toBe(\"component\");\n expect(\n (componentContent as V1ComponentContent).renderedComponent,\n ).toBeDefined();\n });\n\n it(\"caches rendered components and returns same reference when props unchanged\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n createComponentContent(\"comp_1\", \"TestComponent\", {\n title: \"Hello\",\n }),\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result, rerender } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const firstRender = (\n result.current.messages[0].content[0] as V1ComponentContent\n ).renderedComponent;\n\n // Re-render with same state\n rerender();\n\n const secondRender = (\n result.current.messages[0].content[0] as V1ComponentContent\n ).renderedComponent;\n\n // Should return the same cached element reference\n expect(secondRender).toBe(firstRender);\n });\n\n it(\"handles empty props on components\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n createComponentContent(\"comp_1\", \"TestComponent\", {}),\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0];\n expect(content.type).toBe(\"component\");\n expect((content as V1ComponentContent).renderedComponent).toBeDefined();\n });\n\n it(\"handles undefined props on components\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"component\",\n id: \"comp_1\",\n name: \"TestComponent\",\n props: undefined,\n streamingState: \"done\",\n } as V1ComponentContent,\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0];\n expect(content.type).toBe(\"component\");\n expect((content as V1ComponentContent).renderedComponent).toBeDefined();\n });\n\n it(\"handles multiple component content blocks in same message\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n createComponentContent(\"comp_1\", \"ComponentA\", {\n value: 1,\n }),\n createComponentContent(\"comp_2\", \"ComponentB\", {\n value: 2,\n }),\n createComponentContent(\"comp_3\", \"ComponentC\", {\n value: 3,\n }),\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n expect(result.current.messages[0].content).toHaveLength(3);\n result.current.messages[0].content.forEach((content) => {\n expect(content.type).toBe(\"component\");\n expect((content as V1ComponentContent).renderedComponent).toBeDefined();\n });\n });\n\n it(\"uses currentThreadId from stream state\", () => {\n const state: StreamState = {\n threadMap: {\n placeholder: {\n thread: {\n id: \"placeholder\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n createComponentContent(\"comp_1\", \"TestComponent\", {\n title: \"Hello\",\n }),\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"placeholder\",\n };\n\n // No explicit threadId - uses currentThreadId from state\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n // Component should render using the placeholder thread\n const content = result.current.messages[0].content[0];\n expect(content.type).toBe(\"component\");\n expect((content as V1ComponentContent).renderedComponent).toBeDefined();\n });\n });\n\n describe(\"tool_use content transformation\", () => {\n it(\"adds computed properties to tool_use content\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getWeather\",\n input: { location: \"NYC\" },\n },\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n expect(content.type).toBe(\"tool_use\");\n expect(content.hasCompleted).toBe(false);\n expect(content.statusMessage).toBe(\"Calling getWeather\");\n expect(content.tamboDisplayProps).toBeDefined();\n });\n\n it(\"sets hasCompleted to true when matching tool_result exists\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getWeather\",\n input: { location: \"NYC\" },\n },\n ],\n createdAt: new Date().toISOString(),\n },\n {\n id: \"msg_2\",\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n toolUseId: \"tool_1\",\n content: [{ type: \"text\", text: \"Sunny\" }],\n },\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n expect(content.hasCompleted).toBe(true);\n expect(content.statusMessage).toBe(\"Called getWeather\");\n });\n\n it(\"uses _tambo_statusMessage when tool is in progress\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getWeather\",\n input: {\n location: \"NYC\",\n _tambo_statusMessage: \"Fetching weather for NYC...\",\n },\n },\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n expect(content.statusMessage).toBe(\"Fetching weather for NYC...\");\n expect(content.tamboDisplayProps?._tambo_statusMessage).toBe(\n \"Fetching weather for NYC...\",\n );\n });\n\n it(\"uses _tambo_completionStatusMessage when tool is completed\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getWeather\",\n input: {\n location: \"NYC\",\n _tambo_statusMessage: \"Fetching weather...\",\n _tambo_completionStatusMessage: \"Got weather for NYC\",\n },\n },\n ],\n createdAt: new Date().toISOString(),\n },\n {\n id: \"msg_2\",\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n toolUseId: \"tool_1\",\n content: [{ type: \"text\", text: \"Sunny\" }],\n },\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n expect(content.hasCompleted).toBe(true);\n expect(content.statusMessage).toBe(\"Got weather for NYC\");\n });\n\n it(\"filters _tambo_* properties from input\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getWeather\",\n input: {\n location: \"NYC\",\n units: \"celsius\",\n _tambo_statusMessage: \"Fetching...\",\n _tambo_completionStatusMessage: \"Done\",\n _tambo_displayMessage: \"Weather lookup\",\n },\n },\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n // Input should only have non-_tambo_ properties\n expect(content.input).toEqual({ location: \"NYC\", units: \"celsius\" });\n expect(content.input._tambo_statusMessage).toBeUndefined();\n expect(content.input._tambo_completionStatusMessage).toBeUndefined();\n expect(content.input._tambo_displayMessage).toBeUndefined();\n });\n\n it(\"handles tool_use with empty input\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getCurrentTime\",\n input: {},\n },\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n expect(content.input).toEqual({});\n expect(content.hasCompleted).toBe(false);\n expect(content.statusMessage).toBe(\"Calling getCurrentTime\");\n });\n\n it(\"handles tool_use with undefined input\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getCurrentTime\",\n input: undefined,\n } as unknown as V1ToolUseContent,\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const content = result.current.messages[0].content[0] as V1ToolUseContent;\n expect(content.input).toEqual({});\n expect(content.hasCompleted).toBe(false);\n });\n\n it(\"handles multiple tool_use blocks with different completion states\", () => {\n const state: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [\n {\n type: \"tool_use\",\n id: \"tool_1\",\n name: \"getWeather\",\n input: { location: \"NYC\" },\n },\n {\n type: \"tool_use\",\n id: \"tool_2\",\n name: \"getTime\",\n input: { timezone: \"EST\" },\n },\n ],\n createdAt: new Date().toISOString(),\n },\n {\n id: \"msg_2\",\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n toolUseId: \"tool_1\",\n content: [{ type: \"text\", text: \"Sunny\" }],\n },\n // tool_2 has no result yet\n ],\n createdAt: new Date().toISOString(),\n },\n ],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithState(state),\n });\n\n const tool1 = result.current.messages[0].content[0] as V1ToolUseContent;\n const tool2 = result.current.messages[0].content[1] as V1ToolUseContent;\n\n expect(tool1.hasCompleted).toBe(true);\n expect(tool1.statusMessage).toBe(\"Called getWeather\");\n\n expect(tool2.hasCompleted).toBe(false);\n expect(tool2.statusMessage).toBe(\"Calling getTime\");\n });\n });\n\n describe(\"cancelRun\", () => {\n it(\"sets thread to idle and lastRunCancelled to true when cancelled\", async () => {\n const initialState: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [],\n status: \"streaming\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"streaming\", runId: \"run_456\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithRealReducer(initialState),\n });\n\n // Before cancel: streaming and lastRunCancelled is false\n expect(result.current.isStreaming).toBe(true);\n expect(result.current.isIdle).toBe(false);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(false);\n\n await act(async () => {\n await result.current.cancelRun();\n });\n\n // After cancel: idle and lastRunCancelled is true\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isIdle).toBe(true);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(true);\n\n // Verify API was called to cancel the run\n expect(mockTamboClient.threads.runs.delete).toHaveBeenCalledWith(\n \"run_456\",\n { threadId: \"thread_123\" },\n );\n });\n\n it(\"is a no-op when there is no active run\", async () => {\n const initialState: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [],\n status: \"idle\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"idle\" }, // No runId\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithRealReducer(initialState),\n });\n\n // Idle before\n expect(result.current.isIdle).toBe(true);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(false);\n\n await act(async () => {\n await result.current.cancelRun();\n });\n\n // Still idle, lastRunCancelled unchanged\n expect(result.current.isIdle).toBe(true);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(false);\n\n // API should not have been called\n expect(mockTamboClient.threads.runs.delete).not.toHaveBeenCalled();\n });\n\n it(\"is a no-op when on a placeholder thread\", async () => {\n const initialState: StreamState = {\n threadMap: {\n placeholder: {\n thread: {\n id: \"placeholder\",\n messages: [],\n status: \"streaming\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"streaming\", runId: \"run_123\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"placeholder\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithRealReducer(initialState),\n });\n\n // Before: streaming on placeholder\n expect(result.current.isStreaming).toBe(true);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(false);\n\n await act(async () => {\n await result.current.cancelRun();\n });\n\n // After: state should be unchanged (placeholder threads are skipped)\n expect(result.current.isStreaming).toBe(true);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(false);\n\n // API should not have been called for placeholder threads\n expect(mockTamboClient.threads.runs.delete).not.toHaveBeenCalled();\n });\n\n it(\"still updates local state even if API call fails\", async () => {\n const consoleWarnSpy = jest\n .spyOn(console, \"warn\")\n .mockImplementation(() => {});\n\n // Make the API call fail\n jest\n .mocked(mockTamboClient.threads.runs.delete)\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const initialState: StreamState = {\n threadMap: {\n thread_123: {\n thread: {\n id: \"thread_123\",\n messages: [],\n status: \"streaming\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n lastRunCancelled: false,\n },\n streaming: { status: \"streaming\", runId: \"run_456\" },\n accumulatingToolArgs: new Map(),\n },\n },\n currentThreadId: \"thread_123\",\n };\n\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: createWrapperWithRealReducer(initialState),\n });\n\n await act(async () => {\n await result.current.cancelRun();\n });\n\n // Local state should still be updated (optimistic update)\n expect(result.current.isIdle).toBe(true);\n expect(result.current.thread?.thread.lastRunCancelled).toBe(true);\n\n // Warning should have been logged\n expect(consoleWarnSpy).toHaveBeenCalledWith(\n \"Failed to cancel run on server:\",\n expect.any(Error),\n );\n\n consoleWarnSpy.mockRestore();\n });\n });\n});\n"]}
|
package/esm/v1/index.d.ts
CHANGED
|
@@ -66,28 +66,34 @@
|
|
|
66
66
|
* SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`
|
|
67
67
|
* AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`
|
|
68
68
|
*/
|
|
69
|
-
export { TamboV1Provider, type TamboV1ProviderProps, useTamboV1Config, type TamboV1Config, } from "./providers/tambo-v1-provider";
|
|
70
|
-
export { TamboRegistryProvider } from "../providers/tambo-registry-provider";
|
|
71
|
-
export { TamboClientProvider, useIsTamboTokenUpdating, } from "../providers/tambo-client-provider";
|
|
72
|
-
export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider";
|
|
73
|
-
export { TamboV1ThreadInputProvider, type TamboV1ThreadInputContextProps, type SubmitOptions, } from "./providers/tambo-v1-thread-input-provider";
|
|
74
|
-
export { TamboV1StubProvider, type TamboV1StubProviderProps, } from "./providers/tambo-v1-stub-provider";
|
|
75
|
-
export {
|
|
76
|
-
export {
|
|
77
|
-
export {
|
|
78
|
-
export {
|
|
79
|
-
export {
|
|
80
|
-
export {
|
|
81
|
-
export {
|
|
82
|
-
export {
|
|
83
|
-
export {
|
|
84
|
-
export {
|
|
85
|
-
export {
|
|
86
|
-
export
|
|
87
|
-
export
|
|
88
|
-
export {
|
|
89
|
-
export type {
|
|
90
|
-
export
|
|
69
|
+
export { TamboV1Provider, type TamboV1ProviderProps, useTamboV1Config, type TamboV1Config, } from "./providers/tambo-v1-provider.js";
|
|
70
|
+
export { TamboRegistryProvider } from "../providers/tambo-registry-provider.js";
|
|
71
|
+
export { TamboClientProvider, useIsTamboTokenUpdating, } from "../providers/tambo-client-provider.js";
|
|
72
|
+
export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider.js";
|
|
73
|
+
export { TamboV1ThreadInputProvider, type TamboV1ThreadInputContextProps, type SubmitOptions, } from "./providers/tambo-v1-thread-input-provider.js";
|
|
74
|
+
export { TamboV1StubProvider, type TamboV1StubProviderProps, } from "./providers/tambo-v1-stub-provider.js";
|
|
75
|
+
export { V1ComponentRenderer, type V1ComponentRendererProps, } from "./components/v1-component-renderer.js";
|
|
76
|
+
export { useTamboV1 } from "./hooks/use-tambo-v1.js";
|
|
77
|
+
export { useTamboV1ThreadInput } from "./hooks/use-tambo-v1-thread-input.js";
|
|
78
|
+
export { useTamboV1Thread } from "./hooks/use-tambo-v1-thread.js";
|
|
79
|
+
export { useTamboV1ThreadList } from "./hooks/use-tambo-v1-thread-list.js";
|
|
80
|
+
export { useTamboV1ComponentState } from "./hooks/use-tambo-v1-component-state.js";
|
|
81
|
+
export { useTamboV1StreamStatus, type StreamStatus, type PropStatus, } from "./hooks/use-tambo-v1-stream-status.js";
|
|
82
|
+
export { useTamboV1Suggestions, type UseTamboV1SuggestionsOptions, type UseTamboV1SuggestionsReturn, type AcceptSuggestionOptions, } from "./hooks/use-tambo-v1-suggestions.js";
|
|
83
|
+
export { useTamboClient } from "../providers/tambo-client-provider.js";
|
|
84
|
+
export { useMessageImages, type StagedImage, } from "../hooks/use-message-images.js";
|
|
85
|
+
export { useTamboVoice } from "../hooks/use-tambo-voice.js";
|
|
86
|
+
export { defineTool } from "../util/registry.js";
|
|
87
|
+
export { currentPageContextHelper, currentTimeContextHelper, } from "../context-helpers/index.js";
|
|
88
|
+
export type { AdditionalContext, ContextHelperFn, ContextHelpers, } from "../context-helpers/index.js";
|
|
89
|
+
export type { ComponentContextToolMetadata, ComponentRegistry, ParameterSpec, RegisteredComponent, TamboComponent, TamboTool, ToolAnnotations, } from "../model/component-metadata.js";
|
|
90
|
+
export { MCPTransport } from "../model/mcp-server-info.js";
|
|
91
|
+
export type { McpServerInfo, NormalizedMcpServerInfo, } from "../model/mcp-server-info.js";
|
|
92
|
+
export type { ListResourceItem, ReadResourceResult, ResourceSource, } from "../model/resource-info.js";
|
|
91
93
|
export type { APIError, RateLimitError, TamboAIError, } from "@tambo-ai/typescript-sdk";
|
|
92
94
|
export type { Suggestion, SuggestionGenerateParams, SuggestionGenerateResponse, SuggestionListResponse, } from "@tambo-ai/typescript-sdk/resources/beta/threads/suggestions";
|
|
95
|
+
export type { V1ToolUseContent, TamboToolDisplayProps } from "./types/message.js";
|
|
96
|
+
export { withTamboInteractable as withInteractable, type InteractableConfig, type WithTamboInteractableProps, } from "../hoc/with-tambo-interactable.js";
|
|
97
|
+
export { useTamboInteractable, useCurrentInteractablesSnapshot, } from "../providers/tambo-interactable-provider.js";
|
|
98
|
+
export type { TamboInteractableComponent as InteractableComponent, TamboInteractableContext, } from "../model/tambo-interactable.js";
|
|
93
99
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/v1/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAMH,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACnC,KAAK,aAAa,GACnB,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAMH,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACnC,KAAK,aAAa,GACnB,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,GAC7B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EACV,aAAa,EACb,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6DAA6D,CAAC;AAGrE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAO/E,OAAO,EACL,qBAAqB,IAAI,gBAAgB,EACzC,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EACL,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,0CAA0C,CAAC;AAGlD,YAAY,EACV,0BAA0B,IAAI,qBAAqB,EACnD,wBAAwB,GACzB,MAAM,6BAA6B,CAAC"}
|
package/esm/v1/index.js
CHANGED
|
@@ -69,39 +69,51 @@
|
|
|
69
69
|
// =============================================================================
|
|
70
70
|
// Providers
|
|
71
71
|
// =============================================================================
|
|
72
|
-
export { TamboV1Provider, useTamboV1Config, } from "./providers/tambo-v1-provider";
|
|
72
|
+
export { TamboV1Provider, useTamboV1Config, } from "./providers/tambo-v1-provider.js";
|
|
73
73
|
// Re-export registry provider from beta SDK (works with v1)
|
|
74
|
-
export { TamboRegistryProvider } from "../providers/tambo-registry-provider";
|
|
74
|
+
export { TamboRegistryProvider } from "../providers/tambo-registry-provider.js";
|
|
75
75
|
// Re-export client provider from beta SDK (works with v1)
|
|
76
|
-
export { TamboClientProvider, useIsTamboTokenUpdating, } from "../providers/tambo-client-provider";
|
|
76
|
+
export { TamboClientProvider, useIsTamboTokenUpdating, } from "../providers/tambo-client-provider.js";
|
|
77
77
|
// Re-export context helpers from beta SDK (works with v1)
|
|
78
|
-
export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider";
|
|
78
|
+
export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider.js";
|
|
79
79
|
// Export v1 thread input provider for advanced composition
|
|
80
|
-
export { TamboV1ThreadInputProvider, } from "./providers/tambo-v1-thread-input-provider";
|
|
80
|
+
export { TamboV1ThreadInputProvider, } from "./providers/tambo-v1-thread-input-provider.js";
|
|
81
81
|
// Export v1 stub provider for testing
|
|
82
|
-
export { TamboV1StubProvider, } from "./providers/tambo-v1-stub-provider";
|
|
82
|
+
export { TamboV1StubProvider, } from "./providers/tambo-v1-stub-provider.js";
|
|
83
|
+
// =============================================================================
|
|
84
|
+
// Components
|
|
85
|
+
// =============================================================================
|
|
86
|
+
export { V1ComponentRenderer, } from "./components/v1-component-renderer.js";
|
|
83
87
|
// =============================================================================
|
|
84
88
|
// Hooks
|
|
85
89
|
// =============================================================================
|
|
86
|
-
export { useTamboV1 } from "./hooks/use-tambo-v1";
|
|
87
|
-
export { useTamboV1ThreadInput } from "./hooks/use-tambo-v1-thread-input";
|
|
88
|
-
export { useTamboV1Thread } from "./hooks/use-tambo-v1-thread";
|
|
89
|
-
export { useTamboV1ThreadList } from "./hooks/use-tambo-v1-thread-list";
|
|
90
|
-
export { useTamboV1ComponentState } from "./hooks/use-tambo-v1-component-state";
|
|
91
|
-
export {
|
|
90
|
+
export { useTamboV1 } from "./hooks/use-tambo-v1.js";
|
|
91
|
+
export { useTamboV1ThreadInput } from "./hooks/use-tambo-v1-thread-input.js";
|
|
92
|
+
export { useTamboV1Thread } from "./hooks/use-tambo-v1-thread.js";
|
|
93
|
+
export { useTamboV1ThreadList } from "./hooks/use-tambo-v1-thread-list.js";
|
|
94
|
+
export { useTamboV1ComponentState } from "./hooks/use-tambo-v1-component-state.js";
|
|
95
|
+
export { useTamboV1StreamStatus, } from "./hooks/use-tambo-v1-stream-status.js";
|
|
96
|
+
export { useTamboV1Suggestions, } from "./hooks/use-tambo-v1-suggestions.js";
|
|
92
97
|
// Re-export client hook from beta SDK (works with v1)
|
|
93
|
-
export { useTamboClient } from "../providers/tambo-client-provider";
|
|
98
|
+
export { useTamboClient } from "../providers/tambo-client-provider.js";
|
|
94
99
|
// Re-export image handling hook (pure React, API-agnostic)
|
|
95
|
-
export { useMessageImages, } from "../hooks/use-message-images";
|
|
100
|
+
export { useMessageImages, } from "../hooks/use-message-images.js";
|
|
96
101
|
// Re-export voice input hook (uses standalone transcription API)
|
|
97
|
-
export { useTamboVoice } from "../hooks/use-tambo-voice";
|
|
102
|
+
export { useTamboVoice } from "../hooks/use-tambo-voice.js";
|
|
98
103
|
// =============================================================================
|
|
99
104
|
// Re-exports from Beta SDK (compatible with v1)
|
|
100
105
|
// =============================================================================
|
|
101
106
|
// Tool definition helper
|
|
102
|
-
export { defineTool } from "../util/registry";
|
|
107
|
+
export { defineTool } from "../util/registry.js";
|
|
103
108
|
// Built-in context helpers
|
|
104
|
-
export { currentPageContextHelper, currentTimeContextHelper, } from "../context-helpers";
|
|
109
|
+
export { currentPageContextHelper, currentTimeContextHelper, } from "../context-helpers/index.js";
|
|
105
110
|
// MCP server types
|
|
106
|
-
export { MCPTransport } from "../model/mcp-server-info";
|
|
111
|
+
export { MCPTransport } from "../model/mcp-server-info.js";
|
|
112
|
+
// =============================================================================
|
|
113
|
+
// Interactable Components
|
|
114
|
+
// =============================================================================
|
|
115
|
+
// HOC for making components interactable by the AI
|
|
116
|
+
export { withTamboInteractable as withInteractable, } from "../hoc/with-tambo-interactable.js";
|
|
117
|
+
// Interactable provider hooks
|
|
118
|
+
export { useTamboInteractable, useCurrentInteractablesSnapshot, } from "../providers/tambo-interactable-provider.js";
|
|
107
119
|
//# sourceMappingURL=index.js.map
|
package/esm/v1/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,OAAO,EACL,eAAe,EAEf,gBAAgB,GAEjB,MAAM,+BAA+B,CAAC;AAEvC,4DAA4D;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,0DAA0D;AAC1D,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,0DAA0D;AAC1D,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAErD,2DAA2D;AAC3D,OAAO,EACL,0BAA0B,GAG3B,MAAM,4CAA4C,CAAC;AAEpD,sCAAsC;AACtC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oCAAoC,CAAC;AAE5C,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EACL,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,OAAO,EACL,eAAe,EAEf,gBAAgB,GAEjB,MAAM,+BAA+B,CAAC;AAEvC,4DAA4D;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,0DAA0D;AAC1D,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,0DAA0D;AAC1D,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAErD,2DAA2D;AAC3D,OAAO,EACL,0BAA0B,GAG3B,MAAM,4CAA4C,CAAC;AAEpD,sCAAsC;AACtC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oCAAoC,CAAC;AAE5C,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,OAAO,EACL,mBAAmB,GAEpB,MAAM,oCAAoC,CAAC;AAE5C,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EACL,sBAAsB,GAGvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,qBAAqB,GAItB,MAAM,kCAAkC,CAAC;AAE1C,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,2DAA2D;AAC3D,OAAO,EACL,gBAAgB,GAEjB,MAAM,6BAA6B,CAAC;AAErC,iEAAiE;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,gFAAgF;AAChF,gDAAgD;AAChD,gFAAgF;AAEhF,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2BAA2B;AAC3B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAoB5B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA+BxD,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF,mDAAmD;AACnD,OAAO,EACL,qBAAqB,IAAI,gBAAgB,GAG1C,MAAM,gCAAgC,CAAC;AAExC,8BAA8B;AAC9B,OAAO,EACL,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,0CAA0C,CAAC","sourcesContent":["/**\n * `@tambo-ai/react/v1` - React SDK for Tambo v1 API\n *\n * Provides React hooks and providers for building AI-powered applications\n * using the v1 streaming API with AG-UI protocol.\n *\n * ## Authentication & Thread Ownership\n *\n * All thread operations require user identification. Provide ONE of:\n * - `userKey` - Direct user identifier (for server-side or trusted environments)\n * - `userToken` - OAuth bearer token containing the userKey (for client-side apps)\n *\n * Threads are scoped to the userKey - each user only sees their own threads.\n *\n * ## Quick Start\n *\n * ```tsx\n * import {\n * TamboV1Provider,\n * useTamboV1,\n * useTamboV1ThreadInput,\n * } from '@tambo-ai/react/v1';\n *\n * function App() {\n * return (\n * <TamboV1Provider\n * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}\n * userKey={currentUserId} // Required: identifies thread owner\n * components={[WeatherCard]}\n * tools={[searchTool]}\n * >\n * <ChatInterface />\n * </TamboV1Provider>\n * );\n * }\n *\n * function ChatInterface() {\n * const [threadId, setThreadId] = useState<string>();\n * const { messages, isStreaming } = useTamboV1(threadId);\n * const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);\n *\n * const handleSubmit = async (e: React.FormEvent) => {\n * e.preventDefault();\n * const result = await submit();\n * if (!threadId) setThreadId(result.threadId);\n * };\n *\n * return (\n * <form onSubmit={handleSubmit}>\n * {messages.map(msg => <Message key={msg.id} message={msg} />)}\n * {isStreaming && <LoadingIndicator />}\n * <input value={value} onChange={(e) => setValue(e.target.value)} />\n * <button disabled={isPending}>Send</button>\n * </form>\n * );\n * }\n * ```\n *\n * ## Type Imports\n *\n * Types are imported directly from specific files:\n * - Thread state: `import type { TamboV1Thread } from '@tambo-ai/react/v1/types/thread'`\n * - Messages: `import type { TamboV1Message } from '@tambo-ai/react/v1/types/message'`\n * - Custom events: `import type { ComponentStartEvent } from '@tambo-ai/react/v1/types/event'`\n *\n * SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`\n * AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`\n */\n\n// =============================================================================\n// Providers\n// =============================================================================\n\nexport {\n TamboV1Provider,\n type TamboV1ProviderProps,\n useTamboV1Config,\n type TamboV1Config,\n} from \"./providers/tambo-v1-provider\";\n\n// Re-export registry provider from beta SDK (works with v1)\nexport { TamboRegistryProvider } from \"../providers/tambo-registry-provider\";\n\n// Re-export client provider from beta SDK (works with v1)\nexport {\n TamboClientProvider,\n useIsTamboTokenUpdating,\n} from \"../providers/tambo-client-provider\";\n\n// Re-export context helpers from beta SDK (works with v1)\nexport {\n TamboContextHelpersProvider,\n useTamboContextHelpers,\n} from \"../providers/tambo-context-helpers-provider\";\n\n// Export v1 thread input provider for advanced composition\nexport {\n TamboV1ThreadInputProvider,\n type TamboV1ThreadInputContextProps,\n type SubmitOptions,\n} from \"./providers/tambo-v1-thread-input-provider\";\n\n// Export v1 stub provider for testing\nexport {\n TamboV1StubProvider,\n type TamboV1StubProviderProps,\n} from \"./providers/tambo-v1-stub-provider\";\n\n// =============================================================================\n// Components\n// =============================================================================\n\nexport {\n V1ComponentRenderer,\n type V1ComponentRendererProps,\n} from \"./components/v1-component-renderer\";\n\n// =============================================================================\n// Hooks\n// =============================================================================\n\nexport { useTamboV1 } from \"./hooks/use-tambo-v1\";\n\nexport { useTamboV1ThreadInput } from \"./hooks/use-tambo-v1-thread-input\";\n\nexport { useTamboV1Thread } from \"./hooks/use-tambo-v1-thread\";\n\nexport { useTamboV1ThreadList } from \"./hooks/use-tambo-v1-thread-list\";\n\nexport { useTamboV1ComponentState } from \"./hooks/use-tambo-v1-component-state\";\n\nexport {\n useTamboV1StreamStatus,\n type StreamStatus,\n type PropStatus,\n} from \"./hooks/use-tambo-v1-stream-status\";\n\nexport {\n useTamboV1Suggestions,\n type UseTamboV1SuggestionsOptions,\n type UseTamboV1SuggestionsReturn,\n type AcceptSuggestionOptions,\n} from \"./hooks/use-tambo-v1-suggestions\";\n\n// Re-export client hook from beta SDK (works with v1)\nexport { useTamboClient } from \"../providers/tambo-client-provider\";\n\n// Re-export image handling hook (pure React, API-agnostic)\nexport {\n useMessageImages,\n type StagedImage,\n} from \"../hooks/use-message-images\";\n\n// Re-export voice input hook (uses standalone transcription API)\nexport { useTamboVoice } from \"../hooks/use-tambo-voice\";\n\n// =============================================================================\n// Re-exports from Beta SDK (compatible with v1)\n// =============================================================================\n\n// Tool definition helper\nexport { defineTool } from \"../util/registry\";\n\n// Built-in context helpers\nexport {\n currentPageContextHelper,\n currentTimeContextHelper,\n} from \"../context-helpers\";\n\n// Context helper types\nexport type {\n AdditionalContext,\n ContextHelperFn,\n ContextHelpers,\n} from \"../context-helpers\";\n\n// Component and tool types\nexport type {\n ComponentContextToolMetadata,\n ComponentRegistry,\n ParameterSpec,\n RegisteredComponent,\n TamboComponent,\n TamboTool,\n ToolAnnotations,\n} from \"../model/component-metadata\";\n\n// MCP server types\nexport { MCPTransport } from \"../model/mcp-server-info\";\nexport type {\n McpServerInfo,\n NormalizedMcpServerInfo,\n} from \"../model/mcp-server-info\";\n\n// Resource types\nexport type {\n ListResourceItem,\n ReadResourceResult,\n ResourceSource,\n} from \"../model/resource-info\";\n\n// Error types from Tambo TypeScript SDK\nexport type {\n APIError,\n RateLimitError,\n TamboAIError,\n} from \"@tambo-ai/typescript-sdk\";\n\n// Suggestion types from Tambo TypeScript SDK\nexport type {\n Suggestion,\n SuggestionGenerateParams,\n SuggestionGenerateResponse,\n SuggestionListResponse,\n} from \"@tambo-ai/typescript-sdk/resources/beta/threads/suggestions\";\n\n// V1 extended content types with computed state\nexport type { V1ToolUseContent, TamboToolDisplayProps } from \"./types/message\";\n\n// =============================================================================\n// Interactable Components\n// =============================================================================\n\n// HOC for making components interactable by the AI\nexport {\n withTamboInteractable as withInteractable,\n type InteractableConfig,\n type WithTamboInteractableProps,\n} from \"../hoc/with-tambo-interactable\";\n\n// Interactable provider hooks\nexport {\n useTamboInteractable,\n useCurrentInteractablesSnapshot,\n} from \"../providers/tambo-interactable-provider\";\n\n// Interactable types\nexport type {\n TamboInteractableComponent as InteractableComponent,\n TamboInteractableContext,\n} from \"../model/tambo-interactable\";\n"]}
|
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
* - TamboClientProvider: API client and authentication
|
|
6
6
|
* - TamboRegistryProvider: Component and tool registration
|
|
7
7
|
* - TamboContextHelpersProvider: Context helper functions
|
|
8
|
+
* - TamboInteractableProvider: Interactive component tracking
|
|
8
9
|
* - TamboV1StreamProvider: Streaming state management
|
|
9
10
|
*
|
|
10
11
|
* This provider should wrap your entire application or the portion
|
|
11
12
|
* that needs access to Tambo v1 functionality.
|
|
12
13
|
*/
|
|
13
14
|
import React, { type PropsWithChildren } from "react";
|
|
14
|
-
import {
|
|
15
|
-
import { type
|
|
16
|
-
import {
|
|
17
|
-
import type {
|
|
18
|
-
import type {
|
|
19
|
-
import type { ListResourceItem, ResourceSource } from "../../model/resource-info";
|
|
15
|
+
import { type TamboClientProviderProps } from "../../providers/tambo-client-provider.js";
|
|
16
|
+
import { type TamboRegistryProviderProps } from "../../providers/tambo-registry-provider.js";
|
|
17
|
+
import type { ContextHelpers } from "../../context-helpers/index.js";
|
|
18
|
+
import type { McpServerInfo } from "../../model/mcp-server-info.js";
|
|
19
|
+
import type { ListResourceItem, ResourceSource } from "../../model/resource-info.js";
|
|
20
20
|
/**
|
|
21
21
|
* Configuration values for v1 SDK.
|
|
22
22
|
* These are static values that don't change during the session.
|
|
@@ -24,6 +24,10 @@ import type { ListResourceItem, ResourceSource } from "../../model/resource-info
|
|
|
24
24
|
export interface TamboV1Config {
|
|
25
25
|
/** User key for thread ownership and scoping */
|
|
26
26
|
userKey?: string;
|
|
27
|
+
/** Whether to automatically generate thread names after a threshold of messages. Defaults to true. */
|
|
28
|
+
autoGenerateThreadName?: boolean;
|
|
29
|
+
/** The message count threshold at which the thread name will be auto-generated. Defaults to 3. */
|
|
30
|
+
autoGenerateNameThreshold?: number;
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* Context for v1 SDK configuration.
|
|
@@ -94,10 +98,15 @@ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "ap
|
|
|
94
98
|
*/
|
|
95
99
|
userKey?: string;
|
|
96
100
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
101
|
+
* Whether to automatically generate thread names after a threshold of messages.
|
|
102
|
+
* Defaults to true.
|
|
99
103
|
*/
|
|
100
|
-
|
|
104
|
+
autoGenerateThreadName?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* The message count threshold at which the thread name will be auto-generated.
|
|
107
|
+
* Defaults to 3.
|
|
108
|
+
*/
|
|
109
|
+
autoGenerateNameThreshold?: number;
|
|
101
110
|
/**
|
|
102
111
|
* Children components
|
|
103
112
|
*/
|
|
@@ -127,7 +136,8 @@ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "ap
|
|
|
127
136
|
* @param props.getResource - Dynamic resource fetch function (must be paired with listResources)
|
|
128
137
|
* @param props.contextHelpers - Configuration for context helper functions
|
|
129
138
|
* @param props.userKey - User key for thread ownership (required if not using userToken)
|
|
130
|
-
* @param props.
|
|
139
|
+
* @param props.autoGenerateThreadName - Whether to automatically generate thread names. Defaults to true.
|
|
140
|
+
* @param props.autoGenerateNameThreshold - The message count threshold at which the thread name will be auto-generated. Defaults to 3.
|
|
131
141
|
* @param props.children - Child components
|
|
132
142
|
* @returns Provider component tree
|
|
133
143
|
* @example
|
|
@@ -147,5 +157,5 @@ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "ap
|
|
|
147
157
|
* }
|
|
148
158
|
* ```
|
|
149
159
|
*/
|
|
150
|
-
export declare function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, userKey,
|
|
160
|
+
export declare function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, userKey, autoGenerateThreadName, autoGenerateNameThreshold, children, }: PropsWithChildren<TamboV1ProviderProps>): React.JSX.Element;
|
|
151
161
|
//# sourceMappingURL=tambo-v1-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-v1-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"tambo-v1-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAGZ,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AAGjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,2BAA2B,CAAC;AAInC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,kGAAkG;IAClG,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qCAA4C,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAMhD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,wBAAwB,EACxB,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CACpD;IACC;;;OAGG;IACH,UAAU,CAAC,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAEtD;;;OAGG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAE5C;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;IAExC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;IAE9E;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/B;;;;OAIG;IACH,aAAa,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAEhD;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAE5C;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,OAAO,EACP,sBAAsB,EACtB,yBAAyB,EACzB,QAAQ,GACT,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,qBAsCzC"}
|
|
@@ -6,18 +6,19 @@
|
|
|
6
6
|
* - TamboClientProvider: API client and authentication
|
|
7
7
|
* - TamboRegistryProvider: Component and tool registration
|
|
8
8
|
* - TamboContextHelpersProvider: Context helper functions
|
|
9
|
+
* - TamboInteractableProvider: Interactive component tracking
|
|
9
10
|
* - TamboV1StreamProvider: Streaming state management
|
|
10
11
|
*
|
|
11
12
|
* This provider should wrap your entire application or the portion
|
|
12
13
|
* that needs access to Tambo v1 functionality.
|
|
13
14
|
*/
|
|
14
|
-
import React, { createContext, useContext,
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { TamboV1StreamProvider } from "./tambo-v1-stream-context";
|
|
20
|
-
import { TamboV1ThreadInputProvider } from "./tambo-v1-thread-input-provider";
|
|
15
|
+
import React, { createContext, useContext, } from "react";
|
|
16
|
+
import { TamboClientProvider, } from "../../providers/tambo-client-provider.js";
|
|
17
|
+
import { TamboRegistryProvider, } from "../../providers/tambo-registry-provider.js";
|
|
18
|
+
import { TamboContextHelpersProvider } from "../../providers/tambo-context-helpers-provider.js";
|
|
19
|
+
import { TamboInteractableProvider } from "../../providers/tambo-interactable-provider.js";
|
|
20
|
+
import { TamboV1StreamProvider } from "./tambo-v1-stream-context.js";
|
|
21
|
+
import { TamboV1ThreadInputProvider } from "./tambo-v1-thread-input-provider.js";
|
|
21
22
|
/**
|
|
22
23
|
* Context for v1 SDK configuration.
|
|
23
24
|
* @internal
|
|
@@ -59,7 +60,8 @@ export function useTamboV1Config() {
|
|
|
59
60
|
* @param props.getResource - Dynamic resource fetch function (must be paired with listResources)
|
|
60
61
|
* @param props.contextHelpers - Configuration for context helper functions
|
|
61
62
|
* @param props.userKey - User key for thread ownership (required if not using userToken)
|
|
62
|
-
* @param props.
|
|
63
|
+
* @param props.autoGenerateThreadName - Whether to automatically generate thread names. Defaults to true.
|
|
64
|
+
* @param props.autoGenerateNameThreshold - The message count threshold at which the thread name will be auto-generated. Defaults to 3.
|
|
63
65
|
* @param props.children - Child components
|
|
64
66
|
* @returns Provider component tree
|
|
65
67
|
* @example
|
|
@@ -79,24 +81,17 @@ export function useTamboV1Config() {
|
|
|
79
81
|
* }
|
|
80
82
|
* ```
|
|
81
83
|
*/
|
|
82
|
-
export function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, userKey,
|
|
83
|
-
// Create a stable default QueryClient if none provided.
|
|
84
|
-
// Using useState to avoid SSR issues with module-level singletons.
|
|
85
|
-
const [defaultQueryClient] = useState(() => new QueryClient({
|
|
86
|
-
defaultOptions: {
|
|
87
|
-
queries: {
|
|
88
|
-
staleTime: 1000,
|
|
89
|
-
retry: 1,
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
|
-
}));
|
|
93
|
-
const client = queryClient ?? defaultQueryClient;
|
|
84
|
+
export function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, userKey, autoGenerateThreadName, autoGenerateNameThreshold, children, }) {
|
|
94
85
|
// Config is static - created once and never changes
|
|
95
|
-
const config = {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
const config = {
|
|
87
|
+
userKey,
|
|
88
|
+
autoGenerateThreadName,
|
|
89
|
+
autoGenerateNameThreshold,
|
|
90
|
+
};
|
|
91
|
+
return (React.createElement(TamboClientProvider, { apiKey: apiKey, tamboUrl: tamboUrl, environment: environment, userToken: userToken },
|
|
92
|
+
React.createElement(TamboRegistryProvider, { components: components, tools: tools, mcpServers: mcpServers, onCallUnregisteredTool: onCallUnregisteredTool, resources: resources, listResources: listResources, getResource: getResource },
|
|
93
|
+
React.createElement(TamboContextHelpersProvider, { contextHelpers: contextHelpers },
|
|
94
|
+
React.createElement(TamboInteractableProvider, null,
|
|
100
95
|
React.createElement(TamboV1ConfigContext.Provider, { value: config },
|
|
101
96
|
React.createElement(TamboV1StreamProvider, null,
|
|
102
97
|
React.createElement(TamboV1ThreadInputProvider, null, children))))))));
|