Updated

Published

jym asks Jev which real subcommand a mistyped one was aiming at

syumai posted jevyoumean, an MIT Go wrapper. When a subcommand is not in the CLI's help, it sends one Jev Choice over the documented names and descriptions, then offers the top matches. Valid commands never call the API. The README ships an eval harness and does not print a scored corpus.

syumai posted jevyoumean on September 22. The post’s examples are git record offered as git commit, and npm add offered as npm install. The repo is MIT. The binary is jym (go install github.com/syumai/jevyoumean/cmd/jym@latest).

jym sits in front of some other command. It reads that command’s help before it runs anything, so a typo does not execute twice. The first argument that is not a flag is the candidate. If that token is already a documented subcommand, a learned alias, or a plugin binary named like git-something, the real command runs and Jev is not called. The README puts that cached check well under 5 ms. If stderr is not a terminal, or if jym is already inside jym, the wrapper also steps aside.

An unknown token becomes one Choice. The criteria are the documented names, the help descriptions, and a required __none__ option so Jev can refuse the whole list. More than 254 candidates are asked in two phases. Default settings: suggest at probability 0.30 or higher, show at most three, and wait for one key. Enter or 1-3 runs the correction. o runs the original text. n cancels with exit 127. auto mode runs the winner only at 0.95 or higher, and it will not auto-run rm, delete, destroy, reset, or push. min_confidence is 0.50. The HTTP timeout is 1,500 ms. Nested help stops at depth 2. git is configured with help -a, because git --help leaves most subcommands out.

Without TYPESAFE_API_KEY, and without a key in $XDG_CONFIG_HOME/jym/credentials.toml (mode 0600), or when the call fails, jym matches by edit distance: at most 2, or at most a third of the token length, plus prefix hits. Those lines are marked (offline) and have no probability. A token the user chooses to run anyway, if the command then exits 0, is stored as learned so the next time it counts as valid.

What leaves the machine, by default, is the command name, the subcommand path, the bad token, and the candidate names with their descriptions. Arguments are not included unless context_args is set to flags or all. The help cache lasts 7 days and is keyed by the binary’s path, mtime, size, the subcommand path, and the help flags. A rebuilt binary drops its entry.

The README’s sample transcript shows git remove foo.txt offered as git rm foo.txt at 0.93. That is the illustration in the usage block. jym-eval can score a TSV of command, typed token, and expected subcommand against both Jev and the edit-distance fallback. The README does not print a count from that harness. Flag typos, a wrong command name such as gti, and pipes or CI are outside what the tool tries to fix.

We did not install jym or run jym-eval.

This site's reading

Editorial notes evaluating claims against primary sources, contextualizing findings alongside related implementations, and defining technical terms.

Verify

Primary post is @__syumai on September 22, linking github.com/syumai/jevyoumean. The repo is MIT. The command is jym, installed with go install github.com/syumai/jevyoumean/cmd/jym@latest. It wraps another CLI. Before exec, the first non-flag token is checked against that command's help. A known token runs as typed and does not call Jev. An unknown token sends one Choice whose criteria are the documented names, their help text, and a required __none__ option. More than 254 candidates are split into two phases. Default mode is prompt: up to three candidates at or above suggest_threshold 0.30, then one key. auto runs the winner only at or above auto_run_threshold 0.95, and never for the denylist rm, delete, destroy, reset, push. min_confidence is 0.50. timeout_ms is 1500. max_depth is 2. Non-TTY stderr, and a nested jym, skip the check. Without a key, or if the API fails, matching falls back to edit distance at most 2 or at most one third of the length, plus prefix matches, printed as (offline) with no probability. The hot path for a valid command is one cached JSON read, described as well under 5 ms. Help cache TTL is 7 days, keyed by executable path, mtime, size, subcommand path, and help_args. git uses help -a because git --help omits most subcommands. Keys are TYPESAFE_API_KEY or $XDG_CONFIG_HOME/jym/credentials.toml mode 0600. Sent by default: command name, subcommand path, the mistyped token, and candidate names plus descriptions. Arguments stay local unless context_args is flags or all. The README example shows git remove offered as git rm at 0.93. That block is an illustration. jym-eval reads a TSV of command, typed token, and expected subcommand. The README does not print a result from it. Out of scope: flag correction, correcting the command name itself, and non-interactive sessions. We did not install jym.

Compare

jevctl is a shell CLI whose own subcommands call Jev for verify, screen, classify, and compact. jym does not replace the command. It calls Jev only after the help text has no match, then execs the original binary. Hono's router classifies an HTTP request. This Choice classifies a token against one CLI's help. The 0.93 in the README is the sample prompt, not a published accuracy.

Terms

jym
The command from syumai/jevyoumean. It wraps a CLI, and on an unknown subcommand asks Jev which documented command the token resembles, then can run that correction.
__none__
A required option in jym's Choice, alongside the real subcommands. If Jev picks it, the wrapper does not substitute a documented command.

Sources

  1. syumai, jevyoumean
  2. syumai/jevyoumean