@levr-one/cli 0.12.15 → 0.12.17
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.
|
@@ -885,7 +885,9 @@ function besideName(serverName, url) {
|
|
|
885
885
|
* `McpToolAdapterService.DESTRUCTIVE_TOOL_NAMES`.
|
|
886
886
|
*
|
|
887
887
|
* Rules for this list:
|
|
888
|
-
* - Only the non-destructive tools a first task
|
|
888
|
+
* - Only the non-destructive tools a first task or an ordinary gated issue
|
|
889
|
+
* actually calls (`batch_verify_gates`: agents used it in the real-agent
|
|
890
|
+
* trial, user decision 2026-11-04). A tool that
|
|
889
891
|
* can delete, merge away or permanently unlink anything never belongs here.
|
|
890
892
|
* - Nor does a tool whose PURPOSE is to waive a check (waive_gate): see
|
|
891
893
|
* {@link LEVR_NEVER_PREAPPROVED_TOOLS}.
|
|
@@ -914,7 +916,8 @@ const LEVR_PREAPPROVED_TOOLS = [
|
|
|
914
916
|
"get_issue_comments",
|
|
915
917
|
"add_issue_comment",
|
|
916
918
|
"deploy_gates",
|
|
917
|
-
"
|
|
919
|
+
"verify_gates",
|
|
920
|
+
"batch_verify_gates",
|
|
918
921
|
"report_gate_results",
|
|
919
922
|
"get_gate_status",
|
|
920
923
|
"transition_issue",
|
|
@@ -937,7 +940,8 @@ const LEVR_PREAPPROVED_TOOL_DESCRIPTIONS = {
|
|
|
937
940
|
add_issue_comment: "adds a comment to a task",
|
|
938
941
|
deploy_gates: "writes the task's gates; it can also change or withdraw a gate (recorded)",
|
|
939
942
|
transition_issue: "moves a task to another status; Done is refused while a required check fails, unless your agent waives that check (the waiver is recorded)",
|
|
940
|
-
|
|
943
|
+
verify_gates: "runs the task's checklist",
|
|
944
|
+
batch_verify_gates: "runs the checklists of several tasks in one call",
|
|
941
945
|
report_gate_results: "records the checklist results your agent ran",
|
|
942
946
|
get_gate_status: "reads the task's checklist results",
|
|
943
947
|
get_practice_app: "reads the sample practice app",
|
|
@@ -1704,7 +1704,7 @@ const WRAPPER_PREFIX_RE = /* @__PURE__ */ new RegExp("^(?:" + [
|
|
|
1704
1704
|
*/
|
|
1705
1705
|
const TEST_RUNNER_RE = new RegExp([
|
|
1706
1706
|
String.raw`^yarn(?:\s+(?:-s|--silent|--verbose|--offline|--frozen-lockfile|--immutable|workspace\s+\S+|--cwd\s+\S+))*\s+(?:run\s+)?(?:test(?::[\w-]+)?\b|vitest\b|jest\b)`,
|
|
1707
|
-
String.raw`^yarn\s+workspaces\s+foreach(?:\s+(?:--(?:include|exclude|from|jobs)(
|
|
1707
|
+
String.raw`^yarn\s+workspaces\s+foreach(?:\s+(?:--(?:include|exclude|from|jobs)(?:=\S+|\s+[^-\s]\S*)|-j\s+[^-\s]\S*|-[A-Za-z]+|--[\w-]+(?:=\S+)?))*\s+(?:run\s+)?test(?::[\w-]+)?\b`,
|
|
1708
1708
|
String.raw`^npm\s+(?:run\s+)?test(?::[\w-]+)?\b`,
|
|
1709
1709
|
String.raw`^pnpm\s+(?:(?:--filter|-F|--dir|-C)\s+\S+\s+|(?:-r|--recursive)\s+)*(?:run\s+)?test(?::[\w-]+)?\b`,
|
|
1710
1710
|
String.raw`^pnpm\s+(?:exec\s+|dlx\s+)?(?:vitest|jest|playwright)\b`,
|
|
@@ -1722,6 +1722,9 @@ const TEST_RUNNER_RE = new RegExp([
|
|
|
1722
1722
|
String.raw`^dotnet\s+test(?:\s|$)`,
|
|
1723
1723
|
String.raw`^(?:bundle\s+exec\s+)?(?:bin\/)?rspec(?:\s|$)`,
|
|
1724
1724
|
String.raw`^(?:npx\s+(?:(?:--yes|-y|--no-install|--no|-p\s+\S+|--package(?:=|\s+)\S+)\s+)*|yarn\s+(?:run\s+)?|pnpm\s+(?:exec\s+)?|(?:\.\/)?node_modules\/\.bin\/)?mocha(?:\s|$)`,
|
|
1725
|
+
String.raw`^(?:(?:\S*\/)?node|(?:(?:npx(?:\s+(?:--yes|-y))*|pnpm(?:\s+exec)?|yarn)\s+)?(?:\S*\/)?tsx)\s+(?:(?:--(?:import|require|loader|experimental-loader|test-reporter|test-reporter-destination|test-name-pattern|test-skip-pattern|test-concurrency|test-timeout|test-shard|test-isolation|test-global-setup|test-coverage-exclude|test-coverage-include|test-coverage-branches|test-coverage-functions|test-coverage-lines|env-file|env-file-if-exists|watch-path|disable-warning|experimental-config-file|tsconfig|conditions|input-type|title)|-r|-C)\s+[^-\s]\S*\s+|-\S+\s+)*?--test(?:\s|$)`,
|
|
1726
|
+
String.raw`^(?:(?:uv|poetry|pipenv|hatch)\s+run\s+)?(?:\S*\/)?python[\d.]*\s+(?:-[WX]\s+[^-\s]\S*\s+|-[A-Za-z]+\s+)*-m\s+unittest(?:\s|$)`,
|
|
1727
|
+
String.raw`^(?:(?:uv|poetry|pipenv|hatch)\s+run\s+)?(?:(?:\S*\/)?python[\d.]*\s+-m\s+)?coverage\s+run\s+(?:--(?:source|rcfile|include|omit|data-file|context|concurrency)\s+[^-\s]\S*\s+|-\S+\s+)*?-m\s+unittest(?:\s|$)`,
|
|
1725
1728
|
String.raw`^yarn\s+playwright\s+test(?:\s|$)`
|
|
1726
1729
|
].join("|"));
|
|
1727
1730
|
/**
|
|
@@ -1756,6 +1759,24 @@ const SEMANTIC_RUNNER_RE = /* @__PURE__ */ new RegExp(`(?:^|[\\s|;&(])(?:${JUDGE
|
|
|
1756
1759
|
* any wrapper) is a candidate; a judge is one whose FIRST word is the binary.
|
|
1757
1760
|
*/
|
|
1758
1761
|
const JUDGE_COMMAND_RE = /* @__PURE__ */ new RegExp(`^(?:${JUDGE_BINARIES})(?:\\s|$)`);
|
|
1762
|
+
/**
|
|
1763
|
+
* Commands that build, install or tear down around a run, by shape — review
|
|
1764
|
+
* round 3 (CRA F-007). Taken for the run, a `yarn build` that printed `Done
|
|
1765
|
+
* in 2.1s` stood in for a silent `make test` beside it. Maven and Gradle
|
|
1766
|
+
* lifecycles (`mvn install`, `gradle build`) run the tests, so they are not
|
|
1767
|
+
* listed; and a segment a runner rule recognises is never one of these.
|
|
1768
|
+
*/
|
|
1769
|
+
const BUILD_OR_TEARDOWN_RE = new RegExp([
|
|
1770
|
+
String.raw`^(?:yarn|npm|pnpm|bun)(?:\s+run)?\s+(?:build|install|ci|i|add|lint|format|typecheck|tsc|prepare|compile|codegen|generate)(?::[\w-]+)?(?:\s|$)`,
|
|
1771
|
+
String.raw`^(?:yarn|pnpm|bun)$`,
|
|
1772
|
+
String.raw`^(?:(?:\S*\/)?python[\d.]*\s+-m\s+)?pip[\d.]*\s+install(?:\s|$)`,
|
|
1773
|
+
String.raw`^(?:\S*\/)?tsc(?:\s|$)`,
|
|
1774
|
+
String.raw`^cargo\s+(?:\+\S+\s+)?(?:build|check|fetch)(?:\s|$)`,
|
|
1775
|
+
String.raw`^go\s+(?:build|mod|generate|vet|install)(?:\s|$)`,
|
|
1776
|
+
String.raw`^docker(?:-compose|\s+compose)?(?:\s+-\S+(?:\s+[^-\s]\S*)?)*\s+(?:build|up|down|stop|pull|start|rm|kill|restart)(?:\s|$)`,
|
|
1777
|
+
String.raw`^(?:bundle|composer)\s+install(?:\s|$)`,
|
|
1778
|
+
String.raw`^dotnet\s+(?:build|restore)(?:\s|$)`
|
|
1779
|
+
].join("|"));
|
|
1759
1780
|
|
|
1760
1781
|
//#endregion
|
|
1761
1782
|
//#region ../shared/dist/runs/gate-binding-config.js
|
package/dist/cli.js
CHANGED
|
@@ -226,7 +226,7 @@ Examples:
|
|
|
226
226
|
aliases: { y: "yes" }
|
|
227
227
|
},
|
|
228
228
|
loader: async () => {
|
|
229
|
-
const { mcpAddHandler } = await import("./addHandler-
|
|
229
|
+
const { mcpAddHandler } = await import("./addHandler-CefzsA_l.js");
|
|
230
230
|
return mcpAddHandler;
|
|
231
231
|
}
|
|
232
232
|
});
|
|
@@ -688,7 +688,7 @@ Examples:
|
|
|
688
688
|
}
|
|
689
689
|
},
|
|
690
690
|
loader: async () => {
|
|
691
|
-
const { gatesBindingsExportHandler } = await import("./bindingsHandler-
|
|
691
|
+
const { gatesBindingsExportHandler } = await import("./bindingsHandler-WiV3-m6N.js");
|
|
692
692
|
return gatesBindingsExportHandler;
|
|
693
693
|
}
|
|
694
694
|
});
|
|
@@ -761,7 +761,7 @@ Examples:
|
|
|
761
761
|
aliases: { w: "workspace-id" }
|
|
762
762
|
},
|
|
763
763
|
loader: async () => {
|
|
764
|
-
const { gatesBindingsImportHandler } = await import("./bindingsHandler-
|
|
764
|
+
const { gatesBindingsImportHandler } = await import("./bindingsHandler-WiV3-m6N.js");
|
|
765
765
|
return gatesBindingsImportHandler;
|
|
766
766
|
}
|
|
767
767
|
});
|
|
@@ -980,8 +980,8 @@ Examples:
|
|
|
980
980
|
//#region src/commands/gates/run.ts
|
|
981
981
|
const gatesRunCommand = buildCommand({
|
|
982
982
|
docs: {
|
|
983
|
-
brief: "Run
|
|
984
|
-
fullDescription: `Verify
|
|
983
|
+
brief: "Run an issue's gate commands and report the raw results",
|
|
984
|
+
fullDescription: `Verify an issue's gates, run every local command from the current
|
|
985
985
|
directory (run it from the repo root), and report the raw exit code and output
|
|
986
986
|
tails so the server can derive each verdict.
|
|
987
987
|
|
|
@@ -1012,7 +1012,7 @@ Examples:
|
|
|
1012
1012
|
kind: "tuple",
|
|
1013
1013
|
parameters: [{
|
|
1014
1014
|
parse: String,
|
|
1015
|
-
brief: "
|
|
1015
|
+
brief: "Issue identifier (ENG-50) or UUID",
|
|
1016
1016
|
placeholder: "issue",
|
|
1017
1017
|
optional: false
|
|
1018
1018
|
}]
|
|
@@ -1248,7 +1248,7 @@ Examples:
|
|
|
1248
1248
|
|
|
1249
1249
|
//#endregion
|
|
1250
1250
|
//#region package.json
|
|
1251
|
-
var version = "0.12.
|
|
1251
|
+
var version = "0.12.17";
|
|
1252
1252
|
|
|
1253
1253
|
//#endregion
|
|
1254
1254
|
//#region src/app.ts
|
|
@@ -1283,7 +1283,7 @@ const gatesRoutes = buildRouteMap({
|
|
|
1283
1283
|
refs: gatesRefsCommand,
|
|
1284
1284
|
run: gatesRunCommand
|
|
1285
1285
|
},
|
|
1286
|
-
docs: { brief: "Run
|
|
1286
|
+
docs: { brief: "Run an issue's gates and report the raw results" }
|
|
1287
1287
|
});
|
|
1288
1288
|
const resultRoutes = buildRouteMap({
|
|
1289
1289
|
routes: { append: resultAppendCommand },
|