@tambo-ai/react 0.73.1 → 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/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-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/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 +1 -1
- package/esm/mcp/mcp-hooks.js +4 -4
- 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 +7 -7
- package/esm/providers/tambo-provider.js +10 -10
- 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.js +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,10 +1,10 @@
|
|
|
1
1
|
import { render, waitFor } from "@testing-library/react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
|
-
import { withTamboInteractable } from "../hoc/with-tambo-interactable";
|
|
5
|
-
import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider";
|
|
6
|
-
import { TamboInteractableProvider } from "./tambo-interactable-provider";
|
|
7
|
-
import { TamboStubProvider } from "./tambo-stubs";
|
|
4
|
+
import { withTamboInteractable } from "../hoc/with-tambo-interactable.js";
|
|
5
|
+
import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider.js";
|
|
6
|
+
import { TamboInteractableProvider } from "./tambo-interactable-provider.js";
|
|
7
|
+
import { TamboStubProvider } from "./tambo-stubs.js";
|
|
8
8
|
function wrapperWithProviders(children) {
|
|
9
9
|
const thread = {
|
|
10
10
|
id: "t-1",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { render, waitFor } from "@testing-library/react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
|
-
import { withTamboInteractable } from "../hoc/with-tambo-interactable";
|
|
5
|
-
import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider";
|
|
6
|
-
import { TamboInteractableProvider, useCurrentInteractablesSnapshot, } from "./tambo-interactable-provider";
|
|
7
|
-
import { TamboStubProvider } from "./tambo-stubs";
|
|
4
|
+
import { withTamboInteractable } from "../hoc/with-tambo-interactable.js";
|
|
5
|
+
import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider.js";
|
|
6
|
+
import { TamboInteractableProvider, useCurrentInteractablesSnapshot, } from "./tambo-interactable-provider.js";
|
|
7
|
+
import { TamboStubProvider } from "./tambo-stubs.js";
|
|
8
8
|
function wrapperWithProviders(children) {
|
|
9
9
|
const thread = {
|
|
10
10
|
id: "t-1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React, { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
|
|
3
|
-
import { TamboClientContext } from "./tambo-client-provider";
|
|
4
|
-
import { PLACEHOLDER_THREAD, TamboThreadContext, } from "./tambo-thread-provider";
|
|
3
|
+
import { TamboClientContext } from "./tambo-client-provider.js";
|
|
4
|
+
import { PLACEHOLDER_THREAD, TamboThreadContext, } from "./tambo-thread-provider.js";
|
|
5
5
|
const TamboMcpTokenContext = createContext(undefined);
|
|
6
6
|
/**
|
|
7
7
|
* Provider for managing the MCP access token that is returned by the Tambo API.
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
export declare const TamboPropStreamProvider: import("react").FC<{
|
|
8
8
|
children?: import("react").ReactNode | undefined;
|
|
9
9
|
}> & {
|
|
10
|
-
Streaming: import("react").FC<import("./types").StreamStateComponentProps>;
|
|
11
|
-
Pending: import("react").FC<import("./types").StreamStateComponentProps>;
|
|
12
|
-
Success: import("react").FC<import("./types").StreamStateComponentProps>;
|
|
10
|
+
Streaming: import("react").FC<import("./types.js").StreamStateComponentProps>;
|
|
11
|
+
Pending: import("react").FC<import("./types.js").StreamStateComponentProps>;
|
|
12
|
+
Success: import("react").FC<import("./types.js").StreamStateComponentProps>;
|
|
13
13
|
};
|
|
14
|
-
export { Pending } from "./pending";
|
|
15
|
-
export { useTamboStream } from "./provider";
|
|
16
|
-
export { Streaming } from "./streaming";
|
|
17
|
-
export { Success } from "./success";
|
|
18
|
-
export * from "./types";
|
|
14
|
+
export { Pending } from "./pending.js";
|
|
15
|
+
export { useTamboStream } from "./provider.js";
|
|
16
|
+
export { Streaming } from "./streaming.js";
|
|
17
|
+
export { Success } from "./success.js";
|
|
18
|
+
export * from "./types.js";
|
|
19
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Pending } from "./pending";
|
|
2
|
-
import { TamboPropStreamProviderComponent } from "./provider";
|
|
3
|
-
import { Streaming } from "./streaming";
|
|
4
|
-
import { Success } from "./success";
|
|
1
|
+
import { Pending } from "./pending.js";
|
|
2
|
+
import { TamboPropStreamProviderComponent } from "./provider.js";
|
|
3
|
+
import { Streaming } from "./streaming.js";
|
|
4
|
+
import { Success } from "./success.js";
|
|
5
5
|
/**
|
|
6
6
|
* The TamboPropStreamProvider provides a context for managing stream states
|
|
7
7
|
* with compound components for Pending, Streaming, and Success states.
|
|
@@ -14,9 +14,9 @@ export const TamboPropStreamProvider = Object.assign(TamboPropStreamProviderComp
|
|
|
14
14
|
Success,
|
|
15
15
|
});
|
|
16
16
|
// Re-export components for individual use
|
|
17
|
-
export { Pending } from "./pending";
|
|
18
|
-
export { useTamboStream } from "./provider";
|
|
19
|
-
export { Streaming } from "./streaming";
|
|
20
|
-
export { Success } from "./success";
|
|
21
|
-
export * from "./types";
|
|
17
|
+
export { Pending } from "./pending.js";
|
|
18
|
+
export { useTamboStream } from "./provider.js";
|
|
19
|
+
export { Streaming } from "./streaming.js";
|
|
20
|
+
export { Success } from "./success.js";
|
|
21
|
+
export * from "./types.js";
|
|
22
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { StreamStateComponentProps } from "./types";
|
|
2
|
+
import { StreamStateComponentProps } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Pending component that renders children when the stream has no data
|
|
5
5
|
* @param props - The props for the Pending component
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { useTamboStream } from "./provider";
|
|
3
|
-
import { DEFAULT_STREAM_KEY } from "./types";
|
|
2
|
+
import { useTamboStream } from "./provider.js";
|
|
3
|
+
import { DEFAULT_STREAM_KEY } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Pending component that renders children when the stream has no data
|
|
6
6
|
* @param props - The props for the Pending component
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React, { createContext, useCallback, useContext, useMemo, } from "react";
|
|
3
|
-
import { useTamboStreamStatus } from "../../hooks/use-tambo-stream-status";
|
|
4
|
-
import { DEFAULT_STREAM_KEY, } from "./types";
|
|
3
|
+
import { useTamboStreamStatus } from "../../hooks/use-tambo-stream-status.js";
|
|
4
|
+
import { DEFAULT_STREAM_KEY, } from "./types.js";
|
|
5
5
|
const TamboPropStreamContext = createContext(null);
|
|
6
6
|
/**
|
|
7
7
|
* Hook to use the TamboStream context
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { StreamStateComponentProps } from "./types";
|
|
2
|
+
import { StreamStateComponentProps } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Streaming component that renders children when the stream is in a streaming state
|
|
5
5
|
* @param props - The props for the Streaming component
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { useTamboStream } from "./provider";
|
|
3
|
-
import { DEFAULT_STREAM_KEY } from "./types";
|
|
2
|
+
import { useTamboStream } from "./provider.js";
|
|
3
|
+
import { DEFAULT_STREAM_KEY } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Streaming component that renders children when the stream is in a streaming state
|
|
6
6
|
* @param props - The props for the Streaming component
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { useTamboStream } from "./provider";
|
|
3
|
-
import { DEFAULT_STREAM_KEY } from "./types";
|
|
2
|
+
import { useTamboStream } from "./provider.js";
|
|
3
|
+
import { DEFAULT_STREAM_KEY } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* Success component that renders children when the stream has data
|
|
6
6
|
* @param props - The props for the Success component
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { StreamStatus as HookStreamStatus } from "../../hooks/use-tambo-stream-status";
|
|
2
|
+
import { StreamStatus as HookStreamStatus } from "../../hooks/use-tambo-stream-status.js";
|
|
3
3
|
export declare const DEFAULT_STREAM_KEY = "default";
|
|
4
4
|
export interface StreamStateComponentProps {
|
|
5
5
|
/** The key to identify this stream state */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { render, screen } from "@testing-library/react";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { useTamboCurrentMessage } from "../hooks/use-current-message";
|
|
4
|
-
import { GenerationStage, } from "../model/generate-component-response";
|
|
5
|
-
import { useTamboGenerationStage, useTamboThread, } from "../providers/tambo-thread-provider";
|
|
6
|
-
import { TamboPropStreamProvider, useTamboStream, } from "./tambo-prop-stream-provider";
|
|
3
|
+
import { useTamboCurrentMessage } from "../hooks/use-current-message.js";
|
|
4
|
+
import { GenerationStage, } from "../model/generate-component-response.js";
|
|
5
|
+
import { useTamboGenerationStage, useTamboThread, } from "../providers/tambo-thread-provider.js";
|
|
6
|
+
import { TamboPropStreamProvider, useTamboStream, } from "./tambo-prop-stream-provider/index.js";
|
|
7
7
|
// Mock the required providers
|
|
8
8
|
jest.mock("../providers/tambo-thread-provider", () => ({
|
|
9
9
|
useTamboThread: jest.fn(),
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
|
-
import { TamboInteractableContext } from "../model/tambo-interactable";
|
|
3
|
-
import { TamboClientContextProps, TamboClientProviderProps } from "./tambo-client-provider";
|
|
4
|
-
import { TamboComponentContextProps } from "./tambo-component-provider";
|
|
5
|
-
import { ContextAttachmentState } from "./tambo-context-attachment-provider";
|
|
6
|
-
import { TamboContextHelpersContextProps, TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider";
|
|
7
|
-
import { TamboRegistryProviderProps } from "./tambo-registry-provider";
|
|
8
|
-
import { TamboGenerationStageContextProps, TamboThreadContextProps, TamboThreadProviderProps } from "./tambo-thread-provider";
|
|
2
|
+
import { TamboInteractableContext } from "../model/tambo-interactable.js";
|
|
3
|
+
import { TamboClientContextProps, TamboClientProviderProps } from "./tambo-client-provider.js";
|
|
4
|
+
import { TamboComponentContextProps } from "./tambo-component-provider.js";
|
|
5
|
+
import { ContextAttachmentState } from "./tambo-context-attachment-provider.js";
|
|
6
|
+
import { TamboContextHelpersContextProps, TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider.js";
|
|
7
|
+
import { TamboRegistryProviderProps } from "./tambo-registry-provider.js";
|
|
8
|
+
import { TamboGenerationStageContextProps, TamboThreadContextProps, TamboThreadProviderProps } from "./tambo-thread-provider.js";
|
|
9
9
|
/**
|
|
10
10
|
* The TamboProvider gives full access to the whole Tambo API. This includes the
|
|
11
11
|
* TamboAI client, the component registry, the current thread context, and interactable components.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React, { createContext, useContext } from "react";
|
|
3
|
-
import { TamboMcpProvider } from "../mcp/tambo-mcp-provider";
|
|
4
|
-
import { TamboClientContext, TamboClientProvider, } from "./tambo-client-provider";
|
|
5
|
-
import { TamboComponentProvider, useTamboComponent, } from "./tambo-component-provider";
|
|
6
|
-
import { TamboContextAttachmentProvider, useTamboContextAttachment, } from "./tambo-context-attachment-provider";
|
|
7
|
-
import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider";
|
|
8
|
-
import { TamboInteractableProvider, useTamboInteractable, } from "./tambo-interactable-provider";
|
|
9
|
-
import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider";
|
|
10
|
-
import { TamboRegistryProvider, } from "./tambo-registry-provider";
|
|
11
|
-
import { TamboThreadInputProvider } from "./tambo-thread-input-provider";
|
|
12
|
-
import { TamboThreadProvider, useTamboThread, } from "./tambo-thread-provider";
|
|
3
|
+
import { TamboMcpProvider } from "../mcp/tambo-mcp-provider.js";
|
|
4
|
+
import { TamboClientContext, TamboClientProvider, } from "./tambo-client-provider.js";
|
|
5
|
+
import { TamboComponentProvider, useTamboComponent, } from "./tambo-component-provider.js";
|
|
6
|
+
import { TamboContextAttachmentProvider, useTamboContextAttachment, } from "./tambo-context-attachment-provider.js";
|
|
7
|
+
import { TamboContextHelpersProvider, useTamboContextHelpers, } from "./tambo-context-helpers-provider.js";
|
|
8
|
+
import { TamboInteractableProvider, useTamboInteractable, } from "./tambo-interactable-provider.js";
|
|
9
|
+
import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider.js";
|
|
10
|
+
import { TamboRegistryProvider, } from "./tambo-registry-provider.js";
|
|
11
|
+
import { TamboThreadInputProvider } from "./tambo-thread-input-provider.js";
|
|
12
|
+
import { TamboThreadProvider, useTamboThread, } from "./tambo-thread-provider.js";
|
|
13
13
|
/**
|
|
14
14
|
* The TamboProvider gives full access to the whole Tambo API. This includes the
|
|
15
15
|
* TamboAI client, the component registry, the current thread context, and interactable components.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type TamboAI from "@tambo-ai/typescript-sdk";
|
|
2
2
|
import React, { PropsWithChildren } from "react";
|
|
3
|
-
import type { ComponentRegistry, RegisterToolFn, RegisterToolsFn, TamboComponent, TamboTool, TamboToolRegistry } from "../model/component-metadata";
|
|
4
|
-
import type { McpServerInfo, NormalizedMcpServerInfo } from "../model/mcp-server-info";
|
|
5
|
-
import type { ListResourceItem, ResourceSource } from "../model/resource-info";
|
|
3
|
+
import type { ComponentRegistry, RegisterToolFn, RegisterToolsFn, TamboComponent, TamboTool, TamboToolRegistry } from "../model/component-metadata.js";
|
|
4
|
+
import type { McpServerInfo, NormalizedMcpServerInfo } from "../model/mcp-server-info.js";
|
|
5
|
+
import type { ListResourceItem, ResourceSource } from "../model/resource-info.js";
|
|
6
6
|
export interface TamboRegistryContext {
|
|
7
7
|
componentList: ComponentRegistry;
|
|
8
8
|
toolRegistry: TamboToolRegistry;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React, { createContext, useCallback, useContext, useEffect, useMemo, useState, } from "react";
|
|
3
|
-
import { deduplicateMcpServers, normalizeServerInfo, } from "../util/mcp-server-utils";
|
|
4
|
-
import { validateAndPrepareComponent, validateTool, validateToolAssociation, } from "../util/registry-validators";
|
|
5
|
-
import { validateResource, validateResourceSource, } from "../util/resource-validators";
|
|
3
|
+
import { deduplicateMcpServers, normalizeServerInfo, } from "../util/mcp-server-utils.js";
|
|
4
|
+
import { validateAndPrepareComponent, validateTool, validateToolAssociation, } from "../util/registry-validators.js";
|
|
5
|
+
import { validateResource, validateResourceSource, } from "../util/resource-validators.js";
|
|
6
6
|
export const TamboRegistryContext = createContext({
|
|
7
7
|
componentList: {},
|
|
8
8
|
toolRegistry: {},
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { act, renderHook } from "@testing-library/react";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
|
-
import { defineTool } from "../util/registry";
|
|
5
|
-
import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider";
|
|
4
|
+
import { defineTool } from "../util/registry.js";
|
|
5
|
+
import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider.js";
|
|
6
6
|
// Shared tool registry for all tests
|
|
7
7
|
const createMockTools = () => [
|
|
8
8
|
defineTool({
|
|
@@ -10,8 +10,8 @@ import { act, renderHook } from "@testing-library/react";
|
|
|
10
10
|
import React from "react";
|
|
11
11
|
import * as z3 from "zod/v3";
|
|
12
12
|
import * as z4 from "zod/v4";
|
|
13
|
-
import { defineTool } from "../util/registry";
|
|
14
|
-
import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider";
|
|
13
|
+
import { defineTool } from "../util/registry.js";
|
|
14
|
+
import { TamboRegistryProvider, useTamboRegistry, } from "./tambo-registry-provider.js";
|
|
15
15
|
// Test component for registration tests
|
|
16
16
|
const TestComponent = ({ message }) => (React.createElement("div", null, message));
|
|
17
17
|
describe("Schema Compatibility", () => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import TamboAI from "@tambo-ai/typescript-sdk";
|
|
2
2
|
import React, { PropsWithChildren } from "react";
|
|
3
|
-
import { TamboComponent, TamboTool } from "../model/component-metadata";
|
|
4
|
-
import { TamboThread } from "../model/tambo-thread";
|
|
5
|
-
import { TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider";
|
|
6
|
-
import { type TamboContextProps } from "./tambo-provider";
|
|
3
|
+
import { TamboComponent, TamboTool } from "../model/component-metadata.js";
|
|
4
|
+
import { TamboThread } from "../model/tambo-thread.js";
|
|
5
|
+
import { TamboContextHelpersProviderProps } from "./tambo-context-helpers-provider.js";
|
|
6
|
+
import { type TamboContextProps } from "./tambo-provider.js";
|
|
7
7
|
/**
|
|
8
8
|
* TamboStubProvider props - includes all the data that would normally be inferred
|
|
9
9
|
*/
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { QueryClient } from "@tanstack/react-query";
|
|
3
3
|
import React, { useEffect } from "react";
|
|
4
|
-
import { GenerationStage } from "../model/generate-component-response";
|
|
5
|
-
import { TamboClientContext } from "./tambo-client-provider";
|
|
6
|
-
import { TamboComponentProvider, } from "./tambo-component-provider";
|
|
7
|
-
import { TamboContextAttachmentProvider } from "./tambo-context-attachment-provider";
|
|
8
|
-
import { TamboContextHelpersProvider, } from "./tambo-context-helpers-provider";
|
|
9
|
-
import { TamboInteractableProvider } from "./tambo-interactable-provider";
|
|
10
|
-
import { TamboCompositeProvider, } from "./tambo-provider";
|
|
11
|
-
import { TamboRegistryContext } from "./tambo-registry-provider";
|
|
12
|
-
import { TamboGenerationStageProvider, TamboThreadContext, } from "./tambo-thread-provider";
|
|
4
|
+
import { GenerationStage } from "../model/generate-component-response.js";
|
|
5
|
+
import { TamboClientContext } from "./tambo-client-provider.js";
|
|
6
|
+
import { TamboComponentProvider, } from "./tambo-component-provider.js";
|
|
7
|
+
import { TamboContextAttachmentProvider } from "./tambo-context-attachment-provider.js";
|
|
8
|
+
import { TamboContextHelpersProvider, } from "./tambo-context-helpers-provider.js";
|
|
9
|
+
import { TamboInteractableProvider } from "./tambo-interactable-provider.js";
|
|
10
|
+
import { TamboCompositeProvider, } from "./tambo-provider.js";
|
|
11
|
+
import { TamboRegistryContext } from "./tambo-registry-provider.js";
|
|
12
|
+
import { TamboGenerationStageProvider, TamboThreadContext, } from "./tambo-thread-provider.js";
|
|
13
13
|
/**
|
|
14
14
|
* Stub client provider that accepts a client and queryClient as props
|
|
15
15
|
* @returns The TamboStubClientProvider component
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { renderHook } from "@testing-library/react";
|
|
2
2
|
import React, { act } from "react";
|
|
3
|
-
import { useTamboThreadList } from "../hooks/use-tambo-threads";
|
|
4
|
-
import { TamboStubProvider } from "./tambo-stubs";
|
|
3
|
+
import { useTamboThreadList } from "../hooks/use-tambo-threads.js";
|
|
4
|
+
import { TamboStubProvider } from "./tambo-stubs.js";
|
|
5
5
|
describe("TamboStubProvider threads functionality", () => {
|
|
6
6
|
const mockThread = {
|
|
7
7
|
id: "test-thread",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from "react";
|
|
2
|
-
import { UseTamboMutationResult } from "../hooks/react-query-hooks";
|
|
3
|
-
import { StagedImage } from "../hooks/use-message-images";
|
|
2
|
+
import { UseTamboMutationResult } from "../hooks/react-query-hooks.js";
|
|
3
|
+
import { StagedImage } from "../hooks/use-message-images.js";
|
|
4
4
|
/**
|
|
5
5
|
* Error messages for various input-related error scenarios
|
|
6
6
|
* These messages are used to provide user-friendly error feedback
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-thread-input-provider.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-thread-input-provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAoB,MAAM,6BAA6B,CAAC;AAa5E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,sBAAsB,CACpB,IAAI,EACJ,KAAK,EACH;IACE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,GACD,SAAS,CACZ,EACD,QAAQ,GAAG,aAAa,CACzB;IACC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,0BAA0B;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8BAA8B;IAC9B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,yDAExB,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,
|
|
1
|
+
{"version":3,"file":"tambo-thread-input-provider.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-thread-input-provider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AACf,OAAO,EAEL,sBAAsB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAoB,MAAM,6BAA6B,CAAC;AAa5E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;CAKvB,CAAC;AAEX,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,sBAAsB,CACpB,IAAI,EACJ,KAAK,EACH;IACE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzC,GACD,SAAS,CACZ,EACD,QAAQ,GAAG,aAAa,CACzB;IACC,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACxD;;;OAGG;IACH,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACxC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yBAAyB;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,0BAA0B;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,4BAA4B;IAC5B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8BAA8B;IAC9B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,yDAExB,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqKhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,oCAS/B,CAAC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import React, { createContext, useCallback, useContext, useState, } from "react";
|
|
3
|
-
import { useTamboMutation, } from "../hooks/react-query-hooks";
|
|
4
|
-
import { useMessageImages } from "../hooks/use-message-images";
|
|
5
|
-
import { useTamboMcpServers } from "../mcp/tambo-mcp-provider";
|
|
6
|
-
import { ThreadInputError } from "../model/thread-input-error";
|
|
7
|
-
import { validateInput } from "../model/validate-input";
|
|
8
|
-
import { buildMessageContent } from "../util/message-builder";
|
|
9
|
-
import { extractResourceUris, resolveResourceContents, } from "../util/resource-content-resolver";
|
|
10
|
-
import { useTamboInteractable } from "./tambo-interactable-provider";
|
|
11
|
-
import { useTamboRegistry } from "./tambo-registry-provider";
|
|
12
|
-
import { useTamboThread } from "./tambo-thread-provider";
|
|
3
|
+
import { useTamboMutation, } from "../hooks/react-query-hooks.js";
|
|
4
|
+
import { useMessageImages } from "../hooks/use-message-images.js";
|
|
5
|
+
import { useTamboMcpServers } from "../mcp/tambo-mcp-provider.js";
|
|
6
|
+
import { ThreadInputError } from "../model/thread-input-error.js";
|
|
7
|
+
import { validateInput } from "../model/validate-input.js";
|
|
8
|
+
import { buildMessageContent } from "../util/message-builder.js";
|
|
9
|
+
import { extractResourceUris, resolveResourceContents, } from "../util/resource-content-resolver.js";
|
|
10
|
+
import { useTamboInteractable } from "./tambo-interactable-provider.js";
|
|
11
|
+
import { useTamboRegistry } from "./tambo-registry-provider.js";
|
|
12
|
+
import { useTamboThread } from "./tambo-thread-provider.js";
|
|
13
13
|
/**
|
|
14
14
|
* Error messages for various input-related error scenarios
|
|
15
15
|
* These messages are used to provide user-friendly error feedback
|
|
@@ -110,6 +110,7 @@ export const TamboThreadInputProvider = ({ children, }) => {
|
|
|
110
110
|
clearInteractableSelections,
|
|
111
111
|
]);
|
|
112
112
|
const { mutateAsync: submitAsync, mutate: _unusedSubmit, ...mutationState } = useTamboMutation({
|
|
113
|
+
mutationKey: ["thread-input", thread.id],
|
|
113
114
|
mutationFn: submit,
|
|
114
115
|
});
|
|
115
116
|
const value = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-thread-input-provider.js","sourceRoot":"","sources":["../../src/providers/tambo-thread-input-provider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport React, {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport {\n useTamboMutation,\n UseTamboMutationResult,\n} from \"../hooks/react-query-hooks\";\nimport { StagedImage, useMessageImages } from \"../hooks/use-message-images\";\nimport { useTamboMcpServers } from \"../mcp/tambo-mcp-provider\";\nimport { ThreadInputError } from \"../model/thread-input-error\";\nimport { validateInput } from \"../model/validate-input\";\nimport { buildMessageContent } from \"../util/message-builder\";\nimport {\n extractResourceUris,\n resolveResourceContents,\n} from \"../util/resource-content-resolver\";\nimport { useTamboInteractable } from \"./tambo-interactable-provider\";\nimport { useTamboRegistry } from \"./tambo-registry-provider\";\nimport { useTamboThread } from \"./tambo-thread-provider\";\n\n/**\n * Error messages for various input-related error scenarios\n * These messages are used to provide user-friendly error feedback\n * @readonly\n */\nexport const INPUT_ERROR_MESSAGES = {\n EMPTY: \"Message cannot be empty\",\n NETWORK: \"Network error. Please check your connection\",\n SERVER: \"Server error. Please try again\",\n VALIDATION: \"Invalid message format\",\n} as const;\n\nexport interface TamboThreadInputContextProps extends Omit<\n UseTamboMutationResult<\n void,\n Error,\n | {\n contextKey?: string;\n streamResponse?: boolean;\n forceToolChoice?: string;\n additionalContext?: Record<string, any>;\n }\n | undefined\n >,\n \"mutate\" | \"mutateAsync\"\n> {\n /** Current value of the input field */\n value: string;\n /**\n * Function to update the input value\n * @param value - New value for the input field\n */\n setValue: (value: React.SetStateAction<string>) => void;\n /**\n * Function to submit the current input value\n * @param options - Submission options\n */\n submit: (options?: {\n streamResponse?: boolean;\n forceToolChoice?: string;\n additionalContext?: Record<string, any>;\n resourceNames?: Record<string, string>;\n }) => Promise<void>;\n /** Currently staged images */\n images: StagedImage[];\n /** Add a single image */\n addImage: (file: File) => Promise<void>;\n /** Add multiple images */\n addImages: (files: File[]) => Promise<void>;\n /** Remove an image by id */\n removeImage: (id: string) => void;\n /** Clear all staged images */\n clearImages: () => void;\n}\n\nexport const TamboThreadInputContext = createContext<\n TamboThreadInputContextProps | undefined\n>(undefined);\n\n/**\n * Provider that manages shared thread input state across all components\n * This ensures that useTamboThreadInput, useTamboSuggestions, and components\n * all share the same input state\n * @param props - The props for the TamboThreadInputProvider\n * @param props.children - The children to render.\n * @returns The thread input context\n */\nexport const TamboThreadInputProvider: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const { thread, sendThreadMessage, contextKey } = useTamboThread();\n const [inputValue, setInputValue] = useState(\"\");\n const imageState = useMessageImages();\n const mcpServers = useTamboMcpServers();\n const { resourceSource } = useTamboRegistry();\n const { clearInteractableSelections } = useTamboInteractable();\n const submit = useCallback(\n async ({\n streamResponse,\n forceToolChoice,\n additionalContext,\n resourceNames = {},\n }: {\n streamResponse?: boolean;\n forceToolChoice?: string;\n additionalContext?: Record<string, any>;\n resourceNames?: Record<string, string>;\n } = {}) => {\n // Validate text input if present\n if (inputValue?.trim()) {\n const validation = validateInput(inputValue);\n if (!validation.isValid) {\n throw new ThreadInputError(\n `Cannot submit message: ${validation.error ?? INPUT_ERROR_MESSAGES.VALIDATION}`,\n { cause: validation.error },\n );\n }\n }\n\n // Check if we have content to send\n if (!inputValue.trim() && imageState.images.length === 0) {\n throw new ThreadInputError(INPUT_ERROR_MESSAGES.EMPTY, {\n cause: \"No text or images to send\",\n });\n }\n\n // Extract resource URIs from the input text and resolve content for client-side resources\n // (registry and client-side MCP servers). Internal Tambo server resources are skipped\n // since the backend can resolve them.\n const resourceUris = extractResourceUris(inputValue);\n const resolvedContent = await resolveResourceContents(\n resourceUris,\n mcpServers,\n resourceSource ?? undefined,\n );\n\n // Build message content with text, images, resource names, and resolved content\n const messageContent = buildMessageContent(\n inputValue,\n imageState.images,\n resourceNames,\n resolvedContent,\n );\n\n try {\n await sendThreadMessage(inputValue || \"Image message\", {\n threadId: thread.id,\n contextKey,\n streamResponse: streamResponse,\n forceToolChoice: forceToolChoice,\n additionalContext: additionalContext,\n content: messageContent,\n });\n clearInteractableSelections();\n } catch (error: unknown) {\n // Handle image-related errors with friendly messages\n if (imageState.images.length > 0) {\n const errorMessage =\n error instanceof Error ? error.message.toLowerCase() : \"\";\n\n // Backend not yet supporting image content type\n if (errorMessage.includes(\"unknown content part type: image\")) {\n throw new ThreadInputError(\n \"Image attachments are not yet supported by the backend. This feature is coming soon.\",\n { cause: error },\n );\n }\n\n // Handle specific model vision support errors\n // OpenAI errors\n if (\n errorMessage.includes(\n \"does not support image message content types\",\n ) ||\n (errorMessage.includes(\"invalid model\") &&\n errorMessage.includes(\n \"image_url is only supported by certain models\",\n ))\n ) {\n throw new ThreadInputError(\n \"This model doesn't support images. Please use GPT-4o, GPT-4 Turbo, or other vision-capable models.\",\n { cause: error },\n );\n }\n\n // Anthropic Claude errors\n if (\n errorMessage.includes(\"does not support image\") ||\n errorMessage.includes(\"vision not supported\")\n ) {\n throw new ThreadInputError(\n \"This Claude model doesn't support images. Please use Claude 3.5 Sonnet, Claude 3 Opus, or other vision-capable models.\",\n { cause: error },\n );\n }\n\n // Generic image/vision errors\n if (\n errorMessage.includes(\"image\") ||\n errorMessage.includes(\"vision\")\n ) {\n throw new ThreadInputError(\n \"This model doesn't support image attachments. Please use a vision-capable model.\",\n { cause: error },\n );\n }\n }\n\n throw error;\n }\n\n // Clear text after successful submission\n setInputValue(\"\");\n },\n [\n inputValue,\n sendThreadMessage,\n thread.id,\n contextKey,\n imageState,\n mcpServers,\n resourceSource,\n clearInteractableSelections,\n ],\n );\n\n const {\n mutateAsync: submitAsync,\n mutate: _unusedSubmit,\n ...mutationState\n } = useTamboMutation({\n mutationFn: submit,\n });\n\n const value = {\n ...mutationState,\n value: inputValue,\n setValue: setInputValue,\n submit: submitAsync,\n images: imageState.images,\n addImage: imageState.addImage,\n addImages: imageState.addImages,\n removeImage: imageState.removeImage,\n clearImages: imageState.clearImages,\n };\n\n return (\n <TamboThreadInputContext.Provider value={value}>\n {children}\n </TamboThreadInputContext.Provider>\n );\n};\n\n/**\n * Hook to access the shared thread input state\n * contextKey parameter is not passed here anymore. Instead, use the contextKey prop in the TamboProvider.\n * @returns The thread input context\n */\nexport const useTamboThreadInput = () => {\n const context = useContext(TamboThreadInputContext);\n if (!context) {\n throw new Error(\n \"useTamboThreadInput must be used within a TamboThreadInputProvider\",\n );\n }\n\n return context;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"tambo-thread-input-provider.js","sourceRoot":"","sources":["../../src/providers/tambo-thread-input-provider.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\";\nimport React, {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport {\n useTamboMutation,\n UseTamboMutationResult,\n} from \"../hooks/react-query-hooks\";\nimport { StagedImage, useMessageImages } from \"../hooks/use-message-images\";\nimport { useTamboMcpServers } from \"../mcp/tambo-mcp-provider\";\nimport { ThreadInputError } from \"../model/thread-input-error\";\nimport { validateInput } from \"../model/validate-input\";\nimport { buildMessageContent } from \"../util/message-builder\";\nimport {\n extractResourceUris,\n resolveResourceContents,\n} from \"../util/resource-content-resolver\";\nimport { useTamboInteractable } from \"./tambo-interactable-provider\";\nimport { useTamboRegistry } from \"./tambo-registry-provider\";\nimport { useTamboThread } from \"./tambo-thread-provider\";\n\n/**\n * Error messages for various input-related error scenarios\n * These messages are used to provide user-friendly error feedback\n * @readonly\n */\nexport const INPUT_ERROR_MESSAGES = {\n EMPTY: \"Message cannot be empty\",\n NETWORK: \"Network error. Please check your connection\",\n SERVER: \"Server error. Please try again\",\n VALIDATION: \"Invalid message format\",\n} as const;\n\nexport interface TamboThreadInputContextProps extends Omit<\n UseTamboMutationResult<\n void,\n Error,\n | {\n contextKey?: string;\n streamResponse?: boolean;\n forceToolChoice?: string;\n additionalContext?: Record<string, any>;\n }\n | undefined\n >,\n \"mutate\" | \"mutateAsync\"\n> {\n /** Current value of the input field */\n value: string;\n /**\n * Function to update the input value\n * @param value - New value for the input field\n */\n setValue: (value: React.SetStateAction<string>) => void;\n /**\n * Function to submit the current input value\n * @param options - Submission options\n */\n submit: (options?: {\n streamResponse?: boolean;\n forceToolChoice?: string;\n additionalContext?: Record<string, any>;\n resourceNames?: Record<string, string>;\n }) => Promise<void>;\n /** Currently staged images */\n images: StagedImage[];\n /** Add a single image */\n addImage: (file: File) => Promise<void>;\n /** Add multiple images */\n addImages: (files: File[]) => Promise<void>;\n /** Remove an image by id */\n removeImage: (id: string) => void;\n /** Clear all staged images */\n clearImages: () => void;\n}\n\nexport const TamboThreadInputContext = createContext<\n TamboThreadInputContextProps | undefined\n>(undefined);\n\n/**\n * Provider that manages shared thread input state across all components\n * This ensures that useTamboThreadInput, useTamboSuggestions, and components\n * all share the same input state\n * @param props - The props for the TamboThreadInputProvider\n * @param props.children - The children to render.\n * @returns The thread input context\n */\nexport const TamboThreadInputProvider: React.FC<PropsWithChildren> = ({\n children,\n}) => {\n const { thread, sendThreadMessage, contextKey } = useTamboThread();\n const [inputValue, setInputValue] = useState(\"\");\n const imageState = useMessageImages();\n const mcpServers = useTamboMcpServers();\n const { resourceSource } = useTamboRegistry();\n const { clearInteractableSelections } = useTamboInteractable();\n const submit = useCallback(\n async ({\n streamResponse,\n forceToolChoice,\n additionalContext,\n resourceNames = {},\n }: {\n streamResponse?: boolean;\n forceToolChoice?: string;\n additionalContext?: Record<string, any>;\n resourceNames?: Record<string, string>;\n } = {}) => {\n // Validate text input if present\n if (inputValue?.trim()) {\n const validation = validateInput(inputValue);\n if (!validation.isValid) {\n throw new ThreadInputError(\n `Cannot submit message: ${validation.error ?? INPUT_ERROR_MESSAGES.VALIDATION}`,\n { cause: validation.error },\n );\n }\n }\n\n // Check if we have content to send\n if (!inputValue.trim() && imageState.images.length === 0) {\n throw new ThreadInputError(INPUT_ERROR_MESSAGES.EMPTY, {\n cause: \"No text or images to send\",\n });\n }\n\n // Extract resource URIs from the input text and resolve content for client-side resources\n // (registry and client-side MCP servers). Internal Tambo server resources are skipped\n // since the backend can resolve them.\n const resourceUris = extractResourceUris(inputValue);\n const resolvedContent = await resolveResourceContents(\n resourceUris,\n mcpServers,\n resourceSource ?? undefined,\n );\n\n // Build message content with text, images, resource names, and resolved content\n const messageContent = buildMessageContent(\n inputValue,\n imageState.images,\n resourceNames,\n resolvedContent,\n );\n\n try {\n await sendThreadMessage(inputValue || \"Image message\", {\n threadId: thread.id,\n contextKey,\n streamResponse: streamResponse,\n forceToolChoice: forceToolChoice,\n additionalContext: additionalContext,\n content: messageContent,\n });\n clearInteractableSelections();\n } catch (error: unknown) {\n // Handle image-related errors with friendly messages\n if (imageState.images.length > 0) {\n const errorMessage =\n error instanceof Error ? error.message.toLowerCase() : \"\";\n\n // Backend not yet supporting image content type\n if (errorMessage.includes(\"unknown content part type: image\")) {\n throw new ThreadInputError(\n \"Image attachments are not yet supported by the backend. This feature is coming soon.\",\n { cause: error },\n );\n }\n\n // Handle specific model vision support errors\n // OpenAI errors\n if (\n errorMessage.includes(\n \"does not support image message content types\",\n ) ||\n (errorMessage.includes(\"invalid model\") &&\n errorMessage.includes(\n \"image_url is only supported by certain models\",\n ))\n ) {\n throw new ThreadInputError(\n \"This model doesn't support images. Please use GPT-4o, GPT-4 Turbo, or other vision-capable models.\",\n { cause: error },\n );\n }\n\n // Anthropic Claude errors\n if (\n errorMessage.includes(\"does not support image\") ||\n errorMessage.includes(\"vision not supported\")\n ) {\n throw new ThreadInputError(\n \"This Claude model doesn't support images. Please use Claude 3.5 Sonnet, Claude 3 Opus, or other vision-capable models.\",\n { cause: error },\n );\n }\n\n // Generic image/vision errors\n if (\n errorMessage.includes(\"image\") ||\n errorMessage.includes(\"vision\")\n ) {\n throw new ThreadInputError(\n \"This model doesn't support image attachments. Please use a vision-capable model.\",\n { cause: error },\n );\n }\n }\n\n throw error;\n }\n\n // Clear text after successful submission\n setInputValue(\"\");\n },\n [\n inputValue,\n sendThreadMessage,\n thread.id,\n contextKey,\n imageState,\n mcpServers,\n resourceSource,\n clearInteractableSelections,\n ],\n );\n\n const {\n mutateAsync: submitAsync,\n mutate: _unusedSubmit,\n ...mutationState\n } = useTamboMutation({\n mutationKey: [\"thread-input\", thread.id],\n mutationFn: submit,\n });\n\n const value = {\n ...mutationState,\n value: inputValue,\n setValue: setInputValue,\n submit: submitAsync,\n images: imageState.images,\n addImage: imageState.addImage,\n addImages: imageState.addImages,\n removeImage: imageState.removeImage,\n clearImages: imageState.clearImages,\n };\n\n return (\n <TamboThreadInputContext.Provider value={value}>\n {children}\n </TamboThreadInputContext.Provider>\n );\n};\n\n/**\n * Hook to access the shared thread input state\n * contextKey parameter is not passed here anymore. Instead, use the contextKey prop in the TamboProvider.\n * @returns The thread input context\n */\nexport const useTamboThreadInput = () => {\n const context = useContext(TamboThreadInputContext);\n if (!context) {\n throw new Error(\n \"useTamboThreadInput must be used within a TamboThreadInputProvider\",\n );\n }\n\n return context;\n};\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { advanceStream } from "@tambo-ai/typescript-sdk";
|
|
2
2
|
import { act, renderHook } from "@testing-library/react";
|
|
3
3
|
import React from "react";
|
|
4
|
-
import { GenerationStage, } from "../model/generate-component-response";
|
|
5
|
-
import { TamboClientContext, useTamboClient, useTamboQueryClient, } from "./tambo-client-provider";
|
|
6
|
-
import { TamboContextHelpersProvider } from "./tambo-context-helpers-provider";
|
|
7
|
-
import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider";
|
|
8
|
-
import { TamboRegistryProvider } from "./tambo-registry-provider";
|
|
9
|
-
import { TamboThreadProvider, useTamboThread } from "./tambo-thread-provider";
|
|
4
|
+
import { GenerationStage, } from "../model/generate-component-response.js";
|
|
5
|
+
import { TamboClientContext, useTamboClient, useTamboQueryClient, } from "./tambo-client-provider.js";
|
|
6
|
+
import { TamboContextHelpersProvider } from "./tambo-context-helpers-provider.js";
|
|
7
|
+
import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider.js";
|
|
8
|
+
import { TamboRegistryProvider } from "./tambo-registry-provider.js";
|
|
9
|
+
import { TamboThreadProvider, useTamboThread } from "./tambo-thread-provider.js";
|
|
10
10
|
// Mock crypto.randomUUID
|
|
11
11
|
Object.defineProperty(global, "crypto", {
|
|
12
12
|
value: {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import TamboAI from "@tambo-ai/typescript-sdk";
|
|
2
2
|
import { Thread } from "@tambo-ai/typescript-sdk/resources/beta/threads/threads";
|
|
3
3
|
import React, { PropsWithChildren } from "react";
|
|
4
|
-
import { GenerationStage, TamboThreadMessage } from "../model/generate-component-response";
|
|
5
|
-
import { TamboThread } from "../model/tambo-thread";
|
|
4
|
+
import { GenerationStage, TamboThreadMessage } from "../model/generate-component-response.js";
|
|
5
|
+
import { TamboThread } from "../model/tambo-thread.js";
|
|
6
6
|
export interface TamboGenerationStageContextProps {
|
|
7
7
|
generationStage: GenerationStage;
|
|
8
8
|
generationStatusMessage: string;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { advanceStream } from "@tambo-ai/typescript-sdk";
|
|
3
3
|
import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
|
|
4
|
-
import { GenerationStage, isIdleStage, } from "../model/generate-component-response";
|
|
5
|
-
import { toText } from "../util/content-parts";
|
|
6
|
-
import { renderComponentIntoMessage } from "../util/generate-component";
|
|
7
|
-
import { getAvailableComponents, getUnassociatedTools, mapTamboToolToContextTool, } from "../util/registry";
|
|
8
|
-
import { handleToolCall } from "../util/tool-caller";
|
|
9
|
-
import { useTamboClient, useTamboQueryClient } from "./tambo-client-provider";
|
|
10
|
-
import { useTamboContextHelpers } from "./tambo-context-helpers-provider";
|
|
11
|
-
import { useTamboRegistry } from "./tambo-registry-provider";
|
|
4
|
+
import { GenerationStage, isIdleStage, } from "../model/generate-component-response.js";
|
|
5
|
+
import { toText } from "../util/content-parts.js";
|
|
6
|
+
import { renderComponentIntoMessage } from "../util/generate-component.js";
|
|
7
|
+
import { getAvailableComponents, getUnassociatedTools, mapTamboToolToContextTool, } from "../util/registry.js";
|
|
8
|
+
import { handleToolCall } from "../util/tool-caller.js";
|
|
9
|
+
import { useTamboClient, useTamboQueryClient } from "./tambo-client-provider.js";
|
|
10
|
+
import { useTamboContextHelpers } from "./tambo-context-helpers-provider.js";
|
|
11
|
+
import { useTamboRegistry } from "./tambo-registry-provider.js";
|
|
12
12
|
const TamboGenerationStageContext = createContext(undefined);
|
|
13
13
|
/**
|
|
14
14
|
*
|
|
@@ -2,13 +2,13 @@ import TamboAI, { advanceStream } from "@tambo-ai/typescript-sdk";
|
|
|
2
2
|
import { act, renderHook } from "@testing-library/react";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { z } from "zod/v4";
|
|
5
|
-
import { GenerationStage, } from "../model/generate-component-response";
|
|
6
|
-
import { serializeRegistry } from "../testing/tools";
|
|
7
|
-
import { TamboClientContext, useTamboClient, useTamboQueryClient, } from "./tambo-client-provider";
|
|
8
|
-
import { TamboContextHelpersProvider } from "./tambo-context-helpers-provider";
|
|
9
|
-
import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider";
|
|
10
|
-
import { TamboRegistryProvider } from "./tambo-registry-provider";
|
|
11
|
-
import { TamboThreadProvider, useTamboThread } from "./tambo-thread-provider";
|
|
5
|
+
import { GenerationStage, } from "../model/generate-component-response.js";
|
|
6
|
+
import { serializeRegistry } from "../testing/tools.js";
|
|
7
|
+
import { TamboClientContext, useTamboClient, useTamboQueryClient, } from "./tambo-client-provider.js";
|
|
8
|
+
import { TamboContextHelpersProvider } from "./tambo-context-helpers-provider.js";
|
|
9
|
+
import { TamboMcpTokenProvider } from "./tambo-mcp-token-provider.js";
|
|
10
|
+
import { TamboRegistryProvider } from "./tambo-registry-provider.js";
|
|
11
|
+
import { TamboThreadProvider, useTamboThread } from "./tambo-thread-provider.js";
|
|
12
12
|
// Mock crypto.randomUUID
|
|
13
13
|
Object.defineProperty(global, "crypto", {
|
|
14
14
|
value: {
|
package/esm/schema/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { looksLikeJSONSchema, makeJsonSchemaPartial } from "./json-schema";
|
|
2
|
-
export { getParametersFromToolSchema, safeSchemaToJsonSchema, schemaToJsonSchema, type SupportedSchema, } from "./schema";
|
|
3
|
-
export { isStandardSchema } from "./standard-schema";
|
|
4
|
-
export { assertNoRecordSchema } from "./validate";
|
|
1
|
+
export { looksLikeJSONSchema, makeJsonSchemaPartial } from "./json-schema.js";
|
|
2
|
+
export { getParametersFromToolSchema, safeSchemaToJsonSchema, schemaToJsonSchema, type SupportedSchema, } from "./schema.js";
|
|
3
|
+
export { isStandardSchema } from "./standard-schema.js";
|
|
4
|
+
export { assertNoRecordSchema } from "./validate.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/schema/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { looksLikeJSONSchema, makeJsonSchemaPartial } from "./json-schema";
|
|
2
|
-
export { getParametersFromToolSchema, safeSchemaToJsonSchema, schemaToJsonSchema, } from "./schema";
|
|
3
|
-
export { isStandardSchema } from "./standard-schema";
|
|
4
|
-
export { assertNoRecordSchema } from "./validate";
|
|
1
|
+
export { looksLikeJSONSchema, makeJsonSchemaPartial } from "./json-schema.js";
|
|
2
|
+
export { getParametersFromToolSchema, safeSchemaToJsonSchema, schemaToJsonSchema, } from "./schema.js";
|
|
3
|
+
export { isStandardSchema } from "./standard-schema.js";
|
|
4
|
+
export { assertNoRecordSchema } from "./validate.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getJsonSchemaTupleItems, isJsonSchemaTuple, looksLikeJSONSchema, makeJsonSchemaPartial, } from "./json-schema";
|
|
1
|
+
import { getJsonSchemaTupleItems, isJsonSchemaTuple, looksLikeJSONSchema, makeJsonSchemaPartial, } from "./json-schema.js";
|
|
2
2
|
describe("looksLikeJSONSchema", () => {
|
|
3
3
|
it("should return true for a valid object schema", () => {
|
|
4
4
|
const schema = {
|
package/esm/schema/schema.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @module schema
|
|
10
10
|
*/
|
|
11
11
|
import type { JSONSchema7 } from "json-schema";
|
|
12
|
-
import { ParameterSpec, SupportedSchema, TamboTool } from "../model/component-metadata";
|
|
12
|
+
import { ParameterSpec, SupportedSchema, TamboTool } from "../model/component-metadata.js";
|
|
13
13
|
/**
|
|
14
14
|
* Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.
|
|
15
15
|
*
|
package/esm/schema/schema.js
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
import { loadVendor, toJsonSchema } from "@standard-community/standard-json";
|
|
12
12
|
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
13
13
|
import { toJSONSchema as zod4ToJSONSchema } from "zod/v4/core";
|
|
14
|
-
import { looksLikeJSONSchema } from "./json-schema";
|
|
15
|
-
import { isStandardSchema } from "./standard-schema";
|
|
14
|
+
import { looksLikeJSONSchema } from "./json-schema.js";
|
|
15
|
+
import { isStandardSchema } from "./standard-schema.js";
|
|
16
16
|
/**
|
|
17
17
|
* Register the zod vendor handler for synchronous JSON Schema conversion.
|
|
18
18
|
* This uses Zod 4's native toJSONSchema for Zod 4.x schemas and zod-to-json-schema for Zod 3.x.
|