feat(yq): add jq-backed YAML processor - #2266
Merged
Merged
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
bashkit | 5aa58f0 | Commit Preview URL Branch Preview URL |
Aug 06 2026, 01:15 AM |
chaliy
force-pushed
the
codex/yq-builtin
branch
from
August 6, 2026 01:01
c85812d to
4648bc9
Compare
chaliy
force-pushed
the
codex/yq-builtin
branch
from
August 6, 2026 01:14
4648bc9 to
5aa58f0
Compare
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.
What changed
Replaces the bespoke dotted-path
yamlhelper with a feature-gatedyqbuiltin backed by the existing jq/jaq evaluator. Agents can process YAML or JSON from stdin/files with identity, nested selection, iteration,select,map, assignment, multi-document streams, YAML/JSON conversion, raw/compact/exit-status/slurp/null-input modes, combined short flags, and atomic in-place updates.Adds parser/document/depth/output controls, deterministic bounded diagnostics, no-leak property coverage, generated builtin metadata, user docs, limitations, and threat-model entries. TOML/CSV/XML and mikefarah/yq node/style operators remain explicit unsupported boundaries.
Why
The old
yamlcommand implemented a narrow second query language that did not match the jq-style yq surface commonly generated by agents. Sharing jq/jaq avoids duplicate evaluator semantics and inherits its work, deadline, and output controls.Before / After
Before:
After:
Proof: 14/14 portable yq specs, 9 yq integration tests, arbitrary-YAML no-leak property, conditional mikefarah/yq differential, WASM feature check, real-
rgregression, and post-rebasejust pre-pr.Risk
yamlhelper and makesyqavailable with thejqfeature. YAML mapping keys sort deterministically at the JSON-value boundary; source order, comments, styles, and anchors are not preserved. Custom tags and non-string keys fail closed. In-place writes depend on VFS sibling rename semantics and are covered for success, parse/filter/exit-status failure, stdout suppression, and mode preservation.Checklist