@cldmv/slothlet 2.11.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/AGENT-USAGE.md +355 -325
  2. package/README.md +554 -238
  3. package/dist/lib/builders/api-assignment.mjs +605 -0
  4. package/dist/lib/builders/api_builder.mjs +1073 -0
  5. package/dist/lib/builders/builder.mjs +94 -0
  6. package/dist/lib/builders/modes-processor.mjs +1816 -0
  7. package/dist/lib/errors.mjs +227 -0
  8. package/dist/lib/factories/component-base.mjs +96 -0
  9. package/dist/lib/factories/context.mjs +38 -0
  10. package/dist/lib/handlers/api-cache-manager.mjs +216 -0
  11. package/dist/lib/handlers/api-manager.mjs +2364 -0
  12. package/dist/lib/handlers/context-async.mjs +184 -0
  13. package/dist/lib/handlers/context-live.mjs +184 -0
  14. package/dist/lib/handlers/hook-manager.mjs +789 -0
  15. package/dist/lib/handlers/lifecycle-token.mjs +44 -0
  16. package/dist/lib/handlers/lifecycle.mjs +131 -0
  17. package/dist/lib/handlers/materialize-manager.mjs +64 -0
  18. package/dist/lib/handlers/metadata.mjs +500 -0
  19. package/dist/lib/handlers/ownership.mjs +338 -0
  20. package/dist/lib/handlers/unified-wrapper.mjs +3031 -0
  21. package/dist/lib/helpers/class-instance-wrapper.mjs +125 -0
  22. package/dist/lib/helpers/config.mjs +343 -0
  23. package/dist/lib/helpers/eventemitter-context.mjs +365 -0
  24. package/dist/lib/helpers/hint-detector.mjs +63 -0
  25. package/dist/lib/helpers/modes-utils.mjs +53 -0
  26. package/dist/lib/helpers/resolve-from-caller.mjs +123 -117
  27. package/dist/lib/helpers/sanitize.mjs +247 -168
  28. package/dist/lib/helpers/utilities.mjs +46 -81
  29. package/dist/lib/i18n/languages/de-de.json +377 -0
  30. package/dist/lib/i18n/languages/en-gb.json +377 -0
  31. package/dist/lib/i18n/languages/en-us.json +377 -0
  32. package/dist/lib/i18n/languages/es-mx.json +377 -0
  33. package/dist/lib/i18n/languages/fr-fr.json +377 -0
  34. package/dist/lib/i18n/languages/hi-in.json +377 -0
  35. package/dist/lib/i18n/languages/ja-jp.json +377 -0
  36. package/dist/lib/i18n/languages/ko-kr.json +377 -0
  37. package/dist/lib/i18n/languages/pt-br.json +377 -0
  38. package/dist/lib/i18n/languages/ru-ru.json +377 -0
  39. package/dist/lib/i18n/languages/zh-cn.json +377 -0
  40. package/dist/lib/i18n/translations.mjs +140 -0
  41. package/dist/lib/modes/eager.mjs +75 -0
  42. package/dist/lib/modes/lazy.mjs +97 -0
  43. package/dist/lib/processors/flatten.mjs +453 -0
  44. package/dist/lib/processors/loader.mjs +355 -0
  45. package/dist/lib/processors/type-generator.mjs +291 -0
  46. package/dist/lib/processors/typescript.mjs +188 -0
  47. package/dist/lib/runtime/runtime-asynclocalstorage.mjs +80 -522
  48. package/dist/lib/runtime/runtime-livebindings.mjs +45 -390
  49. package/dist/lib/runtime/runtime.mjs +39 -159
  50. package/dist/slothlet.mjs +525 -744
  51. package/docs/API-RULES.md +338 -486
  52. package/index.cjs +4 -4
  53. package/index.mjs +82 -45
  54. package/package.json +143 -30
  55. package/types/dist/lib/builders/api-assignment.d.mts +97 -0
  56. package/types/dist/lib/builders/api-assignment.d.mts.map +1 -0
  57. package/types/dist/lib/builders/api_builder.d.mts +96 -0
  58. package/types/dist/lib/builders/api_builder.d.mts.map +1 -0
  59. package/types/dist/lib/builders/builder.d.mts +60 -0
  60. package/types/dist/lib/builders/builder.d.mts.map +1 -0
  61. package/types/dist/lib/builders/modes-processor.d.mts +32 -0
  62. package/types/dist/lib/builders/modes-processor.d.mts.map +1 -0
  63. package/types/dist/lib/errors.d.mts +118 -0
  64. package/types/dist/lib/errors.d.mts.map +1 -0
  65. package/types/dist/lib/factories/component-base.d.mts +182 -0
  66. package/types/dist/lib/factories/component-base.d.mts.map +1 -0
  67. package/types/dist/lib/factories/context.d.mts +26 -0
  68. package/types/dist/lib/factories/context.d.mts.map +1 -0
  69. package/types/dist/lib/handlers/api-cache-manager.d.mts +208 -0
  70. package/types/dist/lib/handlers/api-cache-manager.d.mts.map +1 -0
  71. package/types/dist/lib/handlers/api-manager.d.mts +392 -0
  72. package/types/dist/lib/handlers/api-manager.d.mts.map +1 -0
  73. package/types/dist/lib/handlers/context-async.d.mts +66 -0
  74. package/types/dist/lib/handlers/context-async.d.mts.map +1 -0
  75. package/types/dist/lib/handlers/context-live.d.mts +65 -0
  76. package/types/dist/lib/handlers/context-live.d.mts.map +1 -0
  77. package/types/dist/lib/handlers/hook-manager.d.mts +199 -0
  78. package/types/dist/lib/handlers/hook-manager.d.mts.map +1 -0
  79. package/types/dist/lib/handlers/lifecycle-token.d.mts +49 -0
  80. package/types/dist/lib/handlers/lifecycle-token.d.mts.map +1 -0
  81. package/types/dist/lib/handlers/lifecycle.d.mts +90 -0
  82. package/types/dist/lib/handlers/lifecycle.d.mts.map +1 -0
  83. package/types/dist/lib/handlers/materialize-manager.d.mts +75 -0
  84. package/types/dist/lib/handlers/materialize-manager.d.mts.map +1 -0
  85. package/types/dist/lib/handlers/metadata.d.mts +215 -0
  86. package/types/dist/lib/handlers/metadata.d.mts.map +1 -0
  87. package/types/dist/lib/handlers/ownership.d.mts +170 -0
  88. package/types/dist/lib/handlers/ownership.d.mts.map +1 -0
  89. package/types/dist/lib/handlers/unified-wrapper.d.mts +250 -0
  90. package/types/dist/lib/handlers/unified-wrapper.d.mts.map +1 -0
  91. package/types/dist/lib/helpers/class-instance-wrapper.d.mts +54 -0
  92. package/types/dist/lib/helpers/class-instance-wrapper.d.mts.map +1 -0
  93. package/types/dist/lib/helpers/config.d.mts +96 -0
  94. package/types/dist/lib/helpers/config.d.mts.map +1 -0
  95. package/types/dist/lib/helpers/eventemitter-context.d.mts +31 -0
  96. package/types/dist/lib/helpers/eventemitter-context.d.mts.map +1 -0
  97. package/types/dist/lib/helpers/hint-detector.d.mts +20 -0
  98. package/types/dist/lib/helpers/hint-detector.d.mts.map +1 -0
  99. package/types/dist/lib/helpers/modes-utils.d.mts +35 -0
  100. package/types/dist/lib/helpers/modes-utils.d.mts.map +1 -0
  101. package/types/dist/lib/helpers/resolve-from-caller.d.mts +29 -145
  102. package/types/dist/lib/helpers/resolve-from-caller.d.mts.map +1 -1
  103. package/types/dist/lib/helpers/sanitize.d.mts +95 -94
  104. package/types/dist/lib/helpers/sanitize.d.mts.map +1 -1
  105. package/types/dist/lib/helpers/utilities.d.mts +53 -116
  106. package/types/dist/lib/helpers/utilities.d.mts.map +1 -1
  107. package/types/dist/lib/i18n/translations.d.mts +39 -0
  108. package/types/dist/lib/i18n/translations.d.mts.map +1 -0
  109. package/types/dist/lib/modes/eager.d.mts +36 -0
  110. package/types/dist/lib/modes/eager.d.mts.map +1 -0
  111. package/types/dist/lib/modes/lazy.d.mts +49 -0
  112. package/types/dist/lib/modes/lazy.d.mts.map +1 -0
  113. package/types/dist/lib/processors/flatten.d.mts +114 -0
  114. package/types/dist/lib/processors/flatten.d.mts.map +1 -0
  115. package/types/dist/lib/processors/loader.d.mts +47 -0
  116. package/types/dist/lib/processors/loader.d.mts.map +1 -0
  117. package/types/dist/lib/processors/type-generator.d.mts +19 -0
  118. package/types/dist/lib/processors/type-generator.d.mts.map +1 -0
  119. package/types/dist/lib/processors/typescript.d.mts +55 -0
  120. package/types/dist/lib/processors/typescript.d.mts.map +1 -0
  121. package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts +47 -42
  122. package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts.map +1 -1
  123. package/types/dist/lib/runtime/runtime-livebindings.d.mts +34 -65
  124. package/types/dist/lib/runtime/runtime-livebindings.d.mts.map +1 -1
  125. package/types/dist/lib/runtime/runtime.d.mts +39 -9
  126. package/types/dist/lib/runtime/runtime.d.mts.map +1 -1
  127. package/types/dist/slothlet.d.mts +184 -111
  128. package/types/dist/slothlet.d.mts.map +1 -1
  129. package/types/index.d.mts +1 -3
  130. package/dist/lib/engine/README.md +0 -21
  131. package/dist/lib/engine/slothlet_child.mjs +0 -59
  132. package/dist/lib/engine/slothlet_engine.mjs +0 -372
  133. package/dist/lib/engine/slothlet_esm.mjs +0 -230
  134. package/dist/lib/engine/slothlet_helpers.mjs +0 -455
  135. package/dist/lib/engine/slothlet_worker.mjs +0 -149
  136. package/dist/lib/helpers/als-eventemitter.mjs +0 -256
  137. package/dist/lib/helpers/api_builder/add_api.mjs +0 -553
  138. package/dist/lib/helpers/api_builder/analysis.mjs +0 -532
  139. package/dist/lib/helpers/api_builder/construction.mjs +0 -495
  140. package/dist/lib/helpers/api_builder/decisions.mjs +0 -748
  141. package/dist/lib/helpers/api_builder/metadata.mjs +0 -248
  142. package/dist/lib/helpers/api_builder.mjs +0 -41
  143. package/dist/lib/helpers/auto-wrap.mjs +0 -62
  144. package/dist/lib/helpers/hooks.mjs +0 -389
  145. package/dist/lib/helpers/instance-manager.mjs +0 -111
  146. package/dist/lib/helpers/metadata-api.mjs +0 -201
  147. package/dist/lib/helpers/multidefault.mjs +0 -216
  148. package/dist/lib/modes/slothlet_eager.mjs +0 -154
  149. package/dist/lib/modes/slothlet_lazy.mjs +0 -594
  150. package/docs/API-RULES-CONDITIONS.md +0 -712
  151. package/types/dist/lib/engine/slothlet_child.d.mts +0 -2
  152. package/types/dist/lib/engine/slothlet_child.d.mts.map +0 -1
  153. package/types/dist/lib/engine/slothlet_engine.d.mts +0 -31
  154. package/types/dist/lib/engine/slothlet_engine.d.mts.map +0 -1
  155. package/types/dist/lib/engine/slothlet_esm.d.mts +0 -19
  156. package/types/dist/lib/engine/slothlet_esm.d.mts.map +0 -1
  157. package/types/dist/lib/engine/slothlet_helpers.d.mts +0 -25
  158. package/types/dist/lib/engine/slothlet_helpers.d.mts.map +0 -1
  159. package/types/dist/lib/engine/slothlet_worker.d.mts +0 -2
  160. package/types/dist/lib/engine/slothlet_worker.d.mts.map +0 -1
  161. package/types/dist/lib/helpers/als-eventemitter.d.mts +0 -56
  162. package/types/dist/lib/helpers/als-eventemitter.d.mts.map +0 -1
  163. package/types/dist/lib/helpers/api_builder/add_api.d.mts +0 -102
  164. package/types/dist/lib/helpers/api_builder/add_api.d.mts.map +0 -1
  165. package/types/dist/lib/helpers/api_builder/analysis.d.mts +0 -189
  166. package/types/dist/lib/helpers/api_builder/analysis.d.mts.map +0 -1
  167. package/types/dist/lib/helpers/api_builder/construction.d.mts +0 -107
  168. package/types/dist/lib/helpers/api_builder/construction.d.mts.map +0 -1
  169. package/types/dist/lib/helpers/api_builder/decisions.d.mts +0 -213
  170. package/types/dist/lib/helpers/api_builder/decisions.d.mts.map +0 -1
  171. package/types/dist/lib/helpers/api_builder/metadata.d.mts +0 -99
  172. package/types/dist/lib/helpers/api_builder/metadata.d.mts.map +0 -1
  173. package/types/dist/lib/helpers/api_builder.d.mts +0 -6
  174. package/types/dist/lib/helpers/api_builder.d.mts.map +0 -1
  175. package/types/dist/lib/helpers/auto-wrap.d.mts +0 -49
  176. package/types/dist/lib/helpers/auto-wrap.d.mts.map +0 -1
  177. package/types/dist/lib/helpers/hooks.d.mts +0 -342
  178. package/types/dist/lib/helpers/hooks.d.mts.map +0 -1
  179. package/types/dist/lib/helpers/instance-manager.d.mts +0 -41
  180. package/types/dist/lib/helpers/instance-manager.d.mts.map +0 -1
  181. package/types/dist/lib/helpers/metadata-api.d.mts +0 -132
  182. package/types/dist/lib/helpers/metadata-api.d.mts.map +0 -1
  183. package/types/dist/lib/helpers/multidefault.d.mts +0 -90
  184. package/types/dist/lib/helpers/multidefault.d.mts.map +0 -1
  185. package/types/dist/lib/modes/slothlet_eager.d.mts +0 -65
  186. package/types/dist/lib/modes/slothlet_eager.d.mts.map +0 -1
  187. package/types/dist/lib/modes/slothlet_lazy.d.mts +0 -31
  188. package/types/dist/lib/modes/slothlet_lazy.d.mts.map +0 -1
  189. package/types/index.d.mts.map +0 -1
