fix(core): drop undefined metadata values from permission requests - #46964
Open
rvaccone wants to merge 1 commit into
Open
fix(core): drop undefined metadata values from permission requests#46964rvaccone wants to merge 1 commit into
rvaccone wants to merge 1 commit into
Conversation
Contributor
|
Thanks for your contribution! This PR doesn't have a linked issue. All PRs must reference an existing issue. Please:
See CONTRIBUTING.md for details. |
Contributor
|
The following comment was made by an LLM, it may be inaccurate: Potential Duplicate FoundPR #46906:
The PR mentions it supersedes PR #37679, which suggests there's an existing attempt to fix this. PR #46906 should be checked to see if it's the same fix or an alternative approach. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Issue for this PR
Closes #37650
Supersedes #37679, which was closed by the automated cleanup and which GitHub will not reopen.
Type of change
What does this PR do?
Pending
globandgreppermissions store absent optional inputs asundefinedinside permission metadata (for examplemetadata: { path: input.path, limit: input.limit }). The metadata record isSchema.Record(Schema.String, Schema.Unknown)and the wire codec serializesUnknownas a JSON value, sosession.permission.listfails to encode its response withExpected JSON value, got undefined.Since #37679 the set of affected fields has grown:
globnow also passeshidden(#46724) andgreppassesliteralandcaseSensitive. A glob call that omitshiddentrips the same 400 atmetadata.hidden.This strips
undefinedvalues inrequest()inpackages/core/src/permission.ts, the one place every pending request is constructed for bothassertandask. That covers every field above without touching either tool, and protects the event publish path as well as the list and get endpoints. I re-audited thepermission.assertandpermission.askcall sites on currentv2:globandgrepare still the only ones passing raw optional inputs through. The one nested value,filesin the patch tool, is a typedFileDiff.Infobuilt from the diff rather than from tool input, so a shallow strip is still sufficient. A deep JSON round trip was rejected because it would silently normalize values that should fail loudly.How did you verify your code works?
One regression test: ask for a permission whose metadata contains
undefinedvalues, then assert the pending request omits those keys. On currentv2it fails without the fix and passes with it. The permission suite inpackages/core(104 tests) and thepackages/coretypecheck pass. I also previously reproduced the reported error against the JSON value codec with the old metadata shape and confirmed the stripped shape encodes cleanly.Screenshots / recordings
Not a UI change.
Checklist
https://claude.ai/code/session_01VfnVqHyavHygRQS2KBChYb