affaan-m/ECC · error · Error

Unsupported Itô command

Error message

Unsupported Itô command "${command || "(missing)"}"; ECC permits only login, logout, auth, find, status, and evals.

What it means

parseArgs validates the first non-json argument against SUPPORTED_COMMANDS (login, logout, auth, find, status, evals). Any other or missing command throws this error listing the permitted set. The interpolated command shows "(missing)" when no command argument was supplied.

Solutions

  1. Use one of the supported commands: ecc ito login | logout | auth | find | status | evals
  2. Fix typos in the subcommand (check against the list in the error message)
  3. Ensure the command is the first argument after any --json flag: `ecc ito --json status` is parsed as command="status"
  4. If running the script directly, pass argv as node scripts/ito.js status, not extra program name args

Example fix

// before
ecc ito evaluate --live-sixtytwo ...
// after
ecc ito evals --live-sixtytwo ...
Defensive patterns

Strategy: validation

Validate before calling

const SUPPORTED = ['login', 'logout', 'auth', 'find', 'status', 'evals'];
if (!SUPPORTED.includes(command)) throw new Error(`unknown ito command: ${command}`);

Type guard

const isItoCommand = (c) => ['login','logout','auth','find','status','evals'].includes(c);

Try / catch

try {
  dispatch(command);
} catch (e) {
  if (e.message.includes('Unsupported Itô command')) {
    printUsageAndExit(1);
  } else throw e;
}

Prevention

When it happens

Trigger: Running `ecc ito deploy`, `ecc ito` (no subcommand), misspellings like `ecc ito statu` or `ecc ito login --json login`, or accidentally passing an option as the first argument, e.g. `ecc ito --json`.

Common situations: Typos in the subcommand; calling the script directly (node scripts/ito.js) with the wrong argv shape; older command names removed from the supported set; copy-pasted invocations from other ECC tools.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16). Data as JSON: /api/errors/4ba91a9ff8cd4dc7. Report an issue: GitHub.

Appendix: source

Thrown at scripts/ito.js:166

    return Object.freeze({ help: true, invocationArgs: [] });
  }

  if (environment.ECC_DRY_RUN === "1" || args.includes("--dry-run")) {
    throw new Error(
      "Itô compute has no paper or dry-run success mode. No CLI operation was invoked."
    );
  }

  const jsonIndexes = args
    .map((value, index) => (value === "--json" ? index : -1))
    .filter((index) => index >= 0);
  if (jsonIndexes.length > 1) {
    throw new Error("--json may only be provided once");
  }
  const withoutJson = args.filter((value) => value !== "--json");
  const command = withoutJson.shift();
  if (!SUPPORTED_COMMANDS.includes(command)) {
    throw new Error(
      `Unsupported Itô command "${command || "(missing)"}"; ECC permits only login, logout, auth, find, status, and evals.`
    );
  }
  if (command === "auth" && withoutJson.includes("--no-browser")) {
    throw new Error("--no-browser is valid only for ecc ito login; auth is validation-only.");
  }
  if (command === "evals") {
    validateNodeQualificationArgs(withoutJson, environment);
  }

  return Object.freeze({
    help: false,
    invocationArgs: Object.freeze([
      ...(jsonIndexes.length === 1 ? ["--json"] : []),
      command,
      ...withoutJson,
    ]),
  });

View on GitHub (pinned to 8321021c54)