@@ -0,0 +1,377 @@
1
+ {
2
+ "translations": {
3
+ "INVALID_CONFIG": "Configuration invalide : {option} est {value}, attendu {expected}. {hint}",
4
+ "INVALID_CONFIG_DIR_MISSING": "Erreur de configuration : l'option 'dir' est requise. Fournissez un chemin de répertoire pour charger l'API.",
5
+ "INVALID_CONFIG_DIR_INVALID": "Erreur de configuration : 'dir' doit être une chaîne de caractères non vide. Reçu : {dir}",
6
+ "INVALID_CONFIG_MODE_INVALID": "Erreur de configuration : 'mode' doit être soit 'eager' soit 'lazy'. Reçu : {value}",
7
+ "INVALID_CONFIG_NOT_LOADED": "Impossible d'effectuer l'opération '{operation}' - instance non chargée. Appelez d'abord load().",
8
+ "INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED": "Échec de la matérialisation du proxy lazy pour '{apiPath}'. Vérifiez que le module se charge correctement.",
9
+ "INVALID_CONFIG_NOT_A_FUNCTION": "Impossible d'appeler '{apiPath}' - n'est pas une fonction (reçu {actualType}). Vérifiez que le module exporte une fonction appelable.",
10
+ "INVALID_CONFIG_API_PATH_INVALID": "Chemin d'API invalide '{apiPath}' : {reason}. Les chemins d'API doivent être des chaînes non vides, correctement formatées en notation par points et ne pas entrer en conflit avec les noms réservés. Segment à l'index {index} : '{segment}'.",
11
+ "INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "Erreur de configuration : forceOverwrite/allowOverwrite nécessite un moduleID. Fournissez un moduleID unique lors de l'utilisation des options d'écrasement pour le chemin d'API '{apiPath}'.",
12
+ "INVALID_METADATA_TARGET": "Cible de métadonnées invalide : attendu {expected}, reçu {target}. Les opérations de métadonnées nécessitent une référence de fonction ou d'objet.",
13
+ "METADATA_NO_MODULE_ID": "Impossible de définir les métadonnées utilisateur : aucun moduleID trouvé dans les métadonnées système. Assurez-vous que la fonction/l'objet cible a été chargé via Slothlet.",
14
+ "METADATA_LIFECYCLE_BYPASS": "tagSystemMetadata() doit être appelé via le système de cycle de vie. Utilisez lifecycle.emit('impl:created') ou lifecycle.emit('impl:changed') au lieu d'un appel direct.",
15
+ "INVALID_METADATA_KEY": "Clé de métadonnées invalide : attendu {expected}, reçu {type} pour la clé '{key}'. Les clés de métadonnées doivent être correctement formatées.",
16
+ "WARNING_METADATA_MISMATCH": "Avertissement de sécurité : incompatibilité du chemin du fichier de métadonnées pour '{apiPath}'. La trace de la pile affiche '{stackFile}' mais les métadonnées indiquent '{metadataFile}'. Cela peut indiquer un rechargement à chaud ou une altération.",
17
+ "COLLISION_ERROR": "Erreur de collision à '{key}' (contexte : {collisionContext}, mode : {collisionMode}). Réglez le mode de collision sur 'merge', 'replace', 'warn' ou 'skip' pour gérer les collisions.",
18
+ "COLLISION_DEFAULT_EXPORT_ERROR": "Collision détectée : la propriété '{key}' existe déjà sur l'export par défaut à '{apiPath}'. Le mode de collision est 'error'.",
19
+ "INVALID_ARGUMENT": "Argument invalide '{argument}' : attendu {expected}, reçu {received}.",
20
+ "RUNTIME_NO_ACTIVE_CONTEXT": "Aucun contexte actif trouvé. Cette opération doit être appelée depuis une fonction de l'API Slothlet.",
21
+ "INVALID_CONFIG_MUTATIONS_DISABLED": "Impossible de d'effectuer '{operation}' - les mutations sont désactivées. Réglez allowMutation: true pour activer les opérations de modification de l'API (add/remove/reload).",
22
+ "CACHE_MODULEID_MISMATCH": "Incompatibilité du moduleID de l'entrée du cache : attendu '{cacheKey}', mais l'entrée a '{entryModuleID}'. Cela indique une incohérence interne du cache.",
23
+ "CACHE_NOT_FOUND": "Entrée de cache non trouvée pour le moduleID '{moduleID}' lors de l'opération '{operation}'. Le module n'est peut-être pas chargé ou le cache a été vidé.",
24
+ "CACHE_MANAGER_NOT_AVAILABLE": "Le gestionnaire de cache n'est pas disponible. Impossible de d'effectuer l'opération '{operation}'. Assurez-vous que le gestionnaire de cache est initialisé.",
25
+ "MODULE_LOAD_FAILED": "Échec du chargement du module '{modulePath}' (ID : {moduleID}) : {error}",
26
+ "MODULE_NOT_FOUND": "Module non trouvé : {modulePath}. {hint}",
27
+ "MODULE_IMPORT_FAILED": "Échec de l'importation du module '{modulePath}' : {error}. Vérifiez que le fichier existe et possède une syntaxe valide.",
28
+ "CONTEXT_ALREADY_EXISTS": "Le contexte pour l'instance '{instanceID}' existe déjà. Impossible d'initialiser deux fois.",
29
+ "CONTEXT_NOT_FOUND": "Contexte non trouvé pour l'instance '{instanceID}'. L'instance a peut-être été arrêtée. Instances disponibles : {availableInstances}",
30
+ "CONTEXT_EXECUTION_FAILED": "Échec de l'exécution dans le contexte pour l'instance '{instanceID}' : {error}",
31
+ "NO_ACTIVE_CONTEXT_LIVE": "Aucun contexte actif - aucune instance n'est actuellement active en mode live-bindings.",
32
+ "NO_ACTIVE_CONTEXT_ASYNC": "Aucun contexte actif - la fonction doit être appelée dans un contexte d'API Slothlet.",
33
+ "RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Aucun contexte actif - impossible d'accéder à 'self'. Assurez-vous que vous appelez la fonction depuis une fonction d'API Slothlet.",
34
+ "RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Aucun contexte actif - 'context' ne peut être modifié que lors d'appels d'API Slothlet.",
35
+ "OWNERSHIP_INVALID_MODULE_ID": "Enregistrement de propriété invalide : le moduleID '{moduleID}' est invalide.",
36
+ "OWNERSHIP_INVALID_API_PATH": "Enregistrement de propriété invalide : le chemin d'API '{apiPath}' est invalide.",
37
+ "OWNERSHIP_CONFLICT": "Conflit de propriété : le chemin '{apiPath}' appartient déjà au module '{existingModuleId}', impossible de l'assigner à '{newModuleId}'. Utilisez forceOverwrite: true ou removeApi d'abord.",
38
+ "INVALID_DIRECTORY": "Répertoire invalide '{dir}' : {error}. Assurez-vous que le répertoire existe et est accessible.",
39
+ "WARN_DIRECTORY_EMPTY": "Le répertoire '{dir}' (résolu : '{resolvedPath}') est vide ou ne contient aucun module chargeable (fichiers .mjs, .cjs, .js). Ceci est valide pour les flux de travail add-api mais peut indiquer un chemin mal configuré.",
40
+ "INTERNAL_HOOK_STATE_CORRUPT": "[ERREUR INTERNE] L'état de HookManager est corrompu : hook \"{hookId}\" ({type}/{subset}/{pattern}) — {detail}. C'est un bug dans Slothlet — veuillez le signaler.",
41
+ "WARNING_RESERVED_PROPERTY_CONFLICT": "L'API utilisateur entre en conflit avec des propriétés réservées : {properties}",
42
+ "WARNING_LANGUAGE_LOAD_FAILED": "Échec du chargement de la langue '{lang}', retour à l'anglais.",
43
+ "WARNING_LANGUAGE_UNAVAILABLE": "La langue '{lang}' n'est pas disponible, utilisation de l'anglais.",
44
+ "WARNING_OWNERSHIP_CONFLICT": "Conflit de propriété à '{apiPath}' : appartient déjà à '{existingModuleId}', impossible d'enregistrer '{newModuleId}'. Conservation de l'existant.",
45
+ "WARNING_HOT_RELOAD_PATH_COLLISION": "Collision de chemin à {apiPath} - conservation de la valeur existante (mode collision : warn).",
46
+ "WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "Impossible de fusionner des valeurs primitives à {apiPath} - conservation de la valeur existante. Utilisez le mode de collision 'replace' pour écraser ou assurez-vous que les deux valeurs sont des objets.",
47
+ "WARNING_COLLISION_FILE_FOLDER_MERGE": "Collision détectée à '{key}' - fusion des exports de fichier et de dossier (mode collision : 'warn').",
48
+ "HINT_WARNING_COLLISION_FILE_FOLDER_MERGE": "Un fichier et un dossier partagent le même nom à '{key}'. Leurs exports sont fusionnés. Renommez l'un d'eux pour éviter toute ambiguïté, ou réglez collisionMode sur 'replace' ou 'error' si la fusion n'est pas souhaitée.",
49
+ "WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "Avertissement de collision : la propriété '{key}' existe déjà sur la fonction d'export par défaut à {apiPath}. L'export nommé va l'écraser.",
50
+ "HINT_WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "L'export nommé '{key}' à '{apiPath}' écrase une propriété existante sur la fonction d'export par défaut. Renommez l'export ou utilisez un chemin d'API différent pour éviter la collision.",
51
+ "WARNING_COLLISION_TRIGGER_MATERIALIZE_ERROR": "L'initialisation précoce a échoué pour le dossier lazy à '{apiPath}'. Le remplacement de collision peut être incomplet.",
52
+ "HINT_WARNING_COLLISION_TRIGGER_MATERIALIZE_ERROR": "Ceci est une erreur d'arrière-plan non critique lors de la gestion des collisions. Le dossier lazy au chemin donné n'a pas pu être initialisé. Vérifiez que le module à ce chemin est valide et peut être chargé.",
53
+ "WARNING_LIFECYCLE_HANDLER_ERROR": "Le gestionnaire d'événements de cycle de vie a renvoyé une erreur pour l'événement '{event}'. Les autres gestionnaires pour cet événement ont continué à s'exécuter.",
54
+ "HINT_WARNING_LIFECYCLE_HANDLER_ERROR": "Un gestionnaire de cycle de vie enregistré pour l'événement '{event}' a renvoyé une erreur. Vérifiez votre gestionnaire lifecycle.on('{event}', ...) pour des bugs. Les autres gestionnaires du même événement ne sont pas affectés.",
55
+ "WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Plusieurs exports de fonctions par défaut au niveau racine détectés : {rootContributors}. Chacun a été placé dans un espace de noms par nom de fichier (ex: api.{firstContributor}()). Envisagez d'utiliser un seul export par défaut au niveau racine ou de déplacer les fichiers dans des sous-répertoires.",
56
+ "V2_CONFIG_UNSUPPORTED": "L'option de configuration '{option}' de la v2 n'est pas supportée dans la v3. {hint} Utilisez '{replacement}' à la place.",
57
+ "DEBUG_MODE_ROOT_CONTRIBUTOR": "[{mode}] Contributeur racine détecté : {functionName}",
58
+ "DEBUG_MODE_ROOT_CONTRIBUTOR_APPLIED": "[{mode}] Modèle de contributeur racine appliqué - API de fonction avec {properties} propriétés supplémentaires",
59
+ "DEBUG_MODE_PROCESSING_DIRECTORY": "[{mode}] Traitement du répertoire : {categoryName} (profondeur {currentDepth})",
60
+ "DEBUG_MODE_MODULE_DECISION": "[{mode}] Module {moduleName} : {reason}",
61
+ "DEBUG_MODE_FLATTENING": "[{mode}] Aplatissement {moduleName} : {flattenType}",
62
+ "DEBUG_MODE_ASSIGN_TO_API": "ASSIGNER-À-API",
63
+ "DEBUG_MODE_COLLISION_CHECK": "VÉRIFICATION-COLLISION",
64
+ "DEBUG_MODE_COLLISION_DETECT": "DÉTECTION-COLLISION",
65
+ "DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "COLLISION : détection d'enveloppe",
66
+ "DEBUG_MODE_COLLISION_LAZY_DETECTION": "COLLISION : détection lazy",
67
+ "DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "COLLISION : réglage du mode de collision sur l'enveloppe EXISTANTE",
68
+ "DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "COLLISION : mode de collision de l'enveloppe existante vérifié",
69
+ "DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "COLLISION : réglage du mode de collision sur l'enveloppe VALUE",
70
+ "DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "COLLISION : mode de collision de l'enveloppe de valeur vérifié",
71
+ "DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "COLLISION-REPLACE-MATERIALIZE : déclenchement de la matérialisation immédiate",
72
+ "DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "COLLISION-REPLACE : copie des propriétés de fichier ignorée - le mode replace effacera tout lors de la matérialisation",
73
+ "DEBUG_MODE_COLLISION_REPLACE_BEFORE": "COLLISION-REPLACE : AVANT assignation",
74
+ "DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "COLLISION-ASSIGN : remplacement de l'existant par un dossier lazy",
75
+ "DEBUG_MODE_COLLISION_REPLACE_AFTER": "COLLISION-REPLACE : APRÈS assignation",
76
+ "DEBUG_MODE_COLLISION_REPLACE_VERIFY": "COLLISION-REPLACE : vérification",
77
+ "DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "COLLISION-COPY : copie des clés enfants existantes",
78
+ "DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "COLLISION-COPY : copie d'une clé individuelle",
79
+ "DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "COLLISION-TRIGGER-MAT : déclenchement de la matérialisation précoce (fire-and-forget)",
80
+ "DEBUG_MODE_MERGE_API_OBJECTS_ENTRY": "entrée mergeApiObjects",
81
+ "DEBUG_MODE_MERGE_API_OBJECTS_SOURCE_KEYS": "clés sourceApi de mergeApiObjects",
82
+ "DEBUG_MODE_MERGE_API_OBJECTS_EXIT_INVALID_SOURCE": "sortie mergeApiObjects - sourceApi n'est pas un objet/fonction",
83
+ "DEBUG_MODE_MERGE_API_OBJECTS_PROCESSING_KEY": "clé de traitement mergeApiObjects",
84
+ "DEBUG_MODE_MERGE_API_OBJECTS_RECURSING": "mergeApiObjects - deux objets simples, récursion",
85
+ "DEBUG_MODE_MERGE_API_OBJECTS_CALLING_ASSIGN": "mergeApiObjects appelant assignToApiPath",
86
+ "DEBUG_MODE_BUILD_FINAL_API_CALLED": "buildFinalAPI appelé",
87
+ "DEBUG_MODE_SLOTHLET_NAMESPACE_CREATED": "Espace de noms Slothlet créé",
88
+ "DEBUG_MODE_BUILT_INS_ATTACHED": "Fonctions intégrées attachées",
89
+ "DEBUG_MODE_CATEGORY_REUSE_EXISTING_WRAPPER": "Réutilisation de catégorie - utilisation de l'enveloppe existante",
90
+ "DEBUG_MODE_CATEGORY_WRAPPER_CREATED": "Enveloppe de catégorie créée",
91
+ "DEBUG_MODE_CATEGORY_WRAPPER_ASSIGNED": "Enveloppe de catégorie assignée à l'API",
92
+ "DEBUG_MODE_CATEGORY_CREATED": "Catégorie créée",
93
+ "DEBUG_MODE_CATEGORY_TARGET_API_STATUS": "État de la cible API de catégorie",
94
+ "DEBUG_MODE_PROCESSING_FILE": "Traitement du fichier",
95
+ "DEBUG_MODE_PROCESSING_MODULE": "Traitement du module",
96
+ "DEBUG_MODE_FILE_PROCESSING": "Fichier en cours de traitement",
97
+ "DEBUG_MODE_SINGLE_FILE_FOLDER_DETECTED": "Dossier à fichier unique détecté",
98
+ "DEBUG_MODE_SINGLE_FILE_FOLDER_WRAPPED": "Dossier à fichier unique réglé sur propriété enveloppée",
99
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_FILE": "Aplatir le fichier à exports multiples",
100
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_TARGET_STATUS": "État de la cible API pour l'aplatissement multi-exports",
101
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_ASSIGNING": "Assignation de la clé pour l'aplatissement multi-exports",
102
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_ASSIGNED": "Clé multi-exports assignée avec succès",
103
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_BLOCKED": "Clé multi-exports bloquée par safeAssign",
104
+ "DEBUG_MODE_FILE_WRAPPER_ASSIGNMENT": "Assignation de l'enveloppe de fichier",
105
+ "DEBUG_MODE_AFTER_ASSIGNMENT_STATUS": "État après assignation",
106
+ "DEBUG_MODE_SUBDIRECTORY_CHECK": "Vérification du sous-répertoire",
107
+ "DEBUG_MODE_DIRECTORY_CHECK": "Vérification du répertoire",
108
+ "DEBUG_MODE_DIRECTORY_CHECK_PASSED": "Vérification du répertoire réussie",
109
+ "DEBUG_MODE_SUBDIRECTORIES_FOUND": "Sous-répertoires trouvés",
110
+ "DEBUG_MODE_SUBDIRECTORY_LOOP_START": "Début de la boucle de sous-répertoire",
111
+ "DEBUG_MODE_PROCESSING_SUBDIRECTORY": "Traitement du sous-répertoire",
112
+ "DEBUG_MODE_FOLDER_LEVEL_FLATTEN_CHECK": "Vérification d'aplatissement au niveau du dossier",
113
+ "DEBUG_MODE_FOLDER_LEVEL_FLATTEN_SKIP_RECURSION": "Aplatissement au niveau du dossier - récursion ignorée",
114
+ "DEBUG_MODE_FILE_FOLDER_COLLISION_MERGED": "Collision fichier-dossier : exports de fichier fusionnés dans l'impl de dossier",
115
+ "DEBUG_MODE_CREATING_LAZY_SUBDIRECTORY": "Création d'un sous-répertoire lazy",
116
+ "DEBUG_MODE_MATERIALIZE_FUNCTION_STARTING": "Début de la fonction de matérialisation",
117
+ "DEBUG_MODE_MATERIALIZE_FUNCTION_RETURNING_IMPL": "Fonction de matérialisation retournant l'impl",
118
+ "DEBUG_MODE_FOLDER_PATTERN_MATCH": "Correspondance de modèle de dossier",
119
+ "DEBUG_MODE_FOLDER_PATTERN_ATTACH_PROPERTY": "Attachement de propriété au modèle de dossier",
120
+ "DEBUG_MODE_FOLDER_PATTERN_RETURN": "Retour du modèle de dossier",
121
+ "DEBUG_MODE_CACHE_ENTRY_STORED": "Entrée de cache stockée",
122
+ "DEBUG_MODE_CACHE_ENTRY_DELETED": "Entrée de cache supprimée",
123
+ "DEBUG_MODE_ALL_CACHES_CLEARED": "Tous les caches vidés",
124
+ "DEBUG_MODE_REBUILDING_CACHE_FROM_DISK": "Reconstruction du cache depuis le disque",
125
+ "DEBUG_MODE_CACHE_REBUILT_SUCCESSFULLY": "Cache reconstruit avec succès",
126
+ "DEBUG_MODE_SYNC_WRAPPER_ENTRY_EXISTING": "entrée syncWrapper - existingProxy",
127
+ "DEBUG_MODE_SYNC_WRAPPER_ENTRY_NEXT": "entrée syncWrapper - nextProxy",
128
+ "DEBUG_MODE_SYNC_WRAPPER_EXISTING": "enveloppeSync existante",
129
+ "DEBUG_MODE_SYNC_WRAPPER_NEXT": "enveloppeSync suivante",
130
+ "DEBUG_MODE_SYNC_WRAPPER_BEFORE_MERGE": "syncWrapper avant fusion",
131
+ "DEBUG_MODE_SYNC_WRAPPER_NEXT_IMPL_KEYS": "clés impl de l'enveloppe suivante syncWrapper",
132
+ "DEBUG_MODE_SYNC_WRAPPER_NEXT_CHILDCACHE_KEYS": "clés childCache de l'enveloppe suivante syncWrapper",
133
+ "DEBUG_MODE_MUTATE_API_VALUE_CALLED": "mutateApiValue appelé",
134
+ "DEBUG_MODE_MUTATE_API_VALUE_WRAPPER_STATUS": "état de l'enveloppe mutateApiValue",
135
+ "DEBUG_MODE_MUTATE_API_VALUE_NEXT_VALUE": "mutateApiValue - valeur suivante",
136
+ "DEBUG_MODE_MUTATE_API_VALUE_NEXT_VALUE_KEYS": "clés nextValue de mutateApiValue",
137
+ "DEBUG_MODE_MUTATE_API_VALUE_SYNC_WRAPPERS": "mutateApiValue - les deux sont des enveloppes, appel de syncWrapper",
138
+ "DEBUG_MODE_MUTATE_API_VALUE_MERGE_INTO_WRAPPER": "mutateApiValue - fusion des propriétés dans l'enveloppe existante",
139
+ "DEBUG_MODE_MUTATE_API_VALUE_MERGE_KEYS": "clés nextValue de mutateApiValue à fusionner",
140
+ "DEBUG_MODE_MUTATE_API_VALUE_SETIMPL_FALLBACK": "mutateApiValue - utilisation du mode secours ___setImpl",
141
+ "DEBUG_MODE_SET_VALUE_AT_PATH": "définirValeurÀChemin",
142
+ "DEBUG_MODE_SET_VALUE_AT_PATH_SKIP_COLLISION": "setValueAtPath - collision ignorée",
143
+ "DEBUG_MODE_SET_VALUE_AT_PATH_REPLACE_MERGE": "setValueAtPath - remplacement par fusion (préserve l'enveloppe)",
144
+ "DEBUG_MODE_SET_VALUE_AT_PATH_MERGE_PROPS": "setValueAtPath - fusion des propriétés",
145
+ "DEBUG_MODE_SET_VALUE_AT_PATH_ASSIGN": "setValueAtPath - pas de collision, assignation",
146
+ "DEBUG_MODE_ADD_API_COMPONENT_BUILD_RETURN": "structure de retour de construction d'addApiComponent",
147
+ "DEBUG_MODE_RULE_13_DEDUP_HOISTED_KEY": "Règle 13 C34 : Déduplication de chemin AddApi - clé en double hissée",
148
+ "DEBUG_MODE_ADD_API_COMPONENT_MERGE_KEYS": "clés apiToMerge d'addApiComponent",
149
+ "DEBUG_MODE_AWAITING_PENDING_MATERIALIZATIONS": "Attente de {count} matérialisation(s) en cours avant de terminer l'ajout",
150
+ "DEBUG_MODE_CACHE_DELETED_MODULE_REMOVED": "Cache supprimé pour le module retiré",
151
+ "DEBUG_MODE_RELOADING_MODULE_BY_ID": "Rechargement du module par ID",
152
+ "DEBUG_MODE_FRESH_API_KEYS_BEFORE_RESTORE": "Nouvelles clés d'API avant restauration",
153
+ "DEBUG_MODE_FRESH_API_KEYS_AFTER_RESTORE": "Nouvelles clés d'API après restauration",
154
+ "DEBUG_MODE_MODULE_RELOAD_COMPLETE": "Rechargement du module terminé",
155
+ "DEBUG_MODE_RELOADING_BY_API_PATH": "Rechargement par chemin d'API",
156
+ "DEBUG_MODE_NO_CACHES_ATTEMPTING_RESTORE": "Aucun cache trouvé pour le chemin, tentative de restauration de base",
157
+ "DEBUG_MODE_API_PATH_RELOAD_COMPLETE": "Rechargement du chemin d'API terminé",
158
+ "DEBUG_MODE_RESTORE_ROOT_KEY_INSPECT": "INSPECTION-RESTAURATION-CLÉ-RACINE",
159
+ "DEBUG_MODE_ROOT_KEY_RESET_LAZY": "Clé racine réinitialisée en lazy via ___resetLazy",
160
+ "DEBUG_MODE_ROOT_KEY_UPDATED_SETIMPL": "Clé racine mise à jour via ___setImpl",
161
+ "DEBUG_MODE_RESTORE_NESTED_PATH": "RESTORE : chemin imbriqué",
162
+ "DEBUG_MODE_RESTORE_FORCING_REPLACE": "RESTORE : mode remplacement forcé",
163
+ "DEBUG_MODE_UPDATED_WRAPPER_IMPL": "Implémentation de l'enveloppe existante mise à jour",
164
+ "DEBUG_MODE_CREATED_NEW_WRAPPER_UNEXPECTED": "Nouvelle enveloppe créée (inattendu lors d'un rechargement)",
165
+ "DEBUG_MODE_LIFECYCLE_EVENT": "Événement : {event}",
166
+ "DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS": "Constructeur UnifiedWrapper - clés impl",
167
+ "DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT": "Constructeur UnifiedWrapper - après adoption",
168
+ "DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR": "Erreur de matérialisation en arrière-plan",
169
+ "DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "APPLY-IMPL-UPDATE-PATH : filePath mis à jour depuis null",
170
+ "DEBUG_MODE_SETIMPL_CALLED": "___setImpl appelé",
171
+ "DEBUG_MODE_RESETLAZY_CALLED": "___resetLazy appelé",
172
+ "DEBUG_MODE_RESETLAZY_COMPLETE": "___resetLazy terminé - l'enveloppe est maintenant dé-matérialisée",
173
+ "DEBUG_MODE_MATERIALIZE_AWAIT": "MATERIALIZE-AWAIT : attente de la promesse de matérialisation existante",
174
+ "DEBUG_MODE_MATERIALIZE_START": "début de _materialize",
175
+ "DEBUG_MODE_MATERIALIZE_CALLING_FUNC": "_materialize appelant materializeFunc",
176
+ "DEBUG_MODE_MATERIALIZE_COMPLETE": "_materialize terminé",
177
+ "DEBUG_MODE_MATERIALIZE_ERROR": "erreur de _materialize",
178
+ "DEBUG_MODE_ADOPT_START": "DÉBUT-ADOPTION",
179
+ "DEBUG_MODE_ADOPT": "ADOPTER",
180
+ "DEBUG_MODE_ADOPT_REPLACE_CLEARING": "ADOPT : MODE REPLACE - Effacement des propriétés existantes",
181
+ "DEBUG_MODE_ADOPT_PROCESS": "PROCESSUS-ADOPTION",
182
+ "DEBUG_MODE_ADOPT_CHECK": "VÉRIFICATION-ADOPTION",
183
+ "DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "ADOPT-SKIP : collision-merged, conservation de la version fichier",
184
+ "DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "ADOPT-SKIP : la propriété n'est pas configurable (héritée)",
185
+ "DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "ADOPT-SKIP : la propriété existe déjà avec la même enveloppe",
186
+ "DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "ADOPT-ALLOW : n'est PAS collision-merged, autorisation",
187
+ "DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "ADOPT-REUSE : Réutilisation de l'enveloppe enfant existante",
188
+ "DEBUG_MODE_ADOPT_WRAP": "ENVELOPPE-ADOPTION",
189
+ "DEBUG_MODE_ADOPT_DEFINE": "ADOPT-DEFINE : définition sur l'enveloppe",
190
+ "DEBUG_MODE_ADOPT_DEFINED": "ADOPT-DEFINED : défini avec succès sur l'enveloppe",
191
+ "DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "WRAP-CHILD-PATH : vérification du chemin du fichier enfant",
192
+ "DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "WRAP-CHILD-PATH : __childFilePaths disponible",
193
+ "DEBUG_MODE_WRAP_CHILD_PATH_USING": "WRAP-CHILD-PATH : utilisation de __childFilePaths",
194
+ "DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "WRAP-CHILD-PATH : utilisation de __childFilePathsPreMaterialize",
195
+ "DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "WRAP-CHILD-PATH : utilisation de parentMetadata?.filePath par défaut",
196
+ "DEBUG_MODE_WAITING_TYPE": "ATTENTE-TYPE",
197
+ "DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "WAITING-TYPE-WALK : trouvé dans l'enveloppe",
198
+ "DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "WAITING-TYPE-WALK : trouvé dans _impl",
199
+ "DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "WAITING-TYPE-WALK : accès direct",
200
+ "DEBUG_MODE_WAITING_TYPE_RESOLVED": "ATTENTE-TYPE-RÉSOLU",
201
+ "DEBUG_MODE_WAITING_TYPE_INFLIGHT": "WAITING-TYPE-INFLIGHT : retour de IN_FLIGHT",
202
+ "DEBUG_MODE_WAITING_GET_PREMATURE": "WAITING-GET-PREMATURE : trouvé dans l'enveloppe avant matérialisation",
203
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "WAITING-GET-IMMEDIATE-MAT : déclenhement de la matérialisation immédiate pour le dossier de collision fusionné",
204
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "WAITING-GET-IMMEDIATE-MAT-ERROR : échec de la matérialisation",
205
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "WAITING-GET-IMMEDIATE-MAT-SUCCESS : maintenant disponible dans l'enveloppe",
206
+ "DEBUG_MODE_WAITING_APPLY_ENTRY": "ATTENTE-APPLIQUER-ENTRÉE",
207
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "WAITING-APPLY-MATERIALIZE : Déclenchement de la matérialisation",
208
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "WAITING-APPLY-MATERIALIZED : Matérialisation terminée",
209
+ "DEBUG_MODE_WAITING_APPLY_START_WALK": "WAITING-APPLY-START-WALK : Début du parcours de propChain",
210
+ "DEBUG_MODE_WAITING_APPLY_WALK": "ATTENTE-APPLIQUER-PARCOURS",
211
+ "DEBUG_MODE_WAITING_APPLY": "ATTENTE-APPLICATION",
212
+ "DEBUG_MODE_GET_START": "DÉBUT-GET",
213
+ "DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED": "util.inspect.custom : Lazy non matérialisé",
214
+ "DEBUG_MODE_GET_CACHED_REPLACE": "GET-MISE-EN-CACHE-REMPLACER",
215
+ "DEBUG_MODE_GET_CACHED": "GET-EN-MÉMOIRE",
216
+ "DEBUG_MODE_GET_PROXYGET_ACCESSING": "GET-PROXYGET : Accès à",
217
+ "DEBUG_MODE_GET_PROXYGET_FOUND": "GET-PROXYGET : Trouvé dans l'enveloppe",
218
+ "DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "LAZY-GET : va créer un proxy d'attente",
219
+ "DEBUG_MODE_BUILD_LAZY_API_CALLED": "buildLazyAPI appelé",
220
+ "DEBUG_MODE_COMPONENT_INITIALIZED": "Composant initialisé : {component} → this.{category}.{propertyName}",
221
+ "DEBUG_MODE_LAZY_WRAPPER_REGISTERED": "Enveloppe lazy enregistrée",
222
+ "DEBUG_MODE_LAZY_WRAPPER_MATERIALIZED": "Enveloppe lazy matérialisée",
223
+ "DEBUG_MODE_ALL_LAZY_WRAPPERS_MATERIALIZED": "Toutes les enveloppes lazy matérialisées",
224
+ "HINT_REFERENCE_REMOVED": "L'export 'reference' a été retiré de '@cldmv/slothlet/runtime'. Les objets de référence sont désormais fusionnés directement dans l'API. Accédez-y via 'self.*' à la place (ex: 'self.myRefProperty').",
225
+ "HINT_MODULE_NOT_FOUND": "Assurez-vous que le module existe et que le chemin est correct. Vérifiez les fautes de frappe dans l'instruction d'importation.",
226
+ "HINT_SYNTAX_ERROR": "Vérifiez les erreurs de syntaxe dans le fichier du module. Problèmes courants : parenthèses manquantes, chaînes non fermées ou syntaxe JavaScript invalide.",
227
+ "HINT_CONTEXT_NOT_FOUND": "Assurez-vous que l'instance Slothlet est initialisée et que le contexte est créé avant d'y accéder. Vérifiez que vous utilisez le bon ID d'instance.",
228
+ "HINT_CONTEXT_ALREADY_EXISTS": "Ce contexte existe déjà. Vérifiez si vous essayez d'initialiser la même instance deux fois.",
229
+ "HINT_CONTEXT_EXECUTION_FAILED": "Une erreur s'est produite lors de l'exécution de la fonction. Vérifiez les détails de l'erreur pour plus d'informations.",
230
+ "HINT_NO_ACTIVE_CONTEXT": "Aucun contexte actif trouvé. Assurez-vous d'appeler cette fonction depuis un contexte Slothlet (mode async ou live).",
231
+ "HINT_NO_ACTIVE_CONTEXT_ASYNC": "Aucun contexte actif trouvé. Assurez-vous d'appeler cette fonction depuis un contexte Slothlet asynchrone.",
232
+ "HINT_NO_ACTIVE_CONTEXT_LIVE": "Aucun contexte actif trouvé. Assurez-vous d'appeler cette fonction depuis un contexte Slothlet live.",
233
+ "HINT_OWNERSHIP_INVALID_MODULE_ID": "Le module ID est invalide. Assurez-vous que le module a été chargé correctement et que l'ID est correct.",
234
+ "HINT_OWNERSHIP_INVALID_API_PATH": "Le chemin d'API est invalide. Assurez-vous que le format du chemin est correct.",
235
+ "HINT_OWNERSHIP_CONFLICT": "Le chemin appartient déjà à un autre module. Options : (1) Utilisez forceOverwrite: true dans les options de api.add(), (2) Réglez la configuration de collision sur 'merge' ou 'replace', (3) Appelez api.slothlet.api.remove() d'abord pour vider le chemin.",
236
+ "HINT_INVALID_CONFIG": "Vérifiez la valeur de configuration et assurez-vous qu'elle correspond au type et au format attendus.",
237
+ "HINT_INVALID_CONFIG_DIR_INVALID": "Assurez-vous que le chemin du répertoire est une chaîne valide et pointe vers un répertoire existant.",
238
+ "HINT_INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "Lors de l'utilisation de forceOverwrite ou allowOverwrite, vous devez fournir un moduleID unique pour suivre la propriété du chemin écrasé.",
239
+ "HINT_COLLISION_ERROR": "Le mode de collision est réglé sur 'error', ce qui empêche tout écrasement. Utilisez collision: 'merge' (combiner les propriétés), 'replace' (écraser complètement), 'warn' (avertir tout en gardant l'existant) ou 'skip' (ignorer silencieusement) à la place.",
240
+ "HINT_COLLISION_DEFAULT_EXPORT_ERROR": "Un export nommé entre en conflit avec une propriété déjà présente sur l'objet d'exportation par défaut à ce chemin. Changez le mode de collision pour 'merge', 'replace', 'warn' ou 'skip', ou renommez la propriété en conflit.",
241
+ "HINT_INVALID_ARGUMENT": "Le chemin doit être une chaîne en notation pointée (ex: 'math.add').",
242
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT": "metadata.self() doit être appelé depuis une fonction de l'API Slothlet.",
243
+ "HINT_INVALID_CONFIG_MODE_INVALID": "Le mode doit être soit 'eager' soit 'lazy'.",
244
+ "HINT_INVALID_CONFIG_MODE_UNKNOWN": "Mode inconnu spécifié. Utilisez 'eager' ou 'lazy'.",
245
+ "HINT_INVALID_CONFIG_DIR_MISSING": "Le chemin du répertoire est requis mais n'a pas été fourni.",
246
+ "HINT_INVALID_CONFIG_API_PATH_INVALID": "Assurez-vous que le chemin d'API est une chaîne valide en notation pointée (ex: 'plugins.tools') sans segments vides ni noms réservés (slothlet, shutdown, destroy).",
247
+ "HINT_INVALID_CONFIG_MUTATIONS_DISABLED": "Les opérations de mutation d'API nécessitent allowMutation: true dans la configuration. Utilisez diagnostics: true pour accéder à ces méthodes à des fins de test sans activer les mutations réelles.",
248
+ "HINT_CACHE_MODULEID_MISMATCH": "C'est une erreur interne indiquant une corruption du cache. Veuillez signaler ce problème en précisant les étapes pour le reproduire.",
249
+ "HINT_CACHE_NOT_FOUND": "Assurez-vous que le module a été chargé avant de tenter de recharger ou de reconstruire son cache. Vérifiez que le moduleID est correct.",
250
+ "HINT_CACHE_MANAGER_NOT_AVAILABLE": "Le gestionnaire de cache devrait être initialisé automatiquement. Si vous voyez cette erreur, cela peut indiquer un problème d'initialisation interne.",
251
+ "HINT_INVALID_METADATA_TARGET": "La cible doit être une fonction ou un objet qui a été chargé via Slothlet. Passez la référence réelle de la fonction/l'objet, pas une chaîne ou une valeur primitive.",
252
+ "HINT_METADATA_NO_MODULE_ID": "Assurez-vous que la fonction/l'objet a été chargé via le système de modules de Slothlet. Seules les fonctions gérées par Slothlet ont des métadonnées associées.",
253
+ "HINT_METADATA_LIFECYCLE_BYPASS": "N'appelez jamais tagSystemMetadata() directement. Déclenchez plutôt les événements de cycle de vie 'impl:created' ou 'impl:changed', qui invoqueront tagSystemMetadata() via le canal approprié.",
254
+ "HINT_INVALID_METADATA_KEY": "Les clés de métadonnées doivent être des chaînes, des tableaux de chaînes ou des objets avec des valeurs de tableau. Vérifiez que le format de la clé correspond à l'un de ces types.",
255
+ "HINT_WARNING_METADATA_MISMATCH": "Cet avertissement indique que l'emplacement d'exécution de la fonction ne correspond pas à son chemin de métadonnées enregistré. Cela peut se produire lors d'un rechargement à chaud ou si la fonction a été altérée. Dans la plupart des cas, cela est attendu lors du développement avec le rechargement à chaud activé.",
256
+ "HINT_WARNING_INIT_COMPONENT_SKIPPED": "Les fichiers de composants qui échouent à l'importation seront ignorés. C'est normal pour les composants optionnels. Vérifiez le message d'erreur pour les détails si le composant aurait dû être chargé.",
257
+ "HINT_WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Plusieurs fichiers exportent des fonctions par défaut au niveau racine. Chacun a été placé dans un espace de noms (ex: api.nomdufichier()). Envisagez de les regrouper dans un seul export racine ou de déplacer les fichiers dans des sous-répertoires pour une organisation plus claire.",
258
+ "HINT_WARNING_HOT_RELOAD_PATH_COLLISION": "Une collision s'est produite lors du rechargement à chaud au chemin spécifié. La valeur existante est conservée. Pour forcer le remplacement, utilisez le mode de collision 'replace' au lieu de 'warn'.",
259
+ "HINT_WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "Impossible de fusionner des valeurs primitives (chaînes, nombres, booléens). Pour remplacer la valeur, utilisez le mode de collision 'replace'. Pour conserver la valeur existante, continuez à utiliser le mode 'warn'.",
260
+ "HINT_WARNING_OWNERSHIP_CONFLICT": "Le chemin appartient déjà à un autre module. Pour forcer l'écrasement, utilisez forceOverwrite: true dans les options de api.add(), ou appelez api.slothlet.api.remove() d'abord pour vider le chemin.",
261
+ "HINT_V2_CONFIG_UNSUPPORTED": "Cette option de configuration de la v2 n'est pas supportée dans la v3. Mettez à jour votre configuration pour utiliser l'équivalent v3 pour un meilleur contrôle et plus de clarté.",
262
+ "HINT_MODULE_LOAD_FAILED": "Vérifiez les erreurs dans le fichier du module. Assurez-vous qu'il possède une syntaxe JavaScript valide et des exports.",
263
+ "HINT_MODULE_IMPORT_FAILED": "Assurez-vous que le fichier du module existe et peut être importé. Vérifiez les erreurs de syntaxe ou les dépendances manquantes.",
264
+ "HINT_MODULE_NO_EXPORTS": "Le module doit exporter au moins une fonction ou un objet.",
265
+ "HINT_INVALID_DIRECTORY": "Assurez-vous que le chemin du répertoire est correct et que le répertoire existe et est accessible.",
266
+ "HINT_WARN_DIRECTORY_EMPTY": "Vérifiez que le chemin du répertoire est correct. Les répertoires vides sont valides pour les flux de travail add-api où les modules seront ajoutés dynamiquement.",
267
+ "HINT_INVALID_CONFIG_LAZY_NOT_READY": "En mode lazy, accédez aux propriétés pour déclencher la matérialisation avant d'appeler les fonctions.",
268
+ "HINT_INTERNAL_INVALID_STATE": "Une erreur d'état interne s'est produite. C'est probablement un bug - veuillez le signaler avec des détails.",
269
+ "HINT_INTERNAL_HOOK_STATE_CORRUPT": "L'état interne de HookManager est incohérent. Cela ne devrait jamais arriver lors d'une utilisation normale — veuillez soumettre un rapport de bug incluant comment vous avez appelé hook.on() et hook.remove().",
270
+ "HINT_INVALID_CONFIG_LAZY_ASYNC_REQUIRED": "Le mode lazy nécessite des opérations asynchrones. Utilisez le mode eager ou implémentez des modèles asynchrones appropriés.",
271
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Impossible d'accéder à 'self' en dehors du contexte d'une fonction de l'API Slothlet.",
272
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Impossible d'accéder à 'context' en dehors d'une fonction de l'API Slothlet. Le contexte ne peut être modifié que lors d'appels d'API Slothlet.",
273
+ "HINT_INVALID_CONFIG_NOT_LOADED": "L'instance doit être chargée avant d'effectuer cette opération. Appelez d'abord load().",
274
+ "HINT_INVALID_CONFIG_RELOAD_NOT_IMPL": "Conseil : la fonctionnalité de rechargement n'est pas encore implémentée et sera ajoutée dans une future version.",
275
+ "HINT_WARNING_RESERVED_PROPERTY_CONFLICT": "Le nom de propriété 'slothlet' est réservé aux méthodes d'API intégrées. Renommez votre module ou propriété d'API pour éviter les conflits avec slothlet.shutdown(), slothlet.api.*, etc.",
276
+ "HINT_DEPRECATED_CONFIG_OPTION": "Cette option de configuration est obsolète et sera supprimée dans une version future. Mettez à jour votre configuration pour utiliser le remplacement recommandé.",
277
+ "HINT_ERROR_RUNTIME_IMPORT_FAILED": "Le module runtime n'a pas pu être chargé. Cela peut se produire si l'export @cldmv/slothlet/runtime est indisponible ou s'il y a une dépendance circulaire. Certaines fonctionnalités nécessitant l'accès au runtime peuvent être limitées.",
278
+ "INVALID_HOOK_TYPE": "Type de hook invalide \"{type}\". Doit être l'un des suivants : {validTypes}.",
279
+ "INVALID_HOOK_HANDLER": "Le gestionnaire de hook doit être une fonction. Type reçu : {receivedType}.",
280
+ "DUPLICATE_HOOK_ID": "Un hook avec l'ID \"{id}\" existe déjà. Utilisez un ID unique ou omettez l'option id pour en générer un automatiquement.",
281
+ "INVALID_HOOK_SUBSET": "Sous-ensemble de hook invalide \"{subset}\". Doit être \"before\", \"primary\" ou \"after\". Sous-ensembles valides : {validSubsets}.",
282
+ "INVALID_TYPE_PATTERN": "Modèle de type invalide \"{typePattern}\". {expected}",
283
+ "HINT_INVALID_HOOK_TYPE": "Utilisez l'un des types de hook valides : before, after, always ou error.",
284
+ "HINT_INVALID_HOOK_HANDLER": "Fournissez une fonction comme gestionnaire de hook, pas une chaîne ou un autre type.",
285
+ "HINT_DUPLICATE_HOOK_ID": "Utilisez soit une valeur d'id différente, soit supprimez l'option id pour laisser Slothlet générer automatiquement un ID unique.",
286
+ "HINT_INVALID_HOOK_SUBSET": "Les sous-ensembles contrôlent l'ordre d'exécution. Utilisez 'before' pour le pré-traitement, 'primary' (par défaut) pour les hooks principaux ou 'after' pour le post-traitement.",
287
+ "HINT_INVALID_TYPE_PATTERN": "Les modèles de type doivent être au format 'type:pattern', tel que 'before:math.*' ou 'error:**'.",
288
+ "HOOK_BEFORE_RETURNED_PROMISE": "Le hook 'before' '{id}' pour le chemin '{path}' a renvoyé une Promesse. Les hooks 'before' doivent être synchrones.",
289
+ "HINT_HOOK_BEFORE_RETURNED_PROMISE": "Les hooks 'before' s'exécutent de manière synchrone avant l'appel de l'API. Supprimez l'utilisation de async/await ou de Promise de ce hook, ou changez-le en un hook 'after' si un traitement asynchrone est nécessaire.",
290
+ "HOOK_BRACE_EXPANSION_MAX_DEPTH": "L'expansion des accolades dans le modèle de hook dépasse la profondeur d'imbrication maximale de {maxDepth}.",
291
+ "HINT_HOOK_BRACE_EXPANSION_MAX_DEPTH": "Simplifiez le modèle de chemin de hook pour réduire l'imbrication des accolades. La profondeur maximale autorisée est de {maxDepth} niveaux.",
292
+ "SCOPE_DISABLED": "L'isolation du contexte par requête est désactivée. Réglez 'scope: {}' dans votre configuration Slothlet pour l'activer.",
293
+ "HINT_SCOPE_DISABLED": "Ajoutez 'scope: {}' (ou un objet de configuration scope) à vos options Slothlet pour activer l'isolation du contexte par requête via api.slothlet.run() et api.slothlet.scope().",
294
+ "SCOPE_INVALID_CONTEXT": "Les données de contexte doivent être un objet simple. Reçu : {received}.",
295
+ "HINT_SCOPE_INVALID_CONTEXT": "Passez un objet simple comme premier argument à run(), ex: api.slothlet.run({ userId: 1 }, callback).",
296
+ "SCOPE_INVALID_CALLBACK": "Le rappel doit être une fonction. Reçu : {received}.",
297
+ "HINT_SCOPE_INVALID_CALLBACK": "Passez une fonction comme deuxième argument à run(), ex: api.slothlet.run(context, async () => { ... }).",
298
+ "SCOPE_INVALID_OPTIONS": "Les options doivent être un objet simple. Reçu : {received}.",
299
+ "HINT_SCOPE_INVALID_OPTIONS": "Passez un objet d'options simple à scope(), ex: api.slothlet.scope({ fn: maFonction, context: {} }).",
300
+ "SCOPE_INVALID_FN": "'fn' doit être une fonction. Reçu : {received}.",
301
+ "HINT_SCOPE_INVALID_FN": "Réglez options.fn sur la fonction que vous souhaitez exécuter dans le contexte isolé.",
302
+ "SCOPE_INVALID_CONTEXT_OBJECT": "'context' doit être un objet simple. Reçu : {received}.",
303
+ "HINT_SCOPE_INVALID_CONTEXT_OBJECT": "Réglez options.context sur un objet simple contenant les données par requête à injecter.",
304
+ "SCOPE_INVALID_MERGE_STRATEGY": "Stratégie de fusion invalide '{merge}'. Doit être 'shallow' ou 'deep'.",
305
+ "HINT_SCOPE_INVALID_MERGE_STRATEGY": "Utilisez merge: 'shallow' (par défaut) pour une fusion de premier niveau de l'objet de contexte, ou merge: 'deep' pour une fusion profonde récursive.",
306
+ "SCOPE_INVALID_ISOLATION_MODE": "Mode d'isolation invalide '{isolationMode}'. Doit être 'partial' ou 'full'.",
307
+ "HINT_SCOPE_INVALID_ISOLATION_MODE": "Utilisez isolation: 'partial' (par défaut) pour hériter du contexte parent et superposer de nouvelles valeurs, ou isolation: 'full' pour commencer avec un contexte entièrement neuf.",
308
+ "CHAIN_ACCESS_UNDEFINED": "Impossible d'accéder à '{prop}' sur undefined lors du parcours de '{apiPath}.{chainLabel}'.",
309
+ "HINT_CHAIN_ACCESS_UNDEFINED": "Une propriété dans la chaîne de méthodes a été résolue comme undefined avant d'atteindre la cible. Vérifiez que chaque propriété intermédiaire dans la chaîne est un chemin d'API valide.",
310
+ "CHAIN_MATERIALIZE_FAILED": "Échec de la matérialisation de '{prop}' lors du parcours de '{apiPath}.{chainLabel}'.",
311
+ "HINT_CHAIN_MATERIALIZE_FAILED": "La matérialisation du module de l'API lazy à ce chemin a échoué. Vérifiez que le fichier du module existe et exporte des valeurs valides.",
312
+ "CHAIN_NOT_CALLABLE": "'{apiPath}.{chainLabel}' n'est pas appelable ou n'existe pas.",
313
+ "HINT_CHAIN_NOT_CALLABLE": "La propriété chaînée a été résolue en une valeur non appelée. Assurez-vous que le chemin d'API fait référence à une fonction, ou vérifiez que le module exporte la fonction attendue.",
314
+ "TYPESCRIPT_ESBUILD_NOT_INSTALLED": "Le mode TypeScript {mode} nécessite l'installation de 'esbuild'.",
315
+ "HINT_TYPESCRIPT_ESBUILD_NOT_INSTALLED": "Installez-le avec : npm install esbuild",
316
+ "TYPESCRIPT_TSC_NOT_INSTALLED": "Le mode TypeScript {mode} nécessite l'installation de 'typescript'.",
317
+ "HINT_TYPESCRIPT_TSC_NOT_INSTALLED": "Installez-le avec : npm install typescript",
318
+ "TYPESCRIPT_NOT_INSTALLED": "La génération de types ({feature}) nécessite l'installation de 'typescript'.",
319
+ "HINT_TYPESCRIPT_NOT_INSTALLED": "Conseil : pour la génération de types, installez : npm install typescript",
320
+ "TS_STRICT_REQUIRES_OUTPUT": "Le mode strict de TypeScript nécessite la configuration de 'types.output' dans votre configuration typescript.",
321
+ "HINT_TS_STRICT_REQUIRES_OUTPUT": "Ajoutez 'types: { output: './types/api.d.ts', interfaceName: 'MonAPI' }' à votre configuration typescript.",
322
+ "TS_STRICT_REQUIRES_INTERFACE_NAME": "Le mode strict de TypeScript nécessite la configuration de 'types.interfaceName' dans votre configuration typescript.",
323
+ "HINT_TS_STRICT_REQUIRES_INTERFACE_NAME": "Ajoutez 'interfaceName' à votre configuration 'types', ex: types: { output: './types/api.d.ts', interfaceName: 'MonAPI' }.",
324
+ "TS_TYPE_GENERATION_FAILED": "La génération de types a échoué : {error}",
325
+ "HINT_TS_TYPE_GENERATION_FAILED": "Le processus enfant qui génère les déclarations TypeScript a rencontré une erreur. Vérifiez le message d'erreur pour les détails et assurez-vous que les fichiers sources TypeScript sont valides.",
326
+ "TS_TYPE_GENERATION_FORK_FAILED": "Échec du fork du processus de génération de types : {error}",
327
+ "HINT_TS_TYPE_GENERATION_FORK_FAILED": "Le processus travailleur de génération de types n'a pas pu être démarré. Assurez-vous que Node.js a la permission de forker des processus enfants et que le script tools/build/generate-types-worker.mjs existe.",
328
+ "TS_TYPE_GENERATION_PROCESS_EXITED": "Le processus de génération de types s'est arrêté avec le code {code} : {output}",
329
+ "HINT_TS_TYPE_GENERATION_PROCESS_EXITED": "Le processus enfant de génération de types s'est arrêté avec un code non nul. Vérifiez la sortie pour les erreurs de compilation et vérifiez que les sources TypeScript sont valides.",
330
+ "TS_TYPE_CHECK_ERRORS": "Erreurs de type TypeScript trouvées dans '{filePath}' :\n{errors}",
331
+ "HINT_TS_TYPE_CHECK_ERRORS": "Corrigez les erreurs de type TypeScript listées ci-dessus dans le fichier source, ou réglez typescript.strict sur false pour ignorer la vérification des types.",
332
+ "FLATTEN_REASON_MULTI_DEFAULT_WITH_DEFAULT": "Contexte multi-default avec export par défaut",
333
+ "FLATTEN_REASON_MULTI_DEFAULT_WITHOUT_DEFAULT": "Contexte multi-default sans export par défaut",
334
+ "FLATTEN_REASON_ADDAPI_METADATA_DEFAULT": "Modèle de fichier spécial AddApi avec metadata par défaut",
335
+ "FLATTEN_REASON_ADDAPI_SPECIAL_FILE": "Modèle de fichier spécial AddApi - toujours aplatir",
336
+ "FLATTEN_REASON_ADDAPI_SPECIAL_FILE_PARENT": "Modèle de fichier spécial AddApi avec metadata par défaut - aplatir les exports nommés vers le parent",
337
+ "FLATTEN_REASON_SELF_REFERENTIAL": "Export auto-référencé détecté",
338
+ "FLATTEN_REASON_SINGLE_EXPORT_MATCHES_FILENAME": "Export nommé unique correspondant au nom de fichier",
339
+ "FLATTEN_REASON_FILENAME_MATCHES_CATEGORY": "Le nom de fichier correspond au nom de la catégorie",
340
+ "FLATTEN_REASON_PRESERVING_FUNCTION_NAME": "Préservation du nom de la fonction sur le nom de fichier",
341
+ "FLATTEN_REASON_DEFAULT_PRESERVE_NAMESPACE": "Comportement par défaut - préserver l'espace de noms",
342
+ "FLATTEN_REASON_NO_CONDITIONS_MET": "Aucune condition d'aplatissement remplie",
343
+ "FLATTEN_REASON_FUNCTION_FOLDER_MATCH": "Le nom de la fonction correspond au nom du dossier",
344
+ "FLATTEN_REASON_DEFAULT_OBJECT_EXPORT_FLATTEN": "L'export d'objet par défaut correspond au nom du dossier",
345
+ "FLATTEN_REASON_BASENAME_MATCHES_CATEGORY": "Le nom de base du fichier correspond au nom de la catégorie",
346
+ "FLATTEN_REASON_GENERIC_FILENAME_SINGLE_EXPORT": "Nom de fichier générique avec export unique",
347
+ "FLATTEN_REASON_DEFAULT_FUNCTION_EXPORT": "Export de fonction par défaut",
348
+ "FLATTEN_REASON_SINGLE_EXPORT_MATCHES_MODULE": "Export nommé unique correspondant au nom du module (vérification finale)",
349
+ "INVALID_CONFIG_PATH_TYPE": "Le chemin doit être un répertoire ou un type de fichier supporté (.mjs, .cjs, .js). Obtenu : {path}",
350
+ "HINT_INVALID_CONFIG_PATH_TYPE": "Assurez-vous que le chemin pointe vers un répertoire ou un fichier de module JavaScript avec une extension .mjs, .cjs ou .js.",
351
+ "INVALID_CONFIG_FILE_TYPE": "Le fichier doit avoir une extension .mjs, .cjs ou .js. Obtenu : {extension} pour {path}",
352
+ "HINT_INVALID_CONFIG_FILE_TYPE": "Renommez le fichier pour utiliser une extension supportée (.mjs pour les modules ES, .cjs pour CommonJS, .js pour les deux).",
353
+ "API_PATH_REASON_ARRAY_ELEMENTS": "les éléments du tableau doivent être des chaînes",
354
+ "API_PATH_REASON_ARRAY_EMPTY_SEGMENTS": "le tableau contient des segments de chaînes vides",
355
+ "API_PATH_REASON_RESERVED_NAME": "entre en conflit avec les noms réservés (slothlet, shutdown, destroy)",
356
+ "API_PATH_REASON_INVALID_TYPE": "doit être une chaîne, un tableau de chaînes, une chaîne vide (racine) ou null/undefined (racine)",
357
+ "API_PATH_REASON_EMPTY_SEGMENTS": "contient des segments de chemin vides",
358
+ "API_PATH_REASON_COLLISION_ERROR": "le chemin existe déjà et le mode de collision est 'error'",
359
+ "API_PATH_REASON_NOT_TRAVERSABLE": "le segment de chemin n'existe pas ou n'est pas traversable",
360
+ "API_PATH_REASON_REQUIRED": "apiPath est requis pour l'opération removeApi",
361
+ "INVALID_API_PATH": "Chemin d'API invalide : '{apiPath}' n'existe pas dans l'API chargée.",
362
+ "HINT_INVALID_API_PATH": "Assurez-vous que le chemin d'API existe avant de l'utiliser. Utilisez un chemin séparé par des points (ex : 'math.add') qui fait référence à un module actuellement chargé.",
363
+ "HOOKS_NOT_INITIALIZED": "Impossible d'accéder aux fonctionnalités de hook : le gestionnaire de hook n'est pas initialisé.",
364
+ "HINT_HOOKS_NOT_INITIALIZED": "Le support des hooks nécessite 'hooks: true' dans votre configuration Slothlet.",
365
+ "METADATA_NOT_AVAILABLE": "Impossible d'accéder aux fonctionnalités de métadonnées : le gestionnaire de métadonnées n'est pas initialisé. Gestionnaires disponibles : {handlersKeys}. C'est un bug interne - veuillez le signaler.",
366
+ "HINT_METADATA_NOT_AVAILABLE": "Le support des métadonnées est intégré. Si le gestionnaire de métadonnées est manquant, cela indique une erreur d'initialisation interne de Slothlet.",
367
+ "NO_CONTEXT_MANAGER": "Aucun gestionnaire de contexte n'est configuré pour cette instance Slothlet.",
368
+ "HINT_NO_CONTEXT_MANAGER": "Les opérations de contexte nécessitent un gestionnaire de contexte. Initialisez Slothlet avec 'contextManager: new AsyncContextManager()' ou 'contextManager: new LiveContextManager()' dans votre configuration.",
369
+ "UNSUPPORTED_CONTEXT_MANAGER": "Gestionnaire de contexte non supporté : '{manager}'. Seuls AsyncContextManager et LiveContextManager sont supportés.",
370
+ "HINT_UNSUPPORTED_CONTEXT_MANAGER": "Utilisez AsyncContextManager pour l'isolation de contexte basée sur l'async/ALS ou LiveContextManager pour un contexte de live-binding synchrone."
371
+ },
372
+ "metadata": {
373
+ "code": "fr-fr",
374
+ "name": "French (France)",
375
+ "nativeName": "Français (France)"
376
+ }
377
+ }