@tambo-ai/react 0.65.2 → 0.65.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -61
- package/dist/context-helpers/context-helpers-provider.test.d.ts.map +1 -0
- package/dist/context-helpers/{__tests__/context-helpers-provider.test.js → context-helpers-provider.test.js} +2 -2
- package/dist/context-helpers/context-helpers-provider.test.js.map +1 -0
- package/dist/context-helpers/context-helpers.test.d.ts.map +1 -0
- package/dist/context-helpers/{__tests__/context-helpers.test.js → context-helpers.test.js} +1 -1
- package/dist/context-helpers/context-helpers.test.js.map +1 -0
- package/dist/hooks/use-component-state.d.ts +11 -24
- package/dist/hooks/use-component-state.d.ts.map +1 -1
- package/dist/hooks/use-component-state.js +14 -5
- package/dist/hooks/use-component-state.js.map +1 -1
- package/dist/hooks/use-component-state.test.d.ts.map +1 -0
- package/dist/hooks/{__tests__/use-component-state.test.js → use-component-state.test.js} +7 -7
- package/dist/hooks/use-component-state.test.js.map +1 -0
- package/dist/hooks/use-message-images.test.d.ts.map +1 -0
- package/dist/hooks/{__tests__/use-message-images.test.js → use-message-images.test.js} +1 -1
- package/dist/hooks/use-message-images.test.js.map +1 -0
- package/dist/hooks/use-streaming-props.d.ts +7 -19
- package/dist/hooks/use-streaming-props.d.ts.map +1 -1
- package/dist/hooks/use-streaming-props.js +7 -19
- package/dist/hooks/use-streaming-props.js.map +1 -1
- package/dist/hooks/use-suggestions.d.ts +1 -1
- package/dist/hooks/use-suggestions.d.ts.map +1 -1
- package/dist/hooks/use-suggestions.js.map +1 -1
- package/dist/hooks/use-suggestions.test.d.ts.map +1 -0
- package/dist/hooks/{__tests__/use-suggestions.test.js → use-suggestions.test.js} +36 -29
- package/dist/hooks/use-suggestions.test.js.map +1 -0
- package/dist/hooks/use-tambo-stream-status.d.ts +9 -8
- package/dist/hooks/use-tambo-stream-status.d.ts.map +1 -1
- package/dist/hooks/use-tambo-stream-status.js +9 -8
- package/dist/hooks/use-tambo-stream-status.js.map +1 -1
- package/dist/hooks/use-tambo-stream-status.test.d.ts.map +1 -0
- package/dist/hooks/{__tests__/use-tambo-stream-status.test.js → use-tambo-stream-status.test.js} +6 -6
- package/dist/hooks/use-tambo-stream-status.test.js.map +1 -0
- package/dist/hooks/use-tambo-threads.test.d.ts.map +1 -0
- package/dist/hooks/{__tests__/use-tambo-threads.test.js → use-tambo-threads.test.js} +3 -3
- package/dist/hooks/use-tambo-threads.test.js.map +1 -0
- package/dist/mcp/elicitation.d.ts +10 -2
- package/dist/mcp/elicitation.d.ts.map +1 -1
- package/dist/mcp/elicitation.js +19 -1
- package/dist/mcp/elicitation.js.map +1 -1
- package/dist/mcp/elicitation.test.d.ts.map +1 -0
- package/dist/mcp/{__tests__/elicitation.test.js → elicitation.test.js} +1 -1
- package/dist/mcp/elicitation.test.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mcp-client.d.ts +29 -10
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.test.d.ts.map +1 -0
- package/dist/mcp/{__tests__/mcp-client.test.js → mcp-client.test.js} +1 -1
- package/dist/mcp/mcp-client.test.js.map +1 -0
- package/dist/mcp/mcp-hooks.d.ts +52 -19
- package/dist/mcp/mcp-hooks.d.ts.map +1 -1
- package/dist/mcp/mcp-hooks.js.map +1 -1
- package/dist/mcp/mcp-hooks.test.d.ts.map +1 -0
- package/dist/mcp/{__tests__/mcp-hooks.test.js → mcp-hooks.test.js} +7 -33
- package/dist/mcp/mcp-hooks.test.js.map +1 -0
- package/dist/mcp/tambo-mcp-provider.d.ts +2 -0
- package/dist/mcp/tambo-mcp-provider.d.ts.map +1 -1
- package/dist/mcp/tambo-mcp-provider.js +58 -12
- package/dist/mcp/tambo-mcp-provider.js.map +1 -1
- package/dist/mcp/tambo-mcp-provider.test.d.ts.map +1 -0
- package/dist/mcp/{__tests__/tambo-mcp-provider.test.js → tambo-mcp-provider.test.js} +9 -25
- package/dist/mcp/tambo-mcp-provider.test.js.map +1 -0
- package/dist/mcp/use-mcp-servers.test.d.ts.map +1 -0
- package/dist/mcp/{__tests__/use-mcp-servers.test.js → use-mcp-servers.test.js} +5 -11
- package/dist/mcp/use-mcp-servers.test.js.map +1 -0
- package/dist/model/component-metadata.d.ts +1 -1
- package/dist/model/component-metadata.d.ts.map +1 -1
- package/dist/model/component-metadata.js.map +1 -1
- package/dist/model/mcp-server-info.d.ts +3 -1
- package/dist/model/mcp-server-info.d.ts.map +1 -1
- package/dist/model/mcp-server-info.js.map +1 -1
- package/dist/model/tambo-thread.d.ts +6 -1
- package/dist/model/tambo-thread.d.ts.map +1 -1
- package/dist/model/tambo-thread.js.map +1 -1
- package/dist/providers/hoc/with-tambo-interactable.d.ts +1 -1
- package/dist/providers/hoc/with-tambo-interactable.d.ts.map +1 -1
- package/dist/providers/hoc/with-tambo-interactable.js.map +1 -1
- package/dist/providers/hooks/use-tambo-session-token.test.d.ts.map +1 -0
- package/dist/providers/hooks/{__tests__/use-tambo-session-token.test.js → use-tambo-session-token.test.js} +1 -1
- package/dist/providers/hooks/use-tambo-session-token.test.js.map +1 -0
- package/dist/providers/tambo-client-provider.d.ts +0 -4
- package/dist/providers/tambo-client-provider.d.ts.map +1 -1
- package/dist/providers/tambo-client-provider.js +0 -3
- package/dist/providers/tambo-client-provider.js.map +1 -1
- package/dist/providers/tambo-context-attachment-provider.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-context-attachment-provider.test.js → tambo-context-attachment-provider.test.js} +2 -2
- package/dist/providers/tambo-context-attachment-provider.test.js.map +1 -0
- package/dist/providers/tambo-context-helpers-provider.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-context-helpers-provider.test.js → tambo-context-helpers-provider.test.js} +2 -2
- package/dist/providers/tambo-context-helpers-provider.test.js.map +1 -0
- package/dist/providers/tambo-interactable-provider-partial-updates.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-interactable-provider-partial-updates.test.js → tambo-interactable-provider-partial-updates.test.js} +91 -91
- package/dist/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -0
- package/dist/providers/tambo-interactable-provider.d.ts +1 -1
- package/dist/providers/tambo-interactable-provider.d.ts.map +1 -1
- package/dist/providers/tambo-interactable-provider.js +30 -30
- package/dist/providers/tambo-interactable-provider.js.map +1 -1
- package/dist/providers/tambo-interactables-additional-context-edge-cases.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.js → tambo-interactables-additional-context-edge-cases.test.js} +18 -18
- package/dist/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -0
- package/dist/providers/tambo-interactables-additional-context.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-interactables-additional-context.test.js → tambo-interactables-additional-context.test.js} +20 -20
- package/dist/providers/tambo-interactables-additional-context.test.js.map +1 -0
- package/dist/providers/tambo-mcp-token-provider.d.ts +20 -13
- package/dist/providers/tambo-mcp-token-provider.d.ts.map +1 -1
- package/dist/providers/tambo-mcp-token-provider.js +122 -10
- package/dist/providers/tambo-mcp-token-provider.js.map +1 -1
- package/dist/providers/tambo-prop-stream-provider.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-prop-stream-provider.test.js → tambo-prop-stream-provider.test.js} +32 -25
- package/dist/providers/tambo-prop-stream-provider.test.js.map +1 -0
- package/dist/providers/tambo-provider.d.ts +2 -2
- package/dist/providers/tambo-provider.d.ts.map +1 -1
- package/dist/providers/tambo-provider.js +5 -7
- package/dist/providers/tambo-provider.js.map +1 -1
- package/dist/providers/tambo-registry-provider.js +2 -2
- package/dist/providers/tambo-registry-provider.js.map +1 -1
- package/dist/providers/tambo-registry-provider.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-registry-provider.test.js → tambo-registry-provider.test.js} +21 -21
- package/dist/providers/tambo-registry-provider.test.js.map +1 -0
- package/dist/providers/tambo-stubs.d.ts.map +1 -1
- package/dist/providers/tambo-stubs.js +4 -2
- package/dist/providers/tambo-stubs.js.map +1 -1
- package/dist/providers/tambo-stubs.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-stubs.test.js → tambo-stubs.test.js} +2 -2
- package/dist/providers/tambo-stubs.test.js.map +1 -0
- package/dist/providers/tambo-thread-input-provider.d.ts +1 -1
- package/dist/providers/tambo-thread-input-provider.d.ts.map +1 -1
- package/dist/providers/tambo-thread-input-provider.js.map +1 -1
- package/dist/providers/tambo-thread-provider-initial-messages.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-thread-provider-initial-messages.test.js → tambo-thread-provider-initial-messages.test.js} +7 -9
- package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +1 -0
- package/dist/providers/tambo-thread-provider.d.ts +8 -0
- package/dist/providers/tambo-thread-provider.d.ts.map +1 -1
- package/dist/providers/tambo-thread-provider.js +82 -19
- package/dist/providers/tambo-thread-provider.js.map +1 -1
- package/dist/providers/tambo-thread-provider.test.d.ts.map +1 -0
- package/dist/providers/{__tests__/tambo-thread-provider.test.js → tambo-thread-provider.test.js} +32 -64
- package/dist/providers/tambo-thread-provider.test.js.map +1 -0
- package/dist/testing/tools.js.map +1 -1
- package/dist/util/content-parts.test.d.ts.map +1 -0
- package/dist/util/{__tests__/content-parts.test.js → content-parts.test.js} +1 -1
- package/dist/util/content-parts.test.js.map +1 -0
- package/dist/util/generate-component.js +2 -2
- package/dist/util/generate-component.js.map +1 -1
- package/dist/util/message-builder.d.ts +2 -2
- package/dist/util/message-builder.d.ts.map +1 -1
- package/dist/util/message-builder.js +63 -6
- package/dist/util/message-builder.js.map +1 -1
- package/dist/util/message-builder.test.d.ts.map +1 -0
- package/dist/util/{__tests__/message-builder.test.js → message-builder.test.js} +1 -1
- package/dist/util/message-builder.test.js.map +1 -0
- package/dist/util/query-utils.d.ts.map +1 -1
- package/dist/util/query-utils.js +49 -31
- package/dist/util/query-utils.js.map +1 -1
- package/dist/util/registry.js.map +1 -1
- package/dist/util/validate-zod-schema.d.ts +1 -1
- package/dist/util/validate-zod-schema.d.ts.map +1 -1
- package/dist/util/validate-zod-schema.js +15 -15
- package/dist/util/validate-zod-schema.js.map +1 -1
- package/dist/util/validate-zod-schema.test.d.ts.map +1 -0
- package/dist/{__tests__/util → util}/validate-zod-schema.test.js +36 -36
- package/dist/util/validate-zod-schema.test.js.map +1 -0
- package/esm/context-helpers/context-helpers-provider.test.d.ts.map +1 -0
- package/esm/context-helpers/{__tests__/context-helpers-provider.test.js → context-helpers-provider.test.js} +2 -2
- package/esm/context-helpers/context-helpers-provider.test.js.map +1 -0
- package/esm/context-helpers/context-helpers.test.d.ts.map +1 -0
- package/esm/context-helpers/{__tests__/context-helpers.test.js → context-helpers.test.js} +1 -1
- package/esm/context-helpers/context-helpers.test.js.map +1 -0
- package/esm/hooks/use-component-state.d.ts +11 -24
- package/esm/hooks/use-component-state.d.ts.map +1 -1
- package/esm/hooks/use-component-state.js +14 -5
- package/esm/hooks/use-component-state.js.map +1 -1
- package/esm/hooks/use-component-state.test.d.ts.map +1 -0
- package/esm/hooks/{__tests__/use-component-state.test.js → use-component-state.test.js} +7 -7
- package/esm/hooks/use-component-state.test.js.map +1 -0
- package/esm/hooks/use-message-images.test.d.ts.map +1 -0
- package/esm/hooks/{__tests__/use-message-images.test.js → use-message-images.test.js} +1 -1
- package/esm/hooks/use-message-images.test.js.map +1 -0
- package/esm/hooks/use-streaming-props.d.ts +7 -19
- package/esm/hooks/use-streaming-props.d.ts.map +1 -1
- package/esm/hooks/use-streaming-props.js +7 -19
- package/esm/hooks/use-streaming-props.js.map +1 -1
- package/esm/hooks/use-suggestions.d.ts +1 -1
- package/esm/hooks/use-suggestions.d.ts.map +1 -1
- package/esm/hooks/use-suggestions.js.map +1 -1
- package/esm/hooks/use-suggestions.test.d.ts.map +1 -0
- package/esm/hooks/{__tests__/use-suggestions.test.js → use-suggestions.test.js} +36 -29
- package/esm/hooks/use-suggestions.test.js.map +1 -0
- package/esm/hooks/use-tambo-stream-status.d.ts +9 -8
- package/esm/hooks/use-tambo-stream-status.d.ts.map +1 -1
- package/esm/hooks/use-tambo-stream-status.js +9 -8
- package/esm/hooks/use-tambo-stream-status.js.map +1 -1
- package/esm/hooks/use-tambo-stream-status.test.d.ts.map +1 -0
- package/esm/hooks/{__tests__/use-tambo-stream-status.test.js → use-tambo-stream-status.test.js} +6 -6
- package/esm/hooks/use-tambo-stream-status.test.js.map +1 -0
- package/esm/hooks/use-tambo-threads.test.d.ts.map +1 -0
- package/esm/hooks/{__tests__/use-tambo-threads.test.js → use-tambo-threads.test.js} +3 -3
- package/esm/hooks/use-tambo-threads.test.js.map +1 -0
- package/esm/mcp/elicitation.d.ts +10 -2
- package/esm/mcp/elicitation.d.ts.map +1 -1
- package/esm/mcp/elicitation.js +19 -1
- package/esm/mcp/elicitation.js.map +1 -1
- package/esm/mcp/elicitation.test.d.ts.map +1 -0
- package/esm/mcp/{__tests__/elicitation.test.js → elicitation.test.js} +1 -1
- package/esm/mcp/elicitation.test.js.map +1 -0
- package/esm/mcp/index.d.ts +10 -1
- package/esm/mcp/index.d.ts.map +1 -1
- package/esm/mcp/index.js +9 -0
- package/esm/mcp/index.js.map +1 -1
- package/esm/mcp/mcp-client.d.ts +29 -10
- package/esm/mcp/mcp-client.d.ts.map +1 -1
- package/esm/mcp/mcp-client.test.d.ts.map +1 -0
- package/esm/mcp/{__tests__/mcp-client.test.js → mcp-client.test.js} +1 -1
- package/esm/mcp/mcp-client.test.js.map +1 -0
- package/esm/mcp/mcp-hooks.d.ts +52 -19
- package/esm/mcp/mcp-hooks.d.ts.map +1 -1
- package/esm/mcp/mcp-hooks.js.map +1 -1
- package/esm/mcp/mcp-hooks.test.d.ts.map +1 -0
- package/esm/mcp/{__tests__/mcp-hooks.test.js → mcp-hooks.test.js} +7 -33
- package/esm/mcp/mcp-hooks.test.js.map +1 -0
- package/esm/mcp/tambo-mcp-provider.d.ts +2 -0
- package/esm/mcp/tambo-mcp-provider.d.ts.map +1 -1
- package/esm/mcp/tambo-mcp-provider.js +58 -12
- package/esm/mcp/tambo-mcp-provider.js.map +1 -1
- package/esm/mcp/tambo-mcp-provider.test.d.ts.map +1 -0
- package/esm/mcp/{__tests__/tambo-mcp-provider.test.js → tambo-mcp-provider.test.js} +9 -25
- package/esm/mcp/tambo-mcp-provider.test.js.map +1 -0
- package/esm/mcp/use-mcp-servers.test.d.ts.map +1 -0
- package/esm/mcp/{__tests__/use-mcp-servers.test.js → use-mcp-servers.test.js} +5 -11
- package/esm/mcp/use-mcp-servers.test.js.map +1 -0
- package/esm/model/component-metadata.d.ts +1 -1
- package/esm/model/component-metadata.d.ts.map +1 -1
- package/esm/model/component-metadata.js.map +1 -1
- package/esm/model/mcp-server-info.d.ts +3 -1
- package/esm/model/mcp-server-info.d.ts.map +1 -1
- package/esm/model/mcp-server-info.js.map +1 -1
- package/esm/model/tambo-thread.d.ts +6 -1
- package/esm/model/tambo-thread.d.ts.map +1 -1
- package/esm/model/tambo-thread.js.map +1 -1
- package/esm/providers/hoc/with-tambo-interactable.d.ts +1 -1
- package/esm/providers/hoc/with-tambo-interactable.d.ts.map +1 -1
- package/esm/providers/hoc/with-tambo-interactable.js.map +1 -1
- package/esm/providers/hooks/use-tambo-session-token.test.d.ts.map +1 -0
- package/esm/providers/hooks/{__tests__/use-tambo-session-token.test.js → use-tambo-session-token.test.js} +1 -1
- package/esm/providers/hooks/use-tambo-session-token.test.js.map +1 -0
- package/esm/providers/tambo-client-provider.d.ts +0 -4
- package/esm/providers/tambo-client-provider.d.ts.map +1 -1
- package/esm/providers/tambo-client-provider.js +0 -3
- package/esm/providers/tambo-client-provider.js.map +1 -1
- package/esm/providers/tambo-context-attachment-provider.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-context-attachment-provider.test.js → tambo-context-attachment-provider.test.js} +2 -2
- package/esm/providers/tambo-context-attachment-provider.test.js.map +1 -0
- package/esm/providers/tambo-context-helpers-provider.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-context-helpers-provider.test.js → tambo-context-helpers-provider.test.js} +2 -2
- package/esm/providers/tambo-context-helpers-provider.test.js.map +1 -0
- package/esm/providers/tambo-interactable-provider-partial-updates.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-interactable-provider-partial-updates.test.js → tambo-interactable-provider-partial-updates.test.js} +5 -5
- package/esm/providers/tambo-interactable-provider-partial-updates.test.js.map +1 -0
- package/esm/providers/tambo-interactable-provider.d.ts +1 -1
- package/esm/providers/tambo-interactable-provider.d.ts.map +1 -1
- package/esm/providers/tambo-interactable-provider.js +1 -1
- package/esm/providers/tambo-interactable-provider.js.map +1 -1
- package/esm/providers/tambo-interactables-additional-context-edge-cases.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.js → tambo-interactables-additional-context-edge-cases.test.js} +11 -11
- package/esm/providers/tambo-interactables-additional-context-edge-cases.test.js.map +1 -0
- package/esm/providers/tambo-interactables-additional-context.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-interactables-additional-context.test.js → tambo-interactables-additional-context.test.js} +11 -11
- package/esm/providers/tambo-interactables-additional-context.test.js.map +1 -0
- package/esm/providers/tambo-mcp-token-provider.d.ts +20 -13
- package/esm/providers/tambo-mcp-token-provider.d.ts.map +1 -1
- package/esm/providers/tambo-mcp-token-provider.js +123 -11
- package/esm/providers/tambo-mcp-token-provider.js.map +1 -1
- package/esm/providers/tambo-prop-stream-provider.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-prop-stream-provider.test.js → tambo-prop-stream-provider.test.js} +32 -25
- package/esm/providers/tambo-prop-stream-provider.test.js.map +1 -0
- package/esm/providers/tambo-provider.d.ts +2 -2
- package/esm/providers/tambo-provider.d.ts.map +1 -1
- package/esm/providers/tambo-provider.js +5 -7
- package/esm/providers/tambo-provider.js.map +1 -1
- package/esm/providers/tambo-registry-provider.js +1 -1
- package/esm/providers/tambo-registry-provider.js.map +1 -1
- package/esm/providers/tambo-registry-provider.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-registry-provider.test.js → tambo-registry-provider.test.js} +2 -2
- package/esm/providers/tambo-registry-provider.test.js.map +1 -0
- package/esm/providers/tambo-stubs.d.ts.map +1 -1
- package/esm/providers/tambo-stubs.js +4 -2
- package/esm/providers/tambo-stubs.js.map +1 -1
- package/esm/providers/tambo-stubs.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-stubs.test.js → tambo-stubs.test.js} +2 -2
- package/esm/providers/tambo-stubs.test.js.map +1 -0
- package/esm/providers/tambo-thread-input-provider.d.ts +1 -1
- package/esm/providers/tambo-thread-input-provider.d.ts.map +1 -1
- package/esm/providers/tambo-thread-input-provider.js.map +1 -1
- package/esm/providers/tambo-thread-provider-initial-messages.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-thread-provider-initial-messages.test.js → tambo-thread-provider-initial-messages.test.js} +7 -9
- package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +1 -0
- package/esm/providers/tambo-thread-provider.d.ts +8 -0
- package/esm/providers/tambo-thread-provider.d.ts.map +1 -1
- package/esm/providers/tambo-thread-provider.js +82 -19
- package/esm/providers/tambo-thread-provider.js.map +1 -1
- package/esm/providers/tambo-thread-provider.test.d.ts.map +1 -0
- package/esm/providers/{__tests__/tambo-thread-provider.test.js → tambo-thread-provider.test.js} +11 -43
- package/esm/providers/tambo-thread-provider.test.js.map +1 -0
- package/esm/testing/tools.js.map +1 -1
- package/esm/util/content-parts.test.d.ts.map +1 -0
- package/esm/util/{__tests__/content-parts.test.js → content-parts.test.js} +1 -1
- package/esm/util/content-parts.test.js.map +1 -0
- package/esm/util/generate-component.js +1 -1
- package/esm/util/generate-component.js.map +1 -1
- package/esm/util/message-builder.d.ts +2 -2
- package/esm/util/message-builder.d.ts.map +1 -1
- package/esm/util/message-builder.js +63 -6
- package/esm/util/message-builder.js.map +1 -1
- package/esm/util/message-builder.test.d.ts.map +1 -0
- package/esm/util/{__tests__/message-builder.test.js → message-builder.test.js} +1 -1
- package/esm/util/message-builder.test.js.map +1 -0
- package/esm/util/query-utils.d.ts.map +1 -1
- package/esm/util/query-utils.js +49 -31
- package/esm/util/query-utils.js.map +1 -1
- package/esm/util/registry.js.map +1 -1
- package/esm/util/validate-zod-schema.d.ts +1 -1
- package/esm/util/validate-zod-schema.d.ts.map +1 -1
- package/esm/util/validate-zod-schema.js +1 -1
- package/esm/util/validate-zod-schema.js.map +1 -1
- package/esm/util/validate-zod-schema.test.d.ts.map +1 -0
- package/esm/{__tests__/util → util}/validate-zod-schema.test.js +2 -2
- package/esm/util/validate-zod-schema.test.js.map +1 -0
- package/package.json +25 -11
- package/dist/__tests__/util/validate-zod-schema.test.d.ts.map +0 -1
- package/dist/__tests__/util/validate-zod-schema.test.js.map +0 -1
- package/dist/context-helpers/__tests__/context-helpers-provider.test.d.ts.map +0 -1
- package/dist/context-helpers/__tests__/context-helpers-provider.test.js.map +0 -1
- package/dist/context-helpers/__tests__/context-helpers.test.d.ts.map +0 -1
- package/dist/context-helpers/__tests__/context-helpers.test.js.map +0 -1
- package/dist/hooks/__tests__/use-component-state.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/use-component-state.test.js.map +0 -1
- package/dist/hooks/__tests__/use-message-images.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/use-message-images.test.js.map +0 -1
- package/dist/hooks/__tests__/use-suggestions.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/use-suggestions.test.js.map +0 -1
- package/dist/hooks/__tests__/use-tambo-stream-status.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/use-tambo-stream-status.test.js.map +0 -1
- package/dist/hooks/__tests__/use-tambo-threads.test.d.ts.map +0 -1
- package/dist/hooks/__tests__/use-tambo-threads.test.js.map +0 -1
- package/dist/mcp/__tests__/elicitation.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/elicitation.test.js.map +0 -1
- package/dist/mcp/__tests__/mcp-client.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/mcp-client.test.js.map +0 -1
- package/dist/mcp/__tests__/mcp-hooks.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/mcp-hooks.test.js.map +0 -1
- package/dist/mcp/__tests__/tambo-mcp-provider.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/tambo-mcp-provider.test.js.map +0 -1
- package/dist/mcp/__tests__/use-mcp-servers.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/use-mcp-servers.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-context-attachment-provider.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-context-attachment-provider.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-context-helpers-provider.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-context-helpers-provider.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-interactable-provider-partial-updates.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-interactable-provider-partial-updates.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-interactables-additional-context.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-interactables-additional-context.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-prop-stream-provider.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-prop-stream-provider.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-registry-provider.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-registry-provider.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-stubs.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-stubs.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-thread-provider-initial-messages.test.js.map +0 -1
- package/dist/providers/__tests__/tambo-thread-provider.test.d.ts.map +0 -1
- package/dist/providers/__tests__/tambo-thread-provider.test.js.map +0 -1
- package/dist/providers/hooks/__tests__/use-tambo-session-token.test.d.ts.map +0 -1
- package/dist/providers/hooks/__tests__/use-tambo-session-token.test.js.map +0 -1
- package/dist/util/__tests__/content-parts.test.d.ts.map +0 -1
- package/dist/util/__tests__/content-parts.test.js.map +0 -1
- package/dist/util/__tests__/message-builder.test.d.ts.map +0 -1
- package/dist/util/__tests__/message-builder.test.js.map +0 -1
- package/esm/__tests__/util/validate-zod-schema.test.d.ts.map +0 -1
- package/esm/__tests__/util/validate-zod-schema.test.js.map +0 -1
- package/esm/context-helpers/__tests__/context-helpers-provider.test.d.ts.map +0 -1
- package/esm/context-helpers/__tests__/context-helpers-provider.test.js.map +0 -1
- package/esm/context-helpers/__tests__/context-helpers.test.d.ts.map +0 -1
- package/esm/context-helpers/__tests__/context-helpers.test.js.map +0 -1
- package/esm/hooks/__tests__/use-component-state.test.d.ts.map +0 -1
- package/esm/hooks/__tests__/use-component-state.test.js.map +0 -1
- package/esm/hooks/__tests__/use-message-images.test.d.ts.map +0 -1
- package/esm/hooks/__tests__/use-message-images.test.js.map +0 -1
- package/esm/hooks/__tests__/use-suggestions.test.d.ts.map +0 -1
- package/esm/hooks/__tests__/use-suggestions.test.js.map +0 -1
- package/esm/hooks/__tests__/use-tambo-stream-status.test.d.ts.map +0 -1
- package/esm/hooks/__tests__/use-tambo-stream-status.test.js.map +0 -1
- package/esm/hooks/__tests__/use-tambo-threads.test.d.ts.map +0 -1
- package/esm/hooks/__tests__/use-tambo-threads.test.js.map +0 -1
- package/esm/mcp/__tests__/elicitation.test.d.ts.map +0 -1
- package/esm/mcp/__tests__/elicitation.test.js.map +0 -1
- package/esm/mcp/__tests__/mcp-client.test.d.ts.map +0 -1
- package/esm/mcp/__tests__/mcp-client.test.js.map +0 -1
- package/esm/mcp/__tests__/mcp-hooks.test.d.ts.map +0 -1
- package/esm/mcp/__tests__/mcp-hooks.test.js.map +0 -1
- package/esm/mcp/__tests__/tambo-mcp-provider.test.d.ts.map +0 -1
- package/esm/mcp/__tests__/tambo-mcp-provider.test.js.map +0 -1
- package/esm/mcp/__tests__/use-mcp-servers.test.d.ts.map +0 -1
- package/esm/mcp/__tests__/use-mcp-servers.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-context-attachment-provider.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-context-attachment-provider.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-context-helpers-provider.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-context-helpers-provider.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-interactable-provider-partial-updates.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-interactable-provider-partial-updates.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-interactables-additional-context-edge-cases.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-interactables-additional-context.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-interactables-additional-context.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-prop-stream-provider.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-prop-stream-provider.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-registry-provider.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-registry-provider.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-stubs.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-stubs.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-thread-provider-initial-messages.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-thread-provider-initial-messages.test.js.map +0 -1
- package/esm/providers/__tests__/tambo-thread-provider.test.d.ts.map +0 -1
- package/esm/providers/__tests__/tambo-thread-provider.test.js.map +0 -1
- package/esm/providers/hooks/__tests__/use-tambo-session-token.test.d.ts.map +0 -1
- package/esm/providers/hooks/__tests__/use-tambo-session-token.test.js.map +0 -1
- package/esm/util/__tests__/content-parts.test.d.ts.map +0 -1
- package/esm/util/__tests__/content-parts.test.js.map +0 -1
- package/esm/util/__tests__/message-builder.test.d.ts.map +0 -1
- package/esm/util/__tests__/message-builder.test.js.map +0 -1
- /package/dist/context-helpers/{__tests__/context-helpers-provider.test.d.ts → context-helpers-provider.test.d.ts} +0 -0
- /package/dist/context-helpers/{__tests__/context-helpers.test.d.ts → context-helpers.test.d.ts} +0 -0
- /package/dist/hooks/{__tests__/use-component-state.test.d.ts → use-component-state.test.d.ts} +0 -0
- /package/dist/hooks/{__tests__/use-message-images.test.d.ts → use-message-images.test.d.ts} +0 -0
- /package/dist/hooks/{__tests__/use-suggestions.test.d.ts → use-suggestions.test.d.ts} +0 -0
- /package/dist/hooks/{__tests__/use-tambo-stream-status.test.d.ts → use-tambo-stream-status.test.d.ts} +0 -0
- /package/dist/hooks/{__tests__/use-tambo-threads.test.d.ts → use-tambo-threads.test.d.ts} +0 -0
- /package/dist/mcp/{__tests__/elicitation.test.d.ts → elicitation.test.d.ts} +0 -0
- /package/dist/mcp/{__tests__/mcp-client.test.d.ts → mcp-client.test.d.ts} +0 -0
- /package/dist/mcp/{__tests__/mcp-hooks.test.d.ts → mcp-hooks.test.d.ts} +0 -0
- /package/dist/mcp/{__tests__/tambo-mcp-provider.test.d.ts → tambo-mcp-provider.test.d.ts} +0 -0
- /package/dist/mcp/{__tests__/use-mcp-servers.test.d.ts → use-mcp-servers.test.d.ts} +0 -0
- /package/dist/providers/hooks/{__tests__/use-tambo-session-token.test.d.ts → use-tambo-session-token.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-context-attachment-provider.test.d.ts → tambo-context-attachment-provider.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-context-helpers-provider.test.d.ts → tambo-context-helpers-provider.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-interactable-provider-partial-updates.test.d.ts → tambo-interactable-provider-partial-updates.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts → tambo-interactables-additional-context-edge-cases.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-interactables-additional-context.test.d.ts → tambo-interactables-additional-context.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-prop-stream-provider.test.d.ts → tambo-prop-stream-provider.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-registry-provider.test.d.ts → tambo-registry-provider.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-stubs.test.d.ts → tambo-stubs.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-thread-provider-initial-messages.test.d.ts → tambo-thread-provider-initial-messages.test.d.ts} +0 -0
- /package/dist/providers/{__tests__/tambo-thread-provider.test.d.ts → tambo-thread-provider.test.d.ts} +0 -0
- /package/dist/util/{__tests__/content-parts.test.d.ts → content-parts.test.d.ts} +0 -0
- /package/dist/util/{__tests__/message-builder.test.d.ts → message-builder.test.d.ts} +0 -0
- /package/dist/{__tests__/util → util}/validate-zod-schema.test.d.ts +0 -0
- /package/esm/context-helpers/{__tests__/context-helpers-provider.test.d.ts → context-helpers-provider.test.d.ts} +0 -0
- /package/esm/context-helpers/{__tests__/context-helpers.test.d.ts → context-helpers.test.d.ts} +0 -0
- /package/esm/hooks/{__tests__/use-component-state.test.d.ts → use-component-state.test.d.ts} +0 -0
- /package/esm/hooks/{__tests__/use-message-images.test.d.ts → use-message-images.test.d.ts} +0 -0
- /package/esm/hooks/{__tests__/use-suggestions.test.d.ts → use-suggestions.test.d.ts} +0 -0
- /package/esm/hooks/{__tests__/use-tambo-stream-status.test.d.ts → use-tambo-stream-status.test.d.ts} +0 -0
- /package/esm/hooks/{__tests__/use-tambo-threads.test.d.ts → use-tambo-threads.test.d.ts} +0 -0
- /package/esm/mcp/{__tests__/elicitation.test.d.ts → elicitation.test.d.ts} +0 -0
- /package/esm/mcp/{__tests__/mcp-client.test.d.ts → mcp-client.test.d.ts} +0 -0
- /package/esm/mcp/{__tests__/mcp-hooks.test.d.ts → mcp-hooks.test.d.ts} +0 -0
- /package/esm/mcp/{__tests__/tambo-mcp-provider.test.d.ts → tambo-mcp-provider.test.d.ts} +0 -0
- /package/esm/mcp/{__tests__/use-mcp-servers.test.d.ts → use-mcp-servers.test.d.ts} +0 -0
- /package/esm/providers/hooks/{__tests__/use-tambo-session-token.test.d.ts → use-tambo-session-token.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-context-attachment-provider.test.d.ts → tambo-context-attachment-provider.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-context-helpers-provider.test.d.ts → tambo-context-helpers-provider.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-interactable-provider-partial-updates.test.d.ts → tambo-interactable-provider-partial-updates.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-interactables-additional-context-edge-cases.test.d.ts → tambo-interactables-additional-context-edge-cases.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-interactables-additional-context.test.d.ts → tambo-interactables-additional-context.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-prop-stream-provider.test.d.ts → tambo-prop-stream-provider.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-registry-provider.test.d.ts → tambo-registry-provider.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-stubs.test.d.ts → tambo-stubs.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-thread-provider-initial-messages.test.d.ts → tambo-thread-provider-initial-messages.test.d.ts} +0 -0
- /package/esm/providers/{__tests__/tambo-thread-provider.test.d.ts → tambo-thread-provider.test.d.ts} +0 -0
- /package/esm/util/{__tests__/content-parts.test.d.ts → content-parts.test.d.ts} +0 -0
- /package/esm/util/{__tests__/message-builder.test.d.ts → message-builder.test.d.ts} +0 -0
- /package/esm/{__tests__/util → util}/validate-zod-schema.test.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-client-provider.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-client-provider.tsx"],"names":[],"mappings":"AACA,OAAO,OAA0B,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAiB,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAI1E,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAEvC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,2DAA2D;IAC3D,eAAe,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tambo-client-provider.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-client-provider.tsx"],"names":[],"mappings":"AACA,OAAO,OAA0B,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,EAAiB,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAI1E,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAEvC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,2DAA2D;IAC3D,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,kBAAkB,oDAEnB,CAAC;AAEb;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CACxC,iBAAiB,CAAC,wBAAwB,CAAC,CAmC5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,eAM1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,mBAQ/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,eAQnC,CAAC"}
|
|
@@ -70,15 +70,12 @@ const TamboClientProvider = ({ children, tamboUrl, apiKey, environment, userToke
|
|
|
70
70
|
}
|
|
71
71
|
const [client] = (0, react_1.useState)(() => new typescript_sdk_1.default(tamboConfig));
|
|
72
72
|
const [queryClient] = (0, react_1.useState)(() => new react_query_1.QueryClient());
|
|
73
|
-
const [mcpAccessToken, setMcpAccessToken] = (0, react_1.useState)(null);
|
|
74
73
|
// Keep the session token updated and get the updating state
|
|
75
74
|
const { isFetching: isUpdatingToken } = (0, use_tambo_session_token_1.useTamboSessionToken)(client, queryClient, userToken);
|
|
76
75
|
return (react_1.default.createElement(exports.TamboClientContext.Provider, { value: {
|
|
77
76
|
client,
|
|
78
77
|
queryClient,
|
|
79
78
|
isUpdatingToken,
|
|
80
|
-
mcpAccessToken,
|
|
81
|
-
setMcpAccessToken,
|
|
82
79
|
} }, children));
|
|
83
80
|
};
|
|
84
81
|
exports.TamboClientProvider = TamboClientProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-client-provider.js","sourceRoot":"","sources":["../../src/providers/tambo-client-provider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACb,8EAAkE;AAClE,uDAAoD;AACpD,+CAA0E;AAC1E,sEAA6C;AAC7C,6EAAuE;
|
|
1
|
+
{"version":3,"file":"tambo-client-provider.js","sourceRoot":"","sources":["../../src/providers/tambo-client-provider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACb,8EAAkE;AAClE,uDAAoD;AACpD,+CAA0E;AAC1E,sEAA6C;AAC7C,6EAAuE;AAmC1D,QAAA,kBAAkB,GAAG,IAAA,qBAAa,EAE7C,SAAS,CAAC,CAAC;AAEb;;;;;;;;;;GAUG;AACI,MAAM,mBAAmB,GAE5B,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;IAC7D,MAAM,WAAW,GAAkB;QACjC,MAAM;QACN,cAAc,EAAE;YACd,uBAAuB,EAAE,sBAAW,CAAC,OAAO;SAC7C;KACF,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,wBAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC;IAExD,4DAA4D;IAC5D,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,IAAA,8CAAoB,EAC1D,MAAM,EACN,WAAW,EACX,SAAS,CACV,CAAC;IAEF,OAAO,CACL,8BAAC,0BAAkB,CAAC,QAAQ,IAC1B,KAAK,EAAE;YACL,MAAM;YACN,WAAW;YACX,eAAe;SAChB,IAEA,QAAQ,CACmB,CAC/B,CAAC;AACJ,CAAC,CAAC;AApCW,QAAA,mBAAmB,uBAoC9B;AAEF;;;;GAIG;AACI,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,0BAAkB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEF;;;;;GAKG;AACI,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,0BAAkB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,WAAW,CAAC;AAC7B,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B;AAEF;;;GAGG;AACI,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,MAAM,OAAO,GAAG,eAAK,CAAC,UAAU,CAAC,0BAAkB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,eAAe,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC","sourcesContent":["\"use client\";\nimport TamboAI, { ClientOptions } from \"@tambo-ai/typescript-sdk\";\nimport { QueryClient } from \"@tanstack/react-query\";\nimport React, { createContext, PropsWithChildren, useState } from \"react\";\nimport packageJson from \"../../package.json\";\nimport { useTamboSessionToken } from \"./hooks/use-tambo-session-token\";\n\nexport interface TamboClientProviderProps {\n /**\n * The URL of the Tambo API (only used for local development and debugging)\n */\n tamboUrl?: string;\n /**\n * The API key for the Tambo API. This typically comes from a variable like\n * `process.env.NEXT_PUBLIC_TAMBO_API_KEY`\n */\n apiKey: string;\n /**\n * The environment to use for the Tambo API\n */\n environment?: \"production\" | \"staging\";\n\n /**\n * The user token to use to identify the user in the Tambo API. This token is\n * a 3rd party token like a Google or GitHub access token, exchanged with the\n * Tambo API to get a session token. This is used to securely identify the\n * user when calling the Tambo API.\n */\n userToken?: string;\n}\n\nexport interface TamboClientContextProps {\n /** The TamboAI client */\n client: TamboAI;\n /** The tambo-specific query client */\n queryClient: QueryClient;\n /** Whether the session token is currently being updated */\n isUpdatingToken: boolean;\n}\n\nexport const TamboClientContext = createContext<\n TamboClientContextProps | undefined\n>(undefined);\n\n/**\n * The TamboClientProvider is a React provider that provides a TamboAI client\n * and a query client to the descendants of the provider.\n * @param props - The props for the TamboClientProvider\n * @param props.children - The children to wrap\n * @param props.tamboUrl - The URL of the Tambo API\n * @param props.apiKey - The API key for the Tambo API\n * @param props.environment - The environment to use for the Tambo API\n * @param props.userToken - The oauth access token to use to identify the user in the Tambo API\n * @returns The TamboClientProvider component\n */\nexport const TamboClientProvider: React.FC<\n PropsWithChildren<TamboClientProviderProps>\n> = ({ children, tamboUrl, apiKey, environment, userToken }) => {\n const tamboConfig: ClientOptions = {\n apiKey,\n defaultHeaders: {\n \"X-Tambo-React-Version\": packageJson.version,\n },\n };\n if (tamboUrl) {\n tamboConfig.baseURL = tamboUrl;\n }\n if (environment) {\n tamboConfig.environment = environment;\n }\n const [client] = useState(() => new TamboAI(tamboConfig));\n const [queryClient] = useState(() => new QueryClient());\n\n // Keep the session token updated and get the updating state\n const { isFetching: isUpdatingToken } = useTamboSessionToken(\n client,\n queryClient,\n userToken,\n );\n\n return (\n <TamboClientContext.Provider\n value={{\n client,\n queryClient,\n isUpdatingToken,\n }}\n >\n {children}\n </TamboClientContext.Provider>\n );\n};\n\n/**\n * The useTamboClient hook provides access to the TamboAI client\n * to the descendants of the TamboClientProvider.\n * @returns The TamboAI client\n */\nexport const useTamboClient = () => {\n const context = React.useContext(TamboClientContext);\n if (context === undefined) {\n throw new Error(\"useTamboClient must be used within a TamboClientProvider\");\n }\n return context.client;\n};\n\n/**\n * The useTamboQueryClient hook provides access to the tambo-specific query client\n * to the descendants of the TamboClientProvider.\n * @returns The tambo-specific query client\n * @private\n */\nexport const useTamboQueryClient = () => {\n const context = React.useContext(TamboClientContext);\n if (context === undefined) {\n throw new Error(\n \"useTamboQueryClient must be used within a TamboClientProvider\",\n );\n }\n return context.queryClient;\n};\n\n/**\n * Hook to check if the session token is currently being updated\n * @returns true if the token is being refreshed, false otherwise\n */\nexport const useIsTamboTokenUpdating = () => {\n const context = React.useContext(TamboClientContext);\n if (context === undefined) {\n throw new Error(\n \"useIsTamboTokenUpdating must be used within a TamboClientProvider\",\n );\n }\n return context.isUpdatingToken;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tambo-context-attachment-provider.test.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-context-attachment-provider.test.tsx"],"names":[],"mappings":""}
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = require("@testing-library/react");
|
|
7
7
|
const react_2 = __importDefault(require("react"));
|
|
8
|
-
const tambo_context_attachment_provider_1 = require("
|
|
9
|
-
const tambo_context_helpers_provider_1 = require("
|
|
8
|
+
const tambo_context_attachment_provider_1 = require("./tambo-context-attachment-provider");
|
|
9
|
+
const tambo_context_helpers_provider_1 = require("./tambo-context-helpers-provider");
|
|
10
10
|
/**
|
|
11
11
|
* Test suite for TamboContextAttachmentProvider
|
|
12
12
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tambo-context-attachment-provider.test.js","sourceRoot":"","sources":["../../src/providers/tambo-context-attachment-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Suggestion } from \"@tambo-ai/typescript-sdk/resources/beta/threads/suggestions\";\nimport { act, renderHook, waitFor } from \"@testing-library/react\";\nimport React from \"react\";\nimport {\n TamboContextAttachmentProvider,\n useTamboContextAttachment,\n type ContextAttachment,\n type ContextHelperData,\n} from \"./tambo-context-attachment-provider\";\nimport {\n TamboContextHelpersProvider,\n useTamboContextHelpers,\n} from \"./tambo-context-helpers-provider\";\n\n/**\n * Test suite for TamboContextAttachmentProvider\n *\n * Tests the context attachment feature which allows:\n * - Visual context badges above message input\n * - Automatic context helper registration/unregistration\n * - Custom suggestions that override auto-generated ones\n * - Dynamic context data customization via getContextHelperData\n */\ndescribe(\"TamboContextAttachmentProvider\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n /**\n * Base wrapper with both TamboContextAttachmentProvider and TamboContextHelpersProvider\n * since context attachments need access to context helpers API\n * @param getContextHelperData - Optional custom function to get context helper data\n * @returns A React component that wraps children with the necessary providers\n */\n const createWrapper = (\n getContextHelperData?: (\n context: ContextAttachment,\n ) => Promise<ContextHelperData> | ContextHelperData,\n ) => {\n const Wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider\n getContextHelperData={getContextHelperData}\n >\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n Wrapper.displayName = \"TestWrapper\";\n return Wrapper;\n };\n\n describe(\"Hook Access\", () => {\n /**\n * Hook should provide all expected API functions when used within provider\n */\n it(\"should provide context attachment API functions\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current).toHaveProperty(\"attachments\");\n expect(result.current).toHaveProperty(\"addContextAttachment\");\n expect(result.current).toHaveProperty(\"removeContextAttachment\");\n expect(result.current).toHaveProperty(\"clearContextAttachments\");\n expect(result.current).toHaveProperty(\"customSuggestions\");\n expect(result.current).toHaveProperty(\"setCustomSuggestions\");\n });\n\n /**\n * Hook should throw error when used outside of provider\n */\n it(\"should throw error when used outside provider\", () => {\n // Suppress console.error for this test\n const consoleErrorSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n expect(() => {\n renderHook(() => useTamboContextAttachment());\n }).toThrow(\n \"useTamboContextAttachment must be used within a TamboContextAttachmentProvider\",\n );\n\n consoleErrorSpy.mockRestore();\n });\n });\n\n describe(\"Adding Context Attachments\", () => {\n /**\n * Should add a context attachment with auto-generated ID\n */\n it(\"should add a context attachment\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n act(() => {\n result.current.addContextAttachment({\n name: \"Button.tsx\",\n metadata: { filePath: \"/src/Button.tsx\" },\n });\n });\n\n expect(result.current.attachments).toHaveLength(1);\n expect(result.current.attachments[0]).toMatchObject({\n name: \"Button.tsx\",\n metadata: { filePath: \"/src/Button.tsx\" },\n });\n expect(result.current.attachments[0].id).toBeDefined();\n });\n\n /**\n * Should add multiple different attachments\n */\n it(\"should add multiple context attachments\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n act(() => {\n result.current.addContextAttachment({\n name: \"Button.tsx\",\n });\n result.current.addContextAttachment({\n name: \"Card.tsx\",\n });\n });\n\n expect(result.current.attachments).toHaveLength(2);\n expect(result.current.attachments[0].name).toBe(\"Button.tsx\");\n expect(result.current.attachments[1].name).toBe(\"Card.tsx\");\n });\n\n /**\n * Should prevent duplicates with the same name\n */\n it(\"should prevent duplicate attachments with same name\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n act(() => {\n result.current.addContextAttachment({\n name: \"Button.tsx\",\n });\n result.current.addContextAttachment({\n name: \"Button.tsx\",\n });\n });\n\n expect(result.current.attachments).toHaveLength(1);\n });\n\n /**\n * Should support optional icon property\n */\n it(\"should support icon property\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n const icon = <span>📄</span>;\n\n act(() => {\n result.current.addContextAttachment({\n name: \"File.txt\",\n icon,\n });\n });\n\n expect(result.current.attachments[0].icon).toBe(icon);\n });\n });\n\n describe(\"Removing Context Attachments\", () => {\n /**\n * Should remove a specific attachment by ID\n */\n it(\"should remove context attachment by ID\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n act(() => {\n result.current.addContextAttachment({\n name: \"Button.tsx\",\n });\n });\n\n expect(result.current.attachments).toHaveLength(1);\n const attachmentId = result.current.attachments[0].id;\n\n act(() => {\n result.current.removeContextAttachment(attachmentId);\n });\n\n expect(result.current.attachments).toHaveLength(0);\n });\n\n /**\n * Should only remove the specified attachment when multiple exist\n */\n it(\"should only remove specified attachment\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n act(() => {\n result.current.addContextAttachment({ name: \"First.tsx\" });\n result.current.addContextAttachment({ name: \"Second.tsx\" });\n });\n\n expect(result.current.attachments).toHaveLength(2);\n const firstId = result.current.attachments[0].id;\n\n act(() => {\n result.current.removeContextAttachment(firstId);\n });\n\n expect(result.current.attachments).toHaveLength(1);\n expect(result.current.attachments[0].name).toBe(\"Second.tsx\");\n });\n\n /**\n * Should handle removing non-existent attachment gracefully\n */\n it(\"should handle removing non-existent attachment gracefully\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n expect(() => {\n act(() => {\n result.current.removeContextAttachment(\"non-existent-id\");\n });\n }).not.toThrow();\n });\n });\n\n describe(\"Clearing All Attachments\", () => {\n /**\n * Should clear all attachments at once\n */\n it(\"should clear all context attachments\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n act(() => {\n result.current.addContextAttachment({ name: \"First.tsx\" });\n result.current.addContextAttachment({ name: \"Second.tsx\" });\n result.current.addContextAttachment({ name: \"Third.tsx\" });\n });\n\n expect(result.current.attachments).toHaveLength(3);\n\n act(() => {\n result.current.clearContextAttachments();\n });\n\n expect(result.current.attachments).toHaveLength(0);\n });\n\n /**\n * Should handle clearing when no attachments exist\n */\n it(\"should handle clearing when no attachments exist\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n expect(() => {\n act(() => {\n result.current.clearContextAttachments();\n });\n }).not.toThrow();\n\n expect(result.current.attachments).toHaveLength(0);\n });\n });\n\n describe(\"Context Helpers Integration\", () => {\n /**\n * Should automatically register context helpers when attachments are added\n */\n it(\"should register context helpers for attachments\", async () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider>\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n { wrapper },\n );\n\n // Add attachment\n act(() => {\n result.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n metadata: { filePath: \"/src/Button.tsx\" },\n });\n });\n\n // Wait for effect to run\n await waitFor(async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n expect(contexts.length).toBeGreaterThan(0);\n });\n\n const contexts = await result.current.helpers.getAdditionalContext();\n const attachmentContext = contexts.find((c) =>\n c.name.includes(result.current.attachment.attachments[0].id),\n );\n\n expect(attachmentContext).toBeDefined();\n expect(attachmentContext?.context).toHaveProperty(\"selectedComponent\");\n });\n\n /**\n * Should unregister context helpers when attachments are removed\n */\n it(\"should unregister context helpers when attachments are removed\", async () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider>\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n { wrapper },\n );\n\n // Add attachment\n act(() => {\n result.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n });\n });\n\n // Wait for context helper to be registered\n await waitFor(async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n expect(contexts.length).toBeGreaterThan(0);\n });\n\n const initialContexts =\n await result.current.helpers.getAdditionalContext();\n const initialCount = initialContexts.length;\n const attachmentId = result.current.attachment.attachments[0].id;\n\n // Remove attachment\n act(() => {\n result.current.attachment.removeContextAttachment(attachmentId);\n });\n\n // Wait for context helper to be unregistered\n await waitFor(async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n expect(contexts.length).toBeLessThan(initialCount);\n });\n });\n\n /**\n * Should use default context data structure when no custom function provided\n */\n it(\"should use default context data structure\", async () => {\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider>\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n { wrapper },\n );\n\n act(() => {\n result.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n metadata: { filePath: \"/src/Button.tsx\", type: \"component\" },\n });\n });\n\n await waitFor(async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n expect(contexts.length).toBeGreaterThan(0);\n });\n\n const contexts = await result.current.helpers.getAdditionalContext();\n const attachmentContext = contexts.find((c) =>\n c.name.includes(result.current.attachment.attachments[0].id),\n );\n\n expect(attachmentContext?.context).toMatchObject({\n selectedComponent: {\n name: \"Button.tsx\",\n instruction: expect.stringContaining(\"Tambo interactable component\"),\n filePath: \"/src/Button.tsx\",\n type: \"component\",\n },\n });\n });\n\n /**\n * Should use custom getContextHelperData function when provided\n */\n it(\"should use custom getContextHelperData function\", async () => {\n const customGetContextHelperData = jest.fn(\n async (context: ContextAttachment) => ({\n selectedFile: {\n name: context.name,\n path: context.metadata?.filePath,\n customField: \"custom value\",\n },\n }),\n );\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider\n getContextHelperData={customGetContextHelperData}\n >\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n { wrapper },\n );\n\n act(() => {\n result.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n metadata: { filePath: \"/src/Button.tsx\" },\n });\n });\n\n // Wait for context helper to be registered and called\n await waitFor(\n async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n expect(contexts.length).toBeGreaterThan(0);\n },\n { timeout: 2000 },\n );\n\n expect(customGetContextHelperData).toHaveBeenCalled();\n\n const contexts = await result.current.helpers.getAdditionalContext();\n const attachmentContext = contexts.find((c) =>\n c.name.includes(result.current.attachment.attachments[0].id),\n );\n\n expect(attachmentContext?.context).toEqual({\n selectedFile: {\n name: \"Button.tsx\",\n path: \"/src/Button.tsx\",\n customField: \"custom value\",\n },\n });\n });\n\n /**\n * Should update context helpers when getContextHelperData function changes\n * This tests the bug fix for stale closure issue\n */\n it(\"should update existing context helpers when getContextHelperData changes\", async () => {\n // Create a wrapper component with state to manage the function\n const TestWrapper = ({ children }: { children: React.ReactNode }) => {\n const [version, setVersion] = React.useState(\"v1\");\n\n const getContextHelperData = React.useCallback(\n async (context: ContextAttachment) => ({\n version,\n name: context.name,\n }),\n [version],\n );\n\n // Expose setVersion for the test\n (TestWrapper as any).setVersion = setVersion;\n\n return (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider\n getContextHelperData={getContextHelperData}\n >\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n };\n\n const { result } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n { wrapper: TestWrapper },\n );\n\n // Add attachment with first version\n act(() => {\n result.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n });\n });\n\n // Wait for context helper to be registered\n await waitFor(\n async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n expect(contexts.length).toBeGreaterThan(0);\n },\n { timeout: 2000 },\n );\n\n // Verify v1 context\n let contexts = await result.current.helpers.getAdditionalContext();\n let attachmentContext = contexts.find((c) =>\n c.name.includes(result.current.attachment.attachments[0].id),\n );\n expect(attachmentContext?.context).toMatchObject({ version: \"v1\" });\n\n // Change the version which will trigger a new getContextHelperData function\n act(() => {\n (TestWrapper as any).setVersion(\"v2\");\n });\n\n // Wait for context to update to v2\n await waitFor(\n async () => {\n const contexts = await result.current.helpers.getAdditionalContext();\n const context = contexts.find((c) =>\n c.name.includes(result.current.attachment.attachments[0].id),\n );\n return context?.context.version === \"v2\";\n },\n { timeout: 2000 },\n );\n\n // Verify v2 context - should be updated, not stale\n contexts = await result.current.helpers.getAdditionalContext();\n attachmentContext = contexts.find((c) =>\n c.name.includes(result.current.attachment.attachments[0].id),\n );\n expect(attachmentContext?.context).toMatchObject({ version: \"v2\" });\n });\n\n /**\n * Should handle errors in getContextHelperData gracefully\n */\n it(\"should handle errors in getContextHelperData gracefully\", async () => {\n const consoleErrorSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n const errorGetData = jest.fn(async () => {\n throw new Error(\"Custom data error\");\n });\n\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>\n <TamboContextAttachmentProvider getContextHelperData={errorGetData}>\n {children}\n </TamboContextAttachmentProvider>\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n { wrapper },\n );\n\n act(() => {\n result.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n });\n });\n\n // Wait for effect to run and try to call the function\n await waitFor(\n () => {\n expect(result.current.attachment.attachments.length).toBeGreaterThan(\n 0,\n );\n },\n { timeout: 2000 },\n );\n\n // Try to get contexts, which will trigger the error\n await result.current.helpers.getAdditionalContext();\n\n expect(errorGetData).toHaveBeenCalled();\n expect(consoleErrorSpy).toHaveBeenCalled();\n\n consoleErrorSpy.mockRestore();\n });\n });\n\n describe(\"Custom Suggestions\", () => {\n /**\n * Should start with null custom suggestions\n */\n it(\"should initialize with null custom suggestions\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n expect(result.current.customSuggestions).toBeNull();\n });\n\n /**\n * Should set custom suggestions\n */\n it(\"should set custom suggestions\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n const suggestions: Suggestion[] = [\n {\n id: \"1\",\n title: \"Edit component\",\n detailedSuggestion: \"Modify the Button component\",\n messageId: \"\",\n },\n {\n id: \"2\",\n title: \"Add feature\",\n detailedSuggestion: \"Add a new feature\",\n messageId: \"\",\n },\n ];\n\n act(() => {\n result.current.setCustomSuggestions(suggestions);\n });\n\n expect(result.current.customSuggestions).toEqual(suggestions);\n });\n\n /**\n * Should clear custom suggestions by setting to null\n */\n it(\"should clear custom suggestions\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n const suggestions: Suggestion[] = [\n {\n id: \"1\",\n title: \"Test\",\n detailedSuggestion: \"Test suggestion\",\n messageId: \"\",\n },\n ];\n\n act(() => {\n result.current.setCustomSuggestions(suggestions);\n });\n\n expect(result.current.customSuggestions).toEqual(suggestions);\n\n act(() => {\n result.current.setCustomSuggestions(null);\n });\n\n expect(result.current.customSuggestions).toBeNull();\n });\n\n /**\n * Should update custom suggestions when changed\n */\n it(\"should update custom suggestions\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n const firstSuggestions: Suggestion[] = [\n {\n id: \"1\",\n title: \"First\",\n detailedSuggestion: \"First suggestion\",\n messageId: \"\",\n },\n ];\n\n const secondSuggestions: Suggestion[] = [\n {\n id: \"2\",\n title: \"Second\",\n detailedSuggestion: \"Second suggestion\",\n messageId: \"\",\n },\n ];\n\n act(() => {\n result.current.setCustomSuggestions(firstSuggestions);\n });\n\n expect(result.current.customSuggestions).toEqual(firstSuggestions);\n\n act(() => {\n result.current.setCustomSuggestions(secondSuggestions);\n });\n\n expect(result.current.customSuggestions).toEqual(secondSuggestions);\n });\n });\n\n describe(\"Combined Workflows\", () => {\n /**\n * Should handle adding attachment and setting custom suggestions together\n */\n it(\"should handle attachment and custom suggestions together\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n const suggestions: Suggestion[] = [\n {\n id: \"1\",\n title: \"Edit file\",\n detailedSuggestion: \"Edit this file\",\n messageId: \"\",\n },\n ];\n\n act(() => {\n result.current.addContextAttachment({\n name: \"Button.tsx\",\n metadata: { filePath: \"/src/Button.tsx\" },\n });\n result.current.setCustomSuggestions(suggestions);\n });\n\n expect(result.current.attachments).toHaveLength(1);\n expect(result.current.customSuggestions).toEqual(suggestions);\n });\n\n /**\n * Should clear suggestions when clearing attachments\n */\n it(\"should independently manage attachments and suggestions\", () => {\n const { result } = renderHook(() => useTamboContextAttachment(), {\n wrapper: createWrapper(),\n });\n\n const suggestions: Suggestion[] = [\n {\n id: \"1\",\n title: \"Test\",\n detailedSuggestion: \"Test suggestion\",\n messageId: \"\",\n },\n ];\n\n act(() => {\n result.current.addContextAttachment({ name: \"File.tsx\" });\n result.current.setCustomSuggestions(suggestions);\n });\n\n // Clear attachments\n act(() => {\n result.current.clearContextAttachments();\n });\n\n // Suggestions should remain\n expect(result.current.attachments).toHaveLength(0);\n expect(result.current.customSuggestions).toEqual(suggestions);\n\n // Can clear suggestions separately\n act(() => {\n result.current.setCustomSuggestions(null);\n });\n\n expect(result.current.customSuggestions).toBeNull();\n });\n });\n\n describe(\"Cleanup\", () => {\n /**\n * Should cleanup context helpers on unmount\n */\n it(\"should cleanup context helpers on unmount\", async () => {\n // Use a shared provider wrapper so context helpers persist\n const SharedWrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>{children}</TamboContextHelpersProvider>\n );\n\n // First render with attachment provider\n const { result: attachmentResult, unmount } = renderHook(\n () => ({\n attachment: useTamboContextAttachment(),\n helpers: useTamboContextHelpers(),\n }),\n {\n wrapper: ({ children }) => (\n <SharedWrapper>\n <TamboContextAttachmentProvider>\n {children}\n </TamboContextAttachmentProvider>\n </SharedWrapper>\n ),\n },\n );\n\n // Add attachment\n act(() => {\n attachmentResult.current.attachment.addContextAttachment({\n name: \"Button.tsx\",\n });\n });\n\n const attachmentId =\n attachmentResult.current.attachment.attachments[0].id;\n\n // Wait for context helper to be registered\n await waitFor(async () => {\n const contexts =\n await attachmentResult.current.helpers.getAdditionalContext();\n const hasContext = contexts.some((c) => c.name.includes(attachmentId));\n expect(hasContext).toBe(true);\n });\n\n // Unmount the attachment provider\n unmount();\n\n // Create new hook to check cleanup\n const { result: helpersResult } = renderHook(\n () => useTamboContextHelpers(),\n { wrapper: SharedWrapper },\n );\n\n // Wait a bit for cleanup effect to run\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n const contexts = await helpersResult.current.getAdditionalContext();\n\n // Should not contain the attachment context after unmount\n const hasAttachmentContext = contexts.some((c) =>\n c.name.includes(attachmentId),\n );\n expect(hasAttachmentContext).toBe(false);\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tambo-context-helpers-provider.test.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-context-helpers-provider.test.tsx"],"names":[],"mappings":""}
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = require("@testing-library/react");
|
|
7
7
|
const react_2 = __importDefault(require("react"));
|
|
8
|
-
const context_helpers_1 = require("
|
|
9
|
-
const tambo_context_helpers_provider_1 = require("
|
|
8
|
+
const context_helpers_1 = require("../context-helpers");
|
|
9
|
+
const tambo_context_helpers_provider_1 = require("./tambo-context-helpers-provider");
|
|
10
10
|
/**
|
|
11
11
|
* Test suite for TamboContextHelpersProvider (simplified API, registry-backed)
|
|
12
12
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tambo-context-helpers-provider.test.js","sourceRoot":"","sources":["../../src/providers/tambo-context-helpers-provider.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import { act, renderHook } from \"@testing-library/react\";\nimport React from \"react\";\nimport {\n currentPageContextHelper,\n currentTimeContextHelper,\n} from \"../context-helpers\";\nimport {\n TamboContextHelpersProvider,\n useTamboContextHelpers,\n} from \"./tambo-context-helpers-provider\";\n\n/**\n * Test suite for TamboContextHelpersProvider (simplified API, registry-backed)\n *\n * The simplified API:\n * - Accepts a plain map of { key: () => any | null | undefined | Promise<any | null | undefined> }.\n * - The key becomes the context name sent to the model.\n * - Returning null/undefined from a helper skips inclusion.\n * - Prebuilt helpers are just functions (e.g., prebuiltUserTime, prebuiltUserPage).\n *\n * The hook is now registry-backed and safe to call outside a provider. When used\n * outside a provider, it proxies to a global registry and still works.\n */\ndescribe(\"TamboContextHelpersProvider\", () => {\n // Ensure registry is clean for each test to avoid cross-test contamination\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n // Base wrapper with no helpers provided\n const wrapper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider>{children}</TamboContextHelpersProvider>\n );\n\n describe(\"useTamboContextHelpers\", () => {\n /**\n * Verifies that the hook returns the expected API functions when used within a provider.\n */\n it(\"should provide context helpers functions (inside provider)\", () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper,\n });\n expect(result.current).toHaveProperty(\"getAdditionalContext\");\n expect(result.current).toHaveProperty(\"getContextHelpers\");\n expect(result.current).toHaveProperty(\"addContextHelper\");\n expect(result.current).toHaveProperty(\"removeContextHelper\");\n });\n\n /**\n * With no helpers provided, no additional context should be returned.\n */\n it(\"should return no additional context when no helpers are provided\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper,\n });\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toHaveLength(0);\n });\n\n /**\n * When helpers are provided, getAdditionalContext should aggregate them.\n * Note: prebuiltUserPage may be null in non-browser envs, so we only assert userTime when present.\n */\n it(\"should get additional context when helpers are provided\", async () => {\n const withHelpers = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n userTime: currentTimeContextHelper,\n userPage: currentPageContextHelper,\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: withHelpers,\n });\n\n const contexts = await result.current.getAdditionalContext();\n const names = contexts.map((c) => c.name);\n\n // userTime should be present from prebuilt helper\n expect(names).toContain(\"userTime\");\n // userPage may be absent on server; do not assert strictly\n });\n\n /**\n * Errors thrown by helper functions should be caught and skipped, not crash the system.\n */\n it(\"should handle errors in context helper functions gracefully\", async () => {\n const consoleErrorSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n\n const badHelper = () => {\n throw new Error(\"Test error\");\n };\n\n const withBadHelper = ({ children }: { children: React.ReactNode }) => (\n <TamboContextHelpersProvider contextHelpers={{ badHelper }}>\n {children}\n </TamboContextHelpersProvider>\n );\n\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: withBadHelper,\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts.length).toBe(0);\n expect(consoleErrorSpy).toHaveBeenCalledWith(\n expect.stringContaining(\"Error running context helper badHelper\"),\n expect.any(Error),\n );\n consoleErrorSpy.mockRestore();\n });\n });\n});\n\n/**\n * Test suite for Custom Context Helpers using the simplified API.\n *\n * Focuses on:\n * - Passing custom helpers via the provider prop.\n * - Overriding prebuilt helpers with custom implementations.\n * - Dynamic add/remove helper management at runtime.\n * - Supporting both sync and async helpers.\n * - Using the config key as the context name.\n * - Graceful error handling for custom helpers.\n */\ndescribe(\"Custom Context Helpers via contextHelpers config\", () => {\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n /**\n * Custom helpers can be added through the provider configuration.\n * The key becomes the context name and the function returns the raw value.\n */\n it(\"should accept custom helpers through contextHelpers config\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n customData: async () => ({ custom: \"value\" }),\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"customData\",\n context: { custom: \"value\" },\n });\n });\n\n /**\n * Built-in helpers can be overridden by providing a function under the same key.\n */\n it(\"should allow custom helpers to override built-in ones\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n userTime: async () => ({ customTime: \"override\" }),\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n const contexts = await result.current.getAdditionalContext();\n const userTimeContext = contexts.find((c) => c.name === \"userTime\");\n expect(userTimeContext?.context).toEqual({ customTime: \"override\" });\n });\n\n /**\n * Helpers can be added dynamically at runtime via addContextHelper.\n */\n it(\"should handle dynamic addition of custom helpers\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider contextHelpers={{}}>\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n // Initially none\n expect(await result.current.getAdditionalContext()).toHaveLength(0);\n\n act(() => {\n result.current.addContextHelper(\"dynamicHelper\", async () => ({\n dynamic: true,\n }));\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"dynamicHelper\",\n context: { dynamic: true },\n });\n });\n\n /**\n * Helpers can be removed dynamically via removeContextHelper.\n */\n it(\"should handle dynamic removal of context helpers\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n customHelper: async () => ({ test: \"data\" }),\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n // Verify exists\n let contexts = await result.current.getAdditionalContext();\n expect(contexts.find((c) => c.name === \"customHelper\")).toBeDefined();\n\n // Remove\n act(() => {\n result.current.removeContextHelper(\"customHelper\");\n });\n\n // Verify removed\n contexts = await result.current.getAdditionalContext();\n expect(contexts.find((c) => c.name === \"customHelper\")).toBeUndefined();\n });\n\n /**\n * Multiple custom helpers should be supported; helpers returning null/undefined are skipped.\n */\n it(\"should handle multiple custom helpers\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n helper1: async () => ({ data: \"one\" }),\n helper2: async () => ({ data: \"two\" }),\n helper3: () => null, // disabled by returning null\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"helper1\",\n context: { data: \"one\" },\n });\n expect(contexts).toContainEqual({\n name: \"helper2\",\n context: { data: \"two\" },\n });\n expect(contexts.find((c) => c.name === \"helper3\")).toBeUndefined();\n });\n\n /**\n * Both synchronous and asynchronous helpers should be supported.\n */\n it(\"should handle sync and async custom helpers\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n syncHelper: () => ({ sync: true }),\n asyncHelper: async () => {\n await new Promise((resolve) => setTimeout(resolve, 10));\n return { async: true };\n },\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"syncHelper\",\n context: { sync: true },\n });\n expect(contexts).toContainEqual({\n name: \"asyncHelper\",\n context: { async: true },\n });\n });\n\n /**\n * The key used in the contextHelpers map becomes the context name.\n */\n it(\"should use key name as context name for custom helpers\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n myCustomKey: async () => ({ value: \"test\" }),\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"myCustomKey\",\n context: { value: \"test\" },\n });\n });\n\n /**\n * Errors thrown by custom helpers should be logged and skipped, not crash the system.\n */\n it(\"should handle errors in custom helpers gracefully\", async () => {\n const consoleErrorSpy = jest\n .spyOn(console, \"error\")\n .mockImplementation(() => {});\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n errorHelper: async () => {\n throw new Error(\"Custom helper error\");\n },\n goodHelper: async () => ({ good: \"data\" }),\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n const contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"goodHelper\",\n context: { good: \"data\" },\n });\n expect(contexts.find((c) => c.name === \"errorHelper\")).toBeUndefined();\n expect(consoleErrorSpy).toHaveBeenCalledWith(\n expect.stringContaining(\"Error running context helper errorHelper\"),\n expect.any(Error),\n );\n consoleErrorSpy.mockRestore();\n });\n\n /**\n * Removing non-existent helpers should be a no-op without throwing errors.\n */\n it(\"should handle removing non-existent helper gracefully\", () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider contextHelpers={{}}>\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n expect(() => {\n act(() => {\n result.current.removeContextHelper(\"nonExistent\");\n });\n }).not.toThrow();\n });\n\n /**\n * Adding with an existing name should update/replace the helper implementation.\n */\n it(\"should allow updating existing helper via addContextHelper\", async () => {\n const { result } = renderHook(() => useTamboContextHelpers(), {\n wrapper: ({ children }) => (\n <TamboContextHelpersProvider\n contextHelpers={{\n testHelper: async () => ({ original: true }),\n }}\n >\n {children}\n </TamboContextHelpersProvider>\n ),\n });\n\n // Verify original helper\n let contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"testHelper\",\n context: { original: true },\n });\n\n // Update the helper\n act(() => {\n result.current.addContextHelper(\"testHelper\", async () => ({\n updated: true,\n }));\n });\n\n // Verify updated helper\n contexts = await result.current.getAdditionalContext();\n expect(contexts).toContainEqual({\n name: \"testHelper\",\n context: { updated: true },\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tambo-interactable-provider-partial-updates.test.d.ts","sourceRoot":"","sources":["../../src/providers/tambo-interactable-provider-partial-updates.test.tsx"],"names":[],"mappings":""}
|
|
@@ -5,12 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = require("@testing-library/react");
|
|
7
7
|
const react_2 = __importDefault(require("react"));
|
|
8
|
-
const
|
|
9
|
-
const tambo_interactable_provider_1 = require("
|
|
8
|
+
const v3_1 = require("zod/v3");
|
|
9
|
+
const tambo_interactable_provider_1 = require("./tambo-interactable-provider");
|
|
10
10
|
// Mock the context helpers
|
|
11
11
|
const mockAddContextHelper = jest.fn();
|
|
12
12
|
const mockRemoveContextHelper = jest.fn();
|
|
13
|
-
jest.mock("
|
|
13
|
+
jest.mock("./tambo-context-helpers-provider", () => ({
|
|
14
14
|
TamboContextHelpersProvider: ({ children, }) => react_2.default.createElement(react_2.default.Fragment, null, children),
|
|
15
15
|
useTamboContextHelpers: () => ({
|
|
16
16
|
addContextHelper: mockAddContextHelper,
|
|
@@ -19,13 +19,13 @@ jest.mock("../tambo-context-helpers-provider", () => ({
|
|
|
19
19
|
}));
|
|
20
20
|
// Mock the component provider
|
|
21
21
|
const mockRegisterTool = jest.fn();
|
|
22
|
-
jest.mock("
|
|
22
|
+
jest.mock("./tambo-component-provider", () => ({
|
|
23
23
|
useTamboComponent: () => ({
|
|
24
24
|
registerTool: mockRegisterTool,
|
|
25
25
|
}),
|
|
26
26
|
}));
|
|
27
27
|
// Mock the context helper creation
|
|
28
|
-
jest.mock("
|
|
28
|
+
jest.mock("../context-helpers/current-interactables-context-helper", () => ({
|
|
29
29
|
createInteractablesContextHelper: () => jest.fn(() => ({
|
|
30
30
|
name: "interactables",
|
|
31
31
|
context: {
|
|
@@ -52,13 +52,13 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
52
52
|
active: true,
|
|
53
53
|
metadata: { type: "test", version: "1.0" },
|
|
54
54
|
},
|
|
55
|
-
propsSchema:
|
|
56
|
-
title:
|
|
57
|
-
count:
|
|
58
|
-
active:
|
|
59
|
-
metadata:
|
|
60
|
-
type:
|
|
61
|
-
version:
|
|
55
|
+
propsSchema: v3_1.z.object({
|
|
56
|
+
title: v3_1.z.string(),
|
|
57
|
+
count: v3_1.z.number(),
|
|
58
|
+
active: v3_1.z.boolean(),
|
|
59
|
+
metadata: v3_1.z.object({
|
|
60
|
+
type: v3_1.z.string(),
|
|
61
|
+
version: v3_1.z.string(),
|
|
62
62
|
}),
|
|
63
63
|
}),
|
|
64
64
|
};
|
|
@@ -100,11 +100,11 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
100
100
|
active: true,
|
|
101
101
|
description: "Original description",
|
|
102
102
|
},
|
|
103
|
-
propsSchema:
|
|
104
|
-
title:
|
|
105
|
-
count:
|
|
106
|
-
active:
|
|
107
|
-
description:
|
|
103
|
+
propsSchema: v3_1.z.object({
|
|
104
|
+
title: v3_1.z.string(),
|
|
105
|
+
count: v3_1.z.number(),
|
|
106
|
+
active: v3_1.z.boolean(),
|
|
107
|
+
description: v3_1.z.string(),
|
|
108
108
|
}),
|
|
109
109
|
};
|
|
110
110
|
let componentId = "";
|
|
@@ -155,14 +155,14 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
155
155
|
},
|
|
156
156
|
},
|
|
157
157
|
},
|
|
158
|
-
propsSchema:
|
|
159
|
-
title:
|
|
160
|
-
config:
|
|
161
|
-
theme:
|
|
162
|
-
language:
|
|
163
|
-
features:
|
|
164
|
-
notifications:
|
|
165
|
-
analytics:
|
|
158
|
+
propsSchema: v3_1.z.object({
|
|
159
|
+
title: v3_1.z.string(),
|
|
160
|
+
config: v3_1.z.object({
|
|
161
|
+
theme: v3_1.z.string(),
|
|
162
|
+
language: v3_1.z.string(),
|
|
163
|
+
features: v3_1.z.object({
|
|
164
|
+
notifications: v3_1.z.boolean(),
|
|
165
|
+
analytics: v3_1.z.boolean(),
|
|
166
166
|
}),
|
|
167
167
|
}),
|
|
168
168
|
}),
|
|
@@ -200,10 +200,10 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
200
200
|
items: ["item1", "item2", "item3"],
|
|
201
201
|
tags: ["tag1", "tag2"],
|
|
202
202
|
},
|
|
203
|
-
propsSchema:
|
|
204
|
-
title:
|
|
205
|
-
items:
|
|
206
|
-
tags:
|
|
203
|
+
propsSchema: v3_1.z.object({
|
|
204
|
+
title: v3_1.z.string(),
|
|
205
|
+
items: v3_1.z.array(v3_1.z.string()),
|
|
206
|
+
tags: v3_1.z.array(v3_1.z.string()),
|
|
207
207
|
}),
|
|
208
208
|
};
|
|
209
209
|
let componentId = "";
|
|
@@ -233,10 +233,10 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
233
233
|
count: 5,
|
|
234
234
|
description: "Original description",
|
|
235
235
|
},
|
|
236
|
-
propsSchema:
|
|
237
|
-
title:
|
|
238
|
-
count:
|
|
239
|
-
description:
|
|
236
|
+
propsSchema: v3_1.z.object({
|
|
237
|
+
title: v3_1.z.string(),
|
|
238
|
+
count: v3_1.z.number(),
|
|
239
|
+
description: v3_1.z.string(),
|
|
240
240
|
}),
|
|
241
241
|
};
|
|
242
242
|
let componentId = "";
|
|
@@ -285,7 +285,7 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
285
285
|
description: "A component with spaces in name",
|
|
286
286
|
component: () => react_2.default.createElement("div", null, "Invalid"),
|
|
287
287
|
props: { title: "Test" },
|
|
288
|
-
propsSchema:
|
|
288
|
+
propsSchema: v3_1.z.object({ title: v3_1.z.string() }),
|
|
289
289
|
};
|
|
290
290
|
expect(() => {
|
|
291
291
|
(0, react_1.act)(() => {
|
|
@@ -300,7 +300,7 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
300
300
|
description: "A test component",
|
|
301
301
|
component: () => react_2.default.createElement("div", null, "Test"),
|
|
302
302
|
props: { title: "Original Title" },
|
|
303
|
-
propsSchema:
|
|
303
|
+
propsSchema: v3_1.z.object({ title: v3_1.z.string() }),
|
|
304
304
|
};
|
|
305
305
|
let componentId = "";
|
|
306
306
|
(0, react_1.act)(() => {
|
|
@@ -319,7 +319,7 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
319
319
|
description: "A test component",
|
|
320
320
|
component: () => react_2.default.createElement("div", null, "Test"),
|
|
321
321
|
props: { title: "Original Title" },
|
|
322
|
-
propsSchema:
|
|
322
|
+
propsSchema: v3_1.z.object({ title: v3_1.z.string() }),
|
|
323
323
|
};
|
|
324
324
|
let componentId = "";
|
|
325
325
|
(0, react_1.act)(() => {
|
|
@@ -338,7 +338,7 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
338
338
|
description: "A test component",
|
|
339
339
|
component: () => react_2.default.createElement("div", null, "Test"),
|
|
340
340
|
props: { title: "Original Title" },
|
|
341
|
-
propsSchema:
|
|
341
|
+
propsSchema: v3_1.z.object({ title: v3_1.z.string() }),
|
|
342
342
|
};
|
|
343
343
|
let componentId = "";
|
|
344
344
|
(0, react_1.act)(() => {
|
|
@@ -365,15 +365,15 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
365
365
|
metadata: { type: "test", version: "1.0" },
|
|
366
366
|
items: ["item1", "item2"],
|
|
367
367
|
},
|
|
368
|
-
propsSchema:
|
|
369
|
-
title:
|
|
370
|
-
count:
|
|
371
|
-
active:
|
|
372
|
-
metadata:
|
|
373
|
-
type:
|
|
374
|
-
version:
|
|
368
|
+
propsSchema: v3_1.z.object({
|
|
369
|
+
title: v3_1.z.string(),
|
|
370
|
+
count: v3_1.z.number(),
|
|
371
|
+
active: v3_1.z.boolean(),
|
|
372
|
+
metadata: v3_1.z.object({
|
|
373
|
+
type: v3_1.z.string(),
|
|
374
|
+
version: v3_1.z.string(),
|
|
375
375
|
}),
|
|
376
|
-
items:
|
|
376
|
+
items: v3_1.z.array(v3_1.z.string()),
|
|
377
377
|
}),
|
|
378
378
|
};
|
|
379
379
|
let componentId = "";
|
|
@@ -427,25 +427,25 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
427
427
|
description: "A test component with large data",
|
|
428
428
|
component: () => react_2.default.createElement("div", null, "Test"),
|
|
429
429
|
props: largeData,
|
|
430
|
-
propsSchema:
|
|
431
|
-
users:
|
|
432
|
-
id:
|
|
433
|
-
name:
|
|
430
|
+
propsSchema: v3_1.z.object({
|
|
431
|
+
users: v3_1.z.array(v3_1.z.object({
|
|
432
|
+
id: v3_1.z.number(),
|
|
433
|
+
name: v3_1.z.string(),
|
|
434
434
|
})),
|
|
435
|
-
settings:
|
|
436
|
-
theme:
|
|
437
|
-
language:
|
|
438
|
-
notifications:
|
|
439
|
-
privacy:
|
|
440
|
-
shareData:
|
|
441
|
-
analytics:
|
|
442
|
-
marketing:
|
|
435
|
+
settings: v3_1.z.object({
|
|
436
|
+
theme: v3_1.z.string(),
|
|
437
|
+
language: v3_1.z.string(),
|
|
438
|
+
notifications: v3_1.z.boolean(),
|
|
439
|
+
privacy: v3_1.z.object({
|
|
440
|
+
shareData: v3_1.z.boolean(),
|
|
441
|
+
analytics: v3_1.z.boolean(),
|
|
442
|
+
marketing: v3_1.z.boolean(),
|
|
443
443
|
}),
|
|
444
444
|
}),
|
|
445
|
-
metadata:
|
|
446
|
-
version:
|
|
447
|
-
build:
|
|
448
|
-
timestamp:
|
|
445
|
+
metadata: v3_1.z.object({
|
|
446
|
+
version: v3_1.z.string(),
|
|
447
|
+
build: v3_1.z.string(),
|
|
448
|
+
timestamp: v3_1.z.number(),
|
|
449
449
|
}),
|
|
450
450
|
}),
|
|
451
451
|
};
|
|
@@ -488,10 +488,10 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
488
488
|
title: "Original Title",
|
|
489
489
|
count: 0,
|
|
490
490
|
},
|
|
491
|
-
propsSchema:
|
|
492
|
-
title:
|
|
493
|
-
count:
|
|
494
|
-
newProperty:
|
|
491
|
+
propsSchema: v3_1.z.object({
|
|
492
|
+
title: v3_1.z.string(),
|
|
493
|
+
count: v3_1.z.number(),
|
|
494
|
+
newProperty: v3_1.z.string().optional(),
|
|
495
495
|
}),
|
|
496
496
|
};
|
|
497
497
|
let componentId = "";
|
|
@@ -521,10 +521,10 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
521
521
|
count: 5,
|
|
522
522
|
active: true,
|
|
523
523
|
},
|
|
524
|
-
propsSchema:
|
|
525
|
-
title:
|
|
526
|
-
count:
|
|
527
|
-
active:
|
|
524
|
+
propsSchema: v3_1.z.object({
|
|
525
|
+
title: v3_1.z.string(),
|
|
526
|
+
count: v3_1.z.number(),
|
|
527
|
+
active: v3_1.z.boolean(),
|
|
528
528
|
}),
|
|
529
529
|
};
|
|
530
530
|
let componentId = "";
|
|
@@ -565,17 +565,17 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
565
565
|
},
|
|
566
566
|
},
|
|
567
567
|
},
|
|
568
|
-
propsSchema:
|
|
569
|
-
title:
|
|
570
|
-
config:
|
|
571
|
-
theme:
|
|
572
|
-
language:
|
|
573
|
-
features:
|
|
574
|
-
notifications:
|
|
575
|
-
analytics:
|
|
576
|
-
experimental:
|
|
577
|
-
beta:
|
|
578
|
-
alpha:
|
|
568
|
+
propsSchema: v3_1.z.object({
|
|
569
|
+
title: v3_1.z.string(),
|
|
570
|
+
config: v3_1.z.object({
|
|
571
|
+
theme: v3_1.z.string(),
|
|
572
|
+
language: v3_1.z.string(),
|
|
573
|
+
features: v3_1.z.object({
|
|
574
|
+
notifications: v3_1.z.boolean(),
|
|
575
|
+
analytics: v3_1.z.boolean(),
|
|
576
|
+
experimental: v3_1.z.object({
|
|
577
|
+
beta: v3_1.z.boolean(),
|
|
578
|
+
alpha: v3_1.z.boolean(),
|
|
579
579
|
}),
|
|
580
580
|
}),
|
|
581
581
|
}),
|
|
@@ -639,17 +639,17 @@ describe("updateInteractableComponentProps - Partial Updates", () => {
|
|
|
639
639
|
},
|
|
640
640
|
},
|
|
641
641
|
},
|
|
642
|
-
propsSchema:
|
|
643
|
-
title:
|
|
644
|
-
config:
|
|
645
|
-
theme:
|
|
646
|
-
language:
|
|
647
|
-
features:
|
|
648
|
-
notifications:
|
|
649
|
-
analytics:
|
|
650
|
-
experimental:
|
|
651
|
-
beta:
|
|
652
|
-
alpha:
|
|
642
|
+
propsSchema: v3_1.z.object({
|
|
643
|
+
title: v3_1.z.string(),
|
|
644
|
+
config: v3_1.z.object({
|
|
645
|
+
theme: v3_1.z.string(),
|
|
646
|
+
language: v3_1.z.string(),
|
|
647
|
+
features: v3_1.z.object({
|
|
648
|
+
notifications: v3_1.z.boolean(),
|
|
649
|
+
analytics: v3_1.z.boolean(),
|
|
650
|
+
experimental: v3_1.z.object({
|
|
651
|
+
beta: v3_1.z.boolean(),
|
|
652
|
+
alpha: v3_1.z.boolean(),
|
|
653
653
|
}),
|
|
654
654
|
}),
|
|
655
655
|
}),
|