@chrisdudek/yg 5.2.3 → 5.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/bin.js +10 -10
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @chrisdudek/yg
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Stop babysitting your agent.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Your architecture rules become checks it can't skip, run on every change before it moves on. A script runs them locally for free, or an LLM reviews the call a script can't make. Checks run against your code, not your diffs. The feedback is specific, and the agent has to fix before it can move on. Works with Claude Code, Cursor, Copilot, Codex, Cline, and more.
|
|
6
6
|
|
|
7
7
|
See the [main README](https://github.com/krzysztofdudek/Yggdrasil#readme) for documentation, or visit
|
|
8
8
|
[krzysztofdudek.github.io/Yggdrasil](https://krzysztofdudek.github.io/Yggdrasil/).
|
package/dist/bin.js
CHANGED
|
@@ -15821,20 +15821,20 @@ function registerCheckCommand(program2) {
|
|
|
15821
15821
|
const gitFiles = collectGitFiles(projectRoot);
|
|
15822
15822
|
const wantsTop = opts.top !== void 0;
|
|
15823
15823
|
if (wantsTop && opts.summary) {
|
|
15824
|
-
process.
|
|
15824
|
+
process.stderr.write(chalk8.red(buildIssueMessage({
|
|
15825
15825
|
what: "--top and --summary cannot be combined.",
|
|
15826
15826
|
why: "Both are read-only triage VIEWS of the same `yg check` result \u2014 --top renders the N highest-priority blocks, --summary renders per-node counts only. Asking for both at once is ambiguous; pick one lens.",
|
|
15827
15827
|
next: "Run: yg check --top <n> (priority blocks), or yg check --summary (per-node counts)."
|
|
15828
|
-
}) + "\n");
|
|
15828
|
+
}) + "\n"));
|
|
15829
15829
|
await exitAfterFlush(1);
|
|
15830
15830
|
return;
|
|
15831
15831
|
}
|
|
15832
15832
|
if ((wantsTop || opts.summary) && opts.approve) {
|
|
15833
|
-
process.
|
|
15833
|
+
process.stderr.write(chalk8.red(buildIssueMessage({
|
|
15834
15834
|
what: `${wantsTop ? "--top" : "--summary"} cannot be combined with --approve.`,
|
|
15835
15835
|
why: "--top and --summary triage the READ-ONLY check wall (they narrow the output of plain `yg check`, which writes nothing). --approve is the writer path; its own free cost preview is --dry-run. Mixing a read-only triage view with the writer is contradictory.",
|
|
15836
15836
|
next: `Run: yg check ${wantsTop ? "--top <n>" : "--summary"} (read-only triage), or yg check --approve --dry-run (preview the writer's cost).`
|
|
15837
|
-
}) + "\n");
|
|
15837
|
+
}) + "\n"));
|
|
15838
15838
|
await exitAfterFlush(1);
|
|
15839
15839
|
return;
|
|
15840
15840
|
}
|
|
@@ -15844,22 +15844,22 @@ function registerCheckCommand(program2) {
|
|
|
15844
15844
|
} else if (wantsTop) {
|
|
15845
15845
|
const n = resolveTopValue(opts.top);
|
|
15846
15846
|
if (n === null) {
|
|
15847
|
-
process.
|
|
15847
|
+
process.stderr.write(chalk8.red(buildIssueMessage({
|
|
15848
15848
|
what: `--top expects a non-negative whole number; got "${String(opts.top)}".`,
|
|
15849
15849
|
why: "--top N prints the N highest-priority issue blocks. A negative, fractional, or non-numeric value is meaningless, and printing the full wall instead would silently hide that the flag was ignored \u2014 masking the very output you tried to narrow.",
|
|
15850
15850
|
next: "Run: yg check --top 5 (top 5 blocks), yg check --top (just the suggestedNext block), or yg check (full output)."
|
|
15851
|
-
}) + "\n");
|
|
15851
|
+
}) + "\n"));
|
|
15852
15852
|
await exitAfterFlush(1);
|
|
15853
15853
|
return;
|
|
15854
15854
|
}
|
|
15855
15855
|
view = { kind: "top", n };
|
|
15856
15856
|
}
|
|
15857
15857
|
if (opts.dryRun && !opts.approve) {
|
|
15858
|
-
process.
|
|
15858
|
+
process.stderr.write(chalk8.red(buildIssueMessage({
|
|
15859
15859
|
what: "--dry-run requires --approve.",
|
|
15860
15860
|
why: "--dry-run previews what `yg check --approve` would fill (the reviewer-call budget and per-node breakdown) without writing or calling the reviewer; it is a mode of --approve, not a variant of the plain read. Plain `yg check` is already a free, no-write read.",
|
|
15861
15861
|
next: "Run: yg check --approve --dry-run (cost preview), or yg check (plain read)."
|
|
15862
|
-
}) + "\n");
|
|
15862
|
+
}) + "\n"));
|
|
15863
15863
|
await exitAfterFlush(1);
|
|
15864
15864
|
return;
|
|
15865
15865
|
}
|
|
@@ -15879,7 +15879,7 @@ function registerCheckCommand(program2) {
|
|
|
15879
15879
|
return;
|
|
15880
15880
|
}
|
|
15881
15881
|
const hasErrors2 = fill.checkResult.issues.some((i) => i.severity === "error");
|
|
15882
|
-
|
|
15882
|
+
await exitAfterFlush(hasErrors2 ? 1 : 0);
|
|
15883
15883
|
return;
|
|
15884
15884
|
} catch (err) {
|
|
15885
15885
|
if (err instanceof FillGatingError) {
|
|
@@ -15892,7 +15892,7 @@ function registerCheckCommand(program2) {
|
|
|
15892
15892
|
const result = await runCheck(graph, gitFiles);
|
|
15893
15893
|
process.stdout.write(formatOutput(result, view));
|
|
15894
15894
|
const hasErrors = result.issues.some((i) => i.severity === "error");
|
|
15895
|
-
|
|
15895
|
+
await exitAfterFlush(hasErrors ? 1 : 0);
|
|
15896
15896
|
} catch (error) {
|
|
15897
15897
|
debugWrite(`[check] error: ${error.message}`);
|
|
15898
15898
|
abortOnUnexpectedError(error, "running check");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chrisdudek/yg",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.4",
|
|
4
4
|
"description": "Architecture rules your AI coding agent can't ignore. It gets the rules for a file before it edits, and every change is checked — by a free local script or an LLM reviewer — before it moves on. Works with Claude Code, Cursor, Copilot, Codex, Cline.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"@tree-sitter-grammars/tree-sitter-kotlin": "^1.1.0",
|
|
86
86
|
"@tree-sitter-grammars/tree-sitter-toml": "^0.7.0",
|
|
87
87
|
"@tree-sitter-grammars/tree-sitter-yaml": "^0.7.1",
|
|
88
|
-
"@types/node": "^
|
|
88
|
+
"@types/node": "^26.0.0",
|
|
89
89
|
"@types/semver": "^7.7.1",
|
|
90
90
|
"@vitest/coverage-v8": "^4.1.8",
|
|
91
91
|
"eslint": "^10.4.1",
|