@tambo-ai/react 0.73.1 → 0.74.1
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.map +1 -1
- package/dist/mcp/mcp-hooks.js +70 -16
- 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-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.d.ts.map +1 -1
- package/esm/mcp/mcp-hooks.js +74 -20
- 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 +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-interactable-provider.test.js","sourceRoot":"","sources":["../../src/providers/tambo-interactable-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { act, renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport { z } from \"zod\";\nimport { TamboInteractableComponent } from \"../model/tambo-interactable\";\nimport {\n TamboInteractableProvider,\n useTamboInteractable,\n} from \"./tambo-interactable-provider\";\n\n// Mock the context helpers\nconst mockAddContextHelper = jest.fn();\nconst mockRemoveContextHelper = jest.fn();\n\njest.mock(\"./tambo-context-helpers-provider\", () => ({\n TamboContextHelpersProvider: ({\n children,\n }: {\n children: React.ReactNode;\n }) => <>{children}</>,\n useTamboContextHelpers: () => ({\n addContextHelper: mockAddContextHelper,\n removeContextHelper: mockRemoveContextHelper,\n }),\n}));\n\n// Mock the component provider\nconst mockRegisterTool = jest.fn();\n\njest.mock(\"./tambo-component-provider\", () => ({\n useTamboComponent: () => ({\n registerTool: mockRegisterTool,\n }),\n}));\n\n// Mock the context helper creation\njest.mock(\"../context-helpers/current-interactables-context-helper\", () => ({\n createInteractablesContextHelper: () =>\n jest.fn(() => ({\n name: \"interactables\",\n context: {\n description: \"Test interactables context\",\n components: [],\n },\n })),\n}));\n\ndescribe(\"TamboInteractableProvider - State Tracking\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should set and get state for a component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n act(() => {\n result.current.setInteractableState(componentId, \"count\", 10);\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 10 });\n });\n});\n\ndescribe(\"TamboInteractableProvider - State Update Tool Registration\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should register both prop and state update tools when component is added\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Should register both update_component_ and update_component_state_ tools\n const registeredToolNames = mockRegisterTool.mock.calls.map(\n (call) => call[0].name,\n );\n expect(registeredToolNames).toContain(\n `update_component_props_${componentId}`,\n );\n expect(registeredToolNames).toContain(\n `update_component_state_${componentId}`,\n );\n });\n\n it(\"should register state update tool with correct description\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"MyComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n expect(stateToolCall[0].description).toContain(componentId);\n expect(stateToolCall[0].description).toContain(\"MyComponent\");\n });\n\n it(\"should allow state update tool to update multiple state values\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { count: 5, name: \"test\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 5, name: \"test\" });\n });\n\n it(\"should preserve existing state when updating partial state\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Set initial state\n act(() => {\n result.current.setInteractableState(componentId, \"existingKey\", \"value1\");\n });\n\n // Find the state update tool and call it with a new key\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { newKey: \"value2\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ existingKey: \"value1\", newKey: \"value2\" });\n });\n\n it(\"should use stateSchema when provided for tool registration\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n // The inputSchema should contain the partial stateSchema\n expect(stateToolCall[0].inputSchema).toBeDefined();\n });\n\n it(\"should return warning when updating state with empty object\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it with empty state\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n let updateResult = \"\";\n act(() => {\n updateResult = toolFn({ componentId, newState: {} });\n });\n\n expect(updateResult).toContain(\"Warning\");\n expect(updateResult).toContain(\"No state values provided\");\n });\n\n it(\"should preserve stateSchema in interactable component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const interactable = result.current.getInteractableComponent(componentId);\n expect(interactable?.stateSchema).toBe(stateSchema);\n });\n\n it(\"should convert stateSchema to partial JSON Schema (no required fields)\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should not have required fields (partial schema)\n expect(inputSchema.properties.newState).toBeDefined();\n expect(inputSchema.properties.newState.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newState.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no stateSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n // No stateSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should allow additional properties\n expect(inputSchema.properties.newState.additionalProperties).toBe(true);\n });\n\n it(\"should convert propsSchema to partial JSON Schema for props update tool\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const propsSchema = z.object({\n title: z.string(),\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\", count: 0 },\n propsSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool (not the state one)\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should not have required fields (partial schema)\n expect(inputSchema.properties.newProps).toBeDefined();\n expect(inputSchema.properties.newProps.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newProps.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no propsSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\" },\n // No propsSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should allow additional properties\n expect(inputSchema.properties.newProps.additionalProperties).toBe(true);\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"tambo-interactable-provider.test.js","sourceRoot":"","sources":["../../src/providers/tambo-interactable-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { act, renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport { z } from \"zod\";\nimport { TamboInteractableComponent } from \"../model/tambo-interactable\";\nimport {\n TamboInteractableProvider,\n useTamboInteractable,\n} from \"./tambo-interactable-provider\";\n\n// Mock the context helpers\nconst mockAddContextHelper = jest.fn();\nconst mockRemoveContextHelper = jest.fn();\n\njest.mock(\"./tambo-context-helpers-provider\", () => ({\n TamboContextHelpersProvider: ({\n children,\n }: {\n children: React.ReactNode;\n }) => <>{children}</>,\n useTamboContextHelpers: () => ({\n addContextHelper: mockAddContextHelper,\n removeContextHelper: mockRemoveContextHelper,\n }),\n}));\n\n// Mock the registry provider\nconst mockRegisterTool = jest.fn();\n\njest.mock(\"./tambo-registry-provider\", () => ({\n useTamboRegistry: () => ({\n registerTool: mockRegisterTool,\n }),\n}));\n\n// Mock the context helper creation\njest.mock(\"../context-helpers/current-interactables-context-helper\", () => ({\n createInteractablesContextHelper: () =>\n jest.fn(() => ({\n name: \"interactables\",\n context: {\n description: \"Test interactables context\",\n components: [],\n },\n })),\n}));\n\ndescribe(\"TamboInteractableProvider - State Tracking\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should set and get state for a component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n act(() => {\n result.current.setInteractableState(componentId, \"count\", 10);\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 10 });\n });\n});\n\ndescribe(\"TamboInteractableProvider - State Update Tool Registration\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboInteractableProvider>{children}</TamboInteractableProvider>\n );\n\n it(\"should register both prop and state update tools when component is added\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"Test\" },\n propsSchema: z.object({ title: z.string() }),\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Should register both update_component_ and update_component_state_ tools\n const registeredToolNames = mockRegisterTool.mock.calls.map(\n (call) => call[0].name,\n );\n expect(registeredToolNames).toContain(\n `update_component_props_${componentId}`,\n );\n expect(registeredToolNames).toContain(\n `update_component_state_${componentId}`,\n );\n });\n\n it(\"should register state update tool with correct description\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"MyComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n expect(stateToolCall[0].description).toContain(componentId);\n expect(stateToolCall[0].description).toContain(\"MyComponent\");\n });\n\n it(\"should allow state update tool to update multiple state values\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { count: 5, name: \"test\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ count: 5, name: \"test\" });\n });\n\n it(\"should preserve existing state when updating partial state\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Set initial state\n act(() => {\n result.current.setInteractableState(componentId, \"existingKey\", \"value1\");\n });\n\n // Find the state update tool and call it with a new key\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n act(() => {\n toolFn({ componentId, newState: { newKey: \"value2\" } });\n });\n\n const state = result.current.getInteractableComponentState(componentId);\n expect(state).toEqual({ existingKey: \"value1\", newKey: \"value2\" });\n });\n\n it(\"should use stateSchema when provided for tool registration\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n // The inputSchema should contain the partial stateSchema\n expect(stateToolCall[0].inputSchema).toBeDefined();\n });\n\n it(\"should return warning when updating state with empty object\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool and call it with empty state\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n const toolFn = stateToolCall[0].tool;\n\n let updateResult = \"\";\n act(() => {\n updateResult = toolFn({ componentId, newState: {} });\n });\n\n expect(updateResult).toContain(\"Warning\");\n expect(updateResult).toContain(\"No state values provided\");\n });\n\n it(\"should preserve stateSchema in interactable component\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n let componentId = \"\";\n act(() => {\n componentId = result.current.addInteractableComponent(component);\n });\n\n const interactable = result.current.getInteractableComponent(componentId);\n expect(interactable?.stateSchema).toBe(stateSchema);\n });\n\n it(\"should convert stateSchema to partial JSON Schema (no required fields)\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const stateSchema = z.object({\n count: z.number(),\n name: z.string(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n stateSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should not have required fields (partial schema)\n expect(inputSchema.properties.newState).toBeDefined();\n expect(inputSchema.properties.newState.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newState.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no stateSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: {},\n // No stateSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the state update tool\n const stateToolCall = mockRegisterTool.mock.calls.find((call) =>\n call[0].name.startsWith(\"update_component_state_\"),\n );\n\n expect(stateToolCall).toBeDefined();\n const inputSchema = stateToolCall[0].inputSchema;\n\n // The newState property should allow additional properties\n expect(inputSchema.properties.newState.additionalProperties).toBe(true);\n });\n\n it(\"should convert propsSchema to partial JSON Schema for props update tool\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const propsSchema = z.object({\n title: z.string(),\n count: z.number(),\n });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\", count: 0 },\n propsSchema,\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool (not the state one)\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should not have required fields (partial schema)\n expect(inputSchema.properties.newProps).toBeDefined();\n expect(inputSchema.properties.newProps.required).toBeUndefined();\n // But it should have the properties from the schema\n expect(inputSchema.properties.newProps.properties).toBeDefined();\n });\n\n it(\"should use additionalProperties when no propsSchema provided\", () => {\n const { result } = renderHook(() => useTamboInteractable(), { wrapper });\n\n const component: Omit<TamboInteractableComponent, \"id\" | \"createdAt\"> = {\n name: \"TestComponent\",\n description: \"A test component\",\n component: () => <div>Test</div>,\n props: { title: \"test\" },\n // No propsSchema\n };\n\n act(() => {\n result.current.addInteractableComponent(component);\n });\n\n // Find the props update tool\n const propsToolCall = mockRegisterTool.mock.calls.find(\n (call) =>\n call[0].name.startsWith(\"update_component_\") &&\n !call[0].name.includes(\"state\"),\n );\n\n expect(propsToolCall).toBeDefined();\n const inputSchema = propsToolCall[0].inputSchema;\n\n // The newProps property should allow additional properties\n expect(inputSchema.properties.newProps.additionalProperties).toBe(true);\n });\n});\n"]}
|
|
@@ -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 = {
|