Files
khadhroony-bot3/ks-config/README.md
2026-08-10 11:44:47 +02:00

69 lines
4.2 KiB
Markdown

<!-- file: ks-config/README.md -->
<!-- version: 12 -->
# ks-config
`ks-config` fournit les contrats de configuration généralistes Khadhroony Solana, les chargeurs des documents spécialisés et la résolution des compositions facultatives utilisées par les binaires.
## Responsabilités
- charger l'environnement du workspace et résoudre les placeholders `${KS_*}` / `${KB_*}` ;
- valider les documents transport, listeners, store, wallet, execution et composition contre leurs schémas sous `config/schemas/` ;
- fournir les types partagés d'endpoints, listeners, stockage, wallet, exécution et profils runtime ;
- résoudre les defaults de chaque document ou les overrides d'une composition ;
- refuser une référence de fichier ou de profil inexistante ;
- reconstruire temporairement `AppConfig/ProfileConfig` pour les consommateurs existants ;
- rester indépendant de la liste des applications et workers futurs.
## Defaults et composition
Chaque document partagé possède un `default_profile`. Un consommateur qui accepte les defaults n'a pas besoin de composition dédiée.
Le desktop possède `config/kb-app-demo-desktop.default.config.json` parce qu'il sélectionne des combinaisons propres à l'application. `ks-pipeline-demo-scenarios` utilise directement les defaults partagés ; `KS_DEVNET_CONFIG_PATH` permet encore un override explicite lorsque nécessaire.
Un futur worker pourra ajouter son propre `<binary>.default.config.json` uniquement s'il doit remplacer des fichiers/profils ou ajouter des paramètres propres au binaire.
## Documents spécialisés actuels
- `config/transport.config.json` / `config/schemas/transport.config.schema.json` ;
- `config/listeners.config.json` / `config/schemas/listeners.config.schema.json` ;
- `config/store.config.json` / `config/schemas/store.config.schema.json` ;
- `config/wallet.config.json` / `config/schemas/wallet.config.schema.json` ;
- `config/execution.config.json` / `config/schemas/execution.config.schema.json` ;
- `config/logging.config.json` reste possédé par `ks-logging` ;
- `config/schemas/resolved.app.config.schema.json` décrit uniquement le contrat runtime transitoire.
Les valeurs globales telles que `logs_directory` et `wallets_directory` ne sont pas des propriétés de profils.
## API publique principale
- `read_composed_app_config_with_environment` ;
- `read_default_shared_app_config_with_environment` ;
- `parse_composition_json`, `composition_profile`, `active_composition_profile` ;
- `read_transport_json_file_with_environment`, `transport_profile`, `default_transport_profile` ;
- `read_listeners_json_file_with_environment`, `listeners_profile`, `default_listeners_profile` ;
- `read_store_json_file_with_environment`, `store_profile`, `default_store_profile` ;
- `read_wallet_json_file_with_environment`, `wallet_profile`, `default_wallet_profile` ;
- `read_execution_json_file_with_environment`, `execution_profile`, `default_execution_profile` ;
- `load_workspace_environment`, `resolve_environment_placeholders` ;
- `classify_environment_variable`, `classify_environment_template`, `diagnostic_environment_value` ;
- `validate_json_value_against_schema` pour les fragments possédés par les binaires ;
- `AppConfig`, `ProfileConfig` pendant la phase de compatibilité backend-only.
## Frontières
`ks-logging` dépend de `ks-config` pour les helpers d'environnement, mais `ks-config` ne possède aucun type logging runtime.
`ks-onchain-transport` peut consommer directement `TransportProfileConfig`.
Depuis `0.5.1`, `ks-config` ne dépend plus de TS-RS et ne produit plus de bindings TypeScript. Ses contrats source/runtime peuvent contenir des secrets résolus : ils ne dérivent donc ni `serde::Serialize` ni `Debug`. Les applications propriétaires construisent leurs DTO publics et diagnostics bornés champ par champ.
La section `application` d'une composition est volontairement opaque pour `ks-config`. Chaque binaire propriétaire définit son schéma et le valide avec `validate_json_value_against_schema`; le desktop utilise `config/schemas/kb-app-demo-desktop.application.config.schema.json`.
## Documents
- [Utilisation](USAGE.md)
- [Travaux restants](TODO.md)
- [Historique](CHANGELOG.md)
- [Configuration locale](../config/README.md)