Get this on every PR automatically. Webhook fires, AI reviews, you approve.
Install on supabase/sdk →
// reviewed by pulllight
PullLight found 4 issues
2 high
2 medium
// convert to your repo
PullLight caught 4 2 high, 2 medium on this PR.
Install on supabase/sdk to get this on every PR automatically — 60 seconds.
Findings
4 issues
medium
other
This file contains an absolute local filesystem path (`/Users/guilherme/src/github.com/supabase/sdk/.claude/worktrees/...`) and is a Gradle build artifact that should not be committed. It leaks the developer's local directory structure and username. The `smithy/extensions/.gradle/` and `smithy/extensions/build/` directories should be covered by `.gitignore`, but the `smithy/.gitignore` only ignores `extensions/.gradle/` and `extensions/build/` relative to the `smithy/` directory — verify those patterns actually match and remove all committed build artifacts.
// smithy/extensions/build/kotlin/compileKotlin/cacheable/dirty-sources.txt:1
high
null-deref
`d["components"]["schemas"]` is accessed without checking that `d["components"]` exists. If the generated OpenAPI file has no `components` key (e.g. for a minimal or malformed output), this will raise a `KeyError`. Use `d.get("components", {}).get("schemas")` or guard with an explicit check before writing.
// smithy/patch-openapi.py:33
⚡ Suggested fix
if service_title == "Supabase Database API":
components = d.setdefault("components", {})
schemas = components.setdefault("schemas", {})
schemas["FilterOperator"] = {
"type": "string",
"description": (
"PostgREST column filter operators. "
"Format a filter value as \"{operator}.{value}\", e.g. \"eq.5\". "
"Prefix with \"not.\" to negate: \"not.eq.5\". "
"For logical grouping use keys \"or\" / \"and\" in the filters map."
),
"enum": [
"eq", "neq", "lt", "lte", "gt", "gte",
"like", "ilike", "match", "imatch",
"is", "isdistinct", "in",
"cs", "cd", "ov",
"sl", "sr", "nxl", "nxr", "adj",
"fts", "plfts", "phfts", "wfts",
],
}
high
null-deref
`d["components"]["schemas"].get("UploadChunkInputPayload", {})` will raise `KeyError` if `d["components"]` or `d["components"]["schemas"]` is absent in the Storage OpenAPI output. Use `d.get("components", {}).get("schemas", {}).get("UploadChunkInputPayload", {})` instead.
// smithy/patch-openapi.py:76
⚡ Suggested fix
schema = d.get("components", {}).get("schemas", {}).get("UploadChunkInputPayload", {})
if schema.get("format") == "byte":
schema["format"] = "binary"
medium
other
The static initializer and the `updateOperation` method both write to `System.err` unconditionally. These debug `println` statements will appear in every Smithy build invocation's stderr output for all users of this library. They should be removed or replaced with a proper logging mechanism before this is used as a shared build dependency.
// smithy/extensions/src/main/java/io/supabase/smithy/MultipartFormOpenApiMapper.java:31