@tambo-ai/react 0.71.0 → 0.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v1/hooks/use-tambo-v1-component-state.d.ts +44 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.js +134 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.test.js +292 -0
- package/dist/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-messages.test.js +22 -9
- package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +1 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.js +9 -2
- package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js +22 -9
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts +91 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.js +152 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.js +511 -0
- package/dist/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts +11 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.js +16 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.js +297 -0
- package/dist/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +6 -4
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.js +2 -2
- package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +2 -2
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1.test.js +16 -7
- package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -1
- package/dist/v1/index.d.ts +39 -19
- package/dist/v1/index.d.ts.map +1 -1
- package/dist/v1/index.js +60 -34
- package/dist/v1/index.js.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.d.ts +61 -1
- package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.js +35 -3
- package/dist/v1/providers/tambo-v1-provider.js.map +1 -1
- package/dist/v1/providers/tambo-v1-provider.test.js +78 -3
- package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.d.ts +19 -10
- package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.js +43 -53
- package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stream-context.test.js +94 -19
- package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
- package/dist/v1/providers/tambo-v1-stub-provider.d.ts +74 -0
- package/dist/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-stub-provider.js +212 -0
- package/dist/v1/providers/tambo-v1-stub-provider.js.map +1 -0
- package/dist/v1/providers/tambo-v1-stub-provider.test.d.ts +2 -0
- package/dist/v1/providers/tambo-v1-stub-provider.test.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-stub-provider.test.js +162 -0
- package/dist/v1/providers/tambo-v1-stub-provider.test.js.map +1 -0
- package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts +105 -0
- package/dist/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-thread-input-provider.js +191 -0
- package/dist/v1/providers/tambo-v1-thread-input-provider.js.map +1 -0
- package/dist/v1/types/message.d.ts +27 -2
- package/dist/v1/types/message.d.ts.map +1 -1
- package/dist/v1/types/message.js.map +1 -1
- package/dist/v1/utils/component-renderer.d.ts +37 -0
- package/dist/v1/utils/component-renderer.d.ts.map +1 -0
- package/dist/v1/utils/component-renderer.js +70 -0
- package/dist/v1/utils/component-renderer.js.map +1 -0
- package/dist/v1/utils/component-renderer.test.d.ts +2 -0
- package/dist/v1/utils/component-renderer.test.d.ts.map +1 -0
- package/dist/v1/utils/component-renderer.test.js +45 -0
- package/dist/v1/utils/component-renderer.test.js.map +1 -0
- package/dist/v1/utils/event-accumulator.js +28 -8
- package/dist/v1/utils/event-accumulator.js.map +1 -1
- package/dist/v1/utils/event-accumulator.test.js +201 -6
- package/dist/v1/utils/event-accumulator.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-component-state.d.ts +44 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.js +131 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.test.js +290 -0
- package/esm/v1/hooks/use-tambo-v1-component-state.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-messages.test.js +22 -9
- package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +1 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.js +9 -2
- package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js +22 -9
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts +91 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.js +149 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.js +506 -0
- package/esm/v1/hooks/use-tambo-v1-suggestions.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts +11 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.js +12 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.js +292 -0
- package/esm/v1/hooks/use-tambo-v1-thread-input.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +6 -4
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.js +2 -2
- package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +2 -2
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1.test.js +16 -7
- package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -1
- package/esm/v1/index.d.ts +39 -19
- package/esm/v1/index.d.ts.map +1 -1
- package/esm/v1/index.js +43 -19
- package/esm/v1/index.js.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.d.ts +61 -1
- package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.js +34 -4
- package/esm/v1/providers/tambo-v1-provider.js.map +1 -1
- package/esm/v1/providers/tambo-v1-provider.test.js +79 -4
- package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.d.ts +19 -10
- package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.js +44 -54
- package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stream-context.test.js +95 -20
- package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -1
- package/esm/v1/providers/tambo-v1-stub-provider.d.ts +74 -0
- package/esm/v1/providers/tambo-v1-stub-provider.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-stub-provider.js +176 -0
- package/esm/v1/providers/tambo-v1-stub-provider.js.map +1 -0
- package/esm/v1/providers/tambo-v1-stub-provider.test.d.ts +2 -0
- package/esm/v1/providers/tambo-v1-stub-provider.test.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-stub-provider.test.js +157 -0
- package/esm/v1/providers/tambo-v1-stub-provider.test.js.map +1 -0
- package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts +105 -0
- package/esm/v1/providers/tambo-v1-thread-input-provider.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-thread-input-provider.js +153 -0
- package/esm/v1/providers/tambo-v1-thread-input-provider.js.map +1 -0
- package/esm/v1/types/message.d.ts +27 -2
- package/esm/v1/types/message.d.ts.map +1 -1
- package/esm/v1/types/message.js.map +1 -1
- package/esm/v1/utils/component-renderer.d.ts +37 -0
- package/esm/v1/utils/component-renderer.d.ts.map +1 -0
- package/esm/v1/utils/component-renderer.js +33 -0
- package/esm/v1/utils/component-renderer.js.map +1 -0
- package/esm/v1/utils/component-renderer.test.d.ts +2 -0
- package/esm/v1/utils/component-renderer.test.d.ts.map +1 -0
- package/esm/v1/utils/component-renderer.test.js +40 -0
- package/esm/v1/utils/component-renderer.test.js.map +1 -0
- package/esm/v1/utils/event-accumulator.js +28 -8
- package/esm/v1/utils/event-accumulator.js.map +1 -1
- package/esm/v1/utils/event-accumulator.test.js +201 -6
- package/esm/v1/utils/event-accumulator.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tambo-v1.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React from \"react\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { TamboV1StreamProvider } from \"../providers/tambo-v1-stream-context\";\nimport { useTamboV1 } from \"./use-tambo-v1\";\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n}));\n\ndescribe(\"useTamboV1\", () => {\n const mockTamboClient = {\n apiKey: \"\",\n threads: {},\n } as unknown as TamboAI;\n\n const mockRegistry: TamboRegistryContextType = {\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n registerComponent: jest.fn(),\n registerTool: jest.fn(),\n registerTools: jest.fn(),\n addToolAssociation: jest.fn(),\n registerMcpServer: jest.fn(),\n registerMcpServers: jest.fn(),\n registerResource: jest.fn(),\n registerResources: jest.fn(),\n registerResourceSource: jest.fn(),\n };\n\n function TestWrapper({ children }: { children: React.ReactNode }) {\n return (\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n );\n }\n\n function TestWrapperWithThreadId({\n children,\n }: {\n children: React.ReactNode;\n }) {\n return (\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider threadId=\"thread_123\">\n {children}\n </TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n );\n }\n\n beforeEach(() => {\n jest.mocked(useTamboClient).mockReturnValue(mockTamboClient);\n jest.clearAllMocks();\n });\n\n it(\"returns client from useTamboClient\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.client).toBe(mockTamboClient);\n });\n\n it(\"returns registry functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.registerComponent).toBe(\n mockRegistry.registerComponent,\n );\n expect(result.current.registerTool).toBe(mockRegistry.registerTool);\n expect(result.current.registerTools).toBe(mockRegistry.registerTools);\n expect(result.current.componentList).toBe(mockRegistry.componentList);\n expect(result.current.toolRegistry).toBe(mockRegistry.toolRegistry);\n });\n\n it(\"returns undefined thread when no threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.thread).toBeUndefined();\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns thread state when threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapperWithThreadId,\n });\n\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns default streaming state when thread not loaded\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.streamingState).toEqual({ status: \"idle\" });\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"returns thread streaming state when thread loaded\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapperWithThreadId,\n });\n\n expect(result.current.streamingState.status).toBe(\"idle\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"provides dispatch function for advanced usage\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.dispatch).toBe(\"function\");\n });\n\n it(\"provides thread management functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.initThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.startNewThread).toBe(\"function\");\n });\n\n it(\"initializes and switches threads\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initially no current thread\n expect(result.current.currentThreadId).toBeNull();\n expect(result.current.thread).toBeUndefined();\n\n // Initialize a new thread\n act(() => {\n result.current.initThread(\"new_thread_1\");\n });\n\n // Switch to the new thread\n act(() => {\n result.current.switchThread(\"new_thread_1\");\n });\n\n expect(result.current.currentThreadId).toBe(\"new_thread_1\");\n });\n\n it(\"starts new thread with generated ID\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n let newThreadId: string;\n act(() => {\n newThreadId = result.current.startNewThread();\n });\n\n expect(newThreadId!).toMatch(/^temp_/);\n expect(result.current.currentThreadId).toBe(newThreadId!);\n expect(result.current.thread).toBeDefined();\n });\n\n it(\"uses current thread when no threadId argument provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapperWithThreadId,\n });\n\n // Should use current thread from context (thread_123)\n expect(result.current.currentThreadId).toBe(\"thread_123\");\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"use-tambo-v1.test.js","sourceRoot":"","sources":["../../../src/v1/hooks/use-tambo-v1.test.tsx"],"names":[],"mappings":"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","sourcesContent":["import TamboAI from \"@tambo-ai/typescript-sdk\";\nimport { renderHook, act } from \"@testing-library/react\";\nimport React from \"react\";\nimport { useTamboClient } from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryContext,\n type TamboRegistryContext as TamboRegistryContextType,\n} from \"../../providers/tambo-registry-provider\";\nimport { TamboV1StreamProvider } from \"../providers/tambo-v1-stream-context\";\nimport { useTamboV1 } from \"./use-tambo-v1\";\n\njest.mock(\"../../providers/tambo-client-provider\", () => ({\n useTamboClient: jest.fn(),\n}));\n\ndescribe(\"useTamboV1\", () => {\n const mockTamboClient = {\n apiKey: \"\",\n threads: {},\n } as unknown as TamboAI;\n\n const mockRegistry: TamboRegistryContextType = {\n componentList: {},\n toolRegistry: {},\n componentToolAssociations: {},\n mcpServerInfos: [],\n resources: [],\n resourceSource: null,\n registerComponent: jest.fn(),\n registerTool: jest.fn(),\n registerTools: jest.fn(),\n addToolAssociation: jest.fn(),\n registerMcpServer: jest.fn(),\n registerMcpServers: jest.fn(),\n registerResource: jest.fn(),\n registerResources: jest.fn(),\n registerResourceSource: jest.fn(),\n };\n\n function TestWrapper({ children }: { children: React.ReactNode }) {\n return (\n <TamboRegistryContext.Provider value={mockRegistry}>\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </TamboRegistryContext.Provider>\n );\n }\n\n beforeEach(() => {\n jest.mocked(useTamboClient).mockReturnValue(mockTamboClient);\n jest.clearAllMocks();\n });\n\n it(\"returns client from useTamboClient\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.client).toBe(mockTamboClient);\n });\n\n it(\"returns registry functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.registerComponent).toBe(\n mockRegistry.registerComponent,\n );\n expect(result.current.registerTool).toBe(mockRegistry.registerTool);\n expect(result.current.registerTools).toBe(mockRegistry.registerTools);\n expect(result.current.componentList).toBe(mockRegistry.componentList);\n expect(result.current.toolRegistry).toBe(mockRegistry.toolRegistry);\n });\n\n it(\"returns undefined thread when no threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.thread).toBeUndefined();\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns thread state when threadId provided\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapper,\n });\n\n // Initialize thread first\n act(() => {\n result.current.initThread(\"thread_123\");\n });\n\n expect(result.current.thread).toBeDefined();\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n expect(result.current.messages).toEqual([]);\n });\n\n it(\"returns default streaming state when thread not loaded\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(result.current.streamingState).toEqual({ status: \"idle\" });\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"returns thread streaming state when thread loaded\", () => {\n const { result } = renderHook(() => useTamboV1(\"thread_123\"), {\n wrapper: TestWrapper,\n });\n\n // Initialize thread first\n act(() => {\n result.current.initThread(\"thread_123\");\n });\n\n expect(result.current.streamingState.status).toBe(\"idle\");\n expect(result.current.isIdle).toBe(true);\n expect(result.current.isStreaming).toBe(false);\n expect(result.current.isWaiting).toBe(false);\n });\n\n it(\"provides dispatch function for advanced usage\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.dispatch).toBe(\"function\");\n });\n\n it(\"provides thread management functions\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n expect(typeof result.current.initThread).toBe(\"function\");\n expect(typeof result.current.switchThread).toBe(\"function\");\n expect(typeof result.current.startNewThread).toBe(\"function\");\n });\n\n it(\"initializes and switches threads\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initially no current thread\n expect(result.current.currentThreadId).toBeNull();\n expect(result.current.thread).toBeUndefined();\n\n // Initialize a new thread\n act(() => {\n result.current.initThread(\"new_thread_1\");\n });\n\n // Switch to the new thread\n act(() => {\n result.current.switchThread(\"new_thread_1\");\n });\n\n expect(result.current.currentThreadId).toBe(\"new_thread_1\");\n });\n\n it(\"starts new thread with generated ID\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n let newThreadId: string;\n act(() => {\n newThreadId = result.current.startNewThread();\n });\n\n expect(newThreadId!).toMatch(/^temp_/);\n expect(result.current.currentThreadId).toBe(newThreadId!);\n expect(result.current.thread).toBeDefined();\n });\n\n it(\"uses current thread when no threadId argument provided\", () => {\n const { result } = renderHook(() => useTamboV1(), {\n wrapper: TestWrapper,\n });\n\n // Initialize and switch to a thread\n act(() => {\n result.current.initThread(\"thread_123\");\n result.current.switchThread(\"thread_123\");\n });\n\n // Should use current thread from context (thread_123)\n expect(result.current.currentThreadId).toBe(\"thread_123\");\n expect(result.current.thread?.thread.id).toBe(\"thread_123\");\n });\n});\n"]}
|
package/esm/v1/index.d.ts
CHANGED
|
@@ -4,19 +4,28 @@
|
|
|
4
4
|
* Provides React hooks and providers for building AI-powered applications
|
|
5
5
|
* using the v1 streaming API with AG-UI protocol.
|
|
6
6
|
*
|
|
7
|
+
* ## Authentication & Thread Ownership
|
|
8
|
+
*
|
|
9
|
+
* All thread operations require user identification. Provide ONE of:
|
|
10
|
+
* - `userKey` - Direct user identifier (for server-side or trusted environments)
|
|
11
|
+
* - `userToken` - OAuth bearer token containing the userKey (for client-side apps)
|
|
12
|
+
*
|
|
13
|
+
* Threads are scoped to the userKey - each user only sees their own threads.
|
|
14
|
+
*
|
|
7
15
|
* ## Quick Start
|
|
8
16
|
*
|
|
9
17
|
* ```tsx
|
|
10
18
|
* import {
|
|
11
19
|
* TamboV1Provider,
|
|
12
20
|
* useTamboV1,
|
|
13
|
-
*
|
|
21
|
+
* useTamboV1ThreadInput,
|
|
14
22
|
* } from '@tambo-ai/react/v1';
|
|
15
23
|
*
|
|
16
24
|
* function App() {
|
|
17
25
|
* return (
|
|
18
26
|
* <TamboV1Provider
|
|
19
27
|
* apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
|
|
28
|
+
* userKey={currentUserId} // Required: identifies thread owner
|
|
20
29
|
* components={[WeatherCard]}
|
|
21
30
|
* tools={[searchTool]}
|
|
22
31
|
* >
|
|
@@ -28,21 +37,21 @@
|
|
|
28
37
|
* function ChatInterface() {
|
|
29
38
|
* const [threadId, setThreadId] = useState<string>();
|
|
30
39
|
* const { messages, isStreaming } = useTamboV1(threadId);
|
|
31
|
-
* const
|
|
40
|
+
* const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);
|
|
32
41
|
*
|
|
33
|
-
* const
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* });
|
|
42
|
+
* const handleSubmit = async (e: React.FormEvent) => {
|
|
43
|
+
* e.preventDefault();
|
|
44
|
+
* const result = await submit();
|
|
37
45
|
* if (!threadId) setThreadId(result.threadId);
|
|
38
46
|
* };
|
|
39
47
|
*
|
|
40
48
|
* return (
|
|
41
|
-
* <
|
|
49
|
+
* <form onSubmit={handleSubmit}>
|
|
42
50
|
* {messages.map(msg => <Message key={msg.id} message={msg} />)}
|
|
43
51
|
* {isStreaming && <LoadingIndicator />}
|
|
44
|
-
* <
|
|
45
|
-
*
|
|
52
|
+
* <input value={value} onChange={(e) => setValue(e.target.value)} />
|
|
53
|
+
* <button disabled={isPending}>Send</button>
|
|
54
|
+
* </form>
|
|
46
55
|
* );
|
|
47
56
|
* }
|
|
48
57
|
* ```
|
|
@@ -57,17 +66,28 @@
|
|
|
57
66
|
* SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`
|
|
58
67
|
* AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`
|
|
59
68
|
*/
|
|
60
|
-
export { TamboV1Provider, type TamboV1ProviderProps, } from "./providers/tambo-v1-provider";
|
|
61
|
-
export { TamboV1StreamProvider, useStreamState, useStreamDispatch, useThreadManagement, type ThreadManagement, } from "./providers/tambo-v1-stream-context";
|
|
69
|
+
export { TamboV1Provider, type TamboV1ProviderProps, useTamboV1Config, type TamboV1Config, } from "./providers/tambo-v1-provider";
|
|
62
70
|
export { TamboRegistryProvider } from "../providers/tambo-registry-provider";
|
|
63
|
-
export {
|
|
64
|
-
export {
|
|
65
|
-
export {
|
|
71
|
+
export { TamboClientProvider, useIsTamboTokenUpdating, } from "../providers/tambo-client-provider";
|
|
72
|
+
export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider";
|
|
73
|
+
export { TamboV1ThreadInputProvider, type TamboV1ThreadInputContextProps, type SubmitOptions, } from "./providers/tambo-v1-thread-input-provider";
|
|
74
|
+
export { TamboV1StubProvider, type TamboV1StubProviderProps, } from "./providers/tambo-v1-stub-provider";
|
|
75
|
+
export { useTamboV1 } from "./hooks/use-tambo-v1";
|
|
76
|
+
export { useTamboV1ThreadInput } from "./hooks/use-tambo-v1-thread-input";
|
|
66
77
|
export { useTamboV1Thread } from "./hooks/use-tambo-v1-thread";
|
|
67
78
|
export { useTamboV1ThreadList } from "./hooks/use-tambo-v1-thread-list";
|
|
68
|
-
export {
|
|
69
|
-
export {
|
|
70
|
-
export {
|
|
71
|
-
export {
|
|
72
|
-
export {
|
|
79
|
+
export { useTamboV1ComponentState } from "./hooks/use-tambo-v1-component-state";
|
|
80
|
+
export { useTamboV1Suggestions, type UseTamboV1SuggestionsOptions, } from "./hooks/use-tambo-v1-suggestions";
|
|
81
|
+
export { useTamboClient } from "../providers/tambo-client-provider";
|
|
82
|
+
export { useMessageImages, type StagedImage, } from "../hooks/use-message-images";
|
|
83
|
+
export { useTamboVoice } from "../hooks/use-tambo-voice";
|
|
84
|
+
export { defineTool } from "../util/registry";
|
|
85
|
+
export { currentPageContextHelper, currentTimeContextHelper, } from "../context-helpers";
|
|
86
|
+
export type { AdditionalContext, ContextHelperFn, ContextHelpers, } from "../context-helpers";
|
|
87
|
+
export type { ComponentContextToolMetadata, ComponentRegistry, ParameterSpec, RegisteredComponent, TamboComponent, TamboTool, ToolAnnotations, } from "../model/component-metadata";
|
|
88
|
+
export { MCPTransport } from "../model/mcp-server-info";
|
|
89
|
+
export type { McpServerInfo, NormalizedMcpServerInfo, } from "../model/mcp-server-info";
|
|
90
|
+
export type { ListResourceItem, ReadResourceResult, ResourceSource, } from "../model/resource-info";
|
|
91
|
+
export type { APIError, RateLimitError, TamboAIError, } from "@tambo-ai/typescript-sdk";
|
|
92
|
+
export type { Suggestion, SuggestionGenerateParams, SuggestionGenerateResponse, SuggestionListResponse, } from "@tambo-ai/typescript-sdk/resources/beta/threads/suggestions";
|
|
73
93
|
//# sourceMappingURL=index.d.ts.map
|
package/esm/v1/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAMH,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACnC,KAAK,aAAa,GACnB,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,GACjB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,YAAY,EACV,aAAa,EACb,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,6DAA6D,CAAC"}
|
package/esm/v1/index.js
CHANGED
|
@@ -4,19 +4,28 @@
|
|
|
4
4
|
* Provides React hooks and providers for building AI-powered applications
|
|
5
5
|
* using the v1 streaming API with AG-UI protocol.
|
|
6
6
|
*
|
|
7
|
+
* ## Authentication & Thread Ownership
|
|
8
|
+
*
|
|
9
|
+
* All thread operations require user identification. Provide ONE of:
|
|
10
|
+
* - `userKey` - Direct user identifier (for server-side or trusted environments)
|
|
11
|
+
* - `userToken` - OAuth bearer token containing the userKey (for client-side apps)
|
|
12
|
+
*
|
|
13
|
+
* Threads are scoped to the userKey - each user only sees their own threads.
|
|
14
|
+
*
|
|
7
15
|
* ## Quick Start
|
|
8
16
|
*
|
|
9
17
|
* ```tsx
|
|
10
18
|
* import {
|
|
11
19
|
* TamboV1Provider,
|
|
12
20
|
* useTamboV1,
|
|
13
|
-
*
|
|
21
|
+
* useTamboV1ThreadInput,
|
|
14
22
|
* } from '@tambo-ai/react/v1';
|
|
15
23
|
*
|
|
16
24
|
* function App() {
|
|
17
25
|
* return (
|
|
18
26
|
* <TamboV1Provider
|
|
19
27
|
* apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}
|
|
28
|
+
* userKey={currentUserId} // Required: identifies thread owner
|
|
20
29
|
* components={[WeatherCard]}
|
|
21
30
|
* tools={[searchTool]}
|
|
22
31
|
* >
|
|
@@ -28,21 +37,21 @@
|
|
|
28
37
|
* function ChatInterface() {
|
|
29
38
|
* const [threadId, setThreadId] = useState<string>();
|
|
30
39
|
* const { messages, isStreaming } = useTamboV1(threadId);
|
|
31
|
-
* const
|
|
40
|
+
* const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);
|
|
32
41
|
*
|
|
33
|
-
* const
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* });
|
|
42
|
+
* const handleSubmit = async (e: React.FormEvent) => {
|
|
43
|
+
* e.preventDefault();
|
|
44
|
+
* const result = await submit();
|
|
37
45
|
* if (!threadId) setThreadId(result.threadId);
|
|
38
46
|
* };
|
|
39
47
|
*
|
|
40
48
|
* return (
|
|
41
|
-
* <
|
|
49
|
+
* <form onSubmit={handleSubmit}>
|
|
42
50
|
* {messages.map(msg => <Message key={msg.id} message={msg} />)}
|
|
43
51
|
* {isStreaming && <LoadingIndicator />}
|
|
44
|
-
* <
|
|
45
|
-
*
|
|
52
|
+
* <input value={value} onChange={(e) => setValue(e.target.value)} />
|
|
53
|
+
* <button disabled={isPending}>Send</button>
|
|
54
|
+
* </form>
|
|
46
55
|
* );
|
|
47
56
|
* }
|
|
48
57
|
* ```
|
|
@@ -60,24 +69,39 @@
|
|
|
60
69
|
// =============================================================================
|
|
61
70
|
// Providers
|
|
62
71
|
// =============================================================================
|
|
63
|
-
export { TamboV1Provider, } from "./providers/tambo-v1-provider";
|
|
64
|
-
export { TamboV1StreamProvider, useStreamState, useStreamDispatch, useThreadManagement, } from "./providers/tambo-v1-stream-context";
|
|
72
|
+
export { TamboV1Provider, useTamboV1Config, } from "./providers/tambo-v1-provider";
|
|
65
73
|
// Re-export registry provider from beta SDK (works with v1)
|
|
66
74
|
export { TamboRegistryProvider } from "../providers/tambo-registry-provider";
|
|
75
|
+
// Re-export client provider from beta SDK (works with v1)
|
|
76
|
+
export { TamboClientProvider, useIsTamboTokenUpdating, } from "../providers/tambo-client-provider";
|
|
77
|
+
// Re-export context helpers from beta SDK (works with v1)
|
|
78
|
+
export { TamboContextHelpersProvider, useTamboContextHelpers, } from "../providers/tambo-context-helpers-provider";
|
|
79
|
+
// Export v1 thread input provider for advanced composition
|
|
80
|
+
export { TamboV1ThreadInputProvider, } from "./providers/tambo-v1-thread-input-provider";
|
|
81
|
+
// Export v1 stub provider for testing
|
|
82
|
+
export { TamboV1StubProvider, } from "./providers/tambo-v1-stub-provider";
|
|
67
83
|
// =============================================================================
|
|
68
84
|
// Hooks
|
|
69
85
|
// =============================================================================
|
|
70
86
|
export { useTamboV1 } from "./hooks/use-tambo-v1";
|
|
71
|
-
export {
|
|
72
|
-
export { useTamboV1SendMessage, } from "./hooks/use-tambo-v1-send-message";
|
|
87
|
+
export { useTamboV1ThreadInput } from "./hooks/use-tambo-v1-thread-input";
|
|
73
88
|
export { useTamboV1Thread } from "./hooks/use-tambo-v1-thread";
|
|
74
89
|
export { useTamboV1ThreadList } from "./hooks/use-tambo-v1-thread-list";
|
|
90
|
+
export { useTamboV1ComponentState } from "./hooks/use-tambo-v1-component-state";
|
|
91
|
+
export { useTamboV1Suggestions, } from "./hooks/use-tambo-v1-suggestions";
|
|
92
|
+
// Re-export client hook from beta SDK (works with v1)
|
|
93
|
+
export { useTamboClient } from "../providers/tambo-client-provider";
|
|
94
|
+
// Re-export image handling hook (pure React, API-agnostic)
|
|
95
|
+
export { useMessageImages, } from "../hooks/use-message-images";
|
|
96
|
+
// Re-export voice input hook (uses standalone transcription API)
|
|
97
|
+
export { useTamboVoice } from "../hooks/use-tambo-voice";
|
|
75
98
|
// =============================================================================
|
|
76
|
-
//
|
|
99
|
+
// Re-exports from Beta SDK (compatible with v1)
|
|
77
100
|
// =============================================================================
|
|
78
|
-
|
|
79
|
-
export {
|
|
80
|
-
|
|
81
|
-
export {
|
|
82
|
-
|
|
101
|
+
// Tool definition helper
|
|
102
|
+
export { defineTool } from "../util/registry";
|
|
103
|
+
// Built-in context helpers
|
|
104
|
+
export { currentPageContextHelper, currentTimeContextHelper, } from "../context-helpers";
|
|
105
|
+
// MCP server types
|
|
106
|
+
export { MCPTransport } from "../model/mcp-server-info";
|
|
83
107
|
//# sourceMappingURL=index.js.map
|
package/esm/v1/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/v1/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAEH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,OAAO,EACL,eAAe,EAEf,gBAAgB,GAEjB,MAAM,+BAA+B,CAAC;AAEvC,4DAA4D;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,0DAA0D;AAC1D,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAE5C,0DAA0D;AAC1D,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,6CAA6C,CAAC;AAErD,2DAA2D;AAC3D,OAAO,EACL,0BAA0B,GAG3B,MAAM,4CAA4C,CAAC;AAEpD,sCAAsC;AACtC,OAAO,EACL,mBAAmB,GAEpB,MAAM,oCAAoC,CAAC;AAE5C,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EACL,qBAAqB,GAEtB,MAAM,kCAAkC,CAAC;AAE1C,sDAAsD;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,2DAA2D;AAC3D,OAAO,EACL,gBAAgB,GAEjB,MAAM,6BAA6B,CAAC;AAErC,iEAAiE;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,gFAAgF;AAChF,gDAAgD;AAChD,gFAAgF;AAEhF,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2BAA2B;AAC3B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAoB5B,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["/**\n * `@tambo-ai/react/v1` - React SDK for Tambo v1 API\n *\n * Provides React hooks and providers for building AI-powered applications\n * using the v1 streaming API with AG-UI protocol.\n *\n * ## Authentication & Thread Ownership\n *\n * All thread operations require user identification. Provide ONE of:\n * - `userKey` - Direct user identifier (for server-side or trusted environments)\n * - `userToken` - OAuth bearer token containing the userKey (for client-side apps)\n *\n * Threads are scoped to the userKey - each user only sees their own threads.\n *\n * ## Quick Start\n *\n * ```tsx\n * import {\n * TamboV1Provider,\n * useTamboV1,\n * useTamboV1ThreadInput,\n * } from '@tambo-ai/react/v1';\n *\n * function App() {\n * return (\n * <TamboV1Provider\n * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}\n * userKey={currentUserId} // Required: identifies thread owner\n * components={[WeatherCard]}\n * tools={[searchTool]}\n * >\n * <ChatInterface />\n * </TamboV1Provider>\n * );\n * }\n *\n * function ChatInterface() {\n * const [threadId, setThreadId] = useState<string>();\n * const { messages, isStreaming } = useTamboV1(threadId);\n * const { value, setValue, submit, isPending } = useTamboV1ThreadInput(threadId);\n *\n * const handleSubmit = async (e: React.FormEvent) => {\n * e.preventDefault();\n * const result = await submit();\n * if (!threadId) setThreadId(result.threadId);\n * };\n *\n * return (\n * <form onSubmit={handleSubmit}>\n * {messages.map(msg => <Message key={msg.id} message={msg} />)}\n * {isStreaming && <LoadingIndicator />}\n * <input value={value} onChange={(e) => setValue(e.target.value)} />\n * <button disabled={isPending}>Send</button>\n * </form>\n * );\n * }\n * ```\n *\n * ## Type Imports\n *\n * Types are imported directly from specific files:\n * - Thread state: `import type { TamboV1Thread } from '@tambo-ai/react/v1/types/thread'`\n * - Messages: `import type { TamboV1Message } from '@tambo-ai/react/v1/types/message'`\n * - Custom events: `import type { ComponentStartEvent } from '@tambo-ai/react/v1/types/event'`\n *\n * SDK types: `import type { ... } from '@tambo-ai/typescript-sdk'`\n * AG-UI events: `import { EventType, type BaseEvent } from '@ag-ui/core'`\n */\n\n// =============================================================================\n// Providers\n// =============================================================================\n\nexport {\n TamboV1Provider,\n type TamboV1ProviderProps,\n useTamboV1Config,\n type TamboV1Config,\n} from \"./providers/tambo-v1-provider\";\n\n// Re-export registry provider from beta SDK (works with v1)\nexport { TamboRegistryProvider } from \"../providers/tambo-registry-provider\";\n\n// Re-export client provider from beta SDK (works with v1)\nexport {\n TamboClientProvider,\n useIsTamboTokenUpdating,\n} from \"../providers/tambo-client-provider\";\n\n// Re-export context helpers from beta SDK (works with v1)\nexport {\n TamboContextHelpersProvider,\n useTamboContextHelpers,\n} from \"../providers/tambo-context-helpers-provider\";\n\n// Export v1 thread input provider for advanced composition\nexport {\n TamboV1ThreadInputProvider,\n type TamboV1ThreadInputContextProps,\n type SubmitOptions,\n} from \"./providers/tambo-v1-thread-input-provider\";\n\n// Export v1 stub provider for testing\nexport {\n TamboV1StubProvider,\n type TamboV1StubProviderProps,\n} from \"./providers/tambo-v1-stub-provider\";\n\n// =============================================================================\n// Hooks\n// =============================================================================\n\nexport { useTamboV1 } from \"./hooks/use-tambo-v1\";\n\nexport { useTamboV1ThreadInput } from \"./hooks/use-tambo-v1-thread-input\";\n\nexport { useTamboV1Thread } from \"./hooks/use-tambo-v1-thread\";\n\nexport { useTamboV1ThreadList } from \"./hooks/use-tambo-v1-thread-list\";\n\nexport { useTamboV1ComponentState } from \"./hooks/use-tambo-v1-component-state\";\n\nexport {\n useTamboV1Suggestions,\n type UseTamboV1SuggestionsOptions,\n} from \"./hooks/use-tambo-v1-suggestions\";\n\n// Re-export client hook from beta SDK (works with v1)\nexport { useTamboClient } from \"../providers/tambo-client-provider\";\n\n// Re-export image handling hook (pure React, API-agnostic)\nexport {\n useMessageImages,\n type StagedImage,\n} from \"../hooks/use-message-images\";\n\n// Re-export voice input hook (uses standalone transcription API)\nexport { useTamboVoice } from \"../hooks/use-tambo-voice\";\n\n// =============================================================================\n// Re-exports from Beta SDK (compatible with v1)\n// =============================================================================\n\n// Tool definition helper\nexport { defineTool } from \"../util/registry\";\n\n// Built-in context helpers\nexport {\n currentPageContextHelper,\n currentTimeContextHelper,\n} from \"../context-helpers\";\n\n// Context helper types\nexport type {\n AdditionalContext,\n ContextHelperFn,\n ContextHelpers,\n} from \"../context-helpers\";\n\n// Component and tool types\nexport type {\n ComponentContextToolMetadata,\n ComponentRegistry,\n ParameterSpec,\n RegisteredComponent,\n TamboComponent,\n TamboTool,\n ToolAnnotations,\n} from \"../model/component-metadata\";\n\n// MCP server types\nexport { MCPTransport } from \"../model/mcp-server-info\";\nexport type {\n McpServerInfo,\n NormalizedMcpServerInfo,\n} from \"../model/mcp-server-info\";\n\n// Resource types\nexport type {\n ListResourceItem,\n ReadResourceResult,\n ResourceSource,\n} from \"../model/resource-info\";\n\n// Error types from Tambo TypeScript SDK\nexport type {\n APIError,\n RateLimitError,\n TamboAIError,\n} from \"@tambo-ai/typescript-sdk\";\n\n// Suggestion types from Tambo TypeScript SDK\nexport type {\n Suggestion,\n SuggestionGenerateParams,\n SuggestionGenerateResponse,\n SuggestionListResponse,\n} from \"@tambo-ai/typescript-sdk/resources/beta/threads/suggestions\";\n"]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Composes the necessary providers for the v1 SDK:
|
|
5
5
|
* - TamboClientProvider: API client and authentication
|
|
6
6
|
* - TamboRegistryProvider: Component and tool registration
|
|
7
|
+
* - TamboContextHelpersProvider: Context helper functions
|
|
7
8
|
* - TamboV1StreamProvider: Streaming state management
|
|
8
9
|
*
|
|
9
10
|
* This provider should wrap your entire application or the portion
|
|
@@ -13,7 +14,28 @@ import React, { type PropsWithChildren } from "react";
|
|
|
13
14
|
import { QueryClient } from "@tanstack/react-query";
|
|
14
15
|
import { type TamboClientProviderProps } from "../../providers/tambo-client-provider";
|
|
15
16
|
import { type TamboRegistryProviderProps } from "../../providers/tambo-registry-provider";
|
|
17
|
+
import type { ContextHelpers } from "../../context-helpers";
|
|
16
18
|
import type { McpServerInfo } from "../../model/mcp-server-info";
|
|
19
|
+
import type { ListResourceItem, ResourceSource } from "../../model/resource-info";
|
|
20
|
+
/**
|
|
21
|
+
* Configuration values for v1 SDK.
|
|
22
|
+
* These are static values that don't change during the session.
|
|
23
|
+
*/
|
|
24
|
+
export interface TamboV1Config {
|
|
25
|
+
/** User key for thread ownership and scoping */
|
|
26
|
+
userKey?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Context for v1 SDK configuration.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
export declare const TamboV1ConfigContext: React.Context<TamboV1Config | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Hook to access v1 SDK configuration.
|
|
35
|
+
* @returns Configuration values including userKey
|
|
36
|
+
* @throws {Error} If used outside TamboV1Provider
|
|
37
|
+
*/
|
|
38
|
+
export declare function useTamboV1Config(): TamboV1Config;
|
|
17
39
|
/**
|
|
18
40
|
* Props for TamboV1Provider
|
|
19
41
|
*/
|
|
@@ -38,6 +60,39 @@ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "ap
|
|
|
38
60
|
* If not provided, an error will be thrown for unknown tools.
|
|
39
61
|
*/
|
|
40
62
|
onCallUnregisteredTool?: TamboRegistryProviderProps["onCallUnregisteredTool"];
|
|
63
|
+
/**
|
|
64
|
+
* Static resources to register with the registry.
|
|
65
|
+
* These will be available for the AI to access.
|
|
66
|
+
*/
|
|
67
|
+
resources?: ListResourceItem[];
|
|
68
|
+
/**
|
|
69
|
+
* Dynamic resource search function.
|
|
70
|
+
* Must be paired with getResource.
|
|
71
|
+
* Called when searching for resources dynamically.
|
|
72
|
+
*/
|
|
73
|
+
listResources?: ResourceSource["listResources"];
|
|
74
|
+
/**
|
|
75
|
+
* Dynamic resource fetch function.
|
|
76
|
+
* Must be paired with listResources.
|
|
77
|
+
* Called when fetching a specific resource by URI.
|
|
78
|
+
*/
|
|
79
|
+
getResource?: ResourceSource["getResource"];
|
|
80
|
+
/**
|
|
81
|
+
* Configuration for context helpers.
|
|
82
|
+
* A dictionary of functions that provide additional context to the AI.
|
|
83
|
+
* Each key becomes the context name, and the function returns the value.
|
|
84
|
+
*/
|
|
85
|
+
contextHelpers?: ContextHelpers;
|
|
86
|
+
/**
|
|
87
|
+
* User key for thread ownership and scoping.
|
|
88
|
+
*
|
|
89
|
+
* **Required**: You must provide either `userKey` OR `userToken` (which contains a userKey).
|
|
90
|
+
* All thread operations (create, list, fetch) only return threads owned by this userKey.
|
|
91
|
+
*
|
|
92
|
+
* - Use `userKey` for server-side or trusted environments where you control the user identity
|
|
93
|
+
* - Use `userToken` (OAuth bearer token) for client-side apps where the token contains the userKey
|
|
94
|
+
*/
|
|
95
|
+
userKey?: string;
|
|
41
96
|
/**
|
|
42
97
|
* Optional custom QueryClient instance.
|
|
43
98
|
* If not provided, a default client will be created.
|
|
@@ -67,6 +122,11 @@ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "ap
|
|
|
67
122
|
* @param props.tools - Tools to register for client-side execution
|
|
68
123
|
* @param props.mcpServers - MCP servers to register for additional tools/resources
|
|
69
124
|
* @param props.onCallUnregisteredTool - Callback for handling unknown tool calls
|
|
125
|
+
* @param props.resources - Static resources to register with the AI
|
|
126
|
+
* @param props.listResources - Dynamic resource search function (must be paired with getResource)
|
|
127
|
+
* @param props.getResource - Dynamic resource fetch function (must be paired with listResources)
|
|
128
|
+
* @param props.contextHelpers - Configuration for context helper functions
|
|
129
|
+
* @param props.userKey - User key for thread ownership (required if not using userToken)
|
|
70
130
|
* @param props.queryClient - Optional custom React Query client
|
|
71
131
|
* @param props.children - Child components
|
|
72
132
|
* @returns Provider component tree
|
|
@@ -87,5 +147,5 @@ export interface TamboV1ProviderProps extends Pick<TamboClientProviderProps, "ap
|
|
|
87
147
|
* }
|
|
88
148
|
* ```
|
|
89
149
|
*/
|
|
90
|
-
export declare function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, queryClient, children, }: PropsWithChildren<TamboV1ProviderProps>): React.JSX.Element;
|
|
150
|
+
export declare function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, userKey, queryClient, children, }: PropsWithChildren<TamboV1ProviderProps>): React.JSX.Element;
|
|
91
151
|
//# sourceMappingURL=tambo-v1-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-v1-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"tambo-v1-provider.d.ts","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAGZ,KAAK,iBAAiB,EAEvB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAuB,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACf,MAAM,2BAA2B,CAAC;AAInC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qCAA4C,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAMhD;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,wBAAwB,EACxB,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CACpD;IACC;;;OAGG;IACH,UAAU,CAAC,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAEtD;;;OAGG;IACH,KAAK,CAAC,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAE5C;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;IAExC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;IAE9E;;;OAGG;IACH,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/B;;;;OAIG;IACH,aAAa,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAC;IAEhD;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAE5C;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,QAAQ,GACT,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,qBAkDzC"}
|
|
@@ -5,16 +5,36 @@
|
|
|
5
5
|
* Composes the necessary providers for the v1 SDK:
|
|
6
6
|
* - TamboClientProvider: API client and authentication
|
|
7
7
|
* - TamboRegistryProvider: Component and tool registration
|
|
8
|
+
* - TamboContextHelpersProvider: Context helper functions
|
|
8
9
|
* - TamboV1StreamProvider: Streaming state management
|
|
9
10
|
*
|
|
10
11
|
* This provider should wrap your entire application or the portion
|
|
11
12
|
* that needs access to Tambo v1 functionality.
|
|
12
13
|
*/
|
|
13
|
-
import React, { useState } from "react";
|
|
14
|
+
import React, { createContext, useContext, useState, } from "react";
|
|
14
15
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
15
16
|
import { TamboClientProvider, } from "../../providers/tambo-client-provider";
|
|
16
17
|
import { TamboRegistryProvider, } from "../../providers/tambo-registry-provider";
|
|
18
|
+
import { TamboContextHelpersProvider } from "../../providers/tambo-context-helpers-provider";
|
|
17
19
|
import { TamboV1StreamProvider } from "./tambo-v1-stream-context";
|
|
20
|
+
import { TamboV1ThreadInputProvider } from "./tambo-v1-thread-input-provider";
|
|
21
|
+
/**
|
|
22
|
+
* Context for v1 SDK configuration.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export const TamboV1ConfigContext = createContext(null);
|
|
26
|
+
/**
|
|
27
|
+
* Hook to access v1 SDK configuration.
|
|
28
|
+
* @returns Configuration values including userKey
|
|
29
|
+
* @throws {Error} If used outside TamboV1Provider
|
|
30
|
+
*/
|
|
31
|
+
export function useTamboV1Config() {
|
|
32
|
+
const config = useContext(TamboV1ConfigContext);
|
|
33
|
+
if (!config) {
|
|
34
|
+
throw new Error("useTamboV1Config must be used within TamboV1Provider");
|
|
35
|
+
}
|
|
36
|
+
return config;
|
|
37
|
+
}
|
|
18
38
|
/**
|
|
19
39
|
* Main provider for the Tambo v1 SDK.
|
|
20
40
|
*
|
|
@@ -34,6 +54,11 @@ import { TamboV1StreamProvider } from "./tambo-v1-stream-context";
|
|
|
34
54
|
* @param props.tools - Tools to register for client-side execution
|
|
35
55
|
* @param props.mcpServers - MCP servers to register for additional tools/resources
|
|
36
56
|
* @param props.onCallUnregisteredTool - Callback for handling unknown tool calls
|
|
57
|
+
* @param props.resources - Static resources to register with the AI
|
|
58
|
+
* @param props.listResources - Dynamic resource search function (must be paired with getResource)
|
|
59
|
+
* @param props.getResource - Dynamic resource fetch function (must be paired with listResources)
|
|
60
|
+
* @param props.contextHelpers - Configuration for context helper functions
|
|
61
|
+
* @param props.userKey - User key for thread ownership (required if not using userToken)
|
|
37
62
|
* @param props.queryClient - Optional custom React Query client
|
|
38
63
|
* @param props.children - Child components
|
|
39
64
|
* @returns Provider component tree
|
|
@@ -54,7 +79,7 @@ import { TamboV1StreamProvider } from "./tambo-v1-stream-context";
|
|
|
54
79
|
* }
|
|
55
80
|
* ```
|
|
56
81
|
*/
|
|
57
|
-
export function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, queryClient, children, }) {
|
|
82
|
+
export function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, components, tools, mcpServers, onCallUnregisteredTool, resources, listResources, getResource, contextHelpers, userKey, queryClient, children, }) {
|
|
58
83
|
// Create a stable default QueryClient if none provided.
|
|
59
84
|
// Using useState to avoid SSR issues with module-level singletons.
|
|
60
85
|
const [defaultQueryClient] = useState(() => new QueryClient({
|
|
@@ -66,9 +91,14 @@ export function TamboV1Provider({ apiKey, tamboUrl, environment, userToken, comp
|
|
|
66
91
|
},
|
|
67
92
|
}));
|
|
68
93
|
const client = queryClient ?? defaultQueryClient;
|
|
94
|
+
// Config is static - created once and never changes
|
|
95
|
+
const config = { userKey };
|
|
69
96
|
return (React.createElement(QueryClientProvider, { client: client },
|
|
70
97
|
React.createElement(TamboClientProvider, { apiKey: apiKey, tamboUrl: tamboUrl, environment: environment, userToken: userToken },
|
|
71
|
-
React.createElement(TamboRegistryProvider, { components: components, tools: tools, mcpServers: mcpServers, onCallUnregisteredTool: onCallUnregisteredTool },
|
|
72
|
-
React.createElement(
|
|
98
|
+
React.createElement(TamboRegistryProvider, { components: components, tools: tools, mcpServers: mcpServers, onCallUnregisteredTool: onCallUnregisteredTool, resources: resources, listResources: listResources, getResource: getResource },
|
|
99
|
+
React.createElement(TamboContextHelpersProvider, { contextHelpers: contextHelpers },
|
|
100
|
+
React.createElement(TamboV1ConfigContext.Provider, { value: config },
|
|
101
|
+
React.createElement(TamboV1StreamProvider, null,
|
|
102
|
+
React.createElement(TamboV1ThreadInputProvider, null, children))))))));
|
|
73
103
|
}
|
|
74
104
|
//# sourceMappingURL=tambo-v1-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tambo-v1-provider.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAA0B,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,mBAAmB,GAEpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,qBAAqB,GAEtB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AA6ClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,QAAQ,GACgC;IACxC,wDAAwD;IACxD,mEAAmE;IACnE,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CACnC,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,CAAC;aACT;SACF;KACF,CAAC,CACL,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,IAAI,kBAAkB,CAAC;IAEjD,OAAO,CACL,oBAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM;QACjC,oBAAC,mBAAmB,IAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS;YAEpB,oBAAC,qBAAqB,IACpB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB;gBAE9C,oBAAC,qBAAqB,QAAE,QAAQ,CAAyB,CACnC,CACJ,CACF,CACvB,CAAC;AACJ,CAAC","sourcesContent":["\"use client\";\n\n/**\n * TamboV1Provider - Main Provider for v1 API\n *\n * Composes the necessary providers for the v1 SDK:\n * - TamboClientProvider: API client and authentication\n * - TamboRegistryProvider: Component and tool registration\n * - TamboV1StreamProvider: Streaming state management\n *\n * This provider should wrap your entire application or the portion\n * that needs access to Tambo v1 functionality.\n */\n\nimport React, { type PropsWithChildren, useState } from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n TamboClientProvider,\n type TamboClientProviderProps,\n} from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryProvider,\n type TamboRegistryProviderProps,\n} from \"../../providers/tambo-registry-provider\";\nimport type { McpServerInfo } from \"../../model/mcp-server-info\";\nimport { TamboV1StreamProvider } from \"./tambo-v1-stream-context\";\n\n/**\n * Props for TamboV1Provider\n */\nexport interface TamboV1ProviderProps extends Pick<\n TamboClientProviderProps,\n \"apiKey\" | \"tamboUrl\" | \"environment\" | \"userToken\"\n> {\n /**\n * Components to register with the registry.\n * These will be available for the AI to use in responses.\n */\n components?: TamboRegistryProviderProps[\"components\"];\n\n /**\n * Tools to register with the registry.\n * These will be executed client-side when requested by the AI.\n */\n tools?: TamboRegistryProviderProps[\"tools\"];\n\n /**\n * MCP servers to register with the registry.\n * These provide additional tools and resources from MCP-compatible servers.\n */\n mcpServers?: (McpServerInfo | string)[];\n\n /**\n * Callback function called when an unregistered tool is called.\n * If not provided, an error will be thrown for unknown tools.\n */\n onCallUnregisteredTool?: TamboRegistryProviderProps[\"onCallUnregisteredTool\"];\n\n /**\n * Optional custom QueryClient instance.\n * If not provided, a default client will be created.\n */\n queryClient?: QueryClient;\n\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * Main provider for the Tambo v1 SDK.\n *\n * Composes TamboClientProvider, TamboRegistryProvider, and TamboV1StreamProvider\n * to provide a complete context for building AI-powered applications.\n *\n * Threads are managed dynamically through useTamboV1() hook functions:\n * - startNewThread() - Begin a new conversation\n * - switchThread(threadId) - Switch to an existing thread\n * - initThread(threadId) - Initialize a thread for receiving events\n * @param props - Provider configuration\n * @param props.apiKey - Tambo API key for authentication\n * @param props.tamboUrl - Optional custom Tambo API URL\n * @param props.environment - Optional environment configuration\n * @param props.userToken - Optional OAuth token for user authentication\n * @param props.components - Components to register with the AI\n * @param props.tools - Tools to register for client-side execution\n * @param props.mcpServers - MCP servers to register for additional tools/resources\n * @param props.onCallUnregisteredTool - Callback for handling unknown tool calls\n * @param props.queryClient - Optional custom React Query client\n * @param props.children - Child components\n * @returns Provider component tree\n * @example\n * ```tsx\n * import { TamboV1Provider } from '@tambo-ai/react/v1';\n *\n * function App() {\n * return (\n * <TamboV1Provider\n * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}\n * components={[WeatherCard, StockChart]}\n * tools={[searchTool, calculatorTool]}\n * >\n * <ChatInterface />\n * </TamboV1Provider>\n * );\n * }\n * ```\n */\nexport function TamboV1Provider({\n apiKey,\n tamboUrl,\n environment,\n userToken,\n components,\n tools,\n mcpServers,\n onCallUnregisteredTool,\n queryClient,\n children,\n}: PropsWithChildren<TamboV1ProviderProps>) {\n // Create a stable default QueryClient if none provided.\n // Using useState to avoid SSR issues with module-level singletons.\n const [defaultQueryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 1000,\n retry: 1,\n },\n },\n }),\n );\n\n const client = queryClient ?? defaultQueryClient;\n\n return (\n <QueryClientProvider client={client}>\n <TamboClientProvider\n apiKey={apiKey}\n tamboUrl={tamboUrl}\n environment={environment}\n userToken={userToken}\n >\n <TamboRegistryProvider\n components={components}\n tools={tools}\n mcpServers={mcpServers}\n onCallUnregisteredTool={onCallUnregisteredTool}\n >\n <TamboV1StreamProvider>{children}</TamboV1StreamProvider>\n </TamboRegistryProvider>\n </TamboClientProvider>\n </QueryClientProvider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tambo-v1-provider.js","sourceRoot":"","sources":["../../../src/v1/providers/tambo-v1-provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,UAAU,EAEV,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EACL,mBAAmB,GAEpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,qBAAqB,GAEtB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAO7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAW9E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAuB,IAAI,CAAC,CAAC;AAE9E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAmFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,KAAK,EACL,UAAU,EACV,sBAAsB,EACtB,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,OAAO,EACP,WAAW,EACX,QAAQ,GACgC;IACxC,wDAAwD;IACxD,mEAAmE;IACnE,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CACnC,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;QACd,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,CAAC;aACT;SACF;KACF,CAAC,CACL,CAAC;IAEF,MAAM,MAAM,GAAG,WAAW,IAAI,kBAAkB,CAAC;IAEjD,oDAAoD;IACpD,MAAM,MAAM,GAAkB,EAAE,OAAO,EAAE,CAAC;IAE1C,OAAO,CACL,oBAAC,mBAAmB,IAAC,MAAM,EAAE,MAAM;QACjC,oBAAC,mBAAmB,IAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS;YAEpB,oBAAC,qBAAqB,IACpB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW;gBAExB,oBAAC,2BAA2B,IAAC,cAAc,EAAE,cAAc;oBACzD,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM;wBAC1C,oBAAC,qBAAqB;4BACpB,oBAAC,0BAA0B,QACxB,QAAQ,CACkB,CACP,CACM,CACJ,CACR,CACJ,CACF,CACvB,CAAC;AACJ,CAAC","sourcesContent":["\"use client\";\n\n/**\n * TamboV1Provider - Main Provider for v1 API\n *\n * Composes the necessary providers for the v1 SDK:\n * - TamboClientProvider: API client and authentication\n * - TamboRegistryProvider: Component and tool registration\n * - TamboContextHelpersProvider: Context helper functions\n * - TamboV1StreamProvider: Streaming state management\n *\n * This provider should wrap your entire application or the portion\n * that needs access to Tambo v1 functionality.\n */\n\nimport React, {\n createContext,\n useContext,\n type PropsWithChildren,\n useState,\n} from \"react\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport {\n TamboClientProvider,\n type TamboClientProviderProps,\n} from \"../../providers/tambo-client-provider\";\nimport {\n TamboRegistryProvider,\n type TamboRegistryProviderProps,\n} from \"../../providers/tambo-registry-provider\";\nimport { TamboContextHelpersProvider } from \"../../providers/tambo-context-helpers-provider\";\nimport type { ContextHelpers } from \"../../context-helpers\";\nimport type { McpServerInfo } from \"../../model/mcp-server-info\";\nimport type {\n ListResourceItem,\n ResourceSource,\n} from \"../../model/resource-info\";\nimport { TamboV1StreamProvider } from \"./tambo-v1-stream-context\";\nimport { TamboV1ThreadInputProvider } from \"./tambo-v1-thread-input-provider\";\n\n/**\n * Configuration values for v1 SDK.\n * These are static values that don't change during the session.\n */\nexport interface TamboV1Config {\n /** User key for thread ownership and scoping */\n userKey?: string;\n}\n\n/**\n * Context for v1 SDK configuration.\n * @internal\n */\nexport const TamboV1ConfigContext = createContext<TamboV1Config | null>(null);\n\n/**\n * Hook to access v1 SDK configuration.\n * @returns Configuration values including userKey\n * @throws {Error} If used outside TamboV1Provider\n */\nexport function useTamboV1Config(): TamboV1Config {\n const config = useContext(TamboV1ConfigContext);\n if (!config) {\n throw new Error(\"useTamboV1Config must be used within TamboV1Provider\");\n }\n return config;\n}\n\n/**\n * Props for TamboV1Provider\n */\nexport interface TamboV1ProviderProps extends Pick<\n TamboClientProviderProps,\n \"apiKey\" | \"tamboUrl\" | \"environment\" | \"userToken\"\n> {\n /**\n * Components to register with the registry.\n * These will be available for the AI to use in responses.\n */\n components?: TamboRegistryProviderProps[\"components\"];\n\n /**\n * Tools to register with the registry.\n * These will be executed client-side when requested by the AI.\n */\n tools?: TamboRegistryProviderProps[\"tools\"];\n\n /**\n * MCP servers to register with the registry.\n * These provide additional tools and resources from MCP-compatible servers.\n */\n mcpServers?: (McpServerInfo | string)[];\n\n /**\n * Callback function called when an unregistered tool is called.\n * If not provided, an error will be thrown for unknown tools.\n */\n onCallUnregisteredTool?: TamboRegistryProviderProps[\"onCallUnregisteredTool\"];\n\n /**\n * Static resources to register with the registry.\n * These will be available for the AI to access.\n */\n resources?: ListResourceItem[];\n\n /**\n * Dynamic resource search function.\n * Must be paired with getResource.\n * Called when searching for resources dynamically.\n */\n listResources?: ResourceSource[\"listResources\"];\n\n /**\n * Dynamic resource fetch function.\n * Must be paired with listResources.\n * Called when fetching a specific resource by URI.\n */\n getResource?: ResourceSource[\"getResource\"];\n\n /**\n * Configuration for context helpers.\n * A dictionary of functions that provide additional context to the AI.\n * Each key becomes the context name, and the function returns the value.\n */\n contextHelpers?: ContextHelpers;\n\n /**\n * User key for thread ownership and scoping.\n *\n * **Required**: You must provide either `userKey` OR `userToken` (which contains a userKey).\n * All thread operations (create, list, fetch) only return threads owned by this userKey.\n *\n * - Use `userKey` for server-side or trusted environments where you control the user identity\n * - Use `userToken` (OAuth bearer token) for client-side apps where the token contains the userKey\n */\n userKey?: string;\n\n /**\n * Optional custom QueryClient instance.\n * If not provided, a default client will be created.\n */\n queryClient?: QueryClient;\n\n /**\n * Children components\n */\n children: React.ReactNode;\n}\n\n/**\n * Main provider for the Tambo v1 SDK.\n *\n * Composes TamboClientProvider, TamboRegistryProvider, and TamboV1StreamProvider\n * to provide a complete context for building AI-powered applications.\n *\n * Threads are managed dynamically through useTamboV1() hook functions:\n * - startNewThread() - Begin a new conversation\n * - switchThread(threadId) - Switch to an existing thread\n * - initThread(threadId) - Initialize a thread for receiving events\n * @param props - Provider configuration\n * @param props.apiKey - Tambo API key for authentication\n * @param props.tamboUrl - Optional custom Tambo API URL\n * @param props.environment - Optional environment configuration\n * @param props.userToken - Optional OAuth token for user authentication\n * @param props.components - Components to register with the AI\n * @param props.tools - Tools to register for client-side execution\n * @param props.mcpServers - MCP servers to register for additional tools/resources\n * @param props.onCallUnregisteredTool - Callback for handling unknown tool calls\n * @param props.resources - Static resources to register with the AI\n * @param props.listResources - Dynamic resource search function (must be paired with getResource)\n * @param props.getResource - Dynamic resource fetch function (must be paired with listResources)\n * @param props.contextHelpers - Configuration for context helper functions\n * @param props.userKey - User key for thread ownership (required if not using userToken)\n * @param props.queryClient - Optional custom React Query client\n * @param props.children - Child components\n * @returns Provider component tree\n * @example\n * ```tsx\n * import { TamboV1Provider } from '@tambo-ai/react/v1';\n *\n * function App() {\n * return (\n * <TamboV1Provider\n * apiKey={process.env.NEXT_PUBLIC_TAMBO_API_KEY!}\n * components={[WeatherCard, StockChart]}\n * tools={[searchTool, calculatorTool]}\n * >\n * <ChatInterface />\n * </TamboV1Provider>\n * );\n * }\n * ```\n */\nexport function TamboV1Provider({\n apiKey,\n tamboUrl,\n environment,\n userToken,\n components,\n tools,\n mcpServers,\n onCallUnregisteredTool,\n resources,\n listResources,\n getResource,\n contextHelpers,\n userKey,\n queryClient,\n children,\n}: PropsWithChildren<TamboV1ProviderProps>) {\n // Create a stable default QueryClient if none provided.\n // Using useState to avoid SSR issues with module-level singletons.\n const [defaultQueryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 1000,\n retry: 1,\n },\n },\n }),\n );\n\n const client = queryClient ?? defaultQueryClient;\n\n // Config is static - created once and never changes\n const config: TamboV1Config = { userKey };\n\n return (\n <QueryClientProvider client={client}>\n <TamboClientProvider\n apiKey={apiKey}\n tamboUrl={tamboUrl}\n environment={environment}\n userToken={userToken}\n >\n <TamboRegistryProvider\n components={components}\n tools={tools}\n mcpServers={mcpServers}\n onCallUnregisteredTool={onCallUnregisteredTool}\n resources={resources}\n listResources={listResources}\n getResource={getResource}\n >\n <TamboContextHelpersProvider contextHelpers={contextHelpers}>\n <TamboV1ConfigContext.Provider value={config}>\n <TamboV1StreamProvider>\n <TamboV1ThreadInputProvider>\n {children}\n </TamboV1ThreadInputProvider>\n </TamboV1StreamProvider>\n </TamboV1ConfigContext.Provider>\n </TamboContextHelpersProvider>\n </TamboRegistryProvider>\n </TamboClientProvider>\n </QueryClientProvider>\n );\n}\n"]}
|