@smartergpt/lexrunner 2.3.0 → 2.4.0

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/CHANGELOG.md CHANGED
@@ -6,6 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.4.0] - 2026-09-09
10
+
11
+ ### Added
12
+
13
+ - Progressive root CLI help shows seven existing work, integration and setup families.
14
+ `--help-all` exposes every registered command family and compatibility alias;
15
+ nested help and typo suggestions retain the complete command inventory.
16
+
17
+ ### Fixed
18
+
19
+ - First-use help saves the actual integration plan with `--output plan.json` instead
20
+ of redirecting the planner summary. Guidance distinguishes reads, writes, gate
21
+ execution, worker handoff and separate merge authority.
22
+
23
+ ### Documentation
24
+
25
+ - Explain the selected-work assisted handoff through preparation, attachment,
26
+ observed effects, receipts and verification. Controlled composition tests do not
27
+ establish a real worker provider or native Windows preparation support.
28
+ - Repository exploration and compact-resumption scripts remain opt-in development
29
+ tools, outside the npm package. No token, cost or efficacy improvement is claimed.
30
+
9
31
  ## [2.3.0] - 2026-09-09
10
32
 
11
33
  ### Added
package/README.md CHANGED
@@ -17,13 +17,19 @@ branch, pushing, opening a PR, or merging requires separate approval.
17
17
 
18
18
  ## Start here
19
19
 
20
+ The [2.4.0 candidate](docs/releases/2.4.0.md) (pending release) makes `lexrunner --help` show the main work and integration families with a first-use
21
+ path. Use `lexrunner --help-all` for every family and compatibility alias, or
22
+ `lexrunner <command> --help` for full options and nested operations. Help changes
23
+ presentation only; command effects and authority requirements still apply.
24
+ The public 2.3.0 package does not yet contain this help view or `--help-all`.
25
+
20
26
  For your first trial, install **LexRunner only** in a GitHub repository with open
21
27
  PRs. Node.js 24+ and Git are required. npm installs LexRunner's dependencies; you
22
28
  do not need to install Lex, AXF, LexSona, a policy-host service, or an MCP server
23
- separately for this CLI workflow. These examples use the published 2.2.0 release.
29
+ separately for this CLI workflow. These examples use the published 2.3.0 release.
24
30
 
25
31
  ```bash
26
- npm install --save-dev @smartergpt/lexrunner@2.2.0
32
+ npm install --save-dev @smartergpt/lexrunner@2.3.0
27
33
  npx lexrunner --version
28
34
  npx lexrunner weave discover --json
29
35
  ```
@@ -118,11 +124,11 @@ The checked-in package version is the single source for `lexrunner --version` an
118
124
 
119
125
  <!-- BEGIN GENERATED PACKAGE VERSION -->
120
126
 
121
- Current repository package version: **2.3.0**. npm availability and dist-tags are separate
127
+ Current repository package version: **2.4.0**. npm availability and dist-tags are separate
122
128
  release evidence; inspect the registry rather than inferring publication from source metadata.
123
129
  <!-- END GENERATED PACKAGE VERSION -->
124
130
 
125
- See the [2.3.0 selected-work candidate](docs/releases/2.3.0.md), the
131
+ See the [2.3.0 selected-work release](docs/releases/2.3.0.md), the
126
132
  [2.2.0 frozen-input release](docs/releases/2.2.0.md), the
127
133
  [2.1.0 open-source release](docs/releases/2.1.0.md), the
128
134
  [2.0.2 generated timeout correction](docs/releases/2.0.2.md), the
package/dist/cli.cjs CHANGED
@@ -26871,7 +26871,7 @@ var import_config3 = require("dotenv/config");
26871
26871
  // package.json
