@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": "Неверная конфигурация: {option} имеет значение {value}, ожидалось {expected}. {hint}",
4
+ "INVALID_CONFIG_DIR_MISSING": "Ошибка конфигурации: параметр 'dir' обязателен. Укажите путь к директории для загрузки API.",
5
+ "INVALID_CONFIG_DIR_INVALID": "Ошибка конфигурации: 'dir' должен быть непустой строкой-путем. Получено: {dir}",
6
+ "INVALID_CONFIG_MODE_INVALID": "Ошибка конфигурации: 'mode' должен быть либо 'eager', либо 'lazy'. Получено: {value}",
7
+ "INVALID_CONFIG_NOT_LOADED": "Невозможно выполнить операцию '{operation}' - экземпляр не загружен. Сначала вызовите load().",
8
+ "INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED": "Не удалось материализовать lazy-прокси для '{apiPath}'. Проверьте корректность модуля.",
9
+ "INVALID_CONFIG_NOT_A_FUNCTION": "Невозможно вызвать '{apiPath}' — не функция (получено {actualType}). Проверьте экспорт модуля.",
10
+ "INVALID_CONFIG_API_PATH_INVALID": "Неверный путь API '{apiPath}': {reason}. Пути должны быть непустыми строками в точечной нотации и не конфликтовать с зарезервированными именами. Сегмент {index}: '{segment}'.",
11
+ "INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "Ошибка конфигурации: forceOverwrite/allowOverwrite требует moduleID. Укажите уникальный moduleID для перезаписи пути API '{apiPath}'.",
12
+ "INVALID_METADATA_TARGET": "Неверная цель метаданных: ожидалось {expected}, получено {target}. Операции с метаданными требуют функцию или объект.",
13
+ "METADATA_NO_MODULE_ID": "Невозможно установить пользовательские метаданные: moduleID не найден. Убедитесь, что цель загружена через Slothlet.",
14
+ "METADATA_LIFECYCLE_BYPASS": "tagSystemMetadata() должен вызываться через систему жизненного цикла. Используйте lifecycle.emit('impl:created') или lifecycle.emit('impl:changed').",
15
+ "INVALID_METADATA_KEY": "Неверный ключ метаданных: ожидалось {expected}, получено {type} для ключа '{key}'.",
16
+ "WARNING_METADATA_MISMATCH": "Предупреждение: путь файла метаданных для '{apiPath}' не совпадает. Stack: '{stackFile}', metadata: '{metadataFile}'. Это может указывать на hot-reload или вмешательство.",
17
+ "COLLISION_ERROR": "Ошибка конфликта на '{key}' (контекст: {collisionContext}, режим: {collisionMode}). Установите режим 'merge', 'replace', 'warn' или 'skip'.",
18
+ "COLLISION_DEFAULT_EXPORT_ERROR": "Обнаружен конфликт: свойство '{key}' уже существует в default export по пути '{apiPath}'. Режим — 'error'.",
19
+ "INVALID_ARGUMENT": "Неверный аргумент '{argument}': ожидалось {expected}, получено {received}.",
20
+ "RUNTIME_NO_ACTIVE_CONTEXT": "Активный контекст не найден. Операция должна выполняться внутри Slothlet API-функции.",
21
+ "INVALID_CONFIG_MUTATIONS_DISABLED": "Невозможно выполнить '{operation}' — мутации отключены. Установите allowMutation: true для разрешения изменений API (add/remove/reload).",
22
+ "CACHE_MODULEID_MISMATCH": "Несоответствие moduleID в кеше: ожидался '{cacheKey}', но запись имеет '{entryModuleID}'. Это внутренняя несогласованность кеша.",
23
+ "CACHE_NOT_FOUND": "Запись кеша не найдена для moduleID '{moduleID}' при операции '{operation}'. Модуль может быть не загружен или кеш очищен.",
24
+ "CACHE_MANAGER_NOT_AVAILABLE": "Менеджер кеша недоступен. Нельзя выполнить '{operation}'. Убедитесь, что менеджер инициализирован.",
25
+ "MODULE_LOAD_FAILED": "Не удалось загрузить модуль '{modulePath}' (ID: {moduleID}): {error}",
26
+ "MODULE_NOT_FOUND": "Модуль не найден: {modulePath}. {hint}",
27
+ "MODULE_IMPORT_FAILED": "Не удалось импортировать модуль '{modulePath}': {error}. Проверьте, существует ли файл и корректен ли синтаксис.",
28
+ "CONTEXT_ALREADY_EXISTS": "Контекст для экземпляра '{instanceID}' уже существует. Невозможно инициализировать дважды.",
29
+ "CONTEXT_NOT_FOUND": "Контекст для экземпляра '{instanceID}' не найден. Экземпляр мог быть завершён. Доступные экземпляры: {availableInstances}",
30
+ "CONTEXT_EXECUTION_FAILED": "Не удалось выполнить в контексте для экземпляра '{instanceID}': {error}",
31
+ "NO_ACTIVE_CONTEXT_LIVE": "Нет активного контекста — в режиме live bindings нет активного экземпляра.",
32
+ "NO_ACTIVE_CONTEXT_ASYNC": "Нет активного контекста — функцию нужно вызывать внутри slothlet API-контекста.",
33
+ "RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Нет активного контекста — доступ к 'self' невозможен. Вызывайте внутри Slothlet API-функции.",
34
+ "RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Нет активного контекста — 'context' можно менять только внутри Slothlet API-вызовов.",
35
+ "OWNERSHIP_INVALID_MODULE_ID": "Недействительная регистрация владения: moduleID '{moduleID}' недействителен.",
36
+ "OWNERSHIP_INVALID_API_PATH": "Недействительная регистрация владения: apiPath '{apiPath}' недействителен.",
37
+ "OWNERSHIP_CONFLICT": "Конфликт владения: путь '{apiPath}' уже принадлежит модулю '{existingModuleId}', нельзя назначить '{newModuleId}'. Используйте forceOverwrite: true или предварительно вызовите removeApi.",
38
+ "INVALID_DIRECTORY": "Неверная директория '{dir}': {error}. Убедитесь, что директория существует и доступна.",
39
+ "WARN_DIRECTORY_EMPTY": "Директория '{dir}' (разрешено: '{resolvedPath}') пуста или не содержит загружаемых модулей (.mjs, .cjs, .js). Это допустимо для add-api, но может указывать на неверный путь.",
40
+ "INTERNAL_HOOK_STATE_CORRUPT": "[ВНУТРИ] Состояние HookManager повреждено: hook \"{hookId}\" ({type}/{subset}/{pattern}) — {detail}. Пожалуйста, сообщите.",
41
+ "WARNING_RESERVED_PROPERTY_CONFLICT": "Пользовательский API конфликтует с зарезервированными свойствами: {properties}",
42
+ "WARNING_LANGUAGE_LOAD_FAILED": "Не удалось загрузить язык '{lang}', используется английский по умолчанию.",
43
+ "WARNING_LANGUAGE_UNAVAILABLE": "Язык '{lang}' недоступен, используется английский.",
44
+ "WARNING_OWNERSHIP_CONFLICT": "Конфликт владения на '{apiPath}': уже принадлежит '{existingModuleId}', регистрировать '{newModuleId}' невозможно.",
45
+ "WARNING_HOT_RELOAD_PATH_COLLISION": "Конфликт пути при hot-reload на {apiPath} — сохраняется существующее значение (режим: warn).",
46
+ "WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "Нельзя объединить примитивы на {apiPath} — сохранено существующее значение. Для перезаписи используйте collision mode 'replace' или убедитесь, что оба значения являются объектами.",
47
+ "WARNING_COLLISION_FILE_FOLDER_MERGE": "Обнаружен конфликт на '{key}' — файлы и папки объединяются (режим: 'warn').",
48
+ "HINT_WARNING_COLLISION_FILE_FOLDER_MERGE": "Файл и папка имеют одинаковое имя '{key}'. Их экспорты объединяются. Переименуйте один из них или установите collisionMode: 'replace'/'error'.",
49
+ "WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "Конфликт: свойство '{key}' уже существует в default export функции на {apiPath}. Именованный экспорт перезапишет его.",
50
+ "HINT_WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "Именованный экспорт '{key}' в '{apiPath}' перезаписывает существующее свойство default export. Переименуйте экспорт или используйте другой apiPath.",
51
+ "WARNING_COLLISION_TRIGGER_MATERIALIZE_ERROR": "Ранняя материализация для lazy-папки '{apiPath}' не удалась. Замена при конфликте может быть неполной.",
52
+ "HINT_WARNING_COLLISION_TRIGGER_MATERIALIZE_ERROR": "Это некритическая фоноваая ошибка при обработке конфликтов. Lazy-папка по этому пути не смогла материализоваться. Проверьте модуль по указанному пути.",
53
+ "WARNING_LIFECYCLE_HANDLER_ERROR": "Обработчик lifecycle-события выбросил ошибку для события '{event}'. Другие обработчики продолжили выполнение.",
54
+ "HINT_WARNING_LIFECYCLE_HANDLER_ERROR": "Один из обработчиков lifecycle для события '{event}' выдал ошибку. Проверьте lifecycle.on('{event}', ...) на наличие багов. Другие обработчики unaffected.",
55
+ "WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Обнаружено несколько root-level default экспортов: {rootContributors}. Каждый был помещён в namespace по имени файла (например api.{firstContributor}()). Рассмотрите вариант объединения.",
56
+ "V2_CONFIG_UNSUPPORTED": "Опция конфигурации '{option}' из v2 не поддерживается в v3. {hint} Используйте '{replacement}'.",
57
+ "DEBUG_MODE_ROOT_CONTRIBUTOR": "[{mode}] Обнаружен root-contributor: {functionName}",
58
+ "DEBUG_MODE_ROOT_CONTRIBUTOR_APPLIED": "[{mode}] Применён шаблон root-contributor — API-функция с {properties} дополнительными свойствами",
59
+ "DEBUG_MODE_PROCESSING_DIRECTORY": "[{mode}] Обработка каталога: {categoryName} (глубина {currentDepth})",
60
+ "DEBUG_MODE_MODULE_DECISION": "[{mode}] Модуль {moduleName}: {reason}",
61
+ "DEBUG_MODE_FLATTENING": "[{mode}] Выравнивание (flatten) {moduleName}: {flattenType}",
62
+ "DEBUG_MODE_ASSIGN_TO_API": "ПРИСВОЕНИЕ-К-API",
63
+ "DEBUG_MODE_COLLISION_CHECK": "ПРОВЕРКА-СТОЛКНОВЕНИЙ",
64
+ "DEBUG_MODE_COLLISION_DETECT": "ОБНАРУЖЕНИЕ-СТОЛКНОВЕНИЯ",
65
+ "DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "СТОЛКНОВЕНИЕ: обнаружение обёртки",
66
+ "DEBUG_MODE_COLLISION_LAZY_DETECTION": "СТОЛКНОВЕНИЕ: обнаружение lazy",
67
+ "DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "СТОЛКНОВЕНИЕ: установка режима для СУЩЕСТВУЮЩЕЙ обёртки",
68
+ "DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "СТОЛКНОВЕНИЕ: подтверждён режим существующей обёртки",
69
+ "DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "СТОЛКНОВЕНИЕ: установка режима для обёртки-значения",
70
+ "DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "СТОЛКНОВЕНИЕ: подтверждён режим обёртки-значения",
71
+ "DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "СТОЛКНОВЕНИЕ-ЗАМЕНА: инициирование немедленной материализации",
72
+ "DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "СТОЛКНОВЕНИЕ-ЗАМЕНА: свойства файла не копируются — replace очистит всё при материализации",
73
+ "DEBUG_MODE_COLLISION_REPLACE_BEFORE": "СТОЛКНОВЕНИЕ-ЗАМЕНА: перед присвоением",
74
+ "DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "СТОЛКНОВЕНИЕ-ПРИСВОЕНИЕ: замена существующего на lazy-папку",
75
+ "DEBUG_MODE_COLLISION_REPLACE_AFTER": "СТОЛКНОВЕНИЕ-ЗАМЕНА: после присвоения",
76
+ "DEBUG_MODE_COLLISION_REPLACE_VERIFY": "СТОЛКНОВЕНИЕ-ЗАМЕНА: проверка",
77
+ "DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "СТОЛКНОВЕНИЕ-КОПИРОВАНИЕ: копирование дочерних ключей",
78
+ "DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "СТОЛКНОВЕНИЕ-КОПИРОВАНИЕ: копирование отдельного ключа",
79
+ "DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "СТОЛКНОВЕНИЕ-ЗАПУСК-ИНСТАНЦИРОВАНИЯ: ранняя материализация (fire-and-forget)",
80
+ "DEBUG_MODE_MERGE_API_OBJECTS_ENTRY": "mergeApiObjects: вход",
81
+ "DEBUG_MODE_MERGE_API_OBJECTS_SOURCE_KEYS": "mergeApiObjects: ключи sourceApi",
82
+ "DEBUG_MODE_MERGE_API_OBJECTS_EXIT_INVALID_SOURCE": "mergeApiObjects: выход — sourceApi не объект/функция",
83
+ "DEBUG_MODE_MERGE_API_OBJECTS_PROCESSING_KEY": "mergeApiObjects: обработка ключа",
84
+ "DEBUG_MODE_MERGE_API_OBJECTS_RECURSING": "mergeApiObjects — оба plain object, рекурсивно",
85
+ "DEBUG_MODE_MERGE_API_OBJECTS_CALLING_ASSIGN": "mergeApiObjects: вызов assignToApiPath",
86
+ "DEBUG_MODE_BUILD_FINAL_API_CALLED": "Вызван buildFinalAPI",
87
+ "DEBUG_MODE_SLOTHLET_NAMESPACE_CREATED": "Создано пространство имён Slothlet",
88
+ "DEBUG_MODE_BUILT_INS_ATTACHED": "Встроенные функции подключены",
89
+ "DEBUG_MODE_CATEGORY_REUSE_EXISTING_WRAPPER": "Повторное использование категории — используется существующая обёртка",
90
+ "DEBUG_MODE_CATEGORY_WRAPPER_CREATED": "Создана обёртка категории",
91
+ "DEBUG_MODE_CATEGORY_WRAPPER_ASSIGNED": "Обёртка категории назначена в API",
92
+ "DEBUG_MODE_CATEGORY_CREATED": "Категория создана",
93
+ "DEBUG_MODE_CATEGORY_TARGET_API_STATUS": "Статус targetApi категории",
94
+ "DEBUG_MODE_PROCESSING_FILE": "Обработка файла",
95
+ "DEBUG_MODE_PROCESSING_MODULE": "Обработка модуля",
96
+ "DEBUG_MODE_FILE_PROCESSING": "Файл обрабатывается",
97
+ "DEBUG_MODE_SINGLE_FILE_FOLDER_DETECTED": "Обнаружена single-file папка",
98
+ "DEBUG_MODE_SINGLE_FILE_FOLDER_WRAPPED": "Single-file папка отмечена как свойство-обёртка",
99
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_FILE": "Выравнивание много-экспортного файла",
100
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_TARGET_STATUS": "Статус targetApi при выравнивании",
101
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_ASSIGNING": "Назначение ключа при выравнивании",
102
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_ASSIGNED": "Ключ выравнивания успешно назначен",
103
+ "DEBUG_MODE_FLATTEN_MULTI_EXPORT_BLOCKED": "Ключ выравнивания заблокирован safeAssign",
104
+ "DEBUG_MODE_FILE_WRAPPER_ASSIGNMENT": "Назначение обёртки файла",
105
+ "DEBUG_MODE_AFTER_ASSIGNMENT_STATUS": "Статус после назначения",
106
+ "DEBUG_MODE_SUBDIRECTORY_CHECK": "Проверка подкаталога",
107
+ "DEBUG_MODE_DIRECTORY_CHECK": "Проверка каталога",
108
+ "DEBUG_MODE_DIRECTORY_CHECK_PASSED": "Проверка каталога пройдена",
109
+ "DEBUG_MODE_SUBDIRECTORIES_FOUND": "Найдены подкаталоги",
110
+ "DEBUG_MODE_SUBDIRECTORY_LOOP_START": "Начало цикла подкаталога",
111
+ "DEBUG_MODE_PROCESSING_SUBDIRECTORY": "Обработка подкаталога",
112
+ "DEBUG_MODE_FOLDER_LEVEL_FLATTEN_CHECK": "Проверка выравнивания на уровне папки",
113
+ "DEBUG_MODE_FOLDER_LEVEL_FLATTEN_SKIP_RECURSION": "Пропуск рекурсии при выравнивании папки",
114
+ "DEBUG_MODE_FILE_FOLDER_COLLISION_MERGED": "Конфликт файл-папка: экспорты файла объединены в реализацию папки",
115
+ "DEBUG_MODE_CREATING_LAZY_SUBDIRECTORY": "Создание lazy-подкаталога",
116
+ "DEBUG_MODE_MATERIALIZE_FUNCTION_STARTING": "Запуск материализации функции",
117
+ "DEBUG_MODE_MATERIALIZE_FUNCTION_RETURNING_IMPL": "Материализация функции вернула реализацию",
118
+ "DEBUG_MODE_FOLDER_PATTERN_MATCH": "Совпадение шаблона папки",
119
+ "DEBUG_MODE_FOLDER_PATTERN_ATTACH_PROPERTY": "Шаблон папки: прикрепление свойства",
120
+ "DEBUG_MODE_FOLDER_PATTERN_RETURN": "Шаблон папки: возврат",
121
+ "DEBUG_MODE_CACHE_ENTRY_STORED": "Запись кеша сохранена",
122
+ "DEBUG_MODE_CACHE_ENTRY_DELETED": "Запись кеша удалена",
123
+ "DEBUG_MODE_ALL_CACHES_CLEARED": "Все кеши очищены",
124
+ "DEBUG_MODE_REBUILDING_CACHE_FROM_DISK": "Восстановление кеша с диска",
125
+ "DEBUG_MODE_CACHE_REBUILT_SUCCESSFULLY": "Кеш успешно восстановлен",
126
+ "DEBUG_MODE_SYNC_WRAPPER_ENTRY_EXISTING": "syncWrapper: вход — existingProxy",
127
+ "DEBUG_MODE_SYNC_WRAPPER_ENTRY_NEXT": "syncWrapper: вход — nextProxy",
128
+ "DEBUG_MODE_SYNC_WRAPPER_EXISTING": "syncWrapper: существующая обёртка",
129
+ "DEBUG_MODE_SYNC_WRAPPER_NEXT": "syncWrapper: следующая обёртка",
130
+ "DEBUG_MODE_SYNC_WRAPPER_BEFORE_MERGE": "syncWrapper: перед слиянием",
131
+ "DEBUG_MODE_SYNC_WRAPPER_NEXT_IMPL_KEYS": "syncWrapper: ключи реализации следующей обёртки",
132
+ "DEBUG_MODE_SYNC_WRAPPER_NEXT_CHILDCACHE_KEYS": "syncWrapper: ключи childCache следующей обёртки",
133
+ "DEBUG_MODE_MUTATE_API_VALUE_CALLED": "mutateApiValue вызвано",
134
+ "DEBUG_MODE_MUTATE_API_VALUE_WRAPPER_STATUS": "mutateApiValue: статус обёртки",
135
+ "DEBUG_MODE_MUTATE_API_VALUE_NEXT_VALUE": "mutateApiValue: следующее значение",
136
+ "DEBUG_MODE_MUTATE_API_VALUE_NEXT_VALUE_KEYS": "mutateApiValue: ключи следующего значения",
137
+ "DEBUG_MODE_MUTATE_API_VALUE_SYNC_WRAPPERS": "mutateApiValue — оба являются обёртками, вызывается syncWrapper",
138
+ "DEBUG_MODE_MUTATE_API_VALUE_MERGE_INTO_WRAPPER": "mutateApiValue — слияние свойств в существующую обёртку",
139
+ "DEBUG_MODE_MUTATE_API_VALUE_MERGE_KEYS": "mutateApiValue: ключи для слияния",
140
+ "DEBUG_MODE_MUTATE_API_VALUE_SETIMPL_FALLBACK": "mutateApiValue — использование fallback ___setImpl",
141
+ "DEBUG_MODE_SET_VALUE_AT_PATH": "установить-значение-на-пути",
142
+ "DEBUG_MODE_SET_VALUE_AT_PATH_SKIP_COLLISION": "setValueAtPath — пропуск столкновения",
143
+ "DEBUG_MODE_SET_VALUE_AT_PATH_REPLACE_MERGE": "setValueAtPath — замена слиянием (сохраняет обёртку)",
144
+ "DEBUG_MODE_SET_VALUE_AT_PATH_MERGE_PROPS": "setValueAtPath — слияние свойств",
145
+ "DEBUG_MODE_SET_VALUE_AT_PATH_ASSIGN": "setValueAtPath — без столкновения, присваивание",
146
+ "DEBUG_MODE_ADD_API_COMPONENT_BUILD_RETURN": "addApiComponent: возвращаемая структура buildAPI",
147
+ "DEBUG_MODE_RULE_13_DEDUP_HOISTED_KEY": "Правило 13 C34: AddApi — удаление дубликатов путей, поднят дублирующийся ключ",
148
+ "DEBUG_MODE_ADD_API_COMPONENT_MERGE_KEYS": "addApiComponent: ключи apiToMerge",
149
+ "DEBUG_MODE_AWAITING_PENDING_MATERIALIZATIONS": "Ожидание {count} ожидающих материализаций перед завершением add",
150
+ "DEBUG_MODE_CACHE_DELETED_MODULE_REMOVED": "Кеш удалён для удалённого модуля",
151
+ "DEBUG_MODE_RELOADING_MODULE_BY_ID": "Перезагрузка модуля по ID",
152
+ "DEBUG_MODE_FRESH_API_KEYS_BEFORE_RESTORE": "Новые ключи API до восстановления",
153
+ "DEBUG_MODE_FRESH_API_KEYS_AFTER_RESTORE": "Новые ключи API после восстановления",
154
+ "DEBUG_MODE_MODULE_RELOAD_COMPLETE": "Перезагрузка модуля завершена",
155
+ "DEBUG_MODE_RELOADING_BY_API_PATH": "Перезагрузка по API пути",
156
+ "DEBUG_MODE_NO_CACHES_ATTEMPTING_RESTORE": "Для пути не найдено кешей, попытка базового восстановления",
157
+ "DEBUG_MODE_API_PATH_RELOAD_COMPLETE": "Перезагрузка API пути завершена",
158
+ "DEBUG_MODE_RESTORE_ROOT_KEY_INSPECT": "ВОССТАНОВЛЕНИЕ-ИНСПЕКЦИЯ-КОРНЯ",
159
+ "DEBUG_MODE_ROOT_KEY_RESET_LAZY": "Корневой ключ сброшен в lazy через ___resetLazy",
160
+ "DEBUG_MODE_ROOT_KEY_UPDATED_SETIMPL": "Корневой ключ обновлён через ___setImpl",
161
+ "DEBUG_MODE_RESTORE_NESTED_PATH": "ВОССТАНОВЛЕНИЕ: вложенный путь",
162
+ "DEBUG_MODE_RESTORE_FORCING_REPLACE": "ВОССТАНОВЛЕНИЕ: принудительная замена (replace)",
163
+ "DEBUG_MODE_UPDATED_WRAPPER_IMPL": "Обновлена реализация существующей обёртки",
164
+ "DEBUG_MODE_CREATED_NEW_WRAPPER_UNEXPECTED": "Создана новая обёртка (неожиданно при перезагрузке)",
165
+ "DEBUG_MODE_LIFECYCLE_EVENT": "Событие: {event}",
166
+ "DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS": "Конструктор UnifiedWrapper — ключи реализации",
167
+ "DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT": "Конструктор UnifiedWrapper — после adopt",
168
+ "DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR": "Фоновая ошибка материализации",
169
+ "DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "APPLY-IMPL-UPDATE-PATH: обновлён filePath из null",
170
+ "DEBUG_MODE_SETIMPL_CALLED": "___setImpl вызван",
171
+ "DEBUG_MODE_RESETLAZY_CALLED": "___resetLazy вызван",
172
+ "DEBUG_MODE_RESETLAZY_COMPLETE": "___resetLazy завершён — обёртка теперь не материализована",
173
+ "DEBUG_MODE_MATERIALIZE_AWAIT": "ОЖИДАНИЕ-ИНСТАНЦИРОВАНИЯ: ожидание существующего promise материализации",
174
+ "DEBUG_MODE_MATERIALIZE_START": "_materialize: начало",
175
+ "DEBUG_MODE_MATERIALIZE_CALLING_FUNC": "_materialize: вызов materializeFunc",
176
+ "DEBUG_MODE_MATERIALIZE_COMPLETE": "_materialize: завершено",
177
+ "DEBUG_MODE_MATERIALIZE_ERROR": "_materialize: ошибка",
178
+ "DEBUG_MODE_ADOPT_START": "ADOPT: начало",
179
+ "DEBUG_MODE_ADOPT_REPLACE_CLEARING": "ADOPT: режим REPLACE — очистка существующих свойств",
180
+ "DEBUG_MODE_ADOPT_PROCESS": "ADOPT: процесс",
181
+ "DEBUG_MODE_ADOPT_CHECK": "ADOPT: проверка",
182
+ "DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "ADOPT: пропуск — столкновение объединено, сохраняется версия из файла",
183
+ "DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "ADOPT: пропуск — свойство неконфигурируемо (унаследовано)",
184
+ "DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "ADOPT: пропуск — свойство уже существует с той же обёрткой",
185
+ "DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "ADOPT: разрешено — не было объединения",
186
+ "DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "ADOPT: повторное использование дочерней обёртки",
187
+ "DEBUG_MODE_ADOPT_WRAP": "ADOPT: обёртывание",
188
+ "DEBUG_MODE_ADOPT_DEFINE": "ADOPT: определение на обёртке",
189
+ "DEBUG_MODE_ADOPT_DEFINED": "ADOPT: успешно определено на обёртке",
190
+ "DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "WRAP-CHILD-PATH: проверка пути дочернего файла",
191
+ "DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "WRAP-CHILD-PATH: __childFilePaths доступны",
192
+ "DEBUG_MODE_WRAP_CHILD_PATH_USING": "WRAP-CHILD-PATH: использование __childFilePaths",
193
+ "DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "WRAP-CHILD-PATH: использование __childFilePathsPreMaterialize",
194
+ "DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "WRAP-CHILD-PATH: использование запасного parentMetadata?.filePath",
195
+ "DEBUG_MODE_WAITING_TYPE": "ОЖИДАЕТ-ТИП",
196
+ "DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "WAITING-TYPE-WALK: найдено в обёртке",
197
+ "DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "WAITING-TYPE-WALK: найдено в _impl",
198
+ "DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "WAITING-TYPE-WALK: доступ напрямую",
199
+ "DEBUG_MODE_WAITING_TYPE_RESOLVED": "ОЖИДАЕТ-ТИП: разрешено",
200
+ "DEBUG_MODE_WAITING_TYPE_INFLIGHT": "WAITING-TYPE-INFLIGHT: возвращает IN_FLIGHT",
201
+ "DEBUG_MODE_WAITING_GET_PREMATURE": "WAITING-GET-PREMATURE: найдено до материализации",
202
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "WAITING-GET-IMMEDIATE-MAT: инициирована немедленная материализация для collision-merged папки",
203
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "WAITING-GET-IMMEDIATE-MAT-ERROR: материализация не удалась",
204
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "WAITING-GET-IMMEDIATE-MAT-SUCCESS: теперь доступно в обёртке",
205
+ "DEBUG_MODE_WAITING_APPLY_ENTRY": "ОЖИДАЕТ-АНДЕР-ЗАПИСЬ",
206
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "WAITING-APPLY-MATERIALIZE: запуск материализации",
207
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "WAITING-APPLY-MATERIALIZED: материализация завершена",
208
+ "DEBUG_MODE_WAITING_APPLY_START_WALK": "WAITING-APPLY-START-WALK: начало обхода propChain",
209
+ "DEBUG_MODE_WAITING_APPLY_WALK": "ОЖИДАЕТ-ОБХОД-АНДЕР",
210
+ "DEBUG_MODE_WAITING_APPLY": "ОЖИДАЕТ-АНДЕР",
211
+ "DEBUG_MODE_GET_START": "GET: начало",
212
+ "DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED": "util.inspect.custom: lazy не материализовано",
213
+ "DEBUG_MODE_GET_CACHED_REPLACE": "GET-CACHED-REPLACE",
214
+ "DEBUG_MODE_GET_CACHED": "ПОЛУЧЕНО-ИЗ-КЭША",
215
+ "DEBUG_MODE_ADOPT": "ПРИНЯТЬ",
216
+ "DEBUG_MODE_GET_PROXYGET_ACCESSING": "GET-PROXYGET: доступ",
217
+ "DEBUG_MODE_GET_PROXYGET_FOUND": "GET-PROXYGET: найдено в обёртке",
218
+ "DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "LAZY-GET: будет создан ожид. прокси",
219
+ "DEBUG_MODE_BUILD_LAZY_API_CALLED": "buildLazyAPI вызван",
220
+ "DEBUG_MODE_COMPONENT_INITIALIZED": "Компонент инициализирован: {component} → this.{category}.{propertyName}",
221
+ "DEBUG_MODE_LAZY_WRAPPER_REGISTERED": "Lazy-обёртка зарегистрирована",
222
+ "DEBUG_MODE_LAZY_WRAPPER_MATERIALIZED": "Lazy-обёртка материализована",
223
+ "DEBUG_MODE_ALL_LAZY_WRAPPERS_MATERIALIZED": "Все lazy-обёртки материализованы",
224
+ "HINT_REFERENCE_REMOVED": "Экспорт 'reference' удалён из '@cldmv/slothlet/runtime'. Доступ через 'self.*' (например, 'self.myRefProperty').",
225
+ "HINT_MODULE_NOT_FOUND": "Убедитесь, что модуль существует и путь указан верно. Проверьте опечатки в import-пути.",
226
+ "HINT_SYNTAX_ERROR": "Проверьте синтаксис файла модуля. Частые ошибки: пропущенные скобки, незакрытые строки или неверный JavaScript.",
227
+ "HINT_CONTEXT_NOT_FOUND": "Убедитесь, что Slothlet-экземпляр инициализирован и контекст создан, прежде чем обращаться к нему.",
228
+ "HINT_CONTEXT_ALREADY_EXISTS": "Контекст уже существует. Проверьте, не инициализируется ли один и тот же экземпляр дважды.",
229
+ "HINT_CONTEXT_EXECUTION_FAILED": "Произошла ошибка при выполнении функции — проверьте детали ошибки.",
230
+ "HINT_NO_ACTIVE_CONTEXT": "Активный контекст не найден. Вызывайте функцию внутри slothlet-контекста (async или live).",
231
+ "HINT_NO_ACTIVE_CONTEXT_ASYNC": "Активный контекст не найден. Вызывайте функцию внутри асинхронного slothlet-контекста.",
232
+ "HINT_NO_ACTIVE_CONTEXT_LIVE": "Активный контекст не найден. Вызывайте функцию внутри live-контекста Slothlet.",
233
+ "HINT_OWNERSHIP_INVALID_MODULE_ID": "Идентификатор модуля недействителен. Убедитесь, что модуль загружен корректно и ID верен.",
234
+ "HINT_OWNERSHIP_INVALID_API_PATH": "Неверный формат пути API. Убедитесь в корректности формата.",
235
+ "HINT_OWNERSHIP_CONFLICT": "Путь уже принадлежит другому модулю. Варианты: forceOverwrite: true, collision: 'merge'/'replace', или предварительно вызвать api.slothlet.api.remove().",
236
+ "HINT_INVALID_CONFIG": "Проверьте значение конфигурации и убедитесь, что оно соответствует ожидаемому формату.",
237
+ "HINT_INVALID_CONFIG_DIR_INVALID": "Убедитесь, что путь к директоии является корректной строкой и указывает на существующую директорию.",
238
+ "HINT_INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "При использовании forceOverwrite/allowOverwrite необходим уникальный moduleID для отслеживания владельца.",
239
+ "HINT_COLLISION_ERROR": "Режим столкновения 'error' предотвращает перезапись; используйте 'merge'/'replace'/'warn'/'skip' по необходимости.",
240
+ "HINT_COLLISION_DEFAULT_EXPORT_ERROR": "Именованный экспорт конфликтует со свойством default export. Измените режим или переименуйте экспорт.",
241
+ "HINT_INVALID_ARGUMENT": "Путь должен быть строкой в точечной нотации, например 'math.add'.",
242
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT": "metadata.self() должен вызываться внутри Slothlet API-функции.",
243
+ "HINT_INVALID_CONFIG_MODE_INVALID": "Режим должен быть 'eager' или 'lazy'.",
244
+ "HINT_INVALID_CONFIG_MODE_UNKNOWN": "Неизвестный режим. Используйте 'eager' или 'lazy'.",
245
+ "HINT_INVALID_CONFIG_DIR_MISSING": "Необходимо указать путь к директории, но он не был передан.",
246
+ "HINT_INVALID_CONFIG_API_PATH_INVALID": "Убедитесь, что путь API — корректная точечная нотация без пустых сегментов и зарезервированных имён.",
247
+ "HINT_INVALID_CONFIG_MUTATIONS_DISABLED": "Операции мутации требуют allowMutation: true; используйте diagnostics: true для тестирования без реальных мутаций.",
248
+ "HINT_CACHE_MODULEID_MISMATCH": "Внутренняя ошибка: повреждение кеша. Пожалуйста, сообщите с шагами воспроизведения.",
249
+ "HINT_CACHE_NOT_FOUND": "Убедитесь, что модуль загружен перед перезагрузкой/восстановлением кеша; проверьте moduleID.",
250
+ "HINT_CACHE_MANAGER_NOT_AVAILABLE": "Менеджер кеша должен инициализироваться автоматически. Если он отсутствует — это внутренняя проблема.",
251
+ "HINT_INVALID_METADATA_TARGET": "Цель должна быть функцией или объектом, загруженным через Slothlet. Передавайте реальную ссылку.",
252
+ "HINT_METADATA_NO_MODULE_ID": "Убедитесь, что функция/объект загружены через Slothlet; только такие объекты имеют метаданные.",
253
+ "HINT_METADATA_LIFECYCLE_BYPASS": "Не вызывайте tagSystemMetadata() напрямую; триггерите события lifecycle для корректного вызова.",
254
+ "HINT_INVALID_METADATA_KEY": "Ключи метаданных должны быть строками, массивами строк или объектами с массивами; проверьте формат.",
255
+ "HINT_WARNING_METADATA_MISMATCH": "Предупреждение о несоответствии метаданных — возможно из-за hot-reload или вмешательства.",
256
+ "HINT_WARNING_INIT_COMPONENT_SKIPPED": "Компоненты, которые не удалось импортировать, будут пропущены. Для опциональных компонентов это нормально.",
257
+ "HINT_WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Несколько файлов экспортируют default функции на корневом уровне — рассмотрите консолидацию или перенос в подкаталоги.",
258
+ "HINT_WARNING_HOT_RELOAD_PATH_COLLISION": "Конфликт при hot-reload — существующее значение сохранено. Для принудительной замены используйте collision mode 'replace'.",
259
+ "HINT_WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "Нельзя объединить примитивы — используйте 'replace' для перезаписи или оставьте 'warn' для сохранения существующего.",
260
+ "HINT_WARNING_OWNERSHIP_CONFLICT": "Путь принадлежит другому модулю — используйте forceOverwrite: true или вызовите api.slothlet.api.remove().",
261
+ "HINT_V2_CONFIG_UNSUPPORTED": "Опция v2 не поддерживается в v3 — обновите конфигурацию.",
262
+ "HINT_MODULE_LOAD_FAILED": "Проверьте файл модуля на ошибки синтаксиса и экспорты.",
263
+ "HINT_MODULE_IMPORT_FAILED": "Проверьте существование файла и корректность импорта. Проверьте зависимости.",
264
+ "HINT_MODULE_NO_EXPORTS": "Модуль должен экспортировать хотя бы одну функцию или объект.",
265
+ "HINT_INVALID_DIRECTORY": "Проверьте путь к директории — он должен быть корректным и существовать.",
266
+ "HINT_WARN_DIRECTORY_EMPTY": "Проверьте путь; пустые директории допустимы для add-api workflows.",
267
+ "HINT_INVALID_CONFIG_LAZY_NOT_READY": "В lazy-режиме обращайтесь к свойствам для триггера материализации перед вызовом функций.",
268
+ "HINT_INTERNAL_INVALID_STATE": "Внутренняя ошибка состояния — пожалуйста, сообщите с деталями.",
269
+ "HINT_INTERNAL_HOOK_STATE_CORRUPT": "Состояние HookManager неконсистентно — отправьте баг-репорт с примером вызовов hook.on()/hook.remove().",
270
+ "HINT_INVALID_CONFIG_LAZY_ASYNC_REQUIRED": "Lazy-режим требует асинхронности — используйте eager или асинхронный паттерн.",
271
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Нельзя использовать 'self' вне Slothlet API-функции.",
272
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Нельзя менять 'context' вне Slothlet API-вызовов.",
273
+ "HINT_INVALID_CONFIG_NOT_LOADED": "Экземпляр должен быть загружен перед выполнением операции — вызовите load().",
274
+ "HINT_INVALID_CONFIG_RELOAD_NOT_IMPL": "Функция перезагрузки ещё не реализована.",
275
+ "HINT_WARNING_RESERVED_PROPERTY_CONFLICT": "Имя 'slothlet' зарезервировано — переименуйте модуль/свойство.",
276
+ "HINT_DEPRECATED_CONFIG_OPTION": "Опция конфигурации устарела — обновите на рекомендуемую.",
277
+ "HINT_ERROR_RUNTIME_IMPORT_FAILED": "Не удалось загрузить runtime-модуль — возможно, экспорт @cldmv/slothlet/runtime недоступен.",
278
+ "INVALID_HOOK_TYPE": "Неверный тип hook \"{type}\". Должен быть одним из: {validTypes}.",
279
+ "INVALID_HOOK_HANDLER": "Обработчик hook должен быть функцией. Получен: {receivedType}.",
280
+ "DUPLICATE_HOOK_ID": "Hook с ID \"{id}\" уже существует. Используйте уникальную ID или опустите опцию id.",
281
+ "INVALID_HOOK_SUBSET": "Неверный subset hook \"{subset}\". Должен быть \"before\", \"primary\" или \"after\".",
282
+ "INVALID_TYPE_PATTERN": "Неверный паттерн типа \"{typePattern}\". {expected}",
283
+ "HINT_INVALID_HOOK_TYPE": "Используйте допустимые типы hook: before, after, always, error.",
284
+ "HINT_INVALID_HOOK_HANDLER": "Передайте функцию как обработчик hook, не строку.",
285
+ "HINT_DUPLICATE_HOOK_ID": "Используйте другую ID или удалите опцию id, чтобы сгенерировать автоматически.",
286
+ "HINT_INVALID_HOOK_SUBSET": "Subsets управляют порядком выполнения: 'before', 'primary', 'after'.",
287
+ "HINT_INVALID_TYPE_PATTERN": "Паттерны типа должны иметь формат 'type:pattern', например 'before:math.*'.",
288
+ "HOOK_BEFORE_RETURNED_PROMISE": "Before-hook '{id}' для пути '{path}' вернул Promise. Before-hooks должны быть синхронными.",
289
+ "HINT_HOOK_BEFORE_RETURNED_PROMISE": "Before-hooks выполняются синхронно до вызова API. Уберите async/await или сделайте hook 'after'.",
290
+ "HOOK_BRACE_EXPANSION_MAX_DEPTH": "Развёртывание скобок в паттерне hook превысило максимальную глубину {maxDepth}.",
291
+ "HINT_HOOK_BRACE_EXPANSION_MAX_DEPTH": "Упростите паттерн пути, чтобы уменьшить вложенность.",
292
+ "SCOPE_DISABLED": "Per-request context isolation отключена. Установите 'scope: {}' в конфигурации Slothlet для включения.",
293
+ "HINT_SCOPE_DISABLED": "Добавьте 'scope: {}' (или объект конфигурации) для включения изоляции контекста по запросу.",
294
+ "SCOPE_INVALID_CONTEXT": "Данные контекста должны быть простым объектом. Получено: {received}.",
295
+ "HINT_SCOPE_INVALID_CONTEXT": "Передайте простой объект как первый аргумент в run(), например api.slothlet.run({ userId: 1 }, callback).",
296
+ "SCOPE_INVALID_CALLBACK": "Callback должен быть функцией. Получено: {received}.",
297
+ "HINT_SCOPE_INVALID_CALLBACK": "Передайте функцию как второй аргумент в run().",
298
+ "SCOPE_INVALID_OPTIONS": "Опции должны быть простым объектом. Получено: {received}.",
299
+ "HINT_SCOPE_INVALID_OPTIONS": "Передайте простой объект опций в scope().",
300
+ "SCOPE_INVALID_FN": "'fn' должен быть функцией. Получено: {received}.",
301
+ "HINT_SCOPE_INVALID_FN": "Установите options.fn на функцию, которую нужно выполнить в изолированном контексте.",
302
+ "SCOPE_INVALID_CONTEXT_OBJECT": "'context' должен быть простым объектом. Получено: {received}.",
303
+ "HINT_SCOPE_INVALID_CONTEXT_OBJECT": "Установите options.context на простой объект со данными по запросу.",
304
+ "SCOPE_INVALID_MERGE_STRATEGY": "Неверная стратегия объединения '{merge}'. Должна быть 'shallow' или 'deep'.",
305
+ "HINT_SCOPE_INVALID_MERGE_STRATEGY": "Используйте merge: 'shallow' (по умолчанию) или merge: 'deep' для рекурсивного объединения.",
306
+ "SCOPE_INVALID_ISOLATION_MODE": "Неверный режим изоляции '{isolationMode}'. Должен быть 'partial' или 'full'.",
307
+ "HINT_SCOPE_INVALID_ISOLATION_MODE": "Используйте isolation: 'partial' (наследует родительский контекст) или 'full' (новый контекст).",
308
+ "CHAIN_ACCESS_UNDEFINED": "Невозможно получить доступ к '{prop}' на undefined при обходе '{apiPath}.{chainLabel}'.",
309
+ "HINT_CHAIN_ACCESS_UNDEFINED": "Свойство цепочки оказалось undefined до достижения цели. Проверьте промежуточные пути.",
310
+ "CHAIN_MATERIALIZE_FAILED": "Не удалось материализовать '{prop}' при обходе '{apiPath}.{chainLabel}'.",
311
+ "HINT_CHAIN_MATERIALIZE_FAILED": "Lazy-модуль по этому пути не загрузился. Проверьте файл и экспорты.",
312
+ "CHAIN_NOT_CALLABLE": "'{apiPath}.{chainLabel}' не является вызываемым или не существует.",
313
+ "HINT_CHAIN_NOT_CALLABLE": "Убедитесь, что путь API указывает на функцию или модуль экспортирует ожидаемую функцию.",
314
+ "TYPESCRIPT_ESBUILD_NOT_INSTALLED": "Для режима TypeScript {mode} требуется 'esbuild'.",
315
+ "HINT_TYPESCRIPT_ESBUILD_NOT_INSTALLED": "Установите: npm install esbuild",
316
+ "TYPESCRIPT_TSC_NOT_INSTALLED": "Для режима TypeScript {mode} требуется 'typescript'.",
317
+ "HINT_TYPESCRIPT_TSC_NOT_INSTALLED": "Установите: npm install typescript",
318
+ "TYPESCRIPT_NOT_INSTALLED": "Генерация типов ({feature}) требует 'typescript'.",
319
+ "HINT_TYPESCRIPT_NOT_INSTALLED": "Подсказка: для генерации типов установите: npm install typescript",
320
+ "TS_STRICT_REQUIRES_OUTPUT": "Режим TS strict требует настройки 'types.output' в конфигурации.",
321
+ "HINT_TS_STRICT_REQUIRES_OUTPUT": "Добавьте 'types: { output: './types/api.d.ts', interfaceName: 'MyAPI' }'.",
322
+ "TS_STRICT_REQUIRES_INTERFACE_NAME": "TS strict требует 'types.interfaceName'.",
323
+ "HINT_TS_STRICT_REQUIRES_INTERFACE_NAME": "Добавьте 'interfaceName' в конфигурацию 'types'.",
324
+ "TS_TYPE_GENERATION_FAILED": "Ошибка генерации типов: {error}",
325
+ "HINT_TS_TYPE_GENERATION_FAILED": "Дочерний процесс генерации типов завершился с ошибкой. Проверьте вывод.",
326
+ "TS_TYPE_GENERATION_FORK_FAILED": "Не удалось форкнуть процесс генерации типов: {error}",
327
+ "HINT_TS_TYPE_GENERATION_FORK_FAILED": "Убедитесь, что Node.js может форкать процессы и существует tools/build/generate-types-worker.mjs.",
328
+ "TS_TYPE_GENERATION_PROCESS_EXITED": "Процесс генерации типов завершился с кодом {code}: {output}",
329
+ "HINT_TS_TYPE_GENERATION_PROCESS_EXITED": "Проверьте вывод дочернего процесса на ошибки компилятора.",
330
+ "TS_TYPE_CHECK_ERRORS": "Ошибки типов TypeScript в '{filePath}':\n{errors}",
331
+ "HINT_TS_TYPE_CHECK_ERRORS": "Исправьте ошибки типов в файле или установите typescript.strict в false.",
332
+ "FLATTEN_REASON_MULTI_DEFAULT_WITH_DEFAULT": "Множественный default с default export",
333
+ "FLATTEN_REASON_MULTI_DEFAULT_WITHOUT_DEFAULT": "Множественный default без default export",
334
+ "FLATTEN_REASON_ADDAPI_METADATA_DEFAULT": "Специальный AddApi-файл с метаданными по умолчанию",
335
+ "FLATTEN_REASON_ADDAPI_SPECIAL_FILE": "Специальный AddApi-файл — всегда flatten",
336
+ "FLATTEN_REASON_ADDAPI_SPECIAL_FILE_PARENT": "Специальный AddApi-файл с метаданными — flatten именованных экспортов в родителя",
337
+ "FLATTEN_REASON_SELF_REFERENTIAL": "Обнаружен self-referential экспорт",
338
+ "FLATTEN_REASON_SINGLE_EXPORT_MATCHES_FILENAME": "Единственный именованный экспорт совпадает с именем файла",
339
+ "FLATTEN_REASON_FILENAME_MATCHES_CATEGORY": "Имя файла совпадает с именем категории",
340
+ "FLATTEN_REASON_PRESERVING_FUNCTION_NAME": "Сохранение имени функции вместо имени файла",
341
+ "FLATTEN_REASON_DEFAULT_PRESERVE_NAMESPACE": "Поведение по умолчанию — сохранить namespace",
342
+ "FLATTEN_REASON_NO_CONDITIONS_MET": "Условия для flatten не выполнены",
343
+ "FLATTEN_REASON_FUNCTION_FOLDER_MATCH": "Имя функции совпадает с именем папки",
344
+ "FLATTEN_REASON_DEFAULT_OBJECT_EXPORT_FLATTEN": "Объектный экспорт по умолчанию совпадает с именем папки",
345
+ "FLATTEN_REASON_BASENAME_MATCHES_CATEGORY": "Базовое имя файла совпадает с именем категории",
346
+ "FLATTEN_REASON_GENERIC_FILENAME_SINGLE_EXPORT": "Общий имя файла с единственным экспортом",
347
+ "FLATTEN_REASON_DEFAULT_FUNCTION_EXPORT": "Экспорт функции по умолчанию",
348
+ "FLATTEN_REASON_SINGLE_EXPORT_MATCHES_MODULE": "Единственный именованный экспорт совпадает с именем модуля (финальная проверка)",
349
+ "INVALID_CONFIG_PATH_TYPE": "Путь должен быть директорией или поддерживаемым типом файла (.mjs, .cjs, .js). Получено: {path}",
350
+ "HINT_INVALID_CONFIG_PATH_TYPE": "Убедитесь, что путь указывает на директорию или модульный файл с расширением .mjs/.cjs/.js.",
351
+ "INVALID_CONFIG_FILE_TYPE": "Файл должен иметь расширение .mjs, .cjs или .js. Получено: {extension} для {path}",
352
+ "HINT_INVALID_CONFIG_FILE_TYPE": "Переименуйте файл с поддерживаемым расширением (.mjs, .cjs, .js).",
353
+ "API_PATH_REASON_ARRAY_ELEMENTS": "Элементы массива должны быть строками",
354
+ "API_PATH_REASON_ARRAY_EMPTY_SEGMENTS": "Массив содержит пустые сегменты",
355
+ "API_PATH_REASON_RESERVED_NAME": "Конфликт с зарезервированными именами (slothlet, shutdown, destroy)",
356
+ "API_PATH_REASON_INVALID_TYPE": "Должно быть строкой, массивом строк, пустой строкой (root) или null/undefined (root)",
357
+ "API_PATH_REASON_EMPTY_SEGMENTS": "Содержит пустые сегменты пути",
358
+ "API_PATH_REASON_COLLISION_ERROR": "Путь уже существует и режим столкновения 'error'",
359
+ "API_PATH_REASON_NOT_TRAVERSABLE": "Сегмент пути не существует или не может быть пройден",
360
+ "API_PATH_REASON_REQUIRED": "apiPath обязателен для операции removeApi",
361
+ "INVALID_API_PATH": "Неверный API-путь: '{apiPath}' не существует в загруженной API.",
362
+ "HINT_INVALID_API_PATH": "Убедитесь, что путь API существует перед использованием. Используйте точечную нотацию, напр. 'math.add'.",
363
+ "HOOKS_NOT_INITIALIZED": "Невозможно использовать hooks: менеджер hook не инициализирован.",
364
+ "HINT_HOOKS_NOT_INITIALIZED": "Поддержка hook требует 'hooks: true' в конфигурации Slothlet.",
365
+ "METADATA_NOT_AVAILABLE": "Метаданные недоступны: обработчик метаданных не инициализирован. Доступные обработчики: {handlersKeys}.",
366
+ "HINT_METADATA_NOT_AVAILABLE": "Поддержка метаданных встроена. Если обработчик отсутствует — это внутренняя ошибка.",
367
+ "NO_CONTEXT_MANAGER": "Для этого экземпляра Slothlet не настроен менеджер контекста.",
368
+ "HINT_NO_CONTEXT_MANAGER": "Инициализируйте Slothlet с 'contextManager: new AsyncContextManager()' или 'new LiveContextManager()'.",
369
+ "UNSUPPORTED_CONTEXT_MANAGER": "Неподдерживаемый менеджер контекста: '{manager}'. Поддерживаются AsyncContextManager и LiveContextManager.",
370
+ "HINT_UNSUPPORTED_CONTEXT_MANAGER": "Используйте AsyncContextManager для async/ALS или LiveContextManager для live-binding."
371
+ },
372
+ "metadata": {
373
+ "code": "ru-ru",
374
+ "name": "Russian (Russia)",
375
+ "nativeName": "Русский (Россия)"
376
+ }
377
+ }