@tambo-ai/react 0.69.1 → 0.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/hooks/use-tambo-threads.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.d.ts +4 -5
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +4 -5
- package/dist/mcp/index.js.map +1 -1
- package/dist/model/component-metadata.d.ts +88 -241
- 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 -3
- package/dist/model/mcp-server-info.js.map +1 -1
- package/dist/providers/hooks/use-tambo-session-token.test.js.map +1 -1
- package/dist/providers/tambo-component-provider.d.ts +2 -2
- package/dist/providers/tambo-component-provider.d.ts.map +1 -1
- package/dist/providers/tambo-component-provider.js.map +1 -1
- package/dist/providers/tambo-interactable-provider.d.ts +1 -1
- package/dist/providers/tambo-registry-provider.d.ts +4 -4
- package/dist/providers/tambo-registry-provider.d.ts.map +1 -1
- package/dist/providers/tambo-registry-provider.js +11 -8
- package/dist/providers/tambo-registry-provider.js.map +1 -1
- package/dist/providers/tambo-registry-provider.test.js +31 -0
- package/dist/providers/tambo-registry-provider.test.js.map +1 -1
- package/dist/providers/tambo-registry-schema-compat.test.js +42 -52
- package/dist/providers/tambo-registry-schema-compat.test.js.map +1 -1
- package/dist/providers/tambo-stubs.d.ts +2 -2
- package/dist/providers/tambo-stubs.d.ts.map +1 -1
- package/dist/providers/tambo-stubs.js.map +1 -1
- package/dist/providers/tambo-thread-provider-initial-messages.test.js.map +1 -1
- package/dist/providers/tambo-thread-provider.d.ts.map +1 -1
- package/dist/providers/tambo-thread-provider.js +107 -141
- package/dist/providers/tambo-thread-provider.js.map +1 -1
- package/dist/providers/tambo-thread-provider.test.js +274 -445
- package/dist/providers/tambo-thread-provider.test.js.map +1 -1
- package/dist/schema/index.d.ts +1 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -5
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/schema.d.ts +7 -24
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +34 -105
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/schema.test.js +26 -124
- package/dist/schema/schema.test.js.map +1 -1
- package/dist/testing/tools.d.ts +2 -12
- package/dist/testing/tools.d.ts.map +1 -1
- package/dist/testing/tools.js +1 -20
- package/dist/testing/tools.js.map +1 -1
- package/dist/testing/types.d.ts +2 -2
- package/dist/testing/types.d.ts.map +1 -1
- package/dist/testing/types.js.map +1 -1
- package/dist/util/registry-validators.d.ts +2 -2
- package/dist/util/registry-validators.d.ts.map +1 -1
- package/dist/util/registry-validators.js +37 -17
- package/dist/util/registry-validators.js.map +1 -1
- package/dist/util/registry-validators.test.js +64 -25
- package/dist/util/registry-validators.test.js.map +1 -1
- package/dist/util/registry.d.ts +4 -10
- package/dist/util/registry.d.ts.map +1 -1
- package/dist/util/registry.js +6 -22
- package/dist/util/registry.js.map +1 -1
- package/dist/util/registry.test.js +1 -47
- package/dist/util/registry.test.js.map +1 -1
- package/dist/util/tool-caller.d.ts +2 -2
- package/dist/util/tool-caller.d.ts.map +1 -1
- package/dist/util/tool-caller.js +5 -12
- package/dist/util/tool-caller.js.map +1 -1
- package/dist/v1/hooks/use-tambo-v1-messages.d.ts +58 -0
- package/dist/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-messages.js +54 -0
- package/dist/v1/hooks/use-tambo-v1-messages.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-messages.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-messages.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-messages.test.js +137 -0
- package/dist/v1/hooks/use-tambo-v1-messages.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts +96 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.js +227 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js +827 -0
- package/dist/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts +61 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.js +56 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js +98 -0
- package/dist/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread.d.ts +37 -0
- package/dist/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread.js +49 -0
- package/dist/v1/hooks/use-tambo-v1-thread.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1-thread.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1-thread.test.js +83 -0
- package/dist/v1/hooks/use-tambo-v1-thread.test.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1.d.ts +107 -0
- package/dist/v1/hooks/use-tambo-v1.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1.js +87 -0
- package/dist/v1/hooks/use-tambo-v1.js.map +1 -0
- package/dist/v1/hooks/use-tambo-v1.test.d.ts +2 -0
- package/dist/v1/hooks/use-tambo-v1.test.d.ts.map +1 -0
- package/dist/v1/hooks/use-tambo-v1.test.js +150 -0
- package/dist/v1/hooks/use-tambo-v1.test.js.map +1 -0
- package/dist/v1/index.d.ts +73 -0
- package/dist/v1/index.d.ts.map +1 -0
- package/dist/v1/index.js +106 -0
- package/dist/v1/index.js.map +1 -0
- package/dist/v1/providers/tambo-v1-provider.d.ts +91 -0
- package/dist/v1/providers/tambo-v1-provider.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-provider.js +110 -0
- package/dist/v1/providers/tambo-v1-provider.js.map +1 -0
- package/dist/v1/providers/tambo-v1-provider.test.d.ts +2 -0
- package/dist/v1/providers/tambo-v1-provider.test.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-provider.test.js +123 -0
- package/dist/v1/providers/tambo-v1-provider.test.js.map +1 -0
- package/dist/v1/providers/tambo-v1-stream-context.d.ts +136 -0
- package/dist/v1/providers/tambo-v1-stream-context.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-stream-context.js +230 -0
- package/dist/v1/providers/tambo-v1-stream-context.js.map +1 -0
- package/dist/v1/providers/tambo-v1-stream-context.test.d.ts +2 -0
- package/dist/v1/providers/tambo-v1-stream-context.test.d.ts.map +1 -0
- package/dist/v1/providers/tambo-v1-stream-context.test.js +85 -0
- package/dist/v1/providers/tambo-v1-stream-context.test.js.map +1 -0
- package/dist/v1/types/component.d.ts +50 -0
- package/dist/v1/types/component.d.ts.map +1 -0
- package/dist/v1/types/component.js +14 -0
- package/dist/v1/types/component.js.map +1 -0
- package/dist/v1/types/event.d.ts +72 -0
- package/dist/v1/types/event.d.ts.map +1 -0
- package/dist/v1/types/event.js +54 -0
- package/dist/v1/types/event.js.map +1 -0
- package/dist/v1/types/event.test.d.ts +2 -0
- package/dist/v1/types/event.test.d.ts.map +1 -0
- package/dist/v1/types/event.test.js +70 -0
- package/dist/v1/types/event.test.js.map +1 -0
- package/dist/v1/types/message.d.ts +35 -0
- package/dist/v1/types/message.d.ts.map +1 -0
- package/dist/v1/types/message.js +10 -0
- package/dist/v1/types/message.js.map +1 -0
- package/dist/v1/types/thread.d.ts +52 -0
- package/dist/v1/types/thread.d.ts.map +1 -0
- package/dist/v1/types/thread.js +9 -0
- package/dist/v1/types/thread.js.map +1 -0
- package/dist/v1/utils/event-accumulator.d.ts +100 -0
- package/dist/v1/utils/event-accumulator.d.ts.map +1 -0
- package/dist/v1/utils/event-accumulator.js +715 -0
- package/dist/v1/utils/event-accumulator.js.map +1 -0
- package/dist/v1/utils/event-accumulator.test.d.ts +2 -0
- package/dist/v1/utils/event-accumulator.test.d.ts.map +1 -0
- package/dist/v1/utils/event-accumulator.test.js +1010 -0
- package/dist/v1/utils/event-accumulator.test.js.map +1 -0
- package/dist/v1/utils/json-patch.d.ts +18 -0
- package/dist/v1/utils/json-patch.d.ts.map +1 -0
- package/dist/v1/utils/json-patch.js +35 -0
- package/dist/v1/utils/json-patch.js.map +1 -0
- package/dist/v1/utils/json-patch.test.d.ts +2 -0
- package/dist/v1/utils/json-patch.test.d.ts.map +1 -0
- package/dist/v1/utils/json-patch.test.js +28 -0
- package/dist/v1/utils/json-patch.test.js.map +1 -0
- package/dist/v1/utils/registry-conversion.d.ts +53 -0
- package/dist/v1/utils/registry-conversion.d.ts.map +1 -0
- package/dist/v1/utils/registry-conversion.js +114 -0
- package/dist/v1/utils/registry-conversion.js.map +1 -0
- package/dist/v1/utils/registry-conversion.test.d.ts +2 -0
- package/dist/v1/utils/registry-conversion.test.d.ts.map +1 -0
- package/dist/v1/utils/registry-conversion.test.js +179 -0
- package/dist/v1/utils/registry-conversion.test.js.map +1 -0
- package/dist/v1/utils/stream-handler.d.ts +45 -0
- package/dist/v1/utils/stream-handler.d.ts.map +1 -0
- package/dist/v1/utils/stream-handler.js +47 -0
- package/dist/v1/utils/stream-handler.js.map +1 -0
- package/dist/v1/utils/stream-handler.test.d.ts +2 -0
- package/dist/v1/utils/stream-handler.test.d.ts.map +1 -0
- package/dist/v1/utils/stream-handler.test.js +74 -0
- package/dist/v1/utils/stream-handler.test.js.map +1 -0
- package/dist/v1/utils/tool-call-tracker.d.ts +41 -0
- package/dist/v1/utils/tool-call-tracker.d.ts.map +1 -0
- package/dist/v1/utils/tool-call-tracker.js +90 -0
- package/dist/v1/utils/tool-call-tracker.js.map +1 -0
- package/dist/v1/utils/tool-executor.d.ts +33 -0
- package/dist/v1/utils/tool-executor.d.ts.map +1 -0
- package/dist/v1/utils/tool-executor.js +103 -0
- package/dist/v1/utils/tool-executor.js.map +1 -0
- package/dist/v1/utils/tool-executor.test.d.ts +2 -0
- package/dist/v1/utils/tool-executor.test.d.ts.map +1 -0
- package/dist/v1/utils/tool-executor.test.js +222 -0
- package/dist/v1/utils/tool-executor.test.js.map +1 -0
- package/esm/hooks/use-tambo-threads.test.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js.map +1 -1
- package/esm/mcp/index.d.ts +4 -5
- package/esm/mcp/index.d.ts.map +1 -1
- package/esm/mcp/index.js +4 -5
- package/esm/mcp/index.js.map +1 -1
- package/esm/model/component-metadata.d.ts +88 -241
- 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 -3
- package/esm/model/mcp-server-info.js.map +1 -1
- package/esm/providers/hooks/use-tambo-session-token.test.js.map +1 -1
- package/esm/providers/tambo-component-provider.d.ts +2 -2
- package/esm/providers/tambo-component-provider.d.ts.map +1 -1
- package/esm/providers/tambo-component-provider.js.map +1 -1
- package/esm/providers/tambo-interactable-provider.d.ts +1 -1
- package/esm/providers/tambo-registry-provider.d.ts +4 -4
- package/esm/providers/tambo-registry-provider.d.ts.map +1 -1
- package/esm/providers/tambo-registry-provider.js +11 -8
- package/esm/providers/tambo-registry-provider.js.map +1 -1
- package/esm/providers/tambo-registry-provider.test.js +31 -0
- package/esm/providers/tambo-registry-provider.test.js.map +1 -1
- package/esm/providers/tambo-registry-schema-compat.test.js +42 -52
- package/esm/providers/tambo-registry-schema-compat.test.js.map +1 -1
- package/esm/providers/tambo-stubs.d.ts +2 -2
- package/esm/providers/tambo-stubs.d.ts.map +1 -1
- package/esm/providers/tambo-stubs.js.map +1 -1
- package/esm/providers/tambo-thread-provider-initial-messages.test.js.map +1 -1
- package/esm/providers/tambo-thread-provider.d.ts.map +1 -1
- package/esm/providers/tambo-thread-provider.js +107 -141
- package/esm/providers/tambo-thread-provider.js.map +1 -1
- package/esm/providers/tambo-thread-provider.test.js +241 -445
- package/esm/providers/tambo-thread-provider.test.js.map +1 -1
- package/esm/schema/index.d.ts +1 -2
- package/esm/schema/index.d.ts.map +1 -1
- package/esm/schema/index.js +1 -2
- package/esm/schema/index.js.map +1 -1
- package/esm/schema/schema.d.ts +7 -24
- package/esm/schema/schema.d.ts.map +1 -1
- package/esm/schema/schema.js +34 -103
- package/esm/schema/schema.js.map +1 -1
- package/esm/schema/schema.test.js +27 -125
- package/esm/schema/schema.test.js.map +1 -1
- package/esm/testing/tools.d.ts +2 -12
- package/esm/testing/tools.d.ts.map +1 -1
- package/esm/testing/tools.js +2 -20
- package/esm/testing/tools.js.map +1 -1
- package/esm/testing/types.d.ts +2 -2
- package/esm/testing/types.d.ts.map +1 -1
- package/esm/testing/types.js.map +1 -1
- package/esm/util/registry-validators.d.ts +2 -2
- package/esm/util/registry-validators.d.ts.map +1 -1
- package/esm/util/registry-validators.js +38 -18
- package/esm/util/registry-validators.js.map +1 -1
- package/esm/util/registry-validators.test.js +64 -25
- package/esm/util/registry-validators.test.js.map +1 -1
- package/esm/util/registry.d.ts +4 -10
- package/esm/util/registry.d.ts.map +1 -1
- package/esm/util/registry.js +7 -22
- package/esm/util/registry.js.map +1 -1
- package/esm/util/registry.test.js +3 -49
- package/esm/util/registry.test.js.map +1 -1
- package/esm/util/tool-caller.d.ts +2 -2
- package/esm/util/tool-caller.d.ts.map +1 -1
- package/esm/util/tool-caller.js +5 -12
- package/esm/util/tool-caller.js.map +1 -1
- package/esm/v1/hooks/use-tambo-v1-messages.d.ts +58 -0
- package/esm/v1/hooks/use-tambo-v1-messages.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-messages.js +51 -0
- package/esm/v1/hooks/use-tambo-v1-messages.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-messages.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-messages.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-messages.test.js +132 -0
- package/esm/v1/hooks/use-tambo-v1-messages.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts +96 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.js +223 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js +822 -0
- package/esm/v1/hooks/use-tambo-v1-send-message.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts +61 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.js +53 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js +93 -0
- package/esm/v1/hooks/use-tambo-v1-thread-list.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread.d.ts +37 -0
- package/esm/v1/hooks/use-tambo-v1-thread.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread.js +46 -0
- package/esm/v1/hooks/use-tambo-v1-thread.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1-thread.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1-thread.test.js +78 -0
- package/esm/v1/hooks/use-tambo-v1-thread.test.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1.d.ts +107 -0
- package/esm/v1/hooks/use-tambo-v1.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1.js +84 -0
- package/esm/v1/hooks/use-tambo-v1.js.map +1 -0
- package/esm/v1/hooks/use-tambo-v1.test.d.ts +2 -0
- package/esm/v1/hooks/use-tambo-v1.test.d.ts.map +1 -0
- package/esm/v1/hooks/use-tambo-v1.test.js +145 -0
- package/esm/v1/hooks/use-tambo-v1.test.js.map +1 -0
- package/esm/v1/index.d.ts +73 -0
- package/esm/v1/index.d.ts.map +1 -0
- package/esm/v1/index.js +83 -0
- package/esm/v1/index.js.map +1 -0
- package/esm/v1/providers/tambo-v1-provider.d.ts +91 -0
- package/esm/v1/providers/tambo-v1-provider.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-provider.js +74 -0
- package/esm/v1/providers/tambo-v1-provider.js.map +1 -0
- package/esm/v1/providers/tambo-v1-provider.test.d.ts +2 -0
- package/esm/v1/providers/tambo-v1-provider.test.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-provider.test.js +118 -0
- package/esm/v1/providers/tambo-v1-provider.test.js.map +1 -0
- package/esm/v1/providers/tambo-v1-stream-context.d.ts +136 -0
- package/esm/v1/providers/tambo-v1-stream-context.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-stream-context.js +191 -0
- package/esm/v1/providers/tambo-v1-stream-context.js.map +1 -0
- package/esm/v1/providers/tambo-v1-stream-context.test.d.ts +2 -0
- package/esm/v1/providers/tambo-v1-stream-context.test.d.ts.map +1 -0
- package/esm/v1/providers/tambo-v1-stream-context.test.js +80 -0
- package/esm/v1/providers/tambo-v1-stream-context.test.js.map +1 -0
- package/esm/v1/types/component.d.ts +50 -0
- package/esm/v1/types/component.d.ts.map +1 -0
- package/esm/v1/types/component.js +13 -0
- package/esm/v1/types/component.js.map +1 -0
- package/esm/v1/types/event.d.ts +72 -0
- package/esm/v1/types/event.d.ts.map +1 -0
- package/esm/v1/types/event.js +50 -0
- package/esm/v1/types/event.js.map +1 -0
- package/esm/v1/types/event.test.d.ts +2 -0
- package/esm/v1/types/event.test.d.ts.map +1 -0
- package/esm/v1/types/event.test.js +68 -0
- package/esm/v1/types/event.test.js.map +1 -0
- package/esm/v1/types/message.d.ts +35 -0
- package/esm/v1/types/message.d.ts.map +1 -0
- package/esm/v1/types/message.js +9 -0
- package/esm/v1/types/message.js.map +1 -0
- package/esm/v1/types/thread.d.ts +52 -0
- package/esm/v1/types/thread.d.ts.map +1 -0
- package/esm/v1/types/thread.js +8 -0
- package/esm/v1/types/thread.js.map +1 -0
- package/esm/v1/utils/event-accumulator.d.ts +100 -0
- package/esm/v1/utils/event-accumulator.d.ts.map +1 -0
- package/esm/v1/utils/event-accumulator.js +708 -0
- package/esm/v1/utils/event-accumulator.js.map +1 -0
- package/esm/v1/utils/event-accumulator.test.d.ts +2 -0
- package/esm/v1/utils/event-accumulator.test.d.ts.map +1 -0
- package/esm/v1/utils/event-accumulator.test.js +1008 -0
- package/esm/v1/utils/event-accumulator.test.js.map +1 -0
- package/esm/v1/utils/json-patch.d.ts +18 -0
- package/esm/v1/utils/json-patch.d.ts.map +1 -0
- package/esm/v1/utils/json-patch.js +32 -0
- package/esm/v1/utils/json-patch.js.map +1 -0
- package/esm/v1/utils/json-patch.test.d.ts +2 -0
- package/esm/v1/utils/json-patch.test.d.ts.map +1 -0
- package/esm/v1/utils/json-patch.test.js +26 -0
- package/esm/v1/utils/json-patch.test.js.map +1 -0
- package/esm/v1/utils/registry-conversion.d.ts +53 -0
- package/esm/v1/utils/registry-conversion.d.ts.map +1 -0
- package/esm/v1/utils/registry-conversion.js +108 -0
- package/esm/v1/utils/registry-conversion.js.map +1 -0
- package/esm/v1/utils/registry-conversion.test.d.ts +2 -0
- package/esm/v1/utils/registry-conversion.test.d.ts.map +1 -0
- package/esm/v1/utils/registry-conversion.test.js +177 -0
- package/esm/v1/utils/registry-conversion.test.js.map +1 -0
- package/esm/v1/utils/stream-handler.d.ts +45 -0
- package/esm/v1/utils/stream-handler.d.ts.map +1 -0
- package/esm/v1/utils/stream-handler.js +44 -0
- package/esm/v1/utils/stream-handler.js.map +1 -0
- package/esm/v1/utils/stream-handler.test.d.ts +2 -0
- package/esm/v1/utils/stream-handler.test.d.ts.map +1 -0
- package/esm/v1/utils/stream-handler.test.js +72 -0
- package/esm/v1/utils/stream-handler.test.js.map +1 -0
- package/esm/v1/utils/tool-call-tracker.d.ts +41 -0
- package/esm/v1/utils/tool-call-tracker.d.ts.map +1 -0
- package/esm/v1/utils/tool-call-tracker.js +86 -0
- package/esm/v1/utils/tool-call-tracker.js.map +1 -0
- package/esm/v1/utils/tool-executor.d.ts +33 -0
- package/esm/v1/utils/tool-executor.d.ts.map +1 -0
- package/esm/v1/utils/tool-executor.js +99 -0
- package/esm/v1/utils/tool-executor.js.map +1 -0
- package/esm/v1/utils/tool-executor.test.d.ts +2 -0
- package/esm/v1/utils/tool-executor.test.d.ts.map +1 -0
- package/esm/v1/utils/tool-executor.test.js +220 -0
- package/esm/v1/utils/tool-executor.test.js.map +1 -0
- package/package.json +20 -9
- package/dist/schema/zod.d.ts +0 -57
- package/dist/schema/zod.d.ts.map +0 -1
- package/dist/schema/zod.js +0 -191
- package/dist/schema/zod.js.map +0 -1
- package/dist/schema/zod.test.d.ts +0 -2
- package/dist/schema/zod.test.d.ts.map +0 -1
- package/dist/schema/zod.test.js +0 -663
- package/dist/schema/zod.test.js.map +0 -1
- package/esm/schema/zod.d.ts +0 -57
- package/esm/schema/zod.d.ts.map +0 -1
- package/esm/schema/zod.js +0 -180
- package/esm/schema/zod.js.map +0 -1
- package/esm/schema/zod.test.d.ts +0 -2
- package/esm/schema/zod.test.d.ts.map +0 -1
- package/esm/schema/zod.test.js +0 -628
- package/esm/schema/zod.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,eAAe,GACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC"}
|
package/esm/schema/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { looksLikeJSONSchema, makeJsonSchemaPartial } from "./json-schema";
|
|
2
|
-
export { getParametersFromToolSchema,
|
|
2
|
+
export { getParametersFromToolSchema, safeSchemaToJsonSchema, schemaToJsonSchema, } from "./schema";
|
|
3
3
|
export { isStandardSchema } from "./standard-schema";
|
|
4
4
|
export { assertNoRecordSchema } from "./validate";
|
|
5
|
-
export { getZodFunctionArgs, getZodFunctionReturns } from "./zod";
|
|
6
5
|
//# sourceMappingURL=index.js.map
|
package/esm/schema/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { looksLikeJSONSchema, makeJsonSchemaPartial } from \"./json-schema\";\nexport {\n getParametersFromToolSchema,\n safeSchemaToJsonSchema,\n schemaToJsonSchema,\n type SupportedSchema,\n} from \"./schema\";\nexport { isStandardSchema } from \"./standard-schema\";\nexport { assertNoRecordSchema } from \"./validate\";\n"]}
|
package/esm/schema/schema.d.ts
CHANGED
|
@@ -1,23 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Schema utilities for working with Standard Schema
|
|
2
|
+
* Schema utilities for working with Standard Schema and JSON Schema.
|
|
3
3
|
*
|
|
4
4
|
* This module provides a unified interface for handling different schema types
|
|
5
5
|
* used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)
|
|
6
|
-
* as the primary interface, which is implemented by Zod and other validation libraries.
|
|
6
|
+
* as the primary interface, which is implemented by Zod 3.24+ and other validation libraries.
|
|
7
7
|
*
|
|
8
|
-
* JSON Schema conversion is handled by `@standard-community/standard-json
|
|
9
|
-
* - Zod 4: Uses Zod's native toJSONSchema
|
|
10
|
-
* - Zod 3: Requires optional peer dependency 'zod-to-json-schema'
|
|
11
|
-
* - Other vendors: Handled by standard-json's built-in converters
|
|
8
|
+
* JSON Schema conversion is handled by `@standard-community/standard-json`.
|
|
12
9
|
* @module schema
|
|
13
10
|
*/
|
|
14
11
|
import type { JSONSchema7 } from "json-schema";
|
|
15
|
-
import { ParameterSpec, SupportedSchema, TamboTool
|
|
12
|
+
import { ParameterSpec, SupportedSchema, TamboTool } from "../model/component-metadata";
|
|
16
13
|
/**
|
|
17
14
|
* Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.
|
|
18
15
|
*
|
|
19
16
|
* If the schema is already a JSON Schema, it is returned as-is.
|
|
20
|
-
* For Standard Schema validators (Zod
|
|
17
|
+
* For Standard Schema validators (Zod 3.24+, etc.), uses
|
|
21
18
|
* `@standard-community/standard-json` for conversion.
|
|
22
19
|
* @param schema - The schema to convert
|
|
23
20
|
* @returns The JSON Schema representation
|
|
@@ -43,24 +40,10 @@ export declare function schemaToJsonSchema(schema: SupportedSchema): JSONSchema7
|
|
|
43
40
|
*/
|
|
44
41
|
export declare function safeSchemaToJsonSchema(schema: SupportedSchema | undefined | null, onError?: (error: unknown) => void): JSONSchema7 | undefined;
|
|
45
42
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @param tool - The Tambo tool to check
|
|
48
|
-
* @returns True if the tool uses inputSchema
|
|
49
|
-
*/
|
|
50
|
-
export declare function hasInputSchema(tool: TamboTool | TamboToolWithToolSchema): tool is TamboTool;
|
|
51
|
-
/**
|
|
52
|
-
* Extracts parameter specifications from a tool schema.
|
|
53
|
-
*
|
|
54
|
-
* For tools with **inputSchema** (new interface):
|
|
55
|
-
* - Returns a single parameter named "input" representing the object schema
|
|
56
|
-
* - The inputSchema defines the shape of the single object argument
|
|
57
|
-
*
|
|
58
|
-
* For tools with **toolSchema** (deprecated):
|
|
59
|
-
* - Extracts positional parameters from tuple/function args
|
|
60
|
-
* - Returns params named "param1", "param2", etc.
|
|
43
|
+
* Extracts parameter specifications from a tool's inputSchema.
|
|
61
44
|
* @param tool - The tool containing the schema
|
|
62
45
|
* @returns An array of parameter specifications
|
|
63
46
|
*/
|
|
64
|
-
export declare
|
|
47
|
+
export declare function getParametersFromToolSchema(tool: TamboTool): ParameterSpec[];
|
|
65
48
|
export type { SupportedSchema };
|
|
66
49
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EACL,aAAa,EACb,eAAe,EACf,SAAS,EACV,MAAM,6BAA6B,CAAC;AAuBrC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW,CAOvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,EAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,WAAW,GAAG,SAAS,CAYzB;AAoCD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,EAAE,CAe5E;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
package/esm/schema/schema.js
CHANGED
|
@@ -1,27 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Schema utilities for working with Standard Schema
|
|
2
|
+
* Schema utilities for working with Standard Schema and JSON Schema.
|
|
3
3
|
*
|
|
4
4
|
* This module provides a unified interface for handling different schema types
|
|
5
5
|
* used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)
|
|
6
|
-
* as the primary interface, which is implemented by Zod and other validation libraries.
|
|
6
|
+
* as the primary interface, which is implemented by Zod 3.24+ and other validation libraries.
|
|
7
7
|
*
|
|
8
|
-
* JSON Schema conversion is handled by `@standard-community/standard-json
|
|
9
|
-
* - Zod 4: Uses Zod's native toJSONSchema
|
|
10
|
-
* - Zod 3: Requires optional peer dependency 'zod-to-json-schema'
|
|
11
|
-
* - Other vendors: Handled by standard-json's built-in converters
|
|
8
|
+
* JSON Schema conversion is handled by `@standard-community/standard-json`.
|
|
12
9
|
* @module schema
|
|
13
10
|
*/
|
|
14
11
|
import { loadVendor, toJsonSchema } from "@standard-community/standard-json";
|
|
15
|
-
import {
|
|
12
|
+
import { zodToJsonSchema } from "zod-to-json-schema";
|
|
13
|
+
import { toJSONSchema as zod4ToJSONSchema } from "zod/v4/core";
|
|
14
|
+
import { looksLikeJSONSchema } from "./json-schema";
|
|
16
15
|
import { isStandardSchema } from "./standard-schema";
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Register the zod vendor handler for synchronous JSON Schema conversion.
|
|
18
|
+
* This uses Zod 4's native toJSONSchema for Zod 4.x schemas and zod-to-json-schema for Zod 3.x.
|
|
19
|
+
*/
|
|
20
|
+
loadVendor("zod", (schema) => {
|
|
21
|
+
// Check if this is a Zod 4 schema (has _zod property)
|
|
22
|
+
if (schema && typeof schema === "object" && "_zod" in schema) {
|
|
23
|
+
// Use Zod 4's native toJSONSchema from zod/v4/core
|
|
24
|
+
// Cast through unknown since the Zod 4 internal types don't match our detection pattern
|
|
25
|
+
return zod4ToJSONSchema(schema);
|
|
26
|
+
}
|
|
27
|
+
// Fall back to zod-to-json-schema for Zod 3.x
|
|
28
|
+
return zodToJsonSchema(schema);
|
|
29
|
+
});
|
|
20
30
|
/**
|
|
21
31
|
* Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.
|
|
22
32
|
*
|
|
23
33
|
* If the schema is already a JSON Schema, it is returned as-is.
|
|
24
|
-
* For Standard Schema validators (Zod
|
|
34
|
+
* For Standard Schema validators (Zod 3.24+, etc.), uses
|
|
25
35
|
* `@standard-community/standard-json` for conversion.
|
|
26
36
|
* @param schema - The schema to convert
|
|
27
37
|
* @returns The JSON Schema representation
|
|
@@ -65,47 +75,10 @@ export function safeSchemaToJsonSchema(schema, onError) {
|
|
|
65
75
|
}
|
|
66
76
|
}
|
|
67
77
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
* @returns True if the tool uses inputSchema
|
|
71
|
-
*/
|
|
72
|
-
export function hasInputSchema(tool) {
|
|
73
|
-
return "inputSchema" in tool && tool.inputSchema != null;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Retrieves the input schema for a Tambo tool using the deprecated toolSchema.
|
|
77
|
-
* For toolSchema, this extracts the args from the Zod function schema.
|
|
78
|
-
* @param tool - The Tambo tool (potentially with toolSchema)
|
|
79
|
-
* @returns The input schema (Standard Schema or JSON Schema), or undefined if not toolSchema
|
|
80
|
-
*/
|
|
81
|
-
function getArgsFromToolSchema(tool) {
|
|
82
|
-
if (looksLikeJSONSchema(tool.toolSchema)) {
|
|
83
|
-
return tool.toolSchema;
|
|
84
|
-
}
|
|
85
|
-
return getZodFunctionArgs(tool.toolSchema);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Extracts parameter specifications from JSON Schema tuple items.
|
|
89
|
-
* Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).
|
|
90
|
-
* This is library-agnostic - works with Zod, Valibot, ArkType, etc.
|
|
91
|
-
* @param tupleItems - The array of JSON Schema items
|
|
92
|
-
* @returns An array of parameter specifications
|
|
93
|
-
*/
|
|
94
|
-
function extractParamsFromJsonSchemaTuple(tupleItems) {
|
|
95
|
-
return tupleItems.map((item, index) => ({
|
|
96
|
-
name: `param${index + 1}`,
|
|
97
|
-
type: typeof item.type === "string" ? item.type : "object",
|
|
98
|
-
description: item.description ?? "",
|
|
99
|
-
isRequired: true, // tuple items are positional
|
|
100
|
-
schema: item,
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Creates a single parameter spec from an input schema.
|
|
105
|
-
* Used for the new inputSchema interface where the schema represents
|
|
106
|
-
* the shape of the single object argument to the tool function.
|
|
78
|
+
* Creates parameter specs from an input schema.
|
|
79
|
+
* The schema represents the shape of the single object argument to the tool function.
|
|
107
80
|
* @param schema - The input schema (JSON Schema)
|
|
108
|
-
* @returns
|
|
81
|
+
* @returns An array of parameter specifications
|
|
109
82
|
*/
|
|
110
83
|
function createParametersFromSchema(schema) {
|
|
111
84
|
const properties = schema.properties ?? {};
|
|
@@ -128,66 +101,24 @@ function createParametersFromSchema(schema) {
|
|
|
128
101
|
}));
|
|
129
102
|
}
|
|
130
103
|
/**
|
|
131
|
-
* Extracts parameter specifications from a tool
|
|
132
|
-
*
|
|
133
|
-
* For tools with **inputSchema** (new interface):
|
|
134
|
-
* - Returns a single parameter named "input" representing the object schema
|
|
135
|
-
* - The inputSchema defines the shape of the single object argument
|
|
136
|
-
*
|
|
137
|
-
* For tools with **toolSchema** (deprecated):
|
|
138
|
-
* - Extracts positional parameters from tuple/function args
|
|
139
|
-
* - Returns params named "param1", "param2", etc.
|
|
104
|
+
* Extracts parameter specifications from a tool's inputSchema.
|
|
140
105
|
* @param tool - The tool containing the schema
|
|
141
106
|
* @returns An array of parameter specifications
|
|
142
107
|
*/
|
|
143
|
-
export
|
|
144
|
-
|
|
145
|
-
if (hasInputSchema(tool)) {
|
|
146
|
-
const schema = tool.inputSchema;
|
|
147
|
-
// Convert to JSON Schema if needed
|
|
148
|
-
let jsonSchema;
|
|
149
|
-
if (looksLikeJSONSchema(schema)) {
|
|
150
|
-
jsonSchema = schema;
|
|
151
|
-
}
|
|
152
|
-
else if (isStandardSchema(schema)) {
|
|
153
|
-
jsonSchema = schemaToJsonSchema(schema);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
console.warn("Unknown inputSchema type, returning empty parameters");
|
|
157
|
-
return [];
|
|
158
|
-
}
|
|
159
|
-
return createParametersFromSchema(jsonSchema);
|
|
160
|
-
}
|
|
161
|
-
// Deprecated interface: toolSchema with positional tuple args
|
|
162
|
-
const argsSchema = getArgsFromToolSchema(tool);
|
|
163
|
-
if (!argsSchema) {
|
|
164
|
-
console.warn("No toolSchema found, returning empty parameters");
|
|
165
|
-
return [];
|
|
166
|
-
}
|
|
108
|
+
export function getParametersFromToolSchema(tool) {
|
|
109
|
+
const schema = tool.inputSchema;
|
|
167
110
|
// Convert to JSON Schema if needed
|
|
168
111
|
let jsonSchema;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
jsonSchema = handleZodSchemaToJson(argsSchema);
|
|
112
|
+
if (looksLikeJSONSchema(schema)) {
|
|
113
|
+
jsonSchema = schema;
|
|
172
114
|
}
|
|
173
|
-
else if (isStandardSchema(
|
|
174
|
-
|
|
175
|
-
jsonSchema = schemaToJsonSchema(argsSchema);
|
|
176
|
-
}
|
|
177
|
-
else if (looksLikeJSONSchema(argsSchema)) {
|
|
178
|
-
// already JSON Schema
|
|
179
|
-
jsonSchema = argsSchema;
|
|
115
|
+
else if (isStandardSchema(schema)) {
|
|
116
|
+
jsonSchema = schemaToJsonSchema(schema);
|
|
180
117
|
}
|
|
181
118
|
else {
|
|
182
|
-
console.warn("Unknown
|
|
119
|
+
console.warn("Unknown inputSchema type, returning empty parameters");
|
|
183
120
|
return [];
|
|
184
121
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const tupleItems = getJsonSchemaTupleItems(jsonSchema) ?? [];
|
|
188
|
-
return extractParamsFromJsonSchemaTuple(tupleItems);
|
|
189
|
-
}
|
|
190
|
-
// Fallback: wrap as single param (shouldn't normally happen for toolSchema)
|
|
191
|
-
return extractParamsFromJsonSchemaTuple([jsonSchema]);
|
|
192
|
-
};
|
|
122
|
+
return createParametersFromSchema(jsonSchema);
|
|
123
|
+
}
|
|
193
124
|
//# sourceMappingURL=schema.js.map
|
package/esm/schema/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Schema utilities for working with Standard Schema, Zod, and JSON Schema.\n *\n * This module provides a unified interface for handling different schema types\n * used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)\n * as the primary interface, which is implemented by Zod and other validation libraries.\n *\n * JSON Schema conversion is handled by `@standard-community/standard-json`, with:\n * - Zod 4: Uses Zod's native toJSONSchema\n * - Zod 3: Requires optional peer dependency 'zod-to-json-schema'\n * - Other vendors: Handled by standard-json's built-in converters\n * @module schema\n */\n\nimport { loadVendor, toJsonSchema } from \"@standard-community/standard-json\";\nimport type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport {\n ParameterSpec,\n SupportedSchema,\n TamboTool,\n TamboToolWithToolSchema,\n} from \"../model/component-metadata\";\nimport {\n getJsonSchemaTupleItems,\n isJsonSchemaTuple,\n looksLikeJSONSchema,\n} from \"./json-schema\";\nimport { isStandardSchema } from \"./standard-schema\";\nimport { getZodFunctionArgs, handleZodSchemaToJson, isZodSchema } from \"./zod\";\n\n// Register the Zod vendor converter with standard-json\nloadVendor(\"zod\", handleZodSchemaToJson);\n\n/**\n * Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.\n *\n * If the schema is already a JSON Schema, it is returned as-is.\n * For Standard Schema validators (Zod, Valibot, ArkType, etc.), uses\n * `@standard-community/standard-json` for conversion.\n * @param schema - The schema to convert\n * @returns The JSON Schema representation\n * @example\n * ```typescript\n * import { z } from \"zod/v4\";\n *\n * // Convert a Zod schema\n * const zodSchema = z.object({ name: z.string() });\n * const jsonSchema = schemaToJsonSchema(zodSchema);\n *\n * // Pass through a JSON Schema\n * const existingJsonSchema = { type: \"object\", properties: { name: { type: \"string\" } } };\n * schemaToJsonSchema(existingJsonSchema); // returns the same object\n * ```\n */\nexport function schemaToJsonSchema(schema: SupportedSchema): JSONSchema7 {\n // Already a JSON Schema - return as-is\n if (!isStandardSchema(schema)) {\n return schema;\n }\n\n return toJsonSchema.sync(schema) as JSONSchema7;\n}\n\n/**\n * Safely converts a schema to JSON Schema, returning undefined for invalid inputs.\n * @param schema - The schema to convert (may be undefined)\n * @param onError - Optional callback invoked on conversion error\n * @returns The JSON Schema representation, or undefined if conversion fails\n */\nexport function safeSchemaToJsonSchema(\n schema: SupportedSchema | undefined | null,\n onError?: (error: unknown) => void,\n): JSONSchema7 | undefined {\n if (!schema) {\n return undefined;\n }\n\n try {\n return schemaToJsonSchema(schema);\n } catch (error) {\n console.error(\"Error converting schema to JSON Schema:\", error);\n onError?.(error);\n return undefined;\n }\n}\n\n/**\n * Checks if a tool uses the new inputSchema interface (vs deprecated toolSchema).\n * @param tool - The Tambo tool to check\n * @returns True if the tool uses inputSchema\n */\nexport function hasInputSchema(\n tool: TamboTool | TamboToolWithToolSchema,\n): tool is TamboTool {\n return \"inputSchema\" in tool && tool.inputSchema != null;\n}\n\n/**\n * Retrieves the input schema for a Tambo tool using the deprecated toolSchema.\n * For toolSchema, this extracts the args from the Zod function schema.\n * @param tool - The Tambo tool (potentially with toolSchema)\n * @returns The input schema (Standard Schema or JSON Schema), or undefined if not toolSchema\n */\nfunction getArgsFromToolSchema(\n tool: TamboToolWithToolSchema,\n): StandardSchemaV1 | JSONSchema7 | undefined {\n if (looksLikeJSONSchema(tool.toolSchema)) {\n return tool.toolSchema;\n }\n\n return getZodFunctionArgs(tool.toolSchema);\n}\n\n/**\n * Extracts parameter specifications from JSON Schema tuple items.\n * Supports both draft-07 (items as array) and draft 2020-12 (prefixItems).\n * This is library-agnostic - works with Zod, Valibot, ArkType, etc.\n * @param tupleItems - The array of JSON Schema items\n * @returns An array of parameter specifications\n */\nfunction extractParamsFromJsonSchemaTuple(\n tupleItems: JSONSchema7[],\n): ParameterSpec[] {\n return tupleItems.map((item, index) => ({\n name: `param${index + 1}`,\n type: typeof item.type === \"string\" ? item.type : \"object\",\n description: item.description ?? \"\",\n isRequired: true, // tuple items are positional\n schema: item,\n }));\n}\n\n/**\n * Creates a single parameter spec from an input schema.\n * Used for the new inputSchema interface where the schema represents\n * the shape of the single object argument to the tool function.\n * @param schema - The input schema (JSON Schema)\n * @returns A single parameter specification\n */\nfunction createParametersFromSchema(schema: JSONSchema7): ParameterSpec[] {\n const properties = schema.properties ?? {};\n\n return Object.entries(properties).map(\n ([key, propSchema]) =>\n ({\n name: key,\n type:\n propSchema && typeof propSchema === \"object\" && \"type\" in propSchema\n ? (propSchema.type as string)\n : \"object\",\n description:\n propSchema &&\n typeof propSchema === \"object\" &&\n \"description\" in propSchema\n ? (propSchema.description ?? \"\")\n : \"\",\n isRequired: Array.isArray(schema.required)\n ? schema.required.includes(key)\n : false,\n schema:\n typeof propSchema === \"object\" && propSchema !== null\n ? propSchema\n : {},\n }) satisfies ParameterSpec,\n );\n}\n\n/**\n * Extracts parameter specifications from a tool schema.\n *\n * For tools with **inputSchema** (new interface):\n * - Returns a single parameter named \"input\" representing the object schema\n * - The inputSchema defines the shape of the single object argument\n *\n * For tools with **toolSchema** (deprecated):\n * - Extracts positional parameters from tuple/function args\n * - Returns params named \"param1\", \"param2\", etc.\n * @param tool - The tool containing the schema\n * @returns An array of parameter specifications\n */\nexport const getParametersFromToolSchema = (\n tool: TamboTool | TamboToolWithToolSchema,\n): ParameterSpec[] => {\n // New interface: inputSchema represents the single object argument\n if (hasInputSchema(tool)) {\n const schema = tool.inputSchema;\n\n // Convert to JSON Schema if needed\n let jsonSchema: JSONSchema7;\n if (looksLikeJSONSchema(schema)) {\n jsonSchema = schema;\n } else if (isStandardSchema(schema)) {\n jsonSchema = schemaToJsonSchema(schema);\n } else {\n console.warn(\"Unknown inputSchema type, returning empty parameters\");\n return [];\n }\n\n return createParametersFromSchema(jsonSchema);\n }\n\n // Deprecated interface: toolSchema with positional tuple args\n const argsSchema = getArgsFromToolSchema(tool);\n\n if (!argsSchema) {\n console.warn(\"No toolSchema found, returning empty parameters\");\n return [];\n }\n\n // Convert to JSON Schema if needed\n let jsonSchema: JSONSchema7;\n // zod 3 and 4 are both compatible with StandardSchema\n if (isZodSchema(argsSchema)) {\n jsonSchema = handleZodSchemaToJson(argsSchema);\n } else if (isStandardSchema(argsSchema)) {\n // uses @standard-community/standard-json for conversion\n jsonSchema = schemaToJsonSchema(argsSchema);\n } else if (looksLikeJSONSchema(argsSchema)) {\n // already JSON Schema\n jsonSchema = argsSchema;\n } else {\n console.warn(\"Unknown toolSchema args type, returning empty parameters\");\n return [];\n }\n\n // Extract tuple items for positional params\n if (isJsonSchemaTuple(jsonSchema)) {\n const tupleItems = getJsonSchemaTupleItems(jsonSchema) ?? [];\n return extractParamsFromJsonSchemaTuple(tupleItems);\n }\n\n // Fallback: wrap as single param (shouldn't normally happen for toolSchema)\n return extractParamsFromJsonSchemaTuple([jsonSchema]);\n};\n\nexport type { SupportedSchema };\n"]}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;GAGG;AACH,UAAU,CAAC,KAAK,EAAE,CAAC,MAAe,EAAe,EAAE;IACjD,sDAAsD;IACtD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;QAC7D,mDAAmD;QACnD,wFAAwF;QACxF,OAAO,gBAAgB,CACrB,MAA2D,CAC7C,CAAC;IACnB,CAAC;IACD,8CAA8C;IAC9C,OAAO,eAAe,CACpB,MAA+C,CACjC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAuB;IACxD,uCAAuC;IACvC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAgB,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA0C,EAC1C,OAAkC;IAElC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,0BAA0B,CAAC,MAAmB;IACrD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAE3C,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CACnC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CACpB,CAAC;QACC,IAAI,EAAE,GAAG;QACT,IAAI,EACF,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,IAAI,UAAU;YAClE,CAAC,CAAE,UAAU,CAAC,IAAe;YAC7B,CAAC,CAAC,QAAQ;QACd,WAAW,EACT,UAAU;YACV,OAAO,UAAU,KAAK,QAAQ;YAC9B,aAAa,IAAI,UAAU;YACzB,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;YAChC,CAAC,CAAC,EAAE;QACR,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC/B,CAAC,CAAC,KAAK;QACT,MAAM,EACJ,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI;YACnD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE;KACT,CAAyB,CAC7B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAe;IACzD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAEhC,mCAAmC;IACnC,IAAI,UAAuB,CAAC;IAC5B,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,UAAU,GAAG,MAAM,CAAC;IACtB,CAAC;SAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACrE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAChD,CAAC","sourcesContent":["/**\n * Schema utilities for working with Standard Schema and JSON Schema.\n *\n * This module provides a unified interface for handling different schema types\n * used in Tambo components and tools. It uses Standard Schema (https://standardschema.dev/)\n * as the primary interface, which is implemented by Zod 3.24+ and other validation libraries.\n *\n * JSON Schema conversion is handled by `@standard-community/standard-json`.\n * @module schema\n */\n\nimport { loadVendor, toJsonSchema } from \"@standard-community/standard-json\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport { zodToJsonSchema } from \"zod-to-json-schema\";\nimport { toJSONSchema as zod4ToJSONSchema } from \"zod/v4/core\";\nimport {\n ParameterSpec,\n SupportedSchema,\n TamboTool,\n} from \"../model/component-metadata\";\nimport { looksLikeJSONSchema } from \"./json-schema\";\nimport { isStandardSchema } from \"./standard-schema\";\n\n/**\n * Register the zod vendor handler for synchronous JSON Schema conversion.\n * This uses Zod 4's native toJSONSchema for Zod 4.x schemas and zod-to-json-schema for Zod 3.x.\n */\nloadVendor(\"zod\", (schema: unknown): JSONSchema7 => {\n // Check if this is a Zod 4 schema (has _zod property)\n if (schema && typeof schema === \"object\" && \"_zod\" in schema) {\n // Use Zod 4's native toJSONSchema from zod/v4/core\n // Cast through unknown since the Zod 4 internal types don't match our detection pattern\n return zod4ToJSONSchema(\n schema as unknown as Parameters<typeof zod4ToJSONSchema>[0],\n ) as JSONSchema7;\n }\n // Fall back to zod-to-json-schema for Zod 3.x\n return zodToJsonSchema(\n schema as Parameters<typeof zodToJsonSchema>[0],\n ) as JSONSchema7;\n});\n\n/**\n * Converts a schema (Standard Schema or JSON Schema) to a JSON Schema object.\n *\n * If the schema is already a JSON Schema, it is returned as-is.\n * For Standard Schema validators (Zod 3.24+, etc.), uses\n * `@standard-community/standard-json` for conversion.\n * @param schema - The schema to convert\n * @returns The JSON Schema representation\n * @example\n * ```typescript\n * import { z } from \"zod/v4\";\n *\n * // Convert a Zod schema\n * const zodSchema = z.object({ name: z.string() });\n * const jsonSchema = schemaToJsonSchema(zodSchema);\n *\n * // Pass through a JSON Schema\n * const existingJsonSchema = { type: \"object\", properties: { name: { type: \"string\" } } };\n * schemaToJsonSchema(existingJsonSchema); // returns the same object\n * ```\n */\nexport function schemaToJsonSchema(schema: SupportedSchema): JSONSchema7 {\n // Already a JSON Schema - return as-is\n if (!isStandardSchema(schema)) {\n return schema;\n }\n\n return toJsonSchema.sync(schema) as JSONSchema7;\n}\n\n/**\n * Safely converts a schema to JSON Schema, returning undefined for invalid inputs.\n * @param schema - The schema to convert (may be undefined)\n * @param onError - Optional callback invoked on conversion error\n * @returns The JSON Schema representation, or undefined if conversion fails\n */\nexport function safeSchemaToJsonSchema(\n schema: SupportedSchema | undefined | null,\n onError?: (error: unknown) => void,\n): JSONSchema7 | undefined {\n if (!schema) {\n return undefined;\n }\n\n try {\n return schemaToJsonSchema(schema);\n } catch (error) {\n console.error(\"Error converting schema to JSON Schema:\", error);\n onError?.(error);\n return undefined;\n }\n}\n\n/**\n * Creates parameter specs from an input schema.\n * The schema represents the shape of the single object argument to the tool function.\n * @param schema - The input schema (JSON Schema)\n * @returns An array of parameter specifications\n */\nfunction createParametersFromSchema(schema: JSONSchema7): ParameterSpec[] {\n const properties = schema.properties ?? {};\n\n return Object.entries(properties).map(\n ([key, propSchema]) =>\n ({\n name: key,\n type:\n propSchema && typeof propSchema === \"object\" && \"type\" in propSchema\n ? (propSchema.type as string)\n : \"object\",\n description:\n propSchema &&\n typeof propSchema === \"object\" &&\n \"description\" in propSchema\n ? (propSchema.description ?? \"\")\n : \"\",\n isRequired: Array.isArray(schema.required)\n ? schema.required.includes(key)\n : false,\n schema:\n typeof propSchema === \"object\" && propSchema !== null\n ? propSchema\n : {},\n }) satisfies ParameterSpec,\n );\n}\n\n/**\n * Extracts parameter specifications from a tool's inputSchema.\n * @param tool - The tool containing the schema\n * @returns An array of parameter specifications\n */\nexport function getParametersFromToolSchema(tool: TamboTool): ParameterSpec[] {\n const schema = tool.inputSchema;\n\n // Convert to JSON Schema if needed\n let jsonSchema: JSONSchema7;\n if (looksLikeJSONSchema(schema)) {\n jsonSchema = schema;\n } else if (isStandardSchema(schema)) {\n jsonSchema = schemaToJsonSchema(schema);\n } else {\n console.warn(\"Unknown inputSchema type, returning empty parameters\");\n return [];\n }\n\n return createParametersFromSchema(jsonSchema);\n}\n\nexport type { SupportedSchema };\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as z3 from "zod/v3";
|
|
2
2
|
import * as z4 from "zod/v4";
|
|
3
3
|
import { looksLikeJSONSchema } from "./json-schema";
|
|
4
|
-
import { getParametersFromToolSchema,
|
|
4
|
+
import { getParametersFromToolSchema, safeSchemaToJsonSchema, schemaToJsonSchema, } from "./schema";
|
|
5
5
|
import { isStandardSchema } from "./standard-schema";
|
|
6
6
|
describe("schema utilities", () => {
|
|
7
7
|
describe("looksLikeJSONSchema", () => {
|
|
@@ -272,40 +272,6 @@ describe("schema utilities", () => {
|
|
|
272
272
|
expect(required2?.isRequired).toBe(true);
|
|
273
273
|
});
|
|
274
274
|
});
|
|
275
|
-
describe("deprecated toolSchema interface (tuple/positional args)", () => {
|
|
276
|
-
it("extracts positional parameters from Zod 3 function schema", () => {
|
|
277
|
-
const tool = {
|
|
278
|
-
name: "test-tool",
|
|
279
|
-
description: "Test tool",
|
|
280
|
-
tool: jest.fn(),
|
|
281
|
-
toolSchema: z3
|
|
282
|
-
.function()
|
|
283
|
-
.args(z3.string().describe("First arg"), z3.number().describe("Second arg"))
|
|
284
|
-
.returns(z3.void()),
|
|
285
|
-
};
|
|
286
|
-
const params = getParametersFromToolSchema(tool);
|
|
287
|
-
// toolSchema uses positional params (param1, param2, etc.)
|
|
288
|
-
expect(params.length).toBeGreaterThanOrEqual(1);
|
|
289
|
-
expect(params[0].name).toBe("param1");
|
|
290
|
-
});
|
|
291
|
-
it("handles toolSchema with JSON Schema directly", () => {
|
|
292
|
-
const tool = {
|
|
293
|
-
name: "test-tool",
|
|
294
|
-
description: "Test tool",
|
|
295
|
-
tool: jest.fn(),
|
|
296
|
-
toolSchema: {
|
|
297
|
-
type: "object",
|
|
298
|
-
properties: {
|
|
299
|
-
query: { type: "string", description: "Search query" },
|
|
300
|
-
},
|
|
301
|
-
required: ["query"],
|
|
302
|
-
},
|
|
303
|
-
};
|
|
304
|
-
const params = getParametersFromToolSchema(tool);
|
|
305
|
-
// JSON Schema in toolSchema should return params wrapped
|
|
306
|
-
expect(params.length).toBeGreaterThanOrEqual(1);
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
275
|
describe("edge cases and error handling", () => {
|
|
310
276
|
it("returns empty params when inputSchema is unknown type", () => {
|
|
311
277
|
// Create a tool with an invalid inputSchema that isn't Standard Schema or JSON Schema
|
|
@@ -321,93 +287,60 @@ describe("schema utilities", () => {
|
|
|
321
287
|
consoleSpy.mockRestore();
|
|
322
288
|
expect(params).toEqual([]);
|
|
323
289
|
});
|
|
324
|
-
it("
|
|
325
|
-
//
|
|
326
|
-
const tool = {
|
|
327
|
-
name: "test-tool",
|
|
328
|
-
description: "Test tool",
|
|
329
|
-
tool: jest.fn(),
|
|
330
|
-
toolSchema: undefined,
|
|
331
|
-
};
|
|
332
|
-
expect(() => getParametersFromToolSchema(tool)).toThrow("Unable to determine parameters from zod function schema");
|
|
333
|
-
});
|
|
334
|
-
it("throws when toolSchema args are not recognized", () => {
|
|
335
|
-
// Create a tool with toolSchema that is not a function schema or JSON schema
|
|
336
|
-
// This causes getArgsFromToolSchema to attempt extraction but fail
|
|
337
|
-
const tool = {
|
|
338
|
-
name: "test-tool",
|
|
339
|
-
description: "Test tool",
|
|
340
|
-
tool: jest.fn(),
|
|
341
|
-
toolSchema: { notASchema: true },
|
|
342
|
-
};
|
|
343
|
-
// This throws because it's not a Zod function schema
|
|
344
|
-
expect(() => getParametersFromToolSchema(tool)).toThrow("Unable to determine parameters from zod function schema");
|
|
345
|
-
});
|
|
346
|
-
});
|
|
347
|
-
describe("toolSchema with JSON Schema tuple", () => {
|
|
348
|
-
it("handles toolSchema with JSON Schema array/tuple directly", () => {
|
|
290
|
+
it("handles JSON Schema with no properties field", () => {
|
|
291
|
+
// Test the fallback: const properties = schema.properties ?? {};
|
|
349
292
|
const tool = {
|
|
350
293
|
name: "test-tool",
|
|
351
294
|
description: "Test tool",
|
|
352
295
|
tool: jest.fn(),
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
items: [
|
|
357
|
-
{ type: "string", description: "First param" },
|
|
358
|
-
{ type: "number", description: "Second param" },
|
|
359
|
-
],
|
|
296
|
+
inputSchema: {
|
|
297
|
+
type: "object",
|
|
298
|
+
// No properties field
|
|
360
299
|
},
|
|
300
|
+
outputSchema: z4.void(),
|
|
361
301
|
};
|
|
362
302
|
const params = getParametersFromToolSchema(tool);
|
|
363
|
-
|
|
364
|
-
expect(params).toHaveLength(2);
|
|
365
|
-
expect(params[0].name).toBe("param1");
|
|
366
|
-
expect(params[0].type).toBe("string");
|
|
367
|
-
expect(params[0].description).toBe("First param");
|
|
368
|
-
expect(params[1].name).toBe("param2");
|
|
369
|
-
expect(params[1].type).toBe("number");
|
|
303
|
+
expect(params).toEqual([]);
|
|
370
304
|
});
|
|
371
|
-
it("handles
|
|
305
|
+
it("handles JSON Schema properties without descriptions", () => {
|
|
306
|
+
// Test the fallback: propSchema.description ?? ""
|
|
372
307
|
const tool = {
|
|
373
308
|
name: "test-tool",
|
|
374
309
|
description: "Test tool",
|
|
375
310
|
tool: jest.fn(),
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
{ type: "
|
|
381
|
-
|
|
382
|
-
],
|
|
311
|
+
inputSchema: {
|
|
312
|
+
type: "object",
|
|
313
|
+
properties: {
|
|
314
|
+
name: { type: "string" }, // No description
|
|
315
|
+
age: { type: "number" }, // No description
|
|
316
|
+
},
|
|
383
317
|
},
|
|
318
|
+
outputSchema: z4.void(),
|
|
384
319
|
};
|
|
385
320
|
const params = getParametersFromToolSchema(tool);
|
|
386
321
|
expect(params).toHaveLength(2);
|
|
387
|
-
expect(params[0].
|
|
388
|
-
expect(params[
|
|
389
|
-
expect(params[0].description).toBe("Flag");
|
|
390
|
-
expect(params[1].name).toBe("param2");
|
|
391
|
-
expect(params[1].type).toBe("string");
|
|
322
|
+
expect(params[0].description).toBe("");
|
|
323
|
+
expect(params[1].description).toBe("");
|
|
392
324
|
});
|
|
393
|
-
it("handles
|
|
325
|
+
it("handles JSON Schema with non-object property values", () => {
|
|
326
|
+
// Test the fallback: typeof propSchema === "object" && propSchema !== null ? propSchema : {}
|
|
394
327
|
const tool = {
|
|
395
328
|
name: "test-tool",
|
|
396
329
|
description: "Test tool",
|
|
397
330
|
tool: jest.fn(),
|
|
398
|
-
|
|
399
|
-
toolSchema: {
|
|
331
|
+
inputSchema: {
|
|
400
332
|
type: "object",
|
|
401
333
|
properties: {
|
|
402
|
-
|
|
334
|
+
// Properties can technically be boolean (for schema composition)
|
|
335
|
+
weird: true,
|
|
403
336
|
},
|
|
404
337
|
},
|
|
338
|
+
outputSchema: z4.void(),
|
|
405
339
|
};
|
|
406
340
|
const params = getParametersFromToolSchema(tool);
|
|
407
|
-
// Non-tuple schemas should be wrapped as a single param
|
|
408
341
|
expect(params).toHaveLength(1);
|
|
409
|
-
expect(params[0].name).toBe("
|
|
410
|
-
expect(params[0].
|
|
342
|
+
expect(params[0].name).toBe("weird");
|
|
343
|
+
expect(params[0].schema).toEqual({});
|
|
411
344
|
});
|
|
412
345
|
});
|
|
413
346
|
});
|
|
@@ -496,36 +429,5 @@ describe("schema utilities", () => {
|
|
|
496
429
|
consoleSpy.mockRestore();
|
|
497
430
|
});
|
|
498
431
|
});
|
|
499
|
-
describe("hasInputSchema", () => {
|
|
500
|
-
it("returns true for tool with inputSchema", () => {
|
|
501
|
-
const tool = {
|
|
502
|
-
name: "test",
|
|
503
|
-
description: "test",
|
|
504
|
-
tool: jest.fn(),
|
|
505
|
-
inputSchema: z4.object({ a: z4.string() }),
|
|
506
|
-
outputSchema: z4.void(),
|
|
507
|
-
};
|
|
508
|
-
expect(hasInputSchema(tool)).toBe(true);
|
|
509
|
-
});
|
|
510
|
-
it("returns false for tool with toolSchema (deprecated)", () => {
|
|
511
|
-
const tool = {
|
|
512
|
-
name: "test",
|
|
513
|
-
description: "test",
|
|
514
|
-
tool: jest.fn(),
|
|
515
|
-
toolSchema: z3.function().args(z3.string()).returns(z3.void()),
|
|
516
|
-
};
|
|
517
|
-
expect(hasInputSchema(tool)).toBe(false);
|
|
518
|
-
});
|
|
519
|
-
it("returns false for tool with null inputSchema", () => {
|
|
520
|
-
const tool = {
|
|
521
|
-
name: "test",
|
|
522
|
-
description: "test",
|
|
523
|
-
tool: jest.fn(),
|
|
524
|
-
inputSchema: null,
|
|
525
|
-
outputSchema: z4.void(),
|
|
526
|
-
};
|
|
527
|
-
expect(hasInputSchema(tool)).toBe(false);
|
|
528
|
-
});
|
|
529
|
-
});
|
|
530
432
|
});
|
|
531
433
|
//# sourceMappingURL=schema.test.js.map
|