@mutmutco/cli 3.91.0 → 3.93.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.
Files changed (2) hide show
  1. package/dist/main.cjs +31 -9
  2. package/package.json +1 -1
package/dist/main.cjs CHANGED
@@ -4304,6 +4304,24 @@ async function surfaceLabelApplies(repo, deps = {}) {
4304
4304
  return (known?.length ?? 0) > 0;
4305
4305
  }
4306
4306
 
4307
+ // src/parse-error-hints.ts
4308
+ var TARGET_SELECTOR_FLAGS = /* @__PURE__ */ new Set(["--repo", "--ref", "--target", "--project", "--issue"]);
4309
+ function targetFlagValueFromArgv(flag, argv) {
4310
+ const i = argv.indexOf(flag);
4311
+ if (i < 0) return void 0;
4312
+ const next = argv[i + 1];
4313
+ if (!next || next.startsWith("-")) return void 0;
4314
+ return next;
4315
+ }
4316
+ function formatPositionalTarget(commandPath3, argName, opts = {}) {
4317
+ const concrete = opts.flag && opts.argv ? targetFlagValueFromArgv(opts.flag, opts.argv) : void 0;
4318
+ if (concrete) return `mmi-cli ${commandPath3} ${concrete}`;
4319
+ return `mmi-cli ${commandPath3} <${argName}>`;
4320
+ }
4321
+ function unknownTargetFlagMessage(flag, positional) {
4322
+ return `unknown option '${flag}' \u2014 this command takes its target as a positional: ${positional}`;
4323
+ }
4324
+
4307
4325
  // src/session-start.ts
4308
4326
  var import_node_fs8 = require("node:fs");
4309
4327
  var import_node_path6 = require("node:path");
@@ -25636,7 +25654,7 @@ async function checkDocsIndexAtHead(opts, deps) {
25636
25654
  if (!await deps.refResolves(root, ref)) return void 0;
25637
25655
  const paths = await deps.listDocsAtRef(root, ref);
25638
25656
  if (!paths.includes(DOCS_INDEX_PATH)) return void 0;
25639
- const relDocs = paths.filter((p) => p.startsWith("docs/")).map((p) => p.slice("docs/".length)).filter(isRoutableDocsPath);
25657
+ const relDocs = paths.filter((p) => p.startsWith("docs/") && p.endsWith(".md")).map((p) => p.slice("docs/".length)).filter(isRoutableDocsPath);
25640
25658
  const [indexContent, docContents] = await Promise.all([
25641
25659
  deps.readAtRef(root, ref, DOCS_INDEX_PATH),
25642
25660
  Promise.all(relDocs.map((rel) => deps.readAtRef(root, ref, `docs/${rel}`)))
@@ -30000,13 +30018,12 @@ function commandOwnLongFlags(cmd) {
30000
30018
  }
30001
30019
  return [...flags];
30002
30020
  }
30003
- var TARGET_SELECTOR_FLAGS = /* @__PURE__ */ new Set(["--repo", "--ref", "--target", "--project"]);
30004
- function positionalTargetForm(cmd) {
30021
+ function positionalTargetForm(cmd, opts = {}) {
30005
30022
  if (!cmd) return void 0;
30006
30023
  const args = cmd.registeredArguments ?? [];
30007
30024
  const first = args[0];
30008
30025
  if (!first) return void 0;
30009
- return `mmi-cli ${commandPath2(cmd)} <${first.name()}>`;
30026
+ return formatPositionalTarget(commandPath2(cmd), first.name(), opts);
30010
30027
  }
30011
30028
  function resolveParseHint() {
30012
30029
  if (lastParseErrorKind === "unknown-command") {
@@ -30051,12 +30068,13 @@ function envelopeAwareWriteErr(str) {
30051
30068
  const match = /unknown option '([^']+)'/.exec(plain);
30052
30069
  if (match) {
30053
30070
  const flag = match[1];
30071
+ const argv = process.argv.slice(2);
30072
+ const invoked = resolveCommandFromArgv(program2, argv);
30073
+ const positional = TARGET_SELECTOR_FLAGS.has(flag) ? positionalTargetForm(invoked, { flag, argv }) : void 0;
30054
30074
  if (argvWantsJson2()) {
30055
- const invoked = resolveCommandFromArgv(program2, process.argv.slice(2));
30056
- const suggestion = didYouMean(flag, commandOwnLongFlags(invoked));
30057
- const corrected = suggestion ? `mmi-cli ${process.argv.slice(2).map((a) => a === flag ? suggestion : a).join(" ")}` : void 0;
30058
- const positional = !suggestion && TARGET_SELECTOR_FLAGS.has(flag) ? positionalTargetForm(invoked) : void 0;
30059
- const message = positional ? `unknown option '${flag}' \u2014 this command takes its target as a positional: ${positional}` : `unknown option '${flag}'`;
30075
+ const suggestion = positional ? void 0 : didYouMean(flag, commandOwnLongFlags(invoked));
30076
+ const corrected = suggestion ? `mmi-cli ${argv.map((a) => a === flag ? suggestion : a).join(" ")}` : void 0;
30077
+ const message = positional ? unknownTargetFlagMessage(flag, positional) : `unknown option '${flag}'`;
30060
30078
  process.stderr.write(
30061
30079
  formatErrorEnvelope(message, {
30062
30080
  code: ERROR_CODES.ERR_UNKNOWN_FLAG,
@@ -30068,6 +30086,10 @@ function envelopeAwareWriteErr(str) {
30068
30086
  unknownFlagJsonHandled = true;
30069
30087
  return;
30070
30088
  }
30089
+ if (positional) {
30090
+ process.stderr.write(str.replace(/unknown option '[^']+'/, unknownTargetFlagMessage(flag, positional)));
30091
+ return;
30092
+ }
30071
30093
  process.stderr.write(str);
30072
30094
  return;
30073
30095
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "3.91.0",
3
+ "version": "3.93.0",
4
4
  "description": "MMI Future CLI — the org dev toolbox and shared cross-IDE engine for every registry-declared MMI coding surface.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",