26872
26872
  var package_default = {
26873
26873
  name: "@smartergpt/lexrunner",
26874
- version: "2.3.0",
26874
+ version: "2.4.0",
26875
26875
  type: "module",
26876
26876
  engines: {
26877
26877
  node: ">=24"
@@ -27050,7 +27050,7 @@ var package_default = {
27050
27050
  };
27051
27051
 
27052
27052
  // src/cli.ts
27053
- var import_commander6 = require("commander");
27053
+ var import_commander7 = require("commander");
27054
27054
  var import_node_url7 = require("url");
27055
27055
  var import_node_path41 = require("path");
27056
27056
  var import_chalk14 = __toESM(require("chalk"), 1);
@@ -70252,6 +70252,67 @@ function emitAliasWarning(command, write = (message) => process.stderr.write(mes
70252
70252
  `);
70253
70253
  }
70254
70254
 
70255
+ // src/cli/progressive-help.ts
70256
+ var import_commander6 = require("commander");
70257
+ var FIRST_USE_COMMANDS = /* @__PURE__ */ new Set([
70258
+ "idea",
70259
+ "create-project",
70260
+ "attempt",
70261
+ "weave",
70262
+ "gate",
70263
+ "schema",
70264
+ "workspace",
70265
+ "help"
70266
+ ]);
70267
+ function configureProgressiveHelp(root) {
70268
+ root.configureHelp({
70269
+ formatHelp(command, helper) {
70270
+ if (command !== root || root.opts().helpAll) {
70271
+ return import_commander6.Help.prototype.formatHelp.call(this, command, helper);
70272
+ }
70273
+ const presentation = Object.create(helper);
70274
+ presentation.visibleCommands = (entry) => {
70275
+ const commands = helper.visibleCommands(entry);
70276
+ return entry === root ? commands.filter((child) => FIRST_USE_COMMANDS.has(child.name())) : commands;
70277
+ };
70278
+ return import_commander6.Help.prototype.formatHelp.call(this, command, presentation);
70279
+ }
70280
+ });
70281
+ root.option("--help-all", "Show all command families and compatibility aliases").on("option:help-all", () => root.help());
70282
+ root.addHelpText(
70283
+ "after",
70284
+ `
70285
+ Start with a reviewable GitHub integration plan:
70286
+ lexrunner weave discover --json Read open PRs from GitHub
70287
+ lexrunner weave plan --from-github --output plan.json --json
70288
+ Read GitHub and write the plan file
70289
+ lexrunner schema validate plan.json --json Validate the saved plan
70290
+ lexrunner weave merge-order plan.json --json Inspect dependency order
70291
+ lexrunner gate run plan.json --dry-run --json Preview gates without running them
70292
+
70293
+ Choose an unused plan filename. Inspect selected heads, dependencies and executable
70294
+ gate commands. Preview may write local diagnostics; it proves neither passed gates
70295
+ nor review or merge authority. Later gate execution runs commands; weave apply
70296
+ --execute changes Git state and requires separate review and explicit authority.
70297
+
70298
+ Plan and carry out authored work:
70299
+ lexrunner idea --help Capture an idea; normal execution may create GitHub issues
70300
+ lexrunner create-project --help Build a work plan; may write files and create issues
70301
+ lexrunner attempt --help Materialize selected work, prepare, attach, submit and verify
70302
+ Selection and materialization do not launch workers. Preparation changes workspace
70303
+ and lifecycle state; the assisted host owns actual worker launch and dispatch.
70304
+ Completion requires evidence and reassessment against success criteria.
70305
+
70306
+ Explore further:
70307
+ lexrunner --help-all All command families, aliases, diagnostics and recovery
70308
+ lexrunner <command> --help Full help for that command, including nested operations
70309
+ lexrunner workspace --help Setup and environment diagnostics
70310
+
70311
+ Walkthrough: https://github.com/SmarterGPT/lexrunner/blob/main/MERGE_WEAVE_QUICKSTART.md
70312
+ `
70313
+ );
70314
+ }
70315
+
70255
70316
  // src/commands/explain.ts
70256
70317
  var import_promises20 = __toESM(require("fs/promises"), 1);
70257
70318
  var import_path10 = __toESM(require("path"), 1);
@@ -77822,7 +77883,7 @@ ${prefix} Unexpected error: ${String(err?.message ?? e)}
77822
77883
  }
77823
77884
  throwExit(1);
77824
77885
  }
77825
- var program = new import_commander6.Command();
77886
+ var program = new import_commander7.Command();
77826
77887
  program.exitOverride((err) => {
77827
77888
  throw new CLIExitSignal(err.exitCode ?? 1, err.message);
77828
77889
  });
@@ -77850,63 +77911,8 @@ program.name("lexrunner").description(
77850
77911
  setFrameEmissionEnabled(globalFlags.emitFrames);
77851
77912
  }
77852
77913
  emitAliasWarning(actionCommand);
77853
- }).addHelpText(
77854
- "after",
77855
- `
77856
- Examples (Canonical Category-Action Pattern):
77857
- $ lexrunner workspace init Initialize workspace with interactive setup
77858
- $ lexrunner workspace doctor Validate environment and configuration
77859
- $ lexrunner idea Capture feature idea interactively
77860
- $ lexrunner idea --title "..." --description "..." --dry-run
77861
- $ lexrunner config show Display configuration with precedence chain
77862
- $ lexrunner config show --key scope.target Show specific configuration value
77863
- $ lexrunner config show --json Output configuration in JSON format
77864
- $ lexrunner config:inspect Display merged configuration with provenance map
77865
- $ lexrunner weave discover Find open PRs matching scope
77866
- $ lexrunner weave discover --suggest Generate dependency suggestions with heuristics
77867
- $ lexrunner weave plan --from-github Generate merge plan from GitHub PRs
77868
- $ lexrunner plan-review plan.json Interactively review and edit plan
77869
- $ lexrunner plan-diff plan1.json plan2.json Compare two plans
77870
- $ lexrunner gate run plan.json Run quality gates on plan
77871
- $ lexrunner orchestrate:analyze-issues Analyze issues for parallel work planning (fanout commands coming soon)
77872
- $ lexrunner orchestrate:analyze-issues --labels priority:P1 --json
77873
- $ lexrunner security check-rotation Check token rotation status
77874
- $ lexrunner security scan-plan Scan a plan file for secrets
77875
- $ lexrunner security validate-secrets GITHUB_TOKEN OTHER_SECRET
77876
-
77877
- Governance (LexSona Shadow Mode):
77878
- $ lexrunner governance:report Analyze shadow governance logs
77879
- $ lexrunner governance:report --format markdown --disagreements-only
77880
- $ lexrunner governance:report --since 2025-12-01 --persona quality-first_engineering
77881
- $ lexrunner governance:cleanup Clean up old governance logs
77882
-
77883
- Power User Commands:
77884
- $ lexrunner view plan.json Interactive plan viewer
77885
- $ lexrunner query plan.json --stats Plan statistics and analysis
77886
- $ lexrunner query plan.json "level eq 1" Query items by criteria
77887
- $ lexrunner retry --filter failed Retry failed gates
77888
- $ lexrunner completion bash Generate bash completion script
77889
-
77890
- Canonical Workflow:
77891
- 1. Ideate: lexrunner idea (capture feature ideas as GitHub Issues)
77892
- 2. Discover: lexrunner weave discover (optionally add --suggest for dependencies)
77893
- 3. Plan: lexrunner weave plan --from-github --json > plan.json
77894
- 4. Review: lexrunner plan-review plan.json
77895
- 5. Execute: lexrunner gate run plan.json
77896
- 6. Report: lexrunner weave report artifacts --out md
77897
-
77898
- Legacy Commands (Deprecated, use canonical forms above):
77899
- $ lexrunner init \u2192 lexrunner workspace init
77900
- $ lexrunner doctor \u2192 lexrunner workspace doctor
77901
- $ lexrunner discover \u2192 lexrunner weave discover
77902
- $ lexrunner plan \u2192 lexrunner weave plan
77903
- $ lexrunner status \u2192 lexrunner weave status
77904
- $ lexrunner report \u2192 lexrunner weave report
77905
- $ lexrunner execute \u2192 lexrunner gate run
77906
- $ lexrunner orchestrate:analyze-issues \u2192 lexrunner fanout analyze
77907
- $ lexrunner orchestrate:assign-batch \u2192 lexrunner fanout assign
77908
- `
77909
- );
77914
+ });
77915
+ configureProgressiveHelp(program);
77910
77916
  registerGateReportCommand(program);
77911
77917
  registerGovernanceReportCommand(program);
77912
77918
  registerGovernanceCleanupCommand(program);
@@ -78534,7 +78540,7 @@ async function main(argv = process.argv) {
78534
78540
  }
78535
78541
  return;
78536
78542
  }
78537
- if (error instanceof import_commander6.CommanderError) {
78543
+ if (error instanceof import_commander7.CommanderError) {
78538
78544
  const exitCode = typeof error.exitCode === "number" ? error.exitCode : 1;
78539
78545
  process.exitCode = exitCode;
78540
78546
  if (exitCode !== 0 && error.message) {
package/dist/cli.js CHANGED
@@ -476,7 +476,7 @@ import "dotenv/config";
476
476
  // package.json
477
477
  var package_default = {
478
478
  name: "@smartergpt/lexrunner",
479
- version: "2.3.0",
479
+ version: "2.4.0",
480
480
  type: "module",
481
481
  engines: {
482
482
  node: ">=24"
@@ -655,7 +655,7 @@ var package_default = {
655
655
  };
656
656
 
657
657
  // src/cli.ts
658
- import { Command as Command6, CommanderError } from "commander";
658
+ import { Command as Command7, CommanderError } from "commander";
659
659
  import { fileURLToPath as fileURLToPath6 } from "url";
660
660
  import { resolve as resolve15 } from "path";
661
661
  import chalk11 from "chalk";
@@ -43626,6 +43626,67 @@ function emitAliasWarning(command, write = (message) => process.stderr.write(mes
43626
43626
  `);
43627
43627
  }
43628
43628
 
43629
+ // src/cli/progressive-help.ts
43630
+ import { Help } from "commander";
43631
+ var FIRST_USE_COMMANDS = /* @__PURE__ */ new Set([
43632
+ "idea",
43633
+ "create-project",
43634
+ "attempt",
43635
+ "weave",
43636
+ "gate",
43637
+ "schema",
43638
+ "workspace",
43639
+ "help"
43640
+ ]);
43641
+ function configureProgressiveHelp(root) {
43642
+ root.configureHelp({
43643
+ formatHelp(command, helper) {
43644
+ if (command !== root || root.opts().helpAll) {
43645
+ return Help.prototype.formatHelp.call(this, command, helper);
43646
+ }
43647
+ const presentation = Object.create(helper);
43648
+ presentation.visibleCommands = (entry) => {
43649
+ const commands = helper.visibleCommands(entry);
43650
+ return entry === root ? commands.filter((child) => FIRST_USE_COMMANDS.has(child.name())) : commands;
43651
+ };
43652
+ return Help.prototype.formatHelp.call(this, command, presentation);
43653
+ }
43654
+ });
43655
+ root.option("--help-all", "Show all command families and compatibility aliases").on("option:help-all", () => root.help());
43656
+ root.addHelpText(
43657
+ "after",
43658
+ `
43659
+ Start with a reviewable GitHub integration plan:
43660
+ lexrunner weave discover --json Read open PRs from GitHub
43661
+ lexrunner weave plan --from-github --output plan.json --json
43662
+ Read GitHub and write the plan file
43663
+ lexrunner schema validate plan.json --json Validate the saved plan
43664
+ lexrunner weave merge-order plan.json --json Inspect dependency order
43665
+ lexrunner gate run plan.json --dry-run --json Preview gates without running them
43666
+
43667
+ Choose an unused plan filename. Inspect selected heads, dependencies and executable
43668
+ gate commands. Preview may write local diagnostics; it proves neither passed gates
43669
+ nor review or merge authority. Later gate execution runs commands; weave apply
43670
+ --execute changes Git state and requires separate review and explicit authority.
43671
+
43672
+ Plan and carry out authored work:
43673
+ lexrunner idea --help Capture an idea; normal execution may create GitHub issues
43674
+ lexrunner create-project --help Build a work plan; may write files and create issues
43675
+ lexrunner attempt --help Materialize selected work, prepare, attach, submit and verify
43676
+ Selection and materialization do not launch workers. Preparation changes workspace
43677
+ and lifecycle state; the assisted host owns actual worker launch and dispatch.
43678
+ Completion requires evidence and reassessment against success criteria.
43679
+
43680
+ Explore further:
43681
+ lexrunner --help-all All command families, aliases, diagnostics and recovery
43682
+ lexrunner <command> --help Full help for that command, including nested operations
43683
+ lexrunner workspace --help Setup and environment diagnostics
43684
+
43685
+ Walkthrough: https://github.com/SmarterGPT/lexrunner/blob/main/MERGE_WEAVE_QUICKSTART.md
43686
+ `
43687
+ );
43688
+ }
43689
+
43629
43690
  // src/commands/explain.ts
43630
43691
  import fs46 from "fs/promises";
43631
43692
  import path53 from "path";
@@ -51144,7 +51205,7 @@ ${prefix} Unexpected error: ${String(err?.message ?? e)}
51144
51205
  }
51145
51206
  throwExit(1);
51146
51207
  }
