@tambo-ai/react 0.75.0 → 1.0.0-rc.4
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/dist/hoc/with-tambo-interactable.d.ts.map +1 -1
- package/dist/hoc/with-tambo-interactable.js +13 -13
- package/dist/hoc/with-tambo-interactable.js.map +1 -1
- package/dist/hoc/with-tambo-interactable.test.js +3 -3
- package/dist/hoc/with-tambo-interactable.test.js.map +1 -1
- package/dist/index.d.ts +7 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -59
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp-hooks.js +5 -5
- package/dist/mcp/mcp-hooks.js.map +1 -1
- package/dist/model/component-metadata.d.ts +4 -4
- package/dist/model/component-metadata.js.map +1 -1
- package/dist/providers/tambo-client-provider.d.ts +6 -0
- package/dist/providers/tambo-client-provider.d.ts.map +1 -1
- package/dist/providers/tambo-client-provider.js +4 -2
- package/dist/providers/tambo-client-provider.js.map +1 -1
- package/dist/providers/tambo-interactable-provider.d.ts +1 -1
- package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js +2 -10
- package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
- package/dist/providers/tambo-interactables-additional-context.test.js +3 -19
- package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -1
- package/dist/providers/tambo-mcp-token-provider.d.ts +8 -17
- package/dist/providers/tambo-mcp-token-provider.d.ts.map +1 -1
- package/dist/providers/tambo-mcp-token-provider.js +20 -97
- package/dist/providers/tambo-mcp-token-provider.js.map +1 -1
- package/dist/testing/tools.d.ts +3 -3
- package/dist/testing/tools.d.ts.map +1 -1
- package/dist/testing/tools.js.map +1 -1
- package/dist/util/registry-validators.js +1 -1
- package/dist/util/registry-validators.js.map +1 -1
- package/dist/v1/__tests__/v1-interactables.test.js +1 -1
- package/dist/v1/__tests__/v1-interactables.test.js.map +1 -1
- package/dist/v1/components/v1-component-renderer.d.ts +9 -9
- package/dist/v1/components/v1-component-renderer.d.ts.map +1 -1
- package/dist/v1/components/v1-component-renderer.js +13 -13
- package/dist/v1/components/v1-component-renderer.js.map +1 -1
- package/dist/v1/components/v1-component-renderer.test.js +15 -15
- package/dist/v1/components/v1-component-renderer.test.js.map +1 -1
- package/{esm/hooks/use-current-message.d.ts → dist/v1/hooks/use-tambo-current-message.d.ts} +30 -9
- package/dist/v1/hooks/use-tambo-current-message.d.ts.map +1 -0
- package/dist/{hooks/use-current-message.js → v1/hooks/use-tambo-current-message.js} +13 -8
- package/dist/v1/hooks/use-tambo-current-message.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts +5 -5
- package/dist/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-auth-state.js +8 -8
- package/dist/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-auth-state.test.js +12 -12
- package/dist/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-component-state.d.ts +7 -6
- package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-component-state.js +50 -24
- package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-component-state.test.js +60 -35
- package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-messages.d.ts +9 -9
- package/dist/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-messages.js +4 -4
- package/dist/v1/hooks/use-tambo-v1-messages.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-messages.test.js +7 -7
- package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +3 -3
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.js +20 -22
- package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js +51 -51
- 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 +5 -5
- package/dist/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-stream-status.js +12 -14
- package/dist/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-stream-status.test.js +19 -19
- package/dist/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +7 -7
- package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-suggestions.js +9 -9
- package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +44 -44
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts +3 -3
- package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-input.js +4 -4
- package/dist/v1/hooks/use-tambo-v1-thread-input.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +29 -29
- 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 +4 -4
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.js +5 -5
- package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +13 -17
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.d.ts +3 -3
- package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.js +4 -4
- package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread.test.js +5 -5
- package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.d.ts +16 -7
- package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.js +41 -10
- package/dist/v1/hooks/use-tambo-v1.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.test.js +176 -48
- package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
- package/dist/v1/index.d.ts +31 -27
- package/dist/v1/index.d.ts.map +1 -1
- package/dist/v1/index.js +45 -35
- package/dist/v1/index.js.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.d.ts +20 -20
- package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.js +32 -32
- package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.test.js +22 -22
- package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.d.ts +15 -15
- package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.js +17 -17
- package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.test.js +9 -9
- package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.d.ts +9 -9
- package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.js +7 -7
- package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.test.js +25 -25
- package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +9 -9
- package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-thread-input-provider.js +16 -16
- package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
- package/dist/v1/types/auth.d.ts +2 -2
- package/dist/v1/types/auth.d.ts.map +1 -1
- package/dist/v1/types/auth.js.map +1 -1
- package/dist/v1/types/component.d.ts +3 -3
- package/dist/v1/types/component.d.ts.map +1 -1
- package/dist/v1/types/component.js +2 -2
- package/dist/v1/types/component.js.map +1 -1
- package/dist/v1/types/event.d.ts +1 -1
- package/dist/v1/types/event.js +1 -1
- package/dist/v1/types/event.js.map +1 -1
- package/dist/v1/types/message.d.ts +17 -24
- package/dist/v1/types/message.d.ts.map +1 -1
- package/dist/v1/types/message.js +1 -1
- package/dist/v1/types/message.js.map +1 -1
- package/dist/v1/types/thread.d.ts +10 -8
- package/dist/v1/types/thread.d.ts.map +1 -1
- package/dist/v1/types/thread.js +1 -1
- package/dist/v1/types/thread.js.map +1 -1
- package/dist/v1/types/tool-choice.d.ts +1 -1
- package/dist/v1/types/tool-choice.js.map +1 -1
- package/dist/v1/utils/component-renderer.d.ts +11 -5
- package/dist/v1/utils/component-renderer.d.ts.map +1 -1
- package/dist/v1/utils/component-renderer.js +16 -7
- package/dist/v1/utils/component-renderer.js.map +1 -1
- package/dist/v1/utils/component-renderer.test.js +7 -7
- package/dist/v1/utils/component-renderer.test.js.map +1 -1
- package/dist/v1/utils/event-accumulator.d.ts +13 -13
- package/dist/v1/utils/event-accumulator.d.ts.map +1 -1
- package/dist/v1/utils/event-accumulator.js +26 -15
- package/dist/v1/utils/event-accumulator.js.map +1 -1
- package/dist/v1/utils/event-accumulator.test.js +54 -19
- package/dist/v1/utils/event-accumulator.test.js.map +1 -1
- package/dist/v1/utils/registry-conversion.d.ts +18 -18
- package/dist/v1/utils/registry-conversion.js +23 -23
- package/dist/v1/utils/registry-conversion.js.map +1 -1
- package/dist/v1/utils/stream-handler.d.ts +1 -1
- package/dist/v1/utils/stream-handler.js +1 -1
- package/dist/v1/utils/stream-handler.js.map +1 -1
- package/dist/v1/utils/thread-utils.d.ts +2 -2
- package/dist/v1/utils/thread-utils.d.ts.map +1 -1
- package/dist/v1/utils/thread-utils.js.map +1 -1
- package/dist/v1/utils/tool-call-tracker.d.ts +1 -1
- package/dist/v1/utils/tool-call-tracker.js +1 -1
- package/dist/v1/utils/tool-call-tracker.js.map +1 -1
- package/dist/v1/utils/tool-executor.d.ts +1 -1
- package/dist/v1/utils/tool-executor.js +2 -2
- package/dist/v1/utils/tool-executor.js.map +1 -1
- package/esm/hoc/with-tambo-interactable.d.ts.map +1 -1
- package/esm/hoc/with-tambo-interactable.js +13 -13
- package/esm/hoc/with-tambo-interactable.js.map +1 -1
- package/esm/hoc/with-tambo-interactable.test.js +1 -1
- package/esm/hoc/with-tambo-interactable.test.js.map +1 -1
- package/esm/index.d.ts +7 -25
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -21
- package/esm/index.js.map +1 -1
- package/esm/mcp/mcp-hooks.js +1 -1
- package/esm/mcp/mcp-hooks.js.map +1 -1
- package/esm/model/component-metadata.d.ts +4 -4
- package/esm/model/component-metadata.js.map +1 -1
- package/esm/providers/tambo-client-provider.d.ts +6 -0
- package/esm/providers/tambo-client-provider.d.ts.map +1 -1
- package/esm/providers/tambo-client-provider.js +4 -2
- package/esm/providers/tambo-client-provider.js.map +1 -1
- package/esm/providers/tambo-interactable-provider.d.ts +1 -1
- package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js +2 -10
- package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -1
- package/esm/providers/tambo-interactables-additional-context.test.js +3 -19
- package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -1
- package/esm/providers/tambo-mcp-token-provider.d.ts +8 -17
- package/esm/providers/tambo-mcp-token-provider.d.ts.map +1 -1
- package/esm/providers/tambo-mcp-token-provider.js +20 -97
- package/esm/providers/tambo-mcp-token-provider.js.map +1 -1
- package/esm/testing/tools.d.ts +3 -3
- package/esm/testing/tools.d.ts.map +1 -1
- package/esm/testing/tools.js.map +1 -1
- package/esm/util/registry-validators.js +1 -1
- package/esm/util/registry-validators.js.map +1 -1
- package/esm/v1/__tests__/v1-interactables.test.js +1 -1
- package/esm/v1/__tests__/v1-interactables.test.js.map +1 -1
- package/esm/v1/components/v1-component-renderer.d.ts +9 -9
- package/esm/v1/components/v1-component-renderer.d.ts.map +1 -1
- package/esm/v1/components/v1-component-renderer.js +12 -12
- package/esm/v1/components/v1-component-renderer.js.map +1 -1
- package/esm/v1/components/v1-component-renderer.test.js +16 -16
- package/esm/v1/components/v1-component-renderer.test.js.map +1 -1
- package/{dist/hooks/use-current-message.d.ts → esm/v1/hooks/use-tambo-current-message.d.ts} +30 -9
- package/esm/v1/hooks/use-tambo-current-message.d.ts.map +1 -0
- package/esm/{hooks/use-current-message.js → v1/hooks/use-tambo-current-message.js} +13 -8
- package/esm/v1/hooks/use-tambo-current-message.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts +5 -5
- package/esm/v1/hooks/use-tambo-v1-auth-state.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-auth-state.js +8 -8
- package/esm/v1/hooks/use-tambo-v1-auth-state.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-auth-state.test.js +14 -14
- package/esm/v1/hooks/use-tambo-v1-auth-state.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-component-state.d.ts +7 -6
- package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-component-state.js +50 -24
- package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-component-state.test.js +62 -37
- package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.d.ts +9 -9
- package/esm/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.js +3 -3
- package/esm/v1/hooks/use-tambo-v1-messages.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.test.js +9 -9
- package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +3 -3
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.js +21 -23
- package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js +54 -54
- 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 +5 -5
- package/esm/v1/hooks/use-tambo-v1-stream-status.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-stream-status.js +12 -14
- package/esm/v1/hooks/use-tambo-v1-stream-status.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-stream-status.test.js +21 -21
- package/esm/v1/hooks/use-tambo-v1-stream-status.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +7 -7
- package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-suggestions.js +11 -11
- package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +48 -48
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +3 -3
- package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-input.js +3 -3
- package/esm/v1/hooks/use-tambo-v1-thread-input.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +32 -32
- 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 +4 -4
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.js +6 -6
- package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +15 -19
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.d.ts +3 -3
- package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.js +4 -4
- package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread.test.js +6 -6
- package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.d.ts +16 -7
- package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.js +43 -12
- package/esm/v1/hooks/use-tambo-v1.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.test.js +178 -50
- package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
- package/esm/v1/index.d.ts +31 -27
- package/esm/v1/index.d.ts.map +1 -1
- package/esm/v1/index.js +38 -33
- package/esm/v1/index.js.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.d.ts +20 -20
- package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.js +32 -32
- package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.test.js +23 -23
- package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.d.ts +15 -15
- package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.js +17 -17
- package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.test.js +10 -10
- package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.d.ts +9 -9
- package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.js +9 -9
- package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.test.js +28 -28
- package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +9 -9
- package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-thread-input-provider.js +15 -15
- package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -1
- package/esm/v1/types/auth.d.ts +2 -2
- package/esm/v1/types/auth.d.ts.map +1 -1
- package/esm/v1/types/auth.js.map +1 -1
- package/esm/v1/types/component.d.ts +3 -3
- package/esm/v1/types/component.d.ts.map +1 -1
- package/esm/v1/types/component.js +2 -2
- package/esm/v1/types/component.js.map +1 -1
- package/esm/v1/types/event.d.ts +1 -1
- package/esm/v1/types/event.js +1 -1
- package/esm/v1/types/event.js.map +1 -1
- package/esm/v1/types/message.d.ts +17 -24
- package/esm/v1/types/message.d.ts.map +1 -1
- package/esm/v1/types/message.js +1 -1
- package/esm/v1/types/message.js.map +1 -1
- package/esm/v1/types/thread.d.ts +10 -8
- package/esm/v1/types/thread.d.ts.map +1 -1
- package/esm/v1/types/thread.js +1 -1
- package/esm/v1/types/thread.js.map +1 -1
- package/esm/v1/types/tool-choice.d.ts +1 -1
- package/esm/v1/types/tool-choice.js.map +1 -1
- package/esm/v1/utils/component-renderer.d.ts +11 -5
- package/esm/v1/utils/component-renderer.d.ts.map +1 -1
- package/esm/v1/utils/component-renderer.js +13 -5
- package/esm/v1/utils/component-renderer.js.map +1 -1
- package/esm/v1/utils/component-renderer.test.js +8 -8
- package/esm/v1/utils/component-renderer.test.js.map +1 -1
- package/esm/v1/utils/event-accumulator.d.ts +13 -13
- package/esm/v1/utils/event-accumulator.d.ts.map +1 -1
- package/esm/v1/utils/event-accumulator.js +26 -15
- package/esm/v1/utils/event-accumulator.js.map +1 -1
- package/esm/v1/utils/event-accumulator.test.js +54 -19
- package/esm/v1/utils/event-accumulator.test.js.map +1 -1
- package/esm/v1/utils/registry-conversion.d.ts +18 -18
- package/esm/v1/utils/registry-conversion.js +23 -23
- package/esm/v1/utils/registry-conversion.js.map +1 -1
- package/esm/v1/utils/stream-handler.d.ts +1 -1
- package/esm/v1/utils/stream-handler.js +1 -1
- package/esm/v1/utils/stream-handler.js.map +1 -1
- package/esm/v1/utils/thread-utils.d.ts +2 -2
- package/esm/v1/utils/thread-utils.d.ts.map +1 -1
- package/esm/v1/utils/thread-utils.js.map +1 -1
- package/esm/v1/utils/tool-call-tracker.d.ts +1 -1
- package/esm/v1/utils/tool-call-tracker.js +1 -1
- package/esm/v1/utils/tool-call-tracker.js.map +1 -1
- package/esm/v1/utils/tool-executor.d.ts +1 -1
- package/esm/v1/utils/tool-executor.js +2 -2
- package/esm/v1/utils/tool-executor.js.map +1 -1
- package/package.json +4 -9
- package/dist/hooks/index.d.ts +0 -9
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -34
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/use-component-state.d.ts +0 -30
- package/dist/hooks/use-component-state.d.ts.map +0 -1
- package/dist/hooks/use-component-state.js +0 -139
- package/dist/hooks/use-component-state.js.map +0 -1
- package/dist/hooks/use-component-state.test.d.ts +0 -2
- package/dist/hooks/use-component-state.test.d.ts.map +0 -1
- package/dist/hooks/use-component-state.test.js +0 -406
- package/dist/hooks/use-component-state.test.js.map +0 -1
- package/dist/hooks/use-current-message.d.ts.map +0 -1
- package/dist/hooks/use-current-message.js.map +0 -1
- package/dist/hooks/use-current-message.test.d.ts +0 -2
- package/dist/hooks/use-current-message.test.d.ts.map +0 -1
- package/dist/hooks/use-current-message.test.js +0 -269
- package/dist/hooks/use-current-message.test.js.map +0 -1
- package/dist/hooks/use-streaming-props.d.ts +0 -11
- package/dist/hooks/use-streaming-props.d.ts.map +0 -1
- package/dist/hooks/use-streaming-props.js +0 -37
- package/dist/hooks/use-streaming-props.js.map +0 -1
- package/dist/hooks/use-suggestions.d.ts +0 -46
- package/dist/hooks/use-suggestions.d.ts.map +0 -1
- package/dist/hooks/use-suggestions.js +0 -118
- package/dist/hooks/use-suggestions.js.map +0 -1
- package/dist/hooks/use-suggestions.test.d.ts +0 -2
- package/dist/hooks/use-suggestions.test.d.ts.map +0 -1
- package/dist/hooks/use-suggestions.test.js +0 -247
- package/dist/hooks/use-suggestions.test.js.map +0 -1
- package/dist/hooks/use-tambo-stream-status.d.ts +0 -90
- package/dist/hooks/use-tambo-stream-status.d.ts.map +0 -1
- package/dist/hooks/use-tambo-stream-status.js +0 -213
- package/dist/hooks/use-tambo-stream-status.js.map +0 -1
- package/dist/hooks/use-tambo-stream-status.test.d.ts +0 -2
- package/dist/hooks/use-tambo-stream-status.test.d.ts.map +0 -1
- package/dist/hooks/use-tambo-stream-status.test.js +0 -378
- package/dist/hooks/use-tambo-stream-status.test.js.map +0 -1
- package/dist/hooks/use-tambo-threads.d.ts +0 -158
- package/dist/hooks/use-tambo-threads.d.ts.map +0 -1
- package/dist/hooks/use-tambo-threads.js +0 -45
- package/dist/hooks/use-tambo-threads.js.map +0 -1
- package/dist/hooks/use-tambo-threads.test.d.ts +0 -2
- package/dist/hooks/use-tambo-threads.test.d.ts.map +0 -1
- package/dist/hooks/use-tambo-threads.test.js +0 -214
- package/dist/hooks/use-tambo-threads.test.js.map +0 -1
- package/dist/model/generate-component-response.d.ts +0 -37
- package/dist/model/generate-component-response.d.ts.map +0 -1
- package/dist/model/generate-component-response.js +0 -29
- package/dist/model/generate-component-response.js.map +0 -1
- package/dist/model/tambo-thread.d.ts +0 -15
- package/dist/model/tambo-thread.d.ts.map +0 -1
- package/dist/model/tambo-thread.js +0 -3
- package/dist/model/tambo-thread.js.map +0 -1
- package/dist/providers/__tests__/thread-input-resource-resolution.test.d.ts +0 -2
- package/dist/providers/__tests__/thread-input-resource-resolution.test.d.ts.map +0 -1
- package/dist/providers/__tests__/thread-input-resource-resolution.test.js +0 -592
- package/dist/providers/__tests__/thread-input-resource-resolution.test.js.map +0 -1
- package/dist/providers/index.d.ts +0 -13
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -41
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/tambo-component-provider.d.ts +0 -23
- package/dist/providers/tambo-component-provider.d.ts.map +0 -1
- package/dist/providers/tambo-component-provider.js +0 -88
- package/dist/providers/tambo-component-provider.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/index.d.ts +0 -19
- package/dist/providers/tambo-prop-stream-provider/index.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/index.js +0 -43
- package/dist/providers/tambo-prop-stream-provider/index.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/pending.d.ts +0 -12
- package/dist/providers/tambo-prop-stream-provider/pending.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/pending.js +0 -31
- package/dist/providers/tambo-prop-stream-provider/pending.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/provider.d.ts +0 -17
- package/dist/providers/tambo-prop-stream-provider/provider.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/provider.js +0 -107
- package/dist/providers/tambo-prop-stream-provider/provider.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/streaming.d.ts +0 -12
- package/dist/providers/tambo-prop-stream-provider/streaming.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/streaming.js +0 -28
- package/dist/providers/tambo-prop-stream-provider/streaming.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/success.d.ts +0 -12
- package/dist/providers/tambo-prop-stream-provider/success.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/success.js +0 -28
- package/dist/providers/tambo-prop-stream-provider/success.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/types.d.ts +0 -25
- package/dist/providers/tambo-prop-stream-provider/types.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider/types.js +0 -6
- package/dist/providers/tambo-prop-stream-provider/types.js.map +0 -1
- package/dist/providers/tambo-prop-stream-provider.test.d.ts +0 -2
- package/dist/providers/tambo-prop-stream-provider.test.d.ts.map +0 -1
- package/dist/providers/tambo-prop-stream-provider.test.js +0 -275
- package/dist/providers/tambo-prop-stream-provider.test.js.map +0 -1
- package/dist/providers/tambo-provider.d.ts +0 -53
- package/dist/providers/tambo-provider.d.ts.map +0 -1
- package/dist/providers/tambo-provider.js +0 -133
- package/dist/providers/tambo-provider.js.map +0 -1
- package/dist/providers/tambo-stubs.d.ts +0 -89
- package/dist/providers/tambo-stubs.d.ts.map +0 -1
- package/dist/providers/tambo-stubs.js +0 -279
- package/dist/providers/tambo-stubs.js.map +0 -1
- package/dist/providers/tambo-stubs.test.d.ts +0 -2
- package/dist/providers/tambo-stubs.test.d.ts.map +0 -1
- package/dist/providers/tambo-stubs.test.js +0 -97
- package/dist/providers/tambo-stubs.test.js.map +0 -1
- package/dist/providers/tambo-thread-input-provider.d.ts +0 -65
- package/dist/providers/tambo-thread-input-provider.d.ts.map +0 -1
- package/dist/providers/tambo-thread-input-provider.js +0 -179
- package/dist/providers/tambo-thread-input-provider.js.map +0 -1
- package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts +0 -2
- package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
- package/dist/providers/tambo-thread-provider-initial-messages.test.js +0 -278
- package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +0 -1
- package/dist/providers/tambo-thread-provider.d.ts +0 -126
- package/dist/providers/tambo-thread-provider.d.ts.map +0 -1
- package/dist/providers/tambo-thread-provider.js +0 -931
- package/dist/providers/tambo-thread-provider.js.map +0 -1
- package/dist/providers/tambo-thread-provider.test.d.ts +0 -2
- package/dist/providers/tambo-thread-provider.test.d.ts.map +0 -1
- package/dist/providers/tambo-thread-provider.test.js +0 -1591
- package/dist/providers/tambo-thread-provider.test.js.map +0 -1
- package/dist/util/generate-component.d.ts +0 -12
- package/dist/util/generate-component.d.ts.map +0 -1
- package/dist/util/generate-component.js +0 -58
- package/dist/util/generate-component.js.map +0 -1
- package/dist/util/generate-component.test.d.ts +0 -2
- package/dist/util/generate-component.test.d.ts.map +0 -1
- package/dist/util/generate-component.test.js +0 -340
- package/dist/util/generate-component.test.js.map +0 -1
- package/esm/hooks/index.d.ts +0 -9
- package/esm/hooks/index.d.ts.map +0 -1
- package/esm/hooks/index.js +0 -10
- package/esm/hooks/index.js.map +0 -1
- package/esm/hooks/use-component-state.d.ts +0 -30
- package/esm/hooks/use-component-state.d.ts.map +0 -1
- package/esm/hooks/use-component-state.js +0 -136
- package/esm/hooks/use-component-state.js.map +0 -1
- package/esm/hooks/use-component-state.test.d.ts +0 -2
- package/esm/hooks/use-component-state.test.d.ts.map +0 -1
- package/esm/hooks/use-component-state.test.js +0 -401
- package/esm/hooks/use-component-state.test.js.map +0 -1
- package/esm/hooks/use-current-message.d.ts.map +0 -1
- package/esm/hooks/use-current-message.js.map +0 -1
- package/esm/hooks/use-current-message.test.d.ts +0 -2
- package/esm/hooks/use-current-message.test.d.ts.map +0 -1
- package/esm/hooks/use-current-message.test.js +0 -264
- package/esm/hooks/use-current-message.test.js.map +0 -1
- package/esm/hooks/use-streaming-props.d.ts +0 -11
- package/esm/hooks/use-streaming-props.d.ts.map +0 -1
- package/esm/hooks/use-streaming-props.js +0 -34
- package/esm/hooks/use-streaming-props.js.map +0 -1
- package/esm/hooks/use-suggestions.d.ts +0 -46
- package/esm/hooks/use-suggestions.d.ts.map +0 -1
- package/esm/hooks/use-suggestions.js +0 -115
- package/esm/hooks/use-suggestions.js.map +0 -1
- package/esm/hooks/use-suggestions.test.d.ts +0 -2
- package/esm/hooks/use-suggestions.test.d.ts.map +0 -1
- package/esm/hooks/use-suggestions.test.js +0 -245
- package/esm/hooks/use-suggestions.test.js.map +0 -1
- package/esm/hooks/use-tambo-stream-status.d.ts +0 -90
- package/esm/hooks/use-tambo-stream-status.d.ts.map +0 -1
- package/esm/hooks/use-tambo-stream-status.js +0 -210
- package/esm/hooks/use-tambo-stream-status.js.map +0 -1
- package/esm/hooks/use-tambo-stream-status.test.d.ts +0 -2
- package/esm/hooks/use-tambo-stream-status.test.d.ts.map +0 -1
- package/esm/hooks/use-tambo-stream-status.test.js +0 -376
- package/esm/hooks/use-tambo-stream-status.test.js.map +0 -1
- package/esm/hooks/use-tambo-threads.d.ts +0 -158
- package/esm/hooks/use-tambo-threads.d.ts.map +0 -1
- package/esm/hooks/use-tambo-threads.js +0 -42
- package/esm/hooks/use-tambo-threads.js.map +0 -1
- package/esm/hooks/use-tambo-threads.test.d.ts +0 -2
- package/esm/hooks/use-tambo-threads.test.d.ts.map +0 -1
- package/esm/hooks/use-tambo-threads.test.js +0 -212
- package/esm/hooks/use-tambo-threads.test.js.map +0 -1
- package/esm/model/generate-component-response.d.ts +0 -37
- package/esm/model/generate-component-response.d.ts.map +0 -1
- package/esm/model/generate-component-response.js +0 -25
- package/esm/model/generate-component-response.js.map +0 -1
- package/esm/model/tambo-thread.d.ts +0 -15
- package/esm/model/tambo-thread.d.ts.map +0 -1
- package/esm/model/tambo-thread.js +0 -2
- package/esm/model/tambo-thread.js.map +0 -1
- package/esm/providers/__tests__/thread-input-resource-resolution.test.d.ts +0 -2
- package/esm/providers/__tests__/thread-input-resource-resolution.test.d.ts.map +0 -1
- package/esm/providers/__tests__/thread-input-resource-resolution.test.js +0 -587
- package/esm/providers/__tests__/thread-input-resource-resolution.test.js.map +0 -1
- package/esm/providers/index.d.ts +0 -13
- package/esm/providers/index.d.ts.map +0 -1
- package/esm/providers/index.js +0 -11
- package/esm/providers/index.js.map +0 -1
- package/esm/providers/tambo-component-provider.d.ts +0 -23
- package/esm/providers/tambo-component-provider.d.ts.map +0 -1
- package/esm/providers/tambo-component-provider.js +0 -50
- package/esm/providers/tambo-component-provider.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/index.d.ts +0 -19
- package/esm/providers/tambo-prop-stream-provider/index.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/index.js +0 -22
- package/esm/providers/tambo-prop-stream-provider/index.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/pending.d.ts +0 -12
- package/esm/providers/tambo-prop-stream-provider/pending.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/pending.js +0 -24
- package/esm/providers/tambo-prop-stream-provider/pending.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/provider.d.ts +0 -17
- package/esm/providers/tambo-prop-stream-provider/provider.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/provider.js +0 -70
- package/esm/providers/tambo-prop-stream-provider/provider.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/streaming.d.ts +0 -12
- package/esm/providers/tambo-prop-stream-provider/streaming.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/streaming.js +0 -21
- package/esm/providers/tambo-prop-stream-provider/streaming.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/success.d.ts +0 -12
- package/esm/providers/tambo-prop-stream-provider/success.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/success.js +0 -21
- package/esm/providers/tambo-prop-stream-provider/success.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/types.d.ts +0 -25
- package/esm/providers/tambo-prop-stream-provider/types.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider/types.js +0 -3
- package/esm/providers/tambo-prop-stream-provider/types.js.map +0 -1
- package/esm/providers/tambo-prop-stream-provider.test.d.ts +0 -2
- package/esm/providers/tambo-prop-stream-provider.test.d.ts.map +0 -1
- package/esm/providers/tambo-prop-stream-provider.test.js +0 -270
- package/esm/providers/tambo-prop-stream-provider.test.js.map +0 -1
- package/esm/providers/tambo-provider.d.ts +0 -53
- package/esm/providers/tambo-provider.d.ts.map +0 -1
- package/esm/providers/tambo-provider.js +0 -94
- package/esm/providers/tambo-provider.js.map +0 -1
- package/esm/providers/tambo-stubs.d.ts +0 -89
- package/esm/providers/tambo-stubs.d.ts.map +0 -1
- package/esm/providers/tambo-stubs.js +0 -242
- package/esm/providers/tambo-stubs.js.map +0 -1
- package/esm/providers/tambo-stubs.test.d.ts +0 -2
- package/esm/providers/tambo-stubs.test.d.ts.map +0 -1
- package/esm/providers/tambo-stubs.test.js +0 -62
- package/esm/providers/tambo-stubs.test.js.map +0 -1
- package/esm/providers/tambo-thread-input-provider.d.ts +0 -65
- package/esm/providers/tambo-thread-input-provider.d.ts.map +0 -1
- package/esm/providers/tambo-thread-input-provider.js +0 -141
- package/esm/providers/tambo-thread-input-provider.js.map +0 -1
- package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts +0 -2
- package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
- package/esm/providers/tambo-thread-provider-initial-messages.test.js +0 -273
- package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +0 -1
- package/esm/providers/tambo-thread-provider.d.ts +0 -126
- package/esm/providers/tambo-thread-provider.d.ts.map +0 -1
- package/esm/providers/tambo-thread-provider.js +0 -891
- package/esm/providers/tambo-thread-provider.js.map +0 -1
- package/esm/providers/tambo-thread-provider.test.d.ts +0 -2
- package/esm/providers/tambo-thread-provider.test.d.ts.map +0 -1
- package/esm/providers/tambo-thread-provider.test.js +0 -1553
- package/esm/providers/tambo-thread-provider.test.js.map +0 -1
- package/esm/util/generate-component.d.ts +0 -12
- package/esm/util/generate-component.d.ts.map +0 -1
- package/esm/util/generate-component.js +0 -52
- package/esm/util/generate-component.js.map +0 -1
- package/esm/util/generate-component.test.d.ts +0 -2
- package/esm/util/generate-component.test.d.ts.map +0 -1
- package/esm/util/generate-component.test.js +0 -302
- package/esm/util/generate-component.test.js.map +0 -1
|
@@ -14,10 +14,10 @@ const tambo_registry_provider_1 = require("../../providers/tambo-registry-provid
|
|
|
14
14
|
const tambo_v1_provider_1 = require("../providers/tambo-v1-provider");
|
|
15
15
|
// Mock dependencies
|
|
16
16
|
jest.mock("./use-tambo-v1-thread-input", () => ({
|
|
17
|
-
|
|
17
|
+
useTamboThreadInput: jest.fn(),
|
|
18
18
|
}));
|
|
19
19
|
jest.mock("./use-tambo-v1", () => ({
|
|
20
|
-
|
|
20
|
+
useTambo: jest.fn(),
|
|
21
21
|
}));
|
|
22
22
|
jest.mock("../../providers/tambo-client-provider", () => ({
|
|
23
23
|
useTamboClient: jest.fn(),
|
|
@@ -27,9 +27,9 @@ jest.mock("../../providers/tambo-registry-provider", () => ({
|
|
|
27
27
|
useTamboRegistry: jest.fn(),
|
|
28
28
|
}));
|
|
29
29
|
jest.mock("../providers/tambo-v1-provider", () => ({
|
|
30
|
-
|
|
30
|
+
useTamboConfig: jest.fn(),
|
|
31
31
|
}));
|
|
32
|
-
describe("
|
|
32
|
+
describe("useTamboSuggestions", () => {
|
|
33
33
|
let queryClient;
|
|
34
34
|
const mockSetValue = jest.fn();
|
|
35
35
|
const mockSubmit = jest.fn();
|
|
@@ -69,10 +69,10 @@ describe("useTamboV1Suggestions", () => {
|
|
|
69
69
|
});
|
|
70
70
|
// Mock useTamboQueryClient to return the test's queryClient
|
|
71
71
|
jest.mocked(tambo_client_provider_1.useTamboQueryClient).mockReturnValue(queryClient);
|
|
72
|
-
// Default mock for
|
|
73
|
-
jest.mocked(tambo_v1_provider_1.
|
|
72
|
+
// Default mock for config
|
|
73
|
+
jest.mocked(tambo_v1_provider_1.useTamboConfig).mockReturnValue({ userKey: "user_123" });
|
|
74
74
|
// Default mock for thread input
|
|
75
|
-
jest.mocked(use_tambo_v1_thread_input_1.
|
|
75
|
+
jest.mocked(use_tambo_v1_thread_input_1.useTamboThreadInput).mockReturnValue({
|
|
76
76
|
value: "",
|
|
77
77
|
setValue: mockSetValue,
|
|
78
78
|
submit: mockSubmit,
|
|
@@ -82,8 +82,8 @@ describe("useTamboV1Suggestions", () => {
|
|
|
82
82
|
isSuccess: false,
|
|
83
83
|
reset: jest.fn(),
|
|
84
84
|
});
|
|
85
|
-
// Default mock for
|
|
86
|
-
jest.mocked(use_tambo_v1_1.
|
|
85
|
+
// Default mock for useTambo
|
|
86
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
87
87
|
messages: [],
|
|
88
88
|
thread: undefined,
|
|
89
89
|
isIdle: true,
|
|
@@ -115,7 +115,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
115
115
|
unregisterResource: jest.fn(),
|
|
116
116
|
setResourceSource: jest.fn(),
|
|
117
117
|
});
|
|
118
|
-
// Default mock for client - using
|
|
118
|
+
// Default mock for client - using API structure
|
|
119
119
|
mockListSuggestions.mockResolvedValue({ suggestions: [], hasMore: false });
|
|
120
120
|
mockCreateSuggestions.mockResolvedValue(mockSuggestionsResponse);
|
|
121
121
|
jest.mocked(tambo_client_provider_1.useTamboClient).mockReturnValue({
|
|
@@ -129,8 +129,8 @@ describe("useTamboV1Suggestions", () => {
|
|
|
129
129
|
});
|
|
130
130
|
describe("Initial State", () => {
|
|
131
131
|
it("returns empty suggestions when thread has placeholder ID", () => {
|
|
132
|
-
// Mock
|
|
133
|
-
jest.mocked(use_tambo_v1_1.
|
|
132
|
+
// Mock useTambo to return placeholder thread ID
|
|
133
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
134
134
|
messages: [],
|
|
135
135
|
thread: undefined,
|
|
136
136
|
isIdle: true,
|
|
@@ -141,7 +141,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
141
141
|
initThread: jest.fn(),
|
|
142
142
|
streamingState: { status: "idle" },
|
|
143
143
|
});
|
|
144
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
144
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
145
145
|
wrapper: createWrapper(),
|
|
146
146
|
});
|
|
147
147
|
expect(result.current.suggestions).toEqual([]);
|
|
@@ -149,14 +149,14 @@ describe("useTamboV1Suggestions", () => {
|
|
|
149
149
|
expect(result.current.isLoading).toBe(false);
|
|
150
150
|
});
|
|
151
151
|
it("returns empty suggestions when no messages", () => {
|
|
152
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
152
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
153
153
|
wrapper: createWrapper(),
|
|
154
154
|
});
|
|
155
155
|
expect(result.current.suggestions).toEqual([]);
|
|
156
156
|
expect(result.current.selectedSuggestionId).toBeNull();
|
|
157
157
|
});
|
|
158
158
|
it("returns empty suggestions when latest message is from user", () => {
|
|
159
|
-
jest.mocked(use_tambo_v1_1.
|
|
159
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
160
160
|
messages: [
|
|
161
161
|
{
|
|
162
162
|
id: "msg_1",
|
|
@@ -174,7 +174,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
174
174
|
initThread: jest.fn(),
|
|
175
175
|
streamingState: { status: "idle" },
|
|
176
176
|
});
|
|
177
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
177
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
178
178
|
wrapper: createWrapper(),
|
|
179
179
|
});
|
|
180
180
|
expect(result.current.suggestions).toEqual([]);
|
|
@@ -182,7 +182,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
182
182
|
});
|
|
183
183
|
describe("Suggestion Generation", () => {
|
|
184
184
|
it("generates suggestions when latest message is from assistant and thread is idle", async () => {
|
|
185
|
-
jest.mocked(use_tambo_v1_1.
|
|
185
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
186
186
|
messages: [
|
|
187
187
|
{
|
|
188
188
|
id: "msg_1",
|
|
@@ -200,7 +200,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
200
200
|
initThread: jest.fn(),
|
|
201
201
|
streamingState: { status: "idle" },
|
|
202
202
|
});
|
|
203
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
203
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
204
204
|
wrapper: createWrapper(),
|
|
205
205
|
});
|
|
206
206
|
await (0, react_1.waitFor)(() => {
|
|
@@ -219,7 +219,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
219
219
|
});
|
|
220
220
|
it("returns existing suggestions from list without calling create", async () => {
|
|
221
221
|
mockListSuggestions.mockResolvedValue(mockSuggestionsResponse);
|
|
222
|
-
jest.mocked(use_tambo_v1_1.
|
|
222
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
223
223
|
messages: [
|
|
224
224
|
{
|
|
225
225
|
id: "msg_1",
|
|
@@ -237,7 +237,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
237
237
|
initThread: jest.fn(),
|
|
238
238
|
streamingState: { status: "idle" },
|
|
239
239
|
});
|
|
240
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
240
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
241
241
|
wrapper: createWrapper(),
|
|
242
242
|
});
|
|
243
243
|
await (0, react_1.waitFor)(() => {
|
|
@@ -247,7 +247,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
247
247
|
expect(mockCreateSuggestions).not.toHaveBeenCalled();
|
|
248
248
|
});
|
|
249
249
|
it("does not generate suggestions when thread is streaming", () => {
|
|
250
|
-
jest.mocked(use_tambo_v1_1.
|
|
250
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
251
251
|
messages: [
|
|
252
252
|
{
|
|
253
253
|
id: "msg_1",
|
|
@@ -265,14 +265,14 @@ describe("useTamboV1Suggestions", () => {
|
|
|
265
265
|
initThread: jest.fn(),
|
|
266
266
|
streamingState: { status: "streaming", runId: "run_1" },
|
|
267
267
|
});
|
|
268
|
-
(0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
268
|
+
(0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
269
269
|
wrapper: createWrapper(),
|
|
270
270
|
});
|
|
271
271
|
expect(mockListSuggestions).not.toHaveBeenCalled();
|
|
272
272
|
expect(mockCreateSuggestions).not.toHaveBeenCalled();
|
|
273
273
|
});
|
|
274
274
|
it("does not generate suggestions when autoGenerate is false", () => {
|
|
275
|
-
jest.mocked(use_tambo_v1_1.
|
|
275
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
276
276
|
messages: [
|
|
277
277
|
{
|
|
278
278
|
id: "msg_1",
|
|
@@ -290,14 +290,14 @@ describe("useTamboV1Suggestions", () => {
|
|
|
290
290
|
initThread: jest.fn(),
|
|
291
291
|
streamingState: { status: "idle" },
|
|
292
292
|
});
|
|
293
|
-
(0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
293
|
+
(0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)({ autoGenerate: false }), {
|
|
294
294
|
wrapper: createWrapper(),
|
|
295
295
|
});
|
|
296
296
|
expect(mockListSuggestions).not.toHaveBeenCalled();
|
|
297
297
|
expect(mockCreateSuggestions).not.toHaveBeenCalled();
|
|
298
298
|
});
|
|
299
299
|
it("uses custom maxSuggestions option", async () => {
|
|
300
|
-
jest.mocked(use_tambo_v1_1.
|
|
300
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
301
301
|
messages: [
|
|
302
302
|
{
|
|
303
303
|
id: "msg_1",
|
|
@@ -315,7 +315,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
315
315
|
initThread: jest.fn(),
|
|
316
316
|
streamingState: { status: "idle" },
|
|
317
317
|
});
|
|
318
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
318
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)({ maxSuggestions: 5 }), { wrapper: createWrapper() });
|
|
319
319
|
await (0, react_1.waitFor)(() => {
|
|
320
320
|
expect(result.current.suggestions).toHaveLength(2);
|
|
321
321
|
});
|
|
@@ -324,7 +324,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
324
324
|
});
|
|
325
325
|
describe("Accepting Suggestions", () => {
|
|
326
326
|
it("updates input value when accepting without submit", async () => {
|
|
327
|
-
jest.mocked(use_tambo_v1_1.
|
|
327
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
328
328
|
messages: [
|
|
329
329
|
{
|
|
330
330
|
id: "msg_1",
|
|
@@ -342,7 +342,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
342
342
|
initThread: jest.fn(),
|
|
343
343
|
streamingState: { status: "idle" },
|
|
344
344
|
});
|
|
345
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
345
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
346
346
|
wrapper: createWrapper(),
|
|
347
347
|
});
|
|
348
348
|
await (0, react_1.waitFor)(() => {
|
|
@@ -358,7 +358,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
358
358
|
});
|
|
359
359
|
it("submits when accepting with shouldSubmit=true", async () => {
|
|
360
360
|
mockSubmit.mockResolvedValue({ threadId: "thread_123" });
|
|
361
|
-
jest.mocked(use_tambo_v1_1.
|
|
361
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
362
362
|
messages: [
|
|
363
363
|
{
|
|
364
364
|
id: "msg_1",
|
|
@@ -376,7 +376,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
376
376
|
initThread: jest.fn(),
|
|
377
377
|
streamingState: { status: "idle" },
|
|
378
378
|
});
|
|
379
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
379
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
380
380
|
wrapper: createWrapper(),
|
|
381
381
|
});
|
|
382
382
|
await (0, react_1.waitFor)(() => {
|
|
@@ -390,7 +390,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
390
390
|
expect(mockSubmit).toHaveBeenCalled();
|
|
391
391
|
});
|
|
392
392
|
it("throws error when suggestion has no content", async () => {
|
|
393
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
393
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
394
394
|
wrapper: createWrapper(),
|
|
395
395
|
});
|
|
396
396
|
const emptySuggestion = {
|
|
@@ -402,7 +402,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
402
402
|
await expect(result.current.accept({ suggestion: emptySuggestion })).rejects.toThrow("Suggestion has no content");
|
|
403
403
|
});
|
|
404
404
|
it("throws error when detailedSuggestion is only whitespace", async () => {
|
|
405
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
405
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
406
406
|
wrapper: createWrapper(),
|
|
407
407
|
});
|
|
408
408
|
const whitespaceSuggestion = {
|
|
@@ -414,7 +414,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
414
414
|
await expect(result.current.accept({ suggestion: whitespaceSuggestion })).rejects.toThrow("Suggestion has no content");
|
|
415
415
|
});
|
|
416
416
|
it("throws error when detailedSuggestion is undefined", async () => {
|
|
417
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
417
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
418
418
|
wrapper: createWrapper(),
|
|
419
419
|
});
|
|
420
420
|
const undefinedSuggestion = {
|
|
@@ -427,8 +427,8 @@ describe("useTamboV1Suggestions", () => {
|
|
|
427
427
|
});
|
|
428
428
|
describe("State Management", () => {
|
|
429
429
|
it("resets selectedSuggestionId when message changes", async () => {
|
|
430
|
-
const
|
|
431
|
-
|
|
430
|
+
const mockUseTambo = jest.mocked(use_tambo_v1_1.useTambo);
|
|
431
|
+
mockUseTambo.mockReturnValue({
|
|
432
432
|
messages: [
|
|
433
433
|
{
|
|
434
434
|
id: "msg_1",
|
|
@@ -446,7 +446,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
446
446
|
initThread: jest.fn(),
|
|
447
447
|
streamingState: { status: "idle" },
|
|
448
448
|
});
|
|
449
|
-
const { result, rerender } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
449
|
+
const { result, rerender } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
450
450
|
wrapper: createWrapper(),
|
|
451
451
|
});
|
|
452
452
|
await (0, react_1.waitFor)(() => {
|
|
@@ -460,7 +460,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
460
460
|
});
|
|
461
461
|
expect(result.current.selectedSuggestionId).toBe("suggestion_1");
|
|
462
462
|
// Change the latest message
|
|
463
|
-
|
|
463
|
+
mockUseTambo.mockReturnValue({
|
|
464
464
|
messages: [
|
|
465
465
|
{
|
|
466
466
|
id: "msg_1",
|
|
@@ -495,7 +495,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
495
495
|
hasMore: true,
|
|
496
496
|
nextCursor: "cursor_abc",
|
|
497
497
|
});
|
|
498
|
-
jest.mocked(use_tambo_v1_1.
|
|
498
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
499
499
|
messages: [
|
|
500
500
|
{
|
|
501
501
|
id: "msg_1",
|
|
@@ -513,7 +513,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
513
513
|
initThread: jest.fn(),
|
|
514
514
|
streamingState: { status: "idle" },
|
|
515
515
|
});
|
|
516
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
516
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
517
517
|
wrapper: createWrapper(),
|
|
518
518
|
});
|
|
519
519
|
await (0, react_1.waitFor)(() => {
|
|
@@ -522,7 +522,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
522
522
|
});
|
|
523
523
|
});
|
|
524
524
|
it("exposes loading and error states", () => {
|
|
525
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
525
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
526
526
|
wrapper: createWrapper(),
|
|
527
527
|
});
|
|
528
528
|
expect(result.current.isLoading).toBeDefined();
|
|
@@ -535,7 +535,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
535
535
|
});
|
|
536
536
|
describe("Manual Generation", () => {
|
|
537
537
|
it("allows manual generation via generate function", async () => {
|
|
538
|
-
jest.mocked(use_tambo_v1_1.
|
|
538
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
539
539
|
messages: [
|
|
540
540
|
{
|
|
541
541
|
id: "msg_1",
|
|
@@ -553,7 +553,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
553
553
|
initThread: jest.fn(),
|
|
554
554
|
streamingState: { status: "idle" },
|
|
555
555
|
});
|
|
556
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
556
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)({ autoGenerate: false }), { wrapper: createWrapper() });
|
|
557
557
|
// No auto-generation
|
|
558
558
|
expect(mockCreateSuggestions).not.toHaveBeenCalled();
|
|
559
559
|
// Manual generation
|
|
@@ -565,7 +565,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
565
565
|
}));
|
|
566
566
|
});
|
|
567
567
|
it("returns undefined from generate when no assistant message", async () => {
|
|
568
|
-
jest.mocked(use_tambo_v1_1.
|
|
568
|
+
jest.mocked(use_tambo_v1_1.useTambo).mockReturnValue({
|
|
569
569
|
messages: [],
|
|
570
570
|
thread: undefined,
|
|
571
571
|
isIdle: true,
|
|
@@ -576,7 +576,7 @@ describe("useTamboV1Suggestions", () => {
|
|
|
576
576
|
initThread: jest.fn(),
|
|
577
577
|
streamingState: { status: "idle" },
|
|
578
578
|
});
|
|
579
|
-
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.
|
|
579
|
+
const { result } = (0, react_1.renderHook)(() => (0, use_tambo_v1_suggestions_1.useTamboSuggestions)(), {
|
|
580
580
|
wrapper: createWrapper(),
|
|
581
581
|
});
|
|
582
582
|
let generateResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tambo-v1-suggestions.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1-suggestions.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { renderHook, act, waitFor } from \"@testing-library/react\";\nimport React from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport type { Suggestion } from \"@tambo-ai/typescript-sdk/resources/beta/threads/suggestions\";\nimport { useTamboV1Suggestions } from \"./use-tambo-v1-suggestions\";\nimport { useTamboV1ThreadInput } from \"./use-tambo-v1-thread-input\";\nimport { useTamboV1 } from \"./use-tambo-v1\";\nimport {\n useTamboClient,\n useTamboQueryClient,\n} from \"../../providers/tambo-client-provider\";\nimport { useTamboRegistry } from \"../../providers/tambo-registry-provider\";\nimport { useTamboV1Config } from \"../providers/tambo-v1-provider\";\n\n// Mock dependencies\njest.mock(\"./use-tambo-v1-thread-input\", () => ({\n useTamboV1ThreadInput: jest.fn(),\n}));\n\njest.mock(\"./use-tambo-v1\", () => ({\n useTamboV1: jest.fn(),\n}));\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n useTamboQueryClient: jest.fn(() => new QueryClient()),\n}));\n\njest.mock(\"../../providers/tambo-registry-provider\", () => ({\n useTamboRegistry: jest.fn(),\n}));\n\njest.mock(\"../providers/tambo-v1-provider\", () => ({\n useTamboV1Config: jest.fn(),\n}));\n\ndescribe(\"useTamboV1Suggestions\", () => {\n let queryClient: QueryClient;\n const mockSetValue = jest.fn();\n const mockSubmit = jest.fn();\n const mockListSuggestions = jest.fn();\n const mockCreateSuggestions = jest.fn();\n\n const mockSuggestions: Suggestion[] = [\n {\n id: \"suggestion_1\",\n messageId: \"msg_1\",\n title: \"What's the weather?\",\n detailedSuggestion: \"What's the weather like today?\",\n },\n {\n id: \"suggestion_2\",\n messageId: \"msg_1\",\n title: \"Tell me a joke\",\n detailedSuggestion: \"Can you tell me a funny joke?\",\n },\n ];\n\n const mockSuggestionsResponse = {\n suggestions: mockSuggestions,\n hasMore: false,\n nextCursor: undefined,\n };\n\n function createWrapper() {\n return function Wrapper({ children }: { children: React.ReactNode }) {\n return (\n <QueryClientProvider client={queryClient}>\n {children}\n </QueryClientProvider>\n );\n };\n }\n\n beforeEach(() => {\n jest.clearAllMocks();\n queryClient = new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n mutations: { retry: false },\n },\n });\n\n // Mock useTamboQueryClient to return the test's queryClient\n jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);\n\n // Default mock for v1 config\n jest.mocked(useTamboV1Config).mockReturnValue({ userKey: \"user_123\" });\n\n // Default mock for thread input\n jest.mocked(useTamboV1ThreadInput).mockReturnValue({\n value: \"\",\n setValue: mockSetValue,\n submit: mockSubmit,\n isPending: false,\n isError: false,\n error: null,\n isSuccess: false,\n reset: jest.fn(),\n } as any);\n\n // Default mock for useTamboV1\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: {\n status: \"idle\",\n },\n } as any);\n\n // Default mock for registry\n jest.mocked(useTamboRegistry).mockReturnValue({\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n onCallUnregisteredTool: undefined,\n registerComponent: jest.fn(),\n unregisterComponent: jest.fn(),\n registerTool: jest.fn(),\n unregisterTool: jest.fn(),\n registerMcpServer: jest.fn(),\n unregisterMcpServer: jest.fn(),\n registerResource: jest.fn(),\n unregisterResource: jest.fn(),\n setResourceSource: jest.fn(),\n } as any);\n\n // Default mock for client - using v1 API structure\n mockListSuggestions.mockResolvedValue({ suggestions: [], hasMore: false });\n mockCreateSuggestions.mockResolvedValue(mockSuggestionsResponse);\n\n jest.mocked(useTamboClient).mockReturnValue({\n threads: {\n suggestions: {\n list: mockListSuggestions,\n create: mockCreateSuggestions,\n },\n },\n } as any);\n });\n\n describe(\"Initial State\", () => {\n it(\"returns empty suggestions when thread has placeholder ID\", () => {\n // Mock useTamboV1 to return placeholder thread ID\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"placeholder\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.suggestions).toEqual([]);\n expect(result.current.selectedSuggestionId).toBeNull();\n expect(result.current.isLoading).toBe(false);\n });\n\n it(\"returns empty suggestions when no messages\", () => {\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.suggestions).toEqual([]);\n expect(result.current.selectedSuggestionId).toBeNull();\n });\n\n it(\"returns empty suggestions when latest message is from user\", () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"user\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.suggestions).toEqual([]);\n });\n });\n\n describe(\"Suggestion Generation\", () => {\n it(\"generates suggestions when latest message is from assistant and thread is idle\", async () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n // Should first call list, then create since list returns empty\n expect(mockListSuggestions).toHaveBeenCalledWith(\"msg_1\", {\n threadId: \"thread_123\",\n userKey: \"user_123\",\n });\n expect(mockCreateSuggestions).toHaveBeenCalledWith(\n \"msg_1\",\n expect.objectContaining({\n threadId: \"thread_123\",\n maxSuggestions: 3,\n userKey: \"user_123\",\n }),\n );\n });\n\n it(\"returns existing suggestions from list without calling create\", async () => {\n mockListSuggestions.mockResolvedValue(mockSuggestionsResponse);\n\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n expect(mockListSuggestions).toHaveBeenCalled();\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n });\n\n it(\"does not generate suggestions when thread is streaming\", () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: false,\n isStreaming: true,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"streaming\", runId: \"run_1\" },\n } as any);\n\n renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(mockListSuggestions).not.toHaveBeenCalled();\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n });\n\n it(\"does not generate suggestions when autoGenerate is false\", () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n renderHook(() => useTamboV1Suggestions({ autoGenerate: false }), {\n wrapper: createWrapper(),\n });\n\n expect(mockListSuggestions).not.toHaveBeenCalled();\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n });\n\n it(\"uses custom maxSuggestions option\", async () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(\n () => useTamboV1Suggestions({ maxSuggestions: 5 }),\n { wrapper: createWrapper() },\n );\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n expect(mockCreateSuggestions).toHaveBeenCalledWith(\n \"msg_1\",\n expect.objectContaining({ maxSuggestions: 5 }),\n );\n });\n });\n\n describe(\"Accepting Suggestions\", () => {\n it(\"updates input value when accepting without submit\", async () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n const suggestion = result.current.suggestions[0];\n\n await act(async () => {\n await result.current.accept({ suggestion });\n });\n\n expect(mockSetValue).toHaveBeenCalledWith(\n \"What's the weather like today?\",\n );\n expect(mockSubmit).not.toHaveBeenCalled();\n expect(result.current.selectedSuggestionId).toBe(\"suggestion_1\");\n });\n\n it(\"submits when accepting with shouldSubmit=true\", async () => {\n mockSubmit.mockResolvedValue({ threadId: \"thread_123\" });\n\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n const suggestion = result.current.suggestions[0];\n\n await act(async () => {\n await result.current.accept({ suggestion, shouldSubmit: true });\n });\n\n expect(mockSetValue).toHaveBeenCalledWith(\n \"What's the weather like today?\",\n );\n expect(mockSubmit).toHaveBeenCalled();\n });\n\n it(\"throws error when suggestion has no content\", async () => {\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n const emptySuggestion = {\n id: \"empty_suggestion\",\n messageId: \"msg_1\",\n title: \"Empty\",\n detailedSuggestion: \"\",\n };\n\n await expect(\n result.current.accept({ suggestion: emptySuggestion as any }),\n ).rejects.toThrow(\"Suggestion has no content\");\n });\n\n it(\"throws error when detailedSuggestion is only whitespace\", async () => {\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n const whitespaceSuggestion = {\n id: \"whitespace_suggestion\",\n messageId: \"msg_1\",\n title: \"Whitespace\",\n detailedSuggestion: \" \",\n };\n\n await expect(\n result.current.accept({ suggestion: whitespaceSuggestion as any }),\n ).rejects.toThrow(\"Suggestion has no content\");\n });\n\n it(\"throws error when detailedSuggestion is undefined\", async () => {\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n const undefinedSuggestion = {\n id: \"undefined_suggestion\",\n messageId: \"msg_1\",\n title: \"Undefined\",\n };\n\n await expect(\n result.current.accept({ suggestion: undefinedSuggestion as any }),\n ).rejects.toThrow(\"Suggestion has no content\");\n });\n });\n\n describe(\"State Management\", () => {\n it(\"resets selectedSuggestionId when message changes\", async () => {\n const mockUseTamboV1 = jest.mocked(useTamboV1);\n\n mockUseTamboV1.mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result, rerender } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n // Accept a suggestion\n await act(async () => {\n await result.current.accept({\n suggestion: result.current.suggestions[0],\n });\n });\n\n expect(result.current.selectedSuggestionId).toBe(\"suggestion_1\");\n\n // Change the latest message\n mockUseTamboV1.mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n {\n id: \"msg_2\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:01Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n rerender();\n\n await waitFor(() => {\n expect(result.current.selectedSuggestionId).toBeNull();\n });\n });\n\n it(\"includes pagination info on raw data\", async () => {\n mockListSuggestions.mockResolvedValue({\n suggestions: mockSuggestions,\n hasMore: true,\n nextCursor: \"cursor_abc\",\n });\n\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.data?.hasMore).toBe(true);\n expect(result.current.data?.nextCursor).toBe(\"cursor_abc\");\n });\n });\n\n it(\"exposes loading and error states\", () => {\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.isLoading).toBeDefined();\n expect(result.current.isSuccess).toBeDefined();\n expect(result.current.isError).toBeDefined();\n expect(result.current.error).toBeDefined();\n expect(result.current.isAccepting).toBe(false);\n expect(result.current.isGenerating).toBe(false);\n });\n });\n\n describe(\"Manual Generation\", () => {\n it(\"allows manual generation via generate function\", async () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(\n () => useTamboV1Suggestions({ autoGenerate: false }),\n { wrapper: createWrapper() },\n );\n\n // No auto-generation\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n\n // Manual generation\n await act(async () => {\n await result.current.generate();\n });\n\n expect(mockCreateSuggestions).toHaveBeenCalledWith(\n \"msg_1\",\n expect.objectContaining({\n threadId: \"thread_123\",\n }),\n );\n });\n\n it(\"returns undefined from generate when no assistant message\", async () => {\n jest.mocked(useTamboV1).mockReturnValue({\n messages: [],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboV1Suggestions(), {\n wrapper: createWrapper(),\n });\n\n let generateResult: any;\n await act(async () => {\n generateResult = await result.current.generate();\n });\n\n expect(generateResult).toBeUndefined();\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"use-tambo-v1-suggestions.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1-suggestions.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { renderHook, act, waitFor } from \"@testing-library/react\";\nimport React from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport type { Suggestion } from \"@tambo-ai/typescript-sdk/resources/beta/threads/suggestions\";\nimport { useTamboSuggestions } from \"./use-tambo-v1-suggestions\";\nimport { useTamboThreadInput } from \"./use-tambo-v1-thread-input\";\nimport { useTambo } from \"./use-tambo-v1\";\nimport {\n useTamboClient,\n useTamboQueryClient,\n} from \"../../providers/tambo-client-provider\";\nimport { useTamboRegistry } from \"../../providers/tambo-registry-provider\";\nimport { useTamboConfig } from \"../providers/tambo-v1-provider\";\n\n// Mock dependencies\njest.mock(\"./use-tambo-v1-thread-input\", () => ({\n useTamboThreadInput: jest.fn(),\n}));\n\njest.mock(\"./use-tambo-v1\", () => ({\n useTambo: jest.fn(),\n}));\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n useTamboQueryClient: jest.fn(() => new QueryClient()),\n}));\n\njest.mock(\"../../providers/tambo-registry-provider\", () => ({\n useTamboRegistry: jest.fn(),\n}));\n\njest.mock(\"../providers/tambo-v1-provider\", () => ({\n useTamboConfig: jest.fn(),\n}));\n\ndescribe(\"useTamboSuggestions\", () => {\n let queryClient: QueryClient;\n const mockSetValue = jest.fn();\n const mockSubmit = jest.fn();\n const mockListSuggestions = jest.fn();\n const mockCreateSuggestions = jest.fn();\n\n const mockSuggestions: Suggestion[] = [\n {\n id: \"suggestion_1\",\n messageId: \"msg_1\",\n title: \"What's the weather?\",\n detailedSuggestion: \"What's the weather like today?\",\n },\n {\n id: \"suggestion_2\",\n messageId: \"msg_1\",\n title: \"Tell me a joke\",\n detailedSuggestion: \"Can you tell me a funny joke?\",\n },\n ];\n\n const mockSuggestionsResponse = {\n suggestions: mockSuggestions,\n hasMore: false,\n nextCursor: undefined,\n };\n\n function createWrapper() {\n return function Wrapper({ children }: { children: React.ReactNode }) {\n return (\n <QueryClientProvider client={queryClient}>\n {children}\n </QueryClientProvider>\n );\n };\n }\n\n beforeEach(() => {\n jest.clearAllMocks();\n queryClient = new QueryClient({\n defaultOptions: {\n queries: { retry: false },\n mutations: { retry: false },\n },\n });\n\n // Mock useTamboQueryClient to return the test's queryClient\n jest.mocked(useTamboQueryClient).mockReturnValue(queryClient);\n\n // Default mock for config\n jest.mocked(useTamboConfig).mockReturnValue({ userKey: \"user_123\" });\n\n // Default mock for thread input\n jest.mocked(useTamboThreadInput).mockReturnValue({\n value: \"\",\n setValue: mockSetValue,\n submit: mockSubmit,\n isPending: false,\n isError: false,\n error: null,\n isSuccess: false,\n reset: jest.fn(),\n } as any);\n\n // Default mock for useTambo\n jest.mocked(useTambo).mockReturnValue({\n messages: [],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: {\n status: \"idle\",\n },\n } as any);\n\n // Default mock for registry\n jest.mocked(useTamboRegistry).mockReturnValue({\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n onCallUnregisteredTool: undefined,\n registerComponent: jest.fn(),\n unregisterComponent: jest.fn(),\n registerTool: jest.fn(),\n unregisterTool: jest.fn(),\n registerMcpServer: jest.fn(),\n unregisterMcpServer: jest.fn(),\n registerResource: jest.fn(),\n unregisterResource: jest.fn(),\n setResourceSource: jest.fn(),\n } as any);\n\n // Default mock for client - using API structure\n mockListSuggestions.mockResolvedValue({ suggestions: [], hasMore: false });\n mockCreateSuggestions.mockResolvedValue(mockSuggestionsResponse);\n\n jest.mocked(useTamboClient).mockReturnValue({\n threads: {\n suggestions: {\n list: mockListSuggestions,\n create: mockCreateSuggestions,\n },\n },\n } as any);\n });\n\n describe(\"Initial State\", () => {\n it(\"returns empty suggestions when thread has placeholder ID\", () => {\n // Mock useTambo to return placeholder thread ID\n jest.mocked(useTambo).mockReturnValue({\n messages: [],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"placeholder\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.suggestions).toEqual([]);\n expect(result.current.selectedSuggestionId).toBeNull();\n expect(result.current.isLoading).toBe(false);\n });\n\n it(\"returns empty suggestions when no messages\", () => {\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.suggestions).toEqual([]);\n expect(result.current.selectedSuggestionId).toBeNull();\n });\n\n it(\"returns empty suggestions when latest message is from user\", () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"user\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.suggestions).toEqual([]);\n });\n });\n\n describe(\"Suggestion Generation\", () => {\n it(\"generates suggestions when latest message is from assistant and thread is idle\", async () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n // Should first call list, then create since list returns empty\n expect(mockListSuggestions).toHaveBeenCalledWith(\"msg_1\", {\n threadId: \"thread_123\",\n userKey: \"user_123\",\n });\n expect(mockCreateSuggestions).toHaveBeenCalledWith(\n \"msg_1\",\n expect.objectContaining({\n threadId: \"thread_123\",\n maxSuggestions: 3,\n userKey: \"user_123\",\n }),\n );\n });\n\n it(\"returns existing suggestions from list without calling create\", async () => {\n mockListSuggestions.mockResolvedValue(mockSuggestionsResponse);\n\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n expect(mockListSuggestions).toHaveBeenCalled();\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n });\n\n it(\"does not generate suggestions when thread is streaming\", () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: false,\n isStreaming: true,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"streaming\", runId: \"run_1\" },\n } as any);\n\n renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(mockListSuggestions).not.toHaveBeenCalled();\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n });\n\n it(\"does not generate suggestions when autoGenerate is false\", () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n renderHook(() => useTamboSuggestions({ autoGenerate: false }), {\n wrapper: createWrapper(),\n });\n\n expect(mockListSuggestions).not.toHaveBeenCalled();\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n });\n\n it(\"uses custom maxSuggestions option\", async () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(\n () => useTamboSuggestions({ maxSuggestions: 5 }),\n { wrapper: createWrapper() },\n );\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n expect(mockCreateSuggestions).toHaveBeenCalledWith(\n \"msg_1\",\n expect.objectContaining({ maxSuggestions: 5 }),\n );\n });\n });\n\n describe(\"Accepting Suggestions\", () => {\n it(\"updates input value when accepting without submit\", async () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n const suggestion = result.current.suggestions[0];\n\n await act(async () => {\n await result.current.accept({ suggestion });\n });\n\n expect(mockSetValue).toHaveBeenCalledWith(\n \"What's the weather like today?\",\n );\n expect(mockSubmit).not.toHaveBeenCalled();\n expect(result.current.selectedSuggestionId).toBe(\"suggestion_1\");\n });\n\n it(\"submits when accepting with shouldSubmit=true\", async () => {\n mockSubmit.mockResolvedValue({ threadId: \"thread_123\" });\n\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n const suggestion = result.current.suggestions[0];\n\n await act(async () => {\n await result.current.accept({ suggestion, shouldSubmit: true });\n });\n\n expect(mockSetValue).toHaveBeenCalledWith(\n \"What's the weather like today?\",\n );\n expect(mockSubmit).toHaveBeenCalled();\n });\n\n it(\"throws error when suggestion has no content\", async () => {\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n const emptySuggestion = {\n id: \"empty_suggestion\",\n messageId: \"msg_1\",\n title: \"Empty\",\n detailedSuggestion: \"\",\n };\n\n await expect(\n result.current.accept({ suggestion: emptySuggestion as any }),\n ).rejects.toThrow(\"Suggestion has no content\");\n });\n\n it(\"throws error when detailedSuggestion is only whitespace\", async () => {\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n const whitespaceSuggestion = {\n id: \"whitespace_suggestion\",\n messageId: \"msg_1\",\n title: \"Whitespace\",\n detailedSuggestion: \" \",\n };\n\n await expect(\n result.current.accept({ suggestion: whitespaceSuggestion as any }),\n ).rejects.toThrow(\"Suggestion has no content\");\n });\n\n it(\"throws error when detailedSuggestion is undefined\", async () => {\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n const undefinedSuggestion = {\n id: \"undefined_suggestion\",\n messageId: \"msg_1\",\n title: \"Undefined\",\n };\n\n await expect(\n result.current.accept({ suggestion: undefinedSuggestion as any }),\n ).rejects.toThrow(\"Suggestion has no content\");\n });\n });\n\n describe(\"State Management\", () => {\n it(\"resets selectedSuggestionId when message changes\", async () => {\n const mockUseTambo = jest.mocked(useTambo);\n\n mockUseTambo.mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result, rerender } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.suggestions).toHaveLength(2);\n });\n\n // Accept a suggestion\n await act(async () => {\n await result.current.accept({\n suggestion: result.current.suggestions[0],\n });\n });\n\n expect(result.current.selectedSuggestionId).toBe(\"suggestion_1\");\n\n // Change the latest message\n mockUseTambo.mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n {\n id: \"msg_2\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:01Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n rerender();\n\n await waitFor(() => {\n expect(result.current.selectedSuggestionId).toBeNull();\n });\n });\n\n it(\"includes pagination info on raw data\", async () => {\n mockListSuggestions.mockResolvedValue({\n suggestions: mockSuggestions,\n hasMore: true,\n nextCursor: \"cursor_abc\",\n });\n\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n await waitFor(() => {\n expect(result.current.data?.hasMore).toBe(true);\n expect(result.current.data?.nextCursor).toBe(\"cursor_abc\");\n });\n });\n\n it(\"exposes loading and error states\", () => {\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.isLoading).toBeDefined();\n expect(result.current.isSuccess).toBeDefined();\n expect(result.current.isError).toBeDefined();\n expect(result.current.error).toBeDefined();\n expect(result.current.isAccepting).toBe(false);\n expect(result.current.isGenerating).toBe(false);\n });\n });\n\n describe(\"Manual Generation\", () => {\n it(\"allows manual generation via generate function\", async () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [\n {\n id: \"msg_1\",\n role: \"assistant\",\n content: [],\n createdAt: \"2024-01-01T00:00:00Z\",\n },\n ],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(\n () => useTamboSuggestions({ autoGenerate: false }),\n { wrapper: createWrapper() },\n );\n\n // No auto-generation\n expect(mockCreateSuggestions).not.toHaveBeenCalled();\n\n // Manual generation\n await act(async () => {\n await result.current.generate();\n });\n\n expect(mockCreateSuggestions).toHaveBeenCalledWith(\n \"msg_1\",\n expect.objectContaining({\n threadId: \"thread_123\",\n }),\n );\n });\n\n it(\"returns undefined from generate when no assistant message\", async () => {\n jest.mocked(useTambo).mockReturnValue({\n messages: [],\n thread: undefined,\n isIdle: true,\n isStreaming: false,\n currentThreadId: \"thread_123\",\n startNewThread: jest.fn(),\n switchThread: jest.fn(),\n initThread: jest.fn(),\n streamingState: { status: \"idle\" },\n } as any);\n\n const { result } = renderHook(() => useTamboSuggestions(), {\n wrapper: createWrapper(),\n });\n\n let generateResult: any;\n await act(async () => {\n generateResult = await result.current.generate();\n });\n\n expect(generateResult).toBeUndefined();\n });\n });\n});\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* useTamboThreadInput - Thread Input Hook
|
|
3
3
|
*
|
|
4
4
|
* Re-exports the shared thread input hook from the provider.
|
|
5
5
|
* This hook uses shared context, enabling features like suggestions
|
|
6
6
|
* to update the input field directly.
|
|
7
7
|
*
|
|
8
|
-
* For direct thread control without shared state, use
|
|
8
|
+
* For direct thread control without shared state, use useTamboSendMessage instead.
|
|
9
9
|
*/
|
|
10
|
-
export {
|
|
10
|
+
export { useTamboThreadInput, type TamboThreadInputContextProps, type SubmitOptions, } from "../providers/tambo-v1-thread-input-provider";
|
|
11
11
|
//# sourceMappingURL=use-tambo-v1-thread-input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tambo-v1-thread-input.d.ts","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1-thread-input.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"use-tambo-v1-thread-input.d.ts","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1-thread-input.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EACL,mBAAmB,EACnB,KAAK,4BAA4B,EACjC,KAAK,aAAa,GACnB,MAAM,6CAA6C,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
"use client";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
4
|
+
exports.useTamboThreadInput = void 0;
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* useTamboThreadInput - Thread Input Hook
|
|
7
7
|
*
|
|
8
8
|
* Re-exports the shared thread input hook from the provider.
|
|
9
9
|
* This hook uses shared context, enabling features like suggestions
|
|
10
10
|
* to update the input field directly.
|
|
11
11
|
*
|
|
12
|
-
* For direct thread control without shared state, use
|
|
12
|
+
* For direct thread control without shared state, use useTamboSendMessage instead.
|
|
13
13
|
*/
|
|
14
14
|
var tambo_v1_thread_input_provider_1 = require("../providers/tambo-v1-thread-input-provider");
|
|
15
|
-
Object.defineProperty(exports, "
|
|
15
|
+
Object.defineProperty(exports, "useTamboThreadInput", { enumerable: true, get: function () { return tambo_v1_thread_input_provider_1.useTamboThreadInput; } });
|
|
16
16
|
//# sourceMappingURL=use-tambo-v1-thread-input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tambo-v1-thread-input.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1-thread-input.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAEb;;;;;;;;GAQG;AAEH,8FAIqD;AAHnD,
|
|
1
|
+
{"version":3,"file":"use-tambo-v1-thread-input.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1-thread-input.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAEb;;;;;;;;GAQG;AAEH,8FAIqD;AAHnD,qIAAA,mBAAmB,OAAA","sourcesContent":["\"use client\";\n\n/**\n * useTamboThreadInput - Thread Input Hook\n *\n * Re-exports the shared thread input hook from the provider.\n * This hook uses shared context, enabling features like suggestions\n * to update the input field directly.\n *\n * For direct thread control without shared state, use useTamboSendMessage instead.\n */\n\nexport {\n useTamboThreadInput,\n type TamboThreadInputContextProps,\n type SubmitOptions,\n} from \"../providers/tambo-v1-thread-input-provider\";\n"]}
|