Skip to content

fix: three CLI quality-of-life fixes#10599

Merged
teknium1 merged 1 commit into
mainfrom
fix/tier2-batch
Apr 16, 2026
Merged

fix: three CLI quality-of-life fixes#10599
teknium1 merged 1 commit into
mainfrom
fix/tier2-batch

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

Three independent CLI fixes batched together. 3 files, 28 lines net.

1. hermes auth add crashes on non-interactive stdin (#10468)

input() for the label prompt was called without checking isatty(). In scripted/CI environments this raised EOFError. Fix: check sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (#10230)

hermes dashboard -h printed help text twice because the SystemExit(0) from argparse was caught by the fallback retry logic, which re-parsed and printed help again. Fix: re-raise SystemExit with code 0 (help/version) immediately instead of falling through.

3. Duplicate entries in /model picker (#10526, #9545)

  • Kimi showed 2x because kimi-coding and kimi-coding-cn both map to the same models.dev ID (kimi-for-coding). Fix: track seen_mdev_ids and skip aliases — first one with valid credentials wins.
  • Providers showed 2-3x from case-variant slugs across the four loading paths (built-in, hermes-only, canonical, custom). Fix: normalize all seen_slugs checks to lowercase.

Tests

2081 hermes_cli tests pass. 1 pre-existing failure in test_model_validation (unrelated).

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (#10526, #9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes #10468, #10230, #10526, #9545
@teknium1 teknium1 merged commit b750c72 into main Apr 16, 2026
6 of 7 checks passed
@teknium1 teknium1 deleted the fix/tier2-batch branch April 16, 2026 00:34
kagura-agent pushed a commit to kagura-agent/hermes-agent that referenced this pull request Apr 16, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
Colin4k1024 pushed a commit to Colin4k1024/hermes-agent that referenced this pull request Apr 17, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
OutThisLife added a commit that referenced this pull request Apr 18, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs #10526 — the Python backend dedupe from #10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
man209111-cpu pushed a commit to man209111-cpu/hermes-agent that referenced this pull request Apr 18, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
ulasbilgen pushed a commit to ulasbilgen/hermes-adhd-agent that referenced this pull request May 1, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
ulasbilgen pushed a commit to ulasbilgen/hermes-adhd-agent that referenced this pull request May 1, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
aj-nt pushed a commit to aj-nt/hermes-agent that referenced this pull request May 1, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
aj-nt pushed a commit to aj-nt/hermes-agent that referenced this pull request May 1, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…h#10230, NousResearch#10526, NousResearch#9545) (NousResearch#10599)

Three independent fixes batched together:

1. hermes auth add crashes on non-interactive stdin (NousResearch#10468)
   input() for the label prompt was called without checking isatty().
   In scripted/CI environments this raised EOFError. Fix: check
   sys.stdin.isatty() and fall back to the computed default label.

2. Subcommand help prints twice (NousResearch#10230)
   'hermes dashboard -h' printed help text twice because the
   SystemExit(0) from argparse was caught by the fallback retry
   logic, which re-parsed and printed help again. Fix: re-raise
   SystemExit with code 0 (help/version) immediately.

3. Duplicate entries in /model picker (NousResearch#10526, NousResearch#9545)
   - Kimi showed 2x because kimi-coding and kimi-coding-cn both
     mapped to the same models.dev ID. Fix: track seen mdev_ids
     and skip aliases.
   - Providers could show 2-3x from case-variant slugs across the
     four loading paths. Fix: normalize all seen_slugs membership
     checks and insertions to lowercase.

Closes NousResearch#10468, NousResearch#10230, NousResearch#10526, NousResearch#9545
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
… collide

If the gateway returns two providers that resolve to the same display name
(e.g. `kimi-coding` and `kimi-coding-cn` both → "Kimi For Coding"), the
picker now appends the slug so users can tell them apart, in both the
provider list and the selected-provider header. No-op when names are
already unique.

Refs NousResearch#10526 — the Python backend dedupe from NousResearch#10599 skips one alias, but
user-defined providers, canonical overlays, and future regressions can
still surface as indistinguishable rows in the picker. This is a
client-side safety net on top of that.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant