feat(cli-tools): add dynamic configuration for Pi, OMP, Crush, ForgeCode, Smelt and CodeWhale

- Add dedicated settings API routes for pi, omp, crush, forge, smelt, codewhale
- Integrate GenericCliToolCard with multi-model support for Pi and auto-discovery for OMP
- Register tools in cliTools catalog and all-statuses route
- Add official logos for all new CLI tools

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
decolua
2026-09-22 14:48:04 +07:00
parent 44fd69d229
commit 6c9fe6f78a
17 changed files with 1809 additions and 1 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 10 KiB

BIN
public/providers/crush.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 KiB

BIN
public/providers/forge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
public/providers/omp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

6
public/providers/pi.svg Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800">
<path fill="#F09082" d="M165.29 165.29H517.36V400H400V282.65H165.29Z"/>
<path fill="#4D9ABF" d="M165.29 282.65H282.65V400H400V517.36H282.65V634.72H165.29Z"/>
<path fill="#F1BE58" d="M517.36 400H634.72V634.72H517.36Z"/>
</svg>

After

Width:  |  Height:  |  Size: 334 B

101
public/providers/smelt.svg Normal file
View File

@@ -0,0 +1,101 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 12.1" shape-rendering="crispEdges" role="img" aria-label="smelt logo">
<rect x="6" y="0" width="1" height="1.1" fill="#af0000"/>
<rect x="6" y="1.1" width="1" height="1.1" fill="#ff5f00"/>
<rect x="7" y="1.1" width="1" height="1.1" fill="#ff5f00"/>
<rect x="5" y="2.2" width="1" height="1.1" fill="#af0000"/>
<rect x="6" y="2.2" width="1" height="1.1" fill="#ff5f00"/>
<rect x="7" y="2.2" width="1" height="1.1" fill="#ff8700"/>
<rect x="8" y="2.2" width="1" height="1.1" fill="#ff8700"/>
<rect x="9" y="2.2" width="1" height="1.1" fill="#ff5f00"/>
<rect x="10" y="2.2" width="1" height="1.1" fill="#af0000"/>
<rect x="4" y="3.3" width="1" height="1.1" fill="#af0000"/>
<rect x="5" y="3.3" width="1" height="1.1" fill="#ff5f00"/>
<rect x="6" y="3.3" width="1" height="1.1" fill="#ff8700"/>
<rect x="7" y="3.3" width="1" height="1.1" fill="#ffd700"/>
<rect x="8" y="3.3" width="1" height="1.1" fill="#ffd700"/>
<rect x="9" y="3.3" width="1" height="1.1" fill="#ff8700"/>
<rect x="10" y="3.3" width="1" height="1.1" fill="#ff5f00"/>
<rect x="11" y="3.3" width="1" height="1.1" fill="#af0000"/>
<rect x="13" y="3.3" width="1" height="1.1" fill="#af0000"/>
<rect x="14" y="3.3" width="1" height="1.1" fill="#ff5f00"/>
<rect x="3" y="4.4" width="1" height="1.1" fill="#af0000"/>
<rect x="4" y="4.4" width="1" height="1.1" fill="#ff5f00"/>
<rect x="5" y="4.4" width="1" height="1.1" fill="#ff8700"/>
<rect x="6" y="4.4" width="1" height="1.1" fill="#ffd700"/>
<rect x="7" y="4.4" width="1" height="1.1" fill="#ffd700"/>
<rect x="8" y="4.4" width="1" height="1.1" fill="#ffd700"/>
<rect x="9" y="4.4" width="1" height="1.1" fill="#ffd700"/>
<rect x="10" y="4.4" width="1" height="1.1" fill="#ffd700"/>
<rect x="11" y="4.4" width="1" height="1.1" fill="#ff8700"/>
<rect x="12" y="4.4" width="1" height="1.1" fill="#ff5f00"/>
<rect x="13" y="4.4" width="1" height="1.1" fill="#ff8700"/>
<rect x="14" y="4.4" width="1" height="1.1" fill="#ff8700"/>
<rect x="15" y="4.4" width="1" height="1.1" fill="#ff5f00"/>
<rect x="1" y="5.5" width="1" height="1.1" fill="#af0000"/>
<rect x="2" y="5.5" width="1" height="1.1" fill="#ff5f00"/>
<rect x="3" y="5.5" width="1" height="1.1" fill="#ff8700"/>
<rect x="4" y="5.5" width="1" height="1.1" fill="#ff8700"/>
<rect x="5" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="6" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="7" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="8" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="9" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="10" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="11" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="12" y="5.5" width="1" height="1.1" fill="#ff8700"/>
<rect x="13" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="14" y="5.5" width="1" height="1.1" fill="#ffd700"/>
<rect x="15" y="5.5" width="1" height="1.1" fill="#ff8700"/>
<rect x="16" y="5.5" width="1" height="1.1" fill="#ff5f00"/>
<rect x="17" y="5.5" width="1" height="1.1" fill="#af0000"/>
<rect x="0" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="1" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="2" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="4" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="5" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="6" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="7" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="8" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="10" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="11" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="12" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="14" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="17" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="18" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="19" y="7.7" width="1" height="1.1" fill="#fff6ef"/>
<rect x="0" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="1" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="2" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="4" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="5" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="6" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="7" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="8" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="10" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="11" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="12" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="14" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="17" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="18" y="8.8" width="1" height="1.1" fill="#fff6ef"/>
<rect x="19" y="8.8" width="1" height="1.1" fill="#9b8880"/>
<rect x="2" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="4" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="6" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="8" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="10" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="14" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="18" y="9.9" width="1" height="1.1" fill="#fff6ef"/>
<rect x="0" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="1" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="2" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="4" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="6" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="8" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="10" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="11" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="12" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="14" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="15" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="18" y="11" width="1" height="1.1" fill="#fff6ef"/>
<rect x="19" y="11" width="1" height="1.1" fill="#fff6ef"/>
</svg>

After

Width:  |  Height:  |  Size: 6.0 KiB