51147
- var program = new Command6();
51208
+ var program = new Command7();
51148
51209
  program.exitOverride((err) => {
51149
51210
  throw new CLIExitSignal(err.exitCode ?? 1, err.message);
51150
51211
  });
@@ -51172,63 +51233,8 @@ program.name("lexrunner").description(
51172
51233
  setFrameEmissionEnabled(globalFlags.emitFrames);
51173
51234
  }
51174
51235
  emitAliasWarning(actionCommand);
51175
- }).addHelpText(
51176
- "after",
51177
- `
51178
- Examples (Canonical Category-Action Pattern):
51179
- $ lexrunner workspace init Initialize workspace with interactive setup
51180
- $ lexrunner workspace doctor Validate environment and configuration
51181
- $ lexrunner idea Capture feature idea interactively
51182
- $ lexrunner idea --title "..." --description "..." --dry-run
51183
- $ lexrunner config show Display configuration with precedence chain
51184
- $ lexrunner config show --key scope.target Show specific configuration value
51185
- $ lexrunner config show --json Output configuration in JSON format
51186
- $ lexrunner config:inspect Display merged configuration with provenance map
51187
- $ lexrunner weave discover Find open PRs matching scope
51188
- $ lexrunner weave discover --suggest Generate dependency suggestions with heuristics
51189
- $ lexrunner weave plan --from-github Generate merge plan from GitHub PRs
51190
- $ lexrunner plan-review plan.json Interactively review and edit plan
51191
- $ lexrunner plan-diff plan1.json plan2.json Compare two plans
51192
- $ lexrunner gate run plan.json Run quality gates on plan
51193
- $ lexrunner orchestrate:analyze-issues Analyze issues for parallel work planning (fanout commands coming soon)
51194
- $ lexrunner orchestrate:analyze-issues --labels priority:P1 --json
51195
- $ lexrunner security check-rotation Check token rotation status
51196
- $ lexrunner security scan-plan Scan a plan file for secrets
51197
- $ lexrunner security validate-secrets GITHUB_TOKEN OTHER_SECRET
51198
-
51199
- Governance (LexSona Shadow Mode):
51200
- $ lexrunner governance:report Analyze shadow governance logs
51201
- $ lexrunner governance:report --format markdown --disagreements-only
51202
- $ lexrunner governance:report --since 2025-12-01 --persona quality-first_engineering
51203
- $ lexrunner governance:cleanup Clean up old governance logs
51204
-
51205
- Power User Commands:
51206
- $ lexrunner view plan.json Interactive plan viewer
51207
- $ lexrunner query plan.json --stats Plan statistics and analysis
51208
- $ lexrunner query plan.json "level eq 1" Query items by criteria
51209
- $ lexrunner retry --filter failed Retry failed gates
51210
- $ lexrunner completion bash Generate bash completion script
51211
-
51212
- Canonical Workflow:
51213
- 1. Ideate: lexrunner idea (capture feature ideas as GitHub Issues)
51214
- 2. Discover: lexrunner weave discover (optionally add --suggest for dependencies)
51215
- 3. Plan: lexrunner weave plan --from-github --json > plan.json
51216
- 4. Review: lexrunner plan-review plan.json
51217
- 5. Execute: lexrunner gate run plan.json
51218
- 6. Report: lexrunner weave report artifacts --out md
51219
-
51220
- Legacy Commands (Deprecated, use canonical forms above):
51221
- $ lexrunner init \u2192 lexrunner workspace init
51222
- $ lexrunner doctor \u2192 lexrunner workspace doctor
51223
- $ lexrunner discover \u2192 lexrunner weave discover
51224
- $ lexrunner plan \u2192 lexrunner weave plan
51225
- $ lexrunner status \u2192 lexrunner weave status
51226
- $ lexrunner report \u2192 lexrunner weave report
51227
- $ lexrunner execute \u2192 lexrunner gate run
51228
- $ lexrunner orchestrate:analyze-issues \u2192 lexrunner fanout analyze
51229
- $ lexrunner orchestrate:assign-batch \u2192 lexrunner fanout assign
51230
- `
51231
- );
51236
+ });
51237
+ configureProgressiveHelp(program);
51232
51238
  registerGateReportCommand(program);
51233
51239
  registerGovernanceReportCommand(program);
51234
51240
  registerGovernanceCleanupCommand(program);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartergpt/lexrunner",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=24"