## `abersetz engines`

This produces a nice tables PLUS a list of object reprs. The latter needs to go

```

                                 Available Engines
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Selector                  ┃ Configured ┃ Credential ┃ Notes                      ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ translators               │ yes        │ optional   │ use translators/<provider> │
│ translators/apertium      │ no         │ optional   │ free                       │
│ translators/argos         │ no         │ optional   │ free                       │
│ translators/bing          │ no         │ optional   │ free                       │
│ translators/elia          │ no         │ optional   │ free                       │
│ translators/google        │ no         │ optional   │ free                       │
│ translators/iciba         │ no         │ optional   │ free                       │
│ translators/myMemory      │ no         │ optional   │ free                       │
│ translators/papago        │ no         │ optional   │ free                       │
│ translators/reverso       │ no         │ optional   │ free                       │
│ translators/tilde         │ no         │ optional   │ free                       │
│ translators/translateCom  │ no         │ optional   │ free                       │
│ translators/translateMe   │ no         │ optional   │ free                       │
│ translators/utibet        │ no         │ optional   │ free                       │
│ translators/yandex        │ no         │ optional   │ free                       │
│ translators/youdao        │ no         │ optional   │ free                       │
│ deep-translator           │ no         │ optional   │ use                        │
│                           │            │            │ deep-translator/<provider> │
│ deep-translator/google    │ no         │ optional   │ free                       │
│ deep-translator/libre     │ no         │ optional   │ free                       │
│ deep-translator/linguee   │ no         │ optional   │ free                       │
│ deep-translator/my_memory │ no         │ optional   │ free                       │
│ hysf                      │ yes        │ required   │ siliconflow                │
│ ullm/default              │ yes        │ required   │ Qwen/Qwen2.5-7B-Instruct   │
└───────────────────────────┴────────────┴────────────┴────────────────────────────┘
EngineEntry(selector='translators', configured=True, requires_api_key=False, notes='use translators/<provider>')
EngineEntry(selector='translators/apertium', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/argos', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/bing', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/elia', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/google', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/iciba', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/myMemory', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/papago', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/reverso', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/tilde', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/translateCom', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/translateMe', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/utibet', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/yandex', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='translators/youdao', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='deep-translator', configured=False, requires_api_key=False, notes='use deep-translator/<provider>')
EngineEntry(selector='deep-translator/google', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='deep-translator/libre', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='deep-translator/linguee', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='deep-translator/my_memory', configured=False, requires_api_key=False, notes='free')
EngineEntry(selector='hysf', configured=True, requires_api_key=True, notes='siliconflow')
EngineEntry(selector='ullm/default', configured=True, requires_api_key=True, notes='Qwen/Qwen2.5-7B-Instruct')
~/Developer/vcs/github.twardoch/pub/abersetz
```

## `abersetz setup`

This produces a completely different table than that from `abersetz engines`. Adopt the same format, or even re-use the code. 

```
🔧 Abersetz Configuration Setup

Scanning environment for API keys and endpoints...

Testing discovered services...

                 Discovered Translation Services
┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
┃ Provider    ┃ Status      ┃ Engines                   ┃ Models ┃
┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩
│ Openai      │ ✓ Available │ ullm/default, ullm/openai │     83 │
│ Google      │ ✓ Available │ translators/google        │      1 │
│ Groq        │ ✓ Available │ ullm/groq                 │     21 │
│ Mistral     │ ✓ Available │ N/A                       │     70 │
│ Deepseek    │ ✓ Available │ N/A                       │      2 │
│ Togetherai  │ ✓ Available │ N/A                       │     90 │
│ Siliconflow │ ✓ Available │ hysf, ullm/default        │     77 │
│ Deepinfra   │ ✓ Available │ ullm/deepinfra            │    167 │
│ Fireworks   │ ✓ Available │ N/A                       │     39 │
│ Sambanova   │ ✓ Available │ N/A                       │     12 │
│ Cerebras    │ ✓ Available │ N/A                       │      9 │
│ Hyperbolic  │ ✓ Available │ N/A                       │     29 │
│ Openrouter  │ ✓ Available │ N/A                       │    327 │
└─────────────┴─────────────┴───────────────────────────┴────────┘

✓ Configuration saved to: /Users/adam/Library/Application
Support/abersetz/config.toml

You can now use abersetz to translate files!

Example: abersetz tr es document.txt
```

## engine names

Shorten `translators` to `tr` and `deep-translator` to `dt`, and `ullm` to `ll`.  