All Functions Enums (utils/system/all_functions_enums.py)¶
⚠️ AUTO-GENERIERT — Diese Datei wird von
tb -l -sfegeneriert. NICHT manuell bearbeiten! Inhalt ändert sich je nach installierten Mods.
Why This Matters¶
all_functions_enums.py ist die Brücke zwischen Mod-Code und dem ToolBoxV2 Dispatch-System. Wenn ein Mod eine Funktion mit @app.tb(name="do_thing") exportiert, wird diese Funktion hier als Enum-Member registriert. Das Dispatch-System nutzt diese Enums, um API-Aufrufe (/api/ModName/do_thing) zu den richtigen Python-Funktionen zu routen.
Ohne diese Datei wüsste AppType.a_run_any() nicht, welche Funktionen existieren.
Konzept¶
all_functions_enums.py ist die Dispatch-Tabelle von ToolBoxV2. Für jedes installierte Mod wird eine Enum-Klasse generiert, deren Member die exportierten Funktionen des Mods abbilden.
flowchart LR
CLI["tb -l -sfe"] --> SCAN[Mod-Scanner]
SCAN --> MODS["toolboxv2/mods/*/"]
MODS --> EXPORT["@export / @tb Decorators"]
EXPORT --> ENUMS["Enum-Klassen"]
ENUMS --> FILE["all_functions_enums.py"]
FILE --> DISPATCH["AppType.a_run_any(mod.func)"]
Generierung¶
Befehl¶
| Flag | Bedeutung |
|---|---|
-l |
Lädt alle installierten Mods |
-sfe |
scan for enums — generiert die Enum-Datei |
Prozess¶
- Mod-Discovery:
toolboxv2/mods/wird gescannt - Export-Extraktion: Jedes
@app.tb(name=..., mod_name=...)wird registriert - Enum-Konstruktion: Pro Mod wird eine
Enum-Klasse erstellt - Datei-Write:
all_functions_enums.pywird überschrieben
Wann regenerieren?¶
- Nach Installation/Deinstallation eines Mods
- Nach Hinzufügen/Entfernen von
@export-Funktionen - Nach Mod-Updates mit neuen Funktionen
Enum-Struktur¶
Jede Enum-Klasse folgt diesem Muster:
class CLOUDM_AUTHMANAGER(Enum):
NAME = 'CloudM.AuthHelper' # Mod-Name
DELETE_USER = 'delete_user' # Funktions-Name
CREATE_USER = 'create_user' # Input: (['app', 'data', ...])
AUTHENTICATE_USER_GET_SYNC_KEY = '...' # Output: ApiResult
# ...
Enum-Naming-Konvention¶
<MOD>_<SUBMODULE> in UPPER_CASE:
| Enum-Klasse | Mod-Pfad |
|---|---|
CLOUDM_AUTHMANAGER |
CloudM.AuthHelper |
CLOUDM_USERINSTANCES |
CloudM.UserInstances |
CLOUDM_DASHBOARDS |
CloudM.Dashboards |
DB |
DB |
ISAA |
isaa |
CHATMODULE |
ChatModule |
Enum-Member¶
Jede Enum hat Standard-Member:
| Member | Beschreibung |
|---|---|
NAME |
Vollqualifizierter Mod-Name (z.B. 'CloudM.AuthHelper') |
APP_INSTANCE |
app_instance Funktion (Lifecycle) |
APP_INSTANCE_TYPE |
app_instance_type Funktion |
<FUNC> |
Eine exportierte Funktion des Mods |
ON_EXIT |
on_exit Cleanup-Funktion (falls vorhanden) |
Runtime-Nutzung¶
Der Dispatch-Mechanismus nutzt diese Enums um Funktionsaufrufe zu routen:
# Direkter Aufruf über AppType
result = await app.a_run_any("CloudM.AuthHelper.create_user", data=user_data)
# Äquivalent über Enum (wenn importiert)
from toolboxv2.utils.system.all_functions_enums import CLOUDM_AUTHMANAGER
func_name = CLOUDM_AUTHMANAGER.CREATE_USER.value # → 'create_user'
mod_name = CLOUDM_AUTHMANAGER.NAME.value # → 'CloudM.AuthHelper'
result = await app.a_run_any(CLOUDM_AUTHMANAGER.CREATE_USER, data=user_data)
Warum konzeptionell dokumentieren?¶
Der konkrete Inhalt von all_functions_enums.py ist ein Snapshot der aktuell installierten Mods. Er ist:
- Reproduzierbar — tb -l -sfe regeneriert ihn jederzeit
- Instanz-spezifisch — verschiedene Installationen haben verschiedene Enums
- Nicht versioniert — sollte nicht in Git committed werden
Daher: Die tatsächlichen Mod-Funktionen müssen pro Mod in docs/mods/ dokumentiert werden, NICHT hier.
Mod-Funktionen dokumentieren¶
Für jedes Mod sollte die Mod-Doku folgende Informationen enthalten:
- Mod-Name (z.B.
CloudM.AuthHelper) - Exportierte Funktionen mit Input-Signaturen und Output-Typen
- Access-Level (public/admin)
- API-Verfügbarkeit (CLI, REST, WebSocket)
Beispiel-Sektion in einer Mod-Doc:
## Exported Functions
| Function | Input | Output | Access | API |
|----------|-------|--------|--------|-----|
| `create_user` | `(app, data, username, email, pub_key, invitation)` | `ApiResult` | Admin | POST /api/users |
| `validate_persona` | `(app, data)` | `ApiResult` | Public | POST /api/auth/validate |
Related¶
- Core Types —
AppType.a_run_any()Dispatch - ISAA Overview — Agent Tool-Registration
- CloudM Index — CloudM Sub-Module