Open
Conversation
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.
built-in
--dry-runincur gives you
--help,--schema,--verbose,--formaton every command for free. dry-run was missing. if you wanted it, you had to adddryRunto your options schema and check it inrun()yourself. agents had no standard way to preview before executing.i wanted this to work like help. always there, zero boilerplate.
design
i considered a few approaches. a separate
dryRun()handler forces duplication for commands that interleave reads and writes. a full effect system withc.effect()turns incur into a different thing. a schema-derived preview that skipsrun()entirely is safe but useless — it just echoes your own inputs back at you.the simplest thing that works:
--dry-runis a builtin flag,c.dryRunis on the run context,run()is always called. the framework owns the flag across all transports, puts it on the context, and tags the output. commands that have side effects checkc.dryRunand return a preview instead of executing.what this adds
--dry-runbuiltin flag (CLI),X-Dry-Run: trueheader (HTTP),_meta.dryRun(MCP)c.dryRun: booleanon both the run context and middleware contextmeta.dryRun: true