fix(ai-constructs): invalid graphql generation for query tools #1988
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
1. Data tool definitions with
inputSchema.properties: {}
generates invalid GraphQL.This is a test we have today, which works as expected.
The
inputSchema: { json: {} }
is what the resolver should be passing the lambda if there aren’t any arguments. But apparently in some cases. we’re sending this (which is also a valid tool definition):I'll make the fix in the transformer to ensure we send
json: {}
for input-less queries, but let's still be defensive about checking for the second case in the lambda.2. Scalar return types in tools generates invalid GraphQL selection set (
{ }
)A scalar return type shouldn’t have a selection set. e.g.
should generate
but it currently generates
which is invalid GraphQL.
That’s because we wrap the provided selection set in
{ }
here.Issue number, if available:
Changes
Adds check for
Object.keys(properties).length === 0)
to catchinputSchema.json.properties: {}
case.Conditionally wraps provided selection set in
{ }
only if the selection set is not empty.Corresponding docs PR, if applicable:
Validation
Checklist
If this PR requires a change to the Project Architecture README, I have included that update in this PR.If this PR requires a docs update, I have linked to that docs PR above.If this PR modifies E2E tests, makes changes to resource provisioning, or makes SDK calls, I have run the PR checks with therun-e2e
label set.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.