@cldmv/slothlet 3.7.0 → 3.9.0

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 (61) hide show
  1. package/README.md +6 -5
  2. package/REFERENCE.md +2 -0
  3. package/dist/lib/builders/api_builder.mjs +1 -1
  4. package/dist/lib/builders/modes-processor.mjs +1 -1
  5. package/dist/lib/handlers/api-manager.mjs +1 -1
  6. package/dist/lib/handlers/module-manager.mjs +17 -0
  7. package/dist/lib/helpers/config.mjs +1 -1
  8. package/dist/lib/helpers/eventemitter-context.mjs +1 -1
  9. package/dist/lib/helpers/generate-manifest.mjs +17 -0
  10. package/dist/lib/helpers/manifest-resolver.mjs +17 -0
  11. package/dist/lib/helpers/module-discovery.mjs +17 -0
  12. package/dist/lib/helpers/module-manifest-validator.mjs +17 -0
  13. package/dist/lib/helpers/module-sort.mjs +17 -0
  14. package/dist/lib/helpers/resolve-from-caller.mjs +1 -1
  15. package/dist/lib/i18n/languages/de-de.json +76 -47
  16. package/dist/lib/i18n/languages/en-gb.json +76 -47
  17. package/dist/lib/i18n/languages/en-us.json +76 -47
  18. package/dist/lib/i18n/languages/es-es.json +76 -47
  19. package/dist/lib/i18n/languages/es-mx.json +76 -47
  20. package/dist/lib/i18n/languages/fr-fr.json +30 -1
  21. package/dist/lib/i18n/languages/hi-in.json +72 -43
  22. package/dist/lib/i18n/languages/ja-jp.json +32 -3
  23. package/dist/lib/i18n/languages/ko-kr.json +32 -3
  24. package/dist/lib/i18n/languages/pt-br.json +76 -47
  25. package/dist/lib/i18n/languages/ru-ru.json +68 -39
  26. package/dist/lib/i18n/languages/zh-cn.json +37 -8
  27. package/dist/lib/processors/loader.mjs +1 -1
  28. package/dist/lib/processors/type-generator.mjs +1 -1
  29. package/dist/lib/processors/typescript.mjs +1 -1
  30. package/dist/lib/typegen/typegen.mjs +1 -1
  31. package/dist/slothlet.mjs +1 -1
  32. package/index.cjs +4 -14
  33. package/index.mjs +2 -12
  34. package/package.json +5 -9
  35. package/schemas/slothlet.module.schema.json +98 -0
  36. package/types/dist/lib/builders/api_builder.d.mts.map +1 -1
  37. package/types/dist/lib/builders/modes-processor.d.mts.map +1 -1
  38. package/types/dist/lib/handlers/api-manager.d.mts.map +1 -1
  39. package/types/dist/lib/handlers/module-manager.d.mts +29 -0
  40. package/types/dist/lib/handlers/module-manager.d.mts.map +1 -0
  41. package/types/dist/lib/helpers/config.d.mts +7 -0
  42. package/types/dist/lib/helpers/config.d.mts.map +1 -1
  43. package/types/dist/lib/helpers/eventemitter-context.d.mts.map +1 -1
  44. package/types/dist/lib/helpers/generate-manifest.d.mts +2 -0
  45. package/types/dist/lib/helpers/generate-manifest.d.mts.map +1 -0
  46. package/types/dist/lib/helpers/manifest-resolver.d.mts +2 -0
  47. package/types/dist/lib/helpers/manifest-resolver.d.mts.map +1 -0
  48. package/types/dist/lib/helpers/module-discovery.d.mts +8 -0
  49. package/types/dist/lib/helpers/module-discovery.d.mts.map +1 -0
  50. package/types/dist/lib/helpers/module-manifest-validator.d.mts +14 -0
  51. package/types/dist/lib/helpers/module-manifest-validator.d.mts.map +1 -0
  52. package/types/dist/lib/helpers/module-sort.d.mts +2 -0
  53. package/types/dist/lib/helpers/module-sort.d.mts.map +1 -0
  54. package/types/dist/lib/helpers/resolve-from-caller.d.mts.map +1 -1
  55. package/types/dist/lib/processors/loader.d.mts.map +1 -1
  56. package/types/dist/lib/processors/type-generator.d.mts.map +1 -1
  57. package/types/dist/lib/processors/typescript.d.mts.map +1 -1
  58. package/types/dist/lib/typegen/typegen.d.mts.map +1 -1
  59. package/types/dist/slothlet.d.mts.map +1 -1
  60. package/types/index.d.mts +3 -24
  61. package/types/index.d.mts.map +1 -1
@@ -3,6 +3,9 @@
3
3
  "INVALID_CONFIG": "Invalid configuration: {option} is {value}, expected {expected}. {hint}",
4
4
  "INVALID_CONFIG_DIR_MISSING": "Configuration error: 'dir' option is required. Provide a directory path to load API from.",
5
5
  "INVALID_CONFIG_DIR_INVALID": "Configuration error: 'dir' must be a non-empty string path. Received: {dir}",
6
+ "INVALID_CONFIG_BROWSER_REQUIRES_MANIFEST": "Configuration error: 'manifest' is required when env is 'browser'. Provide a pre-generated manifest object with 'files' and 'directories' arrays.",
7
+ "INVALID_CONFIG_BROWSER_MANIFEST_INVALID": "Configuration error: 'manifest' must be a plain object with 'files' and 'directories' arrays. Received: {received}",
8
+ "INVALID_CONFIG_BROWSER_RESOLVE_SPECIFIER_INVALID": "Configuration error: 'resolveModuleSpecifier' must be a function when env is 'browser'. Received: {received}",
6
9
  "INVALID_CONFIG_MODE_INVALID": "Configuration error: 'mode' must be either 'eager' or 'lazy'. Received: {value}",
7
10
  "INVALID_CONFIG_NOT_LOADED": "Cannot perform operation '{operation}' - instance not loaded. Call load() first.",
8
11
  "INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED": "Failed to materialize lazy proxy for '{apiPath}'. Check that the module loads correctly.",
@@ -55,7 +58,10 @@
55
58
  "WARNING_LIFECYCLE_HANDLER_ERROR": "Lifecycle event handler threw an error for event '{event}'. Other handlers for this event continued executing.",
56
59
  "HINT_WARNING_LIFECYCLE_HANDLER_ERROR": "A lifecycle handler registered for the '{event}' event threw an error. Check your lifecycle.on('{event}', ...) handler for bugs. Other handlers in the same event are not affected.",
57
60
  "WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Multiple root-level default function exports detected: {rootContributors}. Each has been namespaced by filename (e.g., api.{firstContributor}()). Consider using a single root-level default export or moving files to subdirectories.",
61
+ "V3_CONFIG_DEPRECATED": "Configuration option '{option}' is deprecated and will be removed in v4. Use '{replacement}' instead.",
58
62
  "V2_CONFIG_UNSUPPORTED": "Configuration option '{option}' from v2 is not supported in v3. {hint} Use '{replacement}' instead.",
63
+ "WARN_SUPPRESS_FIX_ACTIVE": "Rule fix '{rule}' is suppressed via 'suppressFixes'. See {url} for details. This is a temporary override and will be removed in v4. The corrected '{rule}' behavior will be enforced permanently.",
64
+ "HINT_WARN_SUPPRESS_FIX_ACTIVE": "Remove '{rule}' from 'suppressFixes' and update your API directory structure to accommodate the corrected behavior before upgrading to v4.",
59
65
  "DEBUG_MODE_ROOT_CONTRIBUTOR": "[{mode}] Root contributor detected: {functionName}",
60
66
  "DEBUG_MODE_ROOT_CONTRIBUTOR_APPLIED": "[{mode}] Root contributor pattern applied - function API with {properties} additional properties",
61
67
  "DEBUG_MODE_PROCESSING_DIRECTORY": "[{mode}] Processing directory: {categoryName} (depth {currentDepth})",
@@ -64,21 +70,21 @@
64
70
  "DEBUG_MODE_ASSIGN_TO_API": "ASSIGN-TO-API",
65
71
  "DEBUG_MODE_COLLISION_CHECK": "COLLISION-CHECK",
66
72
  "DEBUG_MODE_COLLISION_DETECT": "COLLISION-DETECT",
67
- "DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "COLLISION: wrapper detection",
68
- "DEBUG_MODE_COLLISION_LAZY_DETECTION": "COLLISION: lazy detection",
69
- "DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "COLLISION: Setting collision mode on EXISTING wrapper",
70
- "DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "COLLISION: Verified existing wrapper collision mode",
71
- "DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "COLLISION: Setting collision mode on VALUE wrapper",
72
- "DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "COLLISION: Verified value wrapper collision mode",
73
- "DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "COLLISION-REPLACE-MATERIALIZE: Triggering immediate materialization",
74
- "DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "COLLISION-REPLACE: Not copying file properties - replace mode will clear everything on materialization",
75
- "DEBUG_MODE_COLLISION_REPLACE_BEFORE": "COLLISION-REPLACE: BEFORE assignment",
76
- "DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "COLLISION-ASSIGN: Replacing existing with lazy folder",
77
- "DEBUG_MODE_COLLISION_REPLACE_AFTER": "COLLISION-REPLACE: AFTER assignment",
78
- "DEBUG_MODE_COLLISION_REPLACE_VERIFY": "COLLISION-REPLACE: Verification",
79
- "DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "COLLISION-COPY: Copying existing child keys",
80
- "DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "COLLISION-COPY: Copying individual key",
81
- "DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "COLLISION-TRIGGER-MAT: Triggering early materialization (fire-and-forget)",
73
+ "DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "[COLLISION]: wrapper detection",
74
+ "DEBUG_MODE_COLLISION_LAZY_DETECTION": "[COLLISION]: lazy detection",
75
+ "DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "[COLLISION]: Setting collision mode on EXISTING wrapper",
76
+ "DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "[COLLISION]: Verified existing wrapper collision mode",
77
+ "DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "[COLLISION]: Setting collision mode on VALUE wrapper",
78
+ "DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "[COLLISION]: Verified value wrapper collision mode",
79
+ "DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "[COLLISION-REPLACE-MATERIALIZE]: Triggering immediate materialization",
80
+ "DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "[COLLISION-REPLACE]: Not copying file properties - replace mode will clear everything on materialization",
81
+ "DEBUG_MODE_COLLISION_REPLACE_BEFORE": "[COLLISION-REPLACE]: BEFORE assignment",
82
+ "DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "[COLLISION-ASSIGN]: Replacing existing with lazy folder",
83
+ "DEBUG_MODE_COLLISION_REPLACE_AFTER": "[COLLISION-REPLACE]: AFTER assignment",
84
+ "DEBUG_MODE_COLLISION_REPLACE_VERIFY": "[COLLISION-REPLACE]: Verification",
85
+ "DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "[COLLISION-COPY]: Copying existing child keys",
86
+ "DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "[COLLISION-COPY]: Copying individual key",
87
+ "DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "[COLLISION-TRIGGER-MAT]: Triggering early materialization (fire-and-forget)",
82
88
  "DEBUG_MODE_MERGE_API_OBJECTS_ENTRY": "mergeApiObjects entry",
83
89
  "DEBUG_MODE_MERGE_API_OBJECTS_SOURCE_KEYS": "mergeApiObjects sourceApi keys",
84
90
  "DEBUG_MODE_MERGE_API_OBJECTS_EXIT_INVALID_SOURCE": "mergeApiObjects exit - sourceApi not object/function",
@@ -160,64 +166,64 @@
160
166
  "DEBUG_MODE_RESTORE_ROOT_KEY_INSPECT": "RESTORE-ROOT-KEY-INSPECT",
161
167
  "DEBUG_MODE_ROOT_KEY_RESET_LAZY": "Root key reset to lazy via ___resetLazy",
162
168
  "DEBUG_MODE_ROOT_KEY_UPDATED_SETIMPL": "Root key updated via ___setImpl",
163
- "DEBUG_MODE_RESTORE_NESTED_PATH": "RESTORE: nested path",
164
- "DEBUG_MODE_RESTORE_FORCING_REPLACE": "RESTORE: forcing replace mode",
169
+ "DEBUG_MODE_RESTORE_NESTED_PATH": "[RESTORE]: nested path",
170
+ "DEBUG_MODE_RESTORE_FORCING_REPLACE": "[RESTORE]: forcing replace mode",
165
171
  "DEBUG_MODE_UPDATED_WRAPPER_IMPL": "Updated existing wrapper implementation",
166
172
  "DEBUG_MODE_CREATED_NEW_WRAPPER_UNEXPECTED": "Created new wrapper (unexpected in reload)",
167
173
  "DEBUG_MODE_LIFECYCLE_EVENT": "Event: {event}",
168
174
  "DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS": "UnifiedWrapper constructor - impl keys",
169
175
  "DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT": "UnifiedWrapper constructor - after adopt",
170
176
  "DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR": "Background materialization error",
171
- "DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "APPLY-IMPL-UPDATE-PATH: updated filePath from null",
177
+ "DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "[APPLY-IMPL-UPDATE-PATH]: updated filePath from null",
172
178
  "DEBUG_MODE_SETIMPL_CALLED": "___setImpl called",
173
179
  "DEBUG_MODE_RESETLAZY_CALLED": "___resetLazy called",
174
180
  "DEBUG_MODE_RESETLAZY_COMPLETE": "___resetLazy complete - wrapper is now un-materialized",
175
- "DEBUG_MODE_MATERIALIZE_AWAIT": "MATERIALIZE-AWAIT: awaiting existing materialization promise",
181
+ "DEBUG_MODE_MATERIALIZE_AWAIT": "[MATERIALIZE-AWAIT]: awaiting existing materialization promise",
176
182
  "DEBUG_MODE_MATERIALIZE_START": "_materialize start",
177
183
  "DEBUG_MODE_MATERIALIZE_CALLING_FUNC": "_materialize calling materializeFunc",
178
184
  "DEBUG_MODE_MATERIALIZE_COMPLETE": "_materialize complete",
179
185
  "DEBUG_MODE_MATERIALIZE_ERROR": "_materialize error",
180
186
  "DEBUG_MODE_ADOPT_START": "ADOPT-START",
181
187
  "DEBUG_MODE_ADOPT": "ADOPT",
182
- "DEBUG_MODE_ADOPT_REPLACE_CLEARING": "ADOPT: REPLACE MODE - Clearing existing properties",
188
+ "DEBUG_MODE_ADOPT_REPLACE_CLEARING": "[ADOPT]: REPLACE MODE - Clearing existing properties",
183
189
  "DEBUG_MODE_ADOPT_PROCESS": "ADOPT-PROCESS",
184
190
  "DEBUG_MODE_ADOPT_CHECK": "ADOPT-CHECK",
185
- "DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "ADOPT-SKIP: is collision-merged, keeping file version",
186
- "DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "ADOPT-SKIP: property is non-configurable (inherited)",
187
- "DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "ADOPT-SKIP: property already exists with same wrapper",
188
- "DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "ADOPT-ALLOW: is NOT collision-merged, allowing",
189
- "DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "ADOPT-REUSE: Reused existing child wrapper",
191
+ "DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "[ADOPT-SKIP]: is collision-merged, keeping file version",
192
+ "DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "[ADOPT-SKIP]: property is non-configurable (inherited)",
193
+ "DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "[ADOPT-SKIP]: property already exists with same wrapper",
194
+ "DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "[ADOPT-ALLOW]: is NOT collision-merged, allowing",
195
+ "DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "[ADOPT-REUSE]: Reused existing child wrapper",
190
196
  "DEBUG_MODE_ADOPT_WRAP": "ADOPT-WRAP",
191
- "DEBUG_MODE_ADOPT_DEFINE": "ADOPT-DEFINE: defining on wrapper",
192
- "DEBUG_MODE_ADOPT_DEFINED": "ADOPT-DEFINED: defined successfully on wrapper",
193
- "DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "WRAP-CHILD-PATH: checking for child file path",
194
- "DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "WRAP-CHILD-PATH: __childFilePaths available",
195
- "DEBUG_MODE_WRAP_CHILD_PATH_USING": "WRAP-CHILD-PATH: Using __childFilePaths",
196
- "DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "WRAP-CHILD-PATH: Using __childFilePathsPreMaterialize",
197
- "DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "WRAP-CHILD-PATH: Using fallback parentMetadata?.filePath",
197
+ "DEBUG_MODE_ADOPT_DEFINE": "[ADOPT-DEFINE]: defining on wrapper",
198
+ "DEBUG_MODE_ADOPT_DEFINED": "[ADOPT-DEFINED]: defined successfully on wrapper",
199
+ "DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "[WRAP-CHILD-PATH]: checking for child file path",
200
+ "DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "[WRAP-CHILD-PATH]: __childFilePaths available",
201
+ "DEBUG_MODE_WRAP_CHILD_PATH_USING": "[WRAP-CHILD-PATH]: Using __childFilePaths",
202
+ "DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "[WRAP-CHILD-PATH]: Using __childFilePathsPreMaterialize",
203
+ "DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "[WRAP-CHILD-PATH]: Using fallback parentMetadata?.filePath",
198
204
  "DEBUG_MODE_WAITING_TYPE": "WAITING-TYPE",
199
- "DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "WAITING-TYPE-WALK: found in wrapper",
200
- "DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "WAITING-TYPE-WALK: found in _impl",
201
- "DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "WAITING-TYPE-WALK: accessed directly",
205
+ "DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "[WAITING-TYPE-WALK]: found in wrapper",
206
+ "DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "[WAITING-TYPE-WALK]: found in _impl",
207
+ "DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "[WAITING-TYPE-WALK]: accessed directly",
202
208
  "DEBUG_MODE_WAITING_TYPE_RESOLVED": "WAITING-TYPE-RESOLVED",
203
- "DEBUG_MODE_WAITING_TYPE_INFLIGHT": "WAITING-TYPE-INFLIGHT: returning IN_FLIGHT",
204
- "DEBUG_MODE_WAITING_GET_PREMATURE": "WAITING-GET-PREMATURE: found in wrapper before materialization",
205
- "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "WAITING-GET-IMMEDIATE-MAT: triggering immediate materialization for collision-merged folder",
206
- "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "WAITING-GET-IMMEDIATE-MAT-ERROR: materialization failed",
207
- "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "WAITING-GET-IMMEDIATE-MAT-SUCCESS: now available in wrapper",
209
+ "DEBUG_MODE_WAITING_TYPE_INFLIGHT": "[WAITING-TYPE-INFLIGHT]: returning IN_FLIGHT",
210
+ "DEBUG_MODE_WAITING_GET_PREMATURE": "[WAITING-GET-PREMATURE]: found in wrapper before materialization",
211
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "[WAITING-GET-IMMEDIATE-MAT]: triggering immediate materialization for collision-merged folder",
212
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "[WAITING-GET-IMMEDIATE-MAT-ERROR]: materialization failed",
213
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "[WAITING-GET-IMMEDIATE-MAT-SUCCESS]: now available in wrapper",
208
214
  "DEBUG_MODE_WAITING_APPLY_ENTRY": "WAITING-APPLY-ENTRY",
209
- "DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "WAITING-APPLY-MATERIALIZE: Triggering materialization",
210
- "DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "WAITING-APPLY-MATERIALIZED: Materialization complete",
211
- "DEBUG_MODE_WAITING_APPLY_START_WALK": "WAITING-APPLY-START-WALK: Starting propChain walk",
215
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "[WAITING-APPLY-MATERIALIZE]: Triggering materialization",
216
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "[WAITING-APPLY-MATERIALIZED]: Materialization complete",
217
+ "DEBUG_MODE_WAITING_APPLY_START_WALK": "[WAITING-APPLY-START-WALK]: Starting propChain walk",
212
218
  "DEBUG_MODE_WAITING_APPLY_WALK": "WAITING-APPLY-WALK",
213
219
  "DEBUG_MODE_WAITING_APPLY": "WAITING-APPLY",
214
220
  "DEBUG_MODE_GET_START": "GET-START",
215
221
  "DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED": "util.inspect.custom: Lazy unmaterialized",
216
222
  "DEBUG_MODE_GET_CACHED_REPLACE": "GET-CACHED-REPLACE",
217
223
  "DEBUG_MODE_GET_CACHED": "GET-CACHED",
218
- "DEBUG_MODE_GET_PROXYGET_ACCESSING": "GET-PROXYGET: Accessing",
219
- "DEBUG_MODE_GET_PROXYGET_FOUND": "GET-PROXYGET: Found in wrapper",
220
- "DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "LAZY-GET: will create waiting proxy",
224
+ "DEBUG_MODE_GET_PROXYGET_ACCESSING": "[GET-PROXYGET]: Accessing",
225
+ "DEBUG_MODE_GET_PROXYGET_FOUND": "[GET-PROXYGET]: Found in wrapper",
226
+ "DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "[LAZY-GET]: will create waiting proxy",
221
227
  "DEBUG_MODE_BUILD_LAZY_API_CALLED": "buildLazyAPI called",
222
228
  "DEBUG_MODE_COMPONENT_INITIALIZED": "Component initialized: {component} → this.{category}.{propertyName}",
223
229
  "DEBUG_MODE_LAZY_WRAPPER_REGISTERED": "Lazy wrapper registered",
@@ -261,6 +267,7 @@
261
267
  "HINT_WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "Cannot merge primitive values (strings, numbers, booleans). To replace the value, use collision mode 'replace'. To keep the existing value, continue using 'warn' mode.",
262
268
  "HINT_WARNING_OWNERSHIP_CONFLICT": "The path is already owned by another module. To force overwrite, use forceOverwrite: true in api.add() options, or call api.slothlet.api.remove() first to clear the path.",
263
269
  "HINT_V2_CONFIG_UNSUPPORTED": "This configuration option from v2 is not supported in v3. Update your configuration to use the v3 equivalent for better control and clarity.",
270
+ "HINT_V3_CONFIG_DEPRECATED": "This configuration option has been renamed for clarity. Update your code to use the new option name to ensure forward compatibility with v4.",
264
271
  "HINT_MODULE_LOAD_FAILED": "Check the module file for errors. Ensure it has valid JavaScript syntax and exports.",
265
272
  "HINT_MODULE_IMPORT_FAILED": "Ensure the module file exists and can be imported. Check for syntax errors or missing dependencies.",
266
273
  "HINT_MODULE_NO_EXPORTS": "The module must export at least one function or object.",
@@ -405,7 +412,29 @@
405
412
  "PERM_RULE_CONDITION_INVALID": "rule.condition must be a plain object, a function, or an array where each entry is a plain object or function",
406
413
  "BRACE_EXPANSION_MAX_DEPTH": "Brace expansion exceeded maximum depth of {maxDepth}",
407
414
  "HINT_BRACE_EXPANSION_MAX_DEPTH": "Reduce nesting in your brace patterns or increase the maxDepth option.",
408
- "PERMISSION_MANAGER_NOT_AVAILABLE": "Permission manager is not available in this Slothlet instance"
415
+ "PERMISSION_MANAGER_NOT_AVAILABLE": "Permission manager is not available in this Slothlet instance",
416
+ "MODULE_MANIFEST_NOT_FOUND": "Module manifest not found for package '{packageName}': expected '{manifestPath}' but the file does not exist.",
417
+ "HINT_MODULE_MANIFEST_NOT_FOUND": "Plugin modules must ship a 'slothlet.module.json' at the package root (or the file/key specified via the `manifest` override). Check that the file exists in the package and that the override locator is correct.",
418
+ "MODULE_MANIFEST_INVALID": "Module manifest is invalid for package '{packageName}' at '{manifestPath}': {reason}.",
419
+ "HINT_MODULE_MANIFEST_INVALID": "Open the manifest and ensure it is valid JSON and matches the slothlet module schema (see schemas/slothlet.module.schema.json). Required fields: schemaVersion, mountPath, apiDir.",
420
+ "MODULE_MANIFEST_UNKNOWN_FIELD": "Module manifest for package '{packageName}' contains unrecognized top-level field '{field}'. Unknown fields are rejected; use the dedicated 'metadata' block for developer-defined extras.",
421
+ "HINT_MODULE_MANIFEST_UNKNOWN_FIELD": "If '{field}' is a typo, fix it. If it is intentional developer metadata, move it inside the 'metadata' object.",
422
+ "MODULE_MANIFEST_NAME_MISMATCH": "Module manifest for package '{packageName}' declares name '{manifestName}' which does not match package.json name '{packageName}'.",
423
+ "HINT_MODULE_MANIFEST_NAME_MISMATCH": "The 'name' field in slothlet.module.json is optional but must match package.json when present. Either remove the manifest 'name' field or align it with package.json.",
424
+ "MODULE_MANIFEST_VERSION_MISMATCH": "Module manifest for package '{packageName}' declares version '{manifestVersion}' which does not match package.json version '{packageVersion}'.",
425
+ "HINT_MODULE_MANIFEST_VERSION_MISMATCH": "The 'version' field in slothlet.module.json is optional but must match package.json when present. Either remove the manifest 'version' field or align it with package.json.",
426
+ "MODULE_PATH_TRAVERSAL": "Module package '{packageName}' has apiDir '{apiDir}' that resolves outside the package root ('{resolvedPath}' is not under '{packageRoot}').",
427
+ "HINT_MODULE_PATH_TRAVERSAL": "apiDir must be a relative path that stays inside the package. Remove '..' segments and absolute paths.",
428
+ "MODULE_VERSION_UNSUPPORTED": "Module manifest for package '{packageName}' uses unsupported schemaVersion '{schemaVersion}'. Supported: 1.",
429
+ "HINT_MODULE_VERSION_UNSUPPORTED": "Upgrade slothlet to a version that supports schemaVersion {schemaVersion}, or update the manifest to use schemaVersion 1.",
430
+ "MODULE_PACKAGE_NOT_FOUND": "Module package '{packageName}' was not found in the discovery cache. {hint}",
431
+ "HINT_MODULE_PACKAGE_NOT_FOUND": "Either the package is not installed, the scanRoot does not cover its location, or no discover() call has been made yet. addModule(name) will lazily run discover() with scanRoot=process.cwd() if the cache is empty.",
432
+ "MODULE_RESERVED_MOUNTPATH": "Module package '{packageName}' declares reserved mountPath root '{mountPathRoot}' (from mountPath '{mountPath}'). Reserved roots: slothlet, shutdown, destroy.",
433
+ "HINT_MODULE_RESERVED_MOUNTPATH": "Reserved mountPath roots are used by slothlet's built-in surface and cannot be claimed by modules. Choose a different root segment.",
434
+ "MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "Module package '{packageName}' version '{version}' was found at multiple distinct real paths: {paths}.",
435
+ "HINT_MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "This is almost certainly a misconfiguration — the same package at the same version installed in two unrelated locations. Investigate which install is intended and remove the other.",
436
+ "MODULE_MOUNT_COLLISION": "Module package '{packageName}' cannot mount at '{mountPath}': path is already occupied by module '{existingModuleID}' and collisionMode is '{collisionMode}'.",
437
+ "HINT_MODULE_MOUNT_COLLISION": "Either change the manifest's mountPath, pass `collisionMode: \"merge\"` to `addModule()` / `addModules()` to allow coexistence, or call `removeModule()` on the existing module first."
409
438
  },
410
439
  "metadata": {
411
440
  "code": "en-us",
@@ -2,6 +2,9 @@
2
2
  "translations": {
3
3
  "INVALID_CONFIG": "Error de configuración: {option} es {value}, se esperaba {expected}. {hint}",
4
4
  "INVALID_CONFIG_DIR_MISSING": "Error de configuración: debe proporcionarse la opción 'dir'. Indica la ruta al directorio que carga la API.",
5
+ "INVALID_CONFIG_BROWSER_REQUIRES_MANIFEST": "Error de configuración: 'manifest' es obligatorio cuando env es 'browser'. Proporcione un objeto manifest pregenerado con los arrays 'files' y 'directories'.",
6
+ "INVALID_CONFIG_BROWSER_MANIFEST_INVALID": "Error de configuración: 'manifest' debe ser un objeto simple con los arrays 'files' y 'directories'. Recibido: {received}",
7
+ "INVALID_CONFIG_BROWSER_RESOLVE_SPECIFIER_INVALID": "Error de configuración: 'resolveModuleSpecifier' debe ser una función cuando env es 'browser'. Recibido: {received}",
5
8
  "INVALID_CONFIG_DIR_INVALID": "Error de configuración: 'dir' debe ser una ruta de cadena no vacía. Recibido: {dir}",
6
9
  "INVALID_CONFIG_MODE_INVALID": "Error de configuración: 'mode' debe ser 'eager' o 'lazy'. Recibido: {value}",
7
10
  "INVALID_CONFIG_NOT_LOADED": "No se puede realizar la operación '{operation}': la instancia no se ha cargado. Llama a load() primero.",
@@ -55,6 +58,9 @@
55
58
  "WARNING_LIFECYCLE_HANDLER_ERROR": "El manejador de eventos del ciclo de vida lanzó un error para el evento '{event}'. Otros manejadores para este evento continuaron ejecutándose.",
56
59
  "HINT_WARNING_LIFECYCLE_HANDLER_ERROR": "Un manejador de ciclo de vida registrado para el evento '{event}' lanzó un error. Comprueba si hay bugs en tu manejador lifecycle.on('{event}', ...). Otros manejadores en el mismo evento no se ven afectados.",
57
60
  "WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Se detectaron múltiples exportaciones de funciones por defecto a nivel de raíz: {rootContributors}. Cada una ha sido organizada por nombre de fichero (ej., api.{firstContributor}()). Considera usar una única exportación por defecto a nivel de raíz o mover los ficheros a subdirectorios.",
61
+ "WARN_SUPPRESS_FIX_ACTIVE": "La corrección de regla '{rule}' está suprimida mediante 'suppressFixes'. Consulta {url} para más detalles. Esta es una anulación temporal que se eliminará en v4. El comportamiento corregido de '{rule}' se aplicará de forma permanente.",
62
+ "HINT_WARN_SUPPRESS_FIX_ACTIVE": "Elimina '{rule}' de 'suppressFixes' y actualiza la estructura de directorios de tu API para adaptarte al comportamiento corregido antes de actualizar a v4.",
63
+ "V3_CONFIG_DEPRECATED": "La opción de configuración '{option}' está obsoleta y se eliminará en v4. Usa '{replacement}' en su lugar.",
58
64
  "V2_CONFIG_UNSUPPORTED": "La opción de configuración '{option}' de v2 no está soportada en v3. {hint} Usa '{replacement}' en su lugar.",
59
65
  "DEBUG_MODE_ROOT_CONTRIBUTOR": "[{mode}] Contribuidor raíz detectado: {functionName}",
60
66
  "DEBUG_MODE_ROOT_CONTRIBUTOR_APPLIED": "[{mode}] Patrón de contribuidor raíz aplicado: API de función con {properties} propiedades adicionales",
@@ -64,21 +70,21 @@
64
70
  "DEBUG_MODE_ASSIGN_TO_API": "ASIGNAR-A-API",
65
71
  "DEBUG_MODE_COLLISION_CHECK": "COMPROBACIÓN-DE-COLISIÓN",
66
72
  "DEBUG_MODE_COLLISION_DETECT": "DETECCIÓN-DE-COLISIÓN",
67
- "DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "COLISIÓN: detección de envoltorio",
68
- "DEBUG_MODE_COLLISION_LAZY_DETECTION": "COLISIÓN: detección diferida",
69
- "DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "COLISIÓN: Estableciendo modo de colisión en envoltorio EXISTENTE",
70
- "DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "COLISIÓN: Modo de colisión de envoltorio existente verificado",
71
- "DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "COLISIÓN: Estableciendo modo de colisión en envoltorio de VALOR",
72
- "DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "COLISIÓN: Modo de colisión de envoltorio de valor verificado",
73
- "DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "COLISIÓN-REEMPLAZAR-MATERIALIZAR: Activando materialización inmediata",
74
- "DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "COLISIÓN-REEMPLAZAR: No se copian las propiedades del fichero - el modo reemplazar borrará todo al materializarse",
75
- "DEBUG_MODE_COLLISION_REPLACE_BEFORE": "COLISIÓN-REEMPLAZAR: ANTES de la asignación",
76
- "DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "COLISIÓN-ASIGNAR: Reemplazando lo existente con carpeta diferida",
77
- "DEBUG_MODE_COLLISION_REPLACE_AFTER": "COLISIÓN-REEMPLAZAR: DESPUÉS de la asignación",
78
- "DEBUG_MODE_COLLISION_REPLACE_VERIFY": "COLISIÓN-REEMPLAZAR: Verificación",
79
- "DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "COLISIÓN-COPIAR: Copiando claves hijas existentes",
80
- "DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "COLISIÓN-COPIAR: Copiando clave individual",
81
- "DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "COLISIÓN-ACTIVAR-MAT: Activando materialización temprana (fire-and-forget)",
73
+ "DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "[COLISIÓN]: detección de envoltorio",
74
+ "DEBUG_MODE_COLLISION_LAZY_DETECTION": "[COLISIÓN]: detección diferida",
75
+ "DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "[COLISIÓN]: Estableciendo modo de colisión en envoltorio EXISTENTE",
76
+ "DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "[COLISIÓN]: Modo de colisión de envoltorio existente verificado",
77
+ "DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "[COLISIÓN]: Estableciendo modo de colisión en envoltorio de VALOR",
78
+ "DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "[COLISIÓN]: Modo de colisión de envoltorio de valor verificado",
79
+ "DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "[COLISIÓN-REEMPLAZAR-MATERIALIZAR]: Activando materialización inmediata",
80
+ "DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "[COLISIÓN-REEMPLAZAR]: No se copian las propiedades del fichero - el modo reemplazar borrará todo al materializarse",
81
+ "DEBUG_MODE_COLLISION_REPLACE_BEFORE": "[COLISIÓN-REEMPLAZAR]: ANTES de la asignación",
82
+ "DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "[COLISIÓN-ASIGNAR]: Reemplazando lo existente con carpeta diferida",
83
+ "DEBUG_MODE_COLLISION_REPLACE_AFTER": "[COLISIÓN-REEMPLAZAR]: DESPUÉS de la asignación",
84
+ "DEBUG_MODE_COLLISION_REPLACE_VERIFY": "[COLISIÓN-REEMPLAZAR]: Verificación",
85
+ "DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "[COLISIÓN-COPIAR]: Copiando claves hijas existentes",
86
+ "DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "[COLISIÓN-COPIAR]: Copiando clave individual",
87
+ "DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "[COLISIÓN-ACTIVAR-MAT]: Activando materialización temprana (fire-and-forget)",
82
88
  "DEBUG_MODE_MERGE_API_OBJECTS_ENTRY": "entrada mergeApiObjects",
83
89
  "DEBUG_MODE_MERGE_API_OBJECTS_SOURCE_KEYS": "claves sourceApi de mergeApiObjects",
84
90
  "DEBUG_MODE_MERGE_API_OBJECTS_EXIT_INVALID_SOURCE": "salida mergeApiObjects - sourceApi no es objeto/función",
@@ -160,64 +166,64 @@
160
166
  "DEBUG_MODE_RESTORE_ROOT_KEY_INSPECT": "INSPECCIÓN-DE-CLAVE-RAÍZ-DE-RESTAURACIÓN",
161
167
  "DEBUG_MODE_ROOT_KEY_RESET_LAZY": "Clave raíz reseteada a diferida mediante ___resetLazy",
162
168
  "DEBUG_MODE_ROOT_KEY_UPDATED_SETIMPL": "Clave raíz actualizada mediante ___setImpl",
163
- "DEBUG_MODE_RESTORE_NESTED_PATH": "RESTAURACIÓN: ruta anidada",
164
- "DEBUG_MODE_RESTORE_FORCING_REPLACE": "RESTAURACIÓN: forzando modo reemplazar",
169
+ "DEBUG_MODE_RESTORE_NESTED_PATH": "[RESTAURACIÓN]: ruta anidada",
170
+ "DEBUG_MODE_RESTORE_FORCING_REPLACE": "[RESTAURACIÓN]: forzando modo reemplazar",
165
171
  "DEBUG_MODE_UPDATED_WRAPPER_IMPL": "Implementación del envoltorio existente actualizada",
166
172
  "DEBUG_MODE_CREATED_NEW_WRAPPER_UNEXPECTED": "Se creó un nuevo envoltorio (inesperado durante la recarga)",
167
173
  "DEBUG_MODE_LIFECYCLE_EVENT": "Evento: {event}",
168
174
  "DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS": "Constructor de UnifiedWrapper - claves impl",
169
175
  "DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT": "Constructor de UnifiedWrapper - después de adoptar",
170
176
  "DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR": "Error de materialización en segundo plano",
171
- "DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "APPLY-IMPL-UPDATE-PATH: filePath actualizado desde null",
177
+ "DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "[APPLY-IMPL-UPDATE-PATH]: filePath actualizado desde null",
172
178
  "DEBUG_MODE_SETIMPL_CALLED": "___setImpl llamado",
173
179
  "DEBUG_MODE_RESETLAZY_CALLED": "___resetLazy llamado",
174
180
  "DEBUG_MODE_RESETLAZY_COMPLETE": "___resetLazy completo - el envoltorio ahora no está materializado",
175
- "DEBUG_MODE_MATERIALIZE_AWAIT": "MATERIALIZE-AWAIT: esperando promesa de materialización existente",
181
+ "DEBUG_MODE_MATERIALIZE_AWAIT": "[MATERIALIZE-AWAIT]: esperando promesa de materialización existente",
176
182
  "DEBUG_MODE_MATERIALIZE_START": "inicio de _materialize",
177
183
  "DEBUG_MODE_MATERIALIZE_CALLING_FUNC": "_materialize llamando a materializeFunc",
178
184
  "DEBUG_MODE_MATERIALIZE_COMPLETE": "_materialize completo",
179
185
  "DEBUG_MODE_MATERIALIZE_ERROR": "error en _materialize",
180
186
  "DEBUG_MODE_ADOPT_START": "INICIO-ADOPTAR",
181
187
  "DEBUG_MODE_ADOPT": "ADOPCIÓN",
182
- "DEBUG_MODE_ADOPT_REPLACE_CLEARING": "ADOPTAR: MODO REEMPLAZAR - Borrando propiedades existentes",
188
+ "DEBUG_MODE_ADOPT_REPLACE_CLEARING": "[ADOPTAR]: MODO REEMPLAZAR - Borrando propiedades existentes",
183
189
  "DEBUG_MODE_ADOPT_PROCESS": "PROCESO-DE-ADOPCIÓN",
184
190
  "DEBUG_MODE_ADOPT_CHECK": "VERIFICACIÓN-DE-ADOPCIÓN",
185
- "DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "ADOPT-SKIP: es una colisión fusionada, manteniendo versión del fichero",
186
- "DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "ADOPT-SKIP: la propiedad no es configurable (heredada)",
187
- "DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "ADOPT-SKIP: la propiedad ya existe con el mismo envoltorio",
188
- "DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "ADOPT-ALLOW: NO es una colisión fusionada, permitiendo",
189
- "DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "ADOPT-REUSE: Reutilizado envoltorio hijo existente",
191
+ "DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "[ADOPT-SKIP]: es una colisión fusionada, manteniendo versión del fichero",
192
+ "DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "[ADOPT-SKIP]: la propiedad no es configurable (heredada)",
193
+ "DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "[ADOPT-SKIP]: la propiedad ya existe con el mismo envoltorio",
194
+ "DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "[ADOPT-ALLOW]: NO es una colisión fusionada, permitiendo",
195
+ "DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "[ADOPT-REUSE]: Reutilizado envoltorio hijo existente",
190
196
  "DEBUG_MODE_ADOPT_WRAP": "ADOPTAR-ENVOLVER",
191
- "DEBUG_MODE_ADOPT_DEFINE": "ADOPT-DEFINE: definiendo en el envoltorio",
192
- "DEBUG_MODE_ADOPT_DEFINED": "ADOPT-DEFINED: definido con éxito en el envoltorio",
193
- "DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "WRAP-CHILD-PATH: comprobando ruta de fichero hijo",
194
- "DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "WRAP-CHILD-PATH: __childFilePaths disponible",
195
- "DEBUG_MODE_WRAP_CHILD_PATH_USING": "WRAP-CHILD-PATH: Usando __childFilePaths",
196
- "DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "WRAP-CHILD-PATH: Usando __childFilePathsPreMaterialize",
197
- "DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "WRAP-CHILD-PATH: Usando fallback parentMetadata?.filePath",
197
+ "DEBUG_MODE_ADOPT_DEFINE": "[ADOPT-DEFINE]: definiendo en el envoltorio",
198
+ "DEBUG_MODE_ADOPT_DEFINED": "[ADOPT-DEFINED]: definido con éxito en el envoltorio",
199
+ "DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "[WRAP-CHILD-PATH]: comprobando ruta de fichero hijo",
200
+ "DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "[WRAP-CHILD-PATH]: __childFilePaths disponible",
201
+ "DEBUG_MODE_WRAP_CHILD_PATH_USING": "[WRAP-CHILD-PATH]: Usando __childFilePaths",
202
+ "DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "[WRAP-CHILD-PATH]: Usando __childFilePathsPreMaterialize",
203
+ "DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "[WRAP-CHILD-PATH]: Usando fallback parentMetadata?.filePath",
198
204
  "DEBUG_MODE_WAITING_TYPE": "ESPERANDO-TIPO",
199
- "DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "WAITING-TYPE-WALK: encontrado en el envoltorio",
200
- "DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "WAITING-TYPE-WALK: encontrado en _impl",
201
- "DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "WAITING-TYPE-WALK: accedido directamente",
205
+ "DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "[WAITING-TYPE-WALK]: encontrado en el envoltorio",
206
+ "DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "[WAITING-TYPE-WALK]: encontrado en _impl",
207
+ "DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "[WAITING-TYPE-WALK]: accedido directamente",
202
208
  "DEBUG_MODE_WAITING_TYPE_RESOLVED": "ESPERANDO-TIPO-RESUELTO",
203
- "DEBUG_MODE_WAITING_TYPE_INFLIGHT": "WAITING-TYPE-INFLIGHT: devolviendo IN_FLIGHT",
204
- "DEBUG_MODE_WAITING_GET_PREMATURE": "WAITING-GET-PREMATURE: encontrado en el envoltorio antes de la materialización",
205
- "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "WAITING-GET-IMMEDIATE-MAT: activando materialización inmediata para carpeta con colisión fusionada",
206
- "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "WAITING-GET-IMMEDIATE-MAT-ERROR: materialización fallida",
207
- "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "WAITING-GET-IMMEDIATE-MAT-SUCCESS: ahora disponible en el envoltorio",
209
+ "DEBUG_MODE_WAITING_TYPE_INFLIGHT": "[WAITING-TYPE-INFLIGHT]: devolviendo IN_FLIGHT",
210
+ "DEBUG_MODE_WAITING_GET_PREMATURE": "[WAITING-GET-PREMATURE]: encontrado en el envoltorio antes de la materialización",
211
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "[WAITING-GET-IMMEDIATE-MAT]: activando materialización inmediata para carpeta con colisión fusionada",
212
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "[WAITING-GET-IMMEDIATE-MAT-ERROR]: materialización fallida",
213
+ "DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "[WAITING-GET-IMMEDIATE-MAT-SUCCESS]: ahora disponible en el envoltorio",
208
214
  "DEBUG_MODE_WAITING_APPLY_ENTRY": "ESPERANDO-ENTRADA-APLICAR",
209
- "DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "WAITING-APPLY-MATERIALIZE: Activando materialización",
210
- "DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "WAITING-APPLY-MATERIALIZED: Materialización completa",
211
- "DEBUG_MODE_WAITING_APPLY_START_WALK": "WAITING-APPLY-START-WALK: Iniciando recorrido propChain",
215
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "[WAITING-APPLY-MATERIALIZE]: Activando materialización",
216
+ "DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "[WAITING-APPLY-MATERIALIZED]: Materialización completa",
217
+ "DEBUG_MODE_WAITING_APPLY_START_WALK": "[WAITING-APPLY-START-WALK]: Iniciando recorrido propChain",
212
218
  "DEBUG_MODE_WAITING_APPLY_WALK": "ESPERANDO-RECORRIDO-APLICAR",
213
219
  "DEBUG_MODE_WAITING_APPLY": "ESPERANDO-APLICAR",
214
220
  "DEBUG_MODE_GET_START": "INICIO-OBTENER",
215
221
  "DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED": "util.inspect.custom: No materializado (lazy)",
216
222
  "DEBUG_MODE_GET_CACHED_REPLACE": "OBTENER-CACHE-REEMPLAZAR",
217
223
  "DEBUG_MODE_GET_CACHED": "OBTENER-EN-CACHE",
218
- "DEBUG_MODE_GET_PROXYGET_ACCESSING": "GET-PROXYGET: Accediendo",
219
- "DEBUG_MODE_GET_PROXYGET_FOUND": "GET-PROXYGET: Encontrado en envoltorio",
220
- "DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "LAZY-GET: se creará un proxy de espera",
224
+ "DEBUG_MODE_GET_PROXYGET_ACCESSING": "[GET-PROXYGET]: Accediendo",
225
+ "DEBUG_MODE_GET_PROXYGET_FOUND": "[GET-PROXYGET]: Encontrado en envoltorio",
226
+ "DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "[LAZY-GET]: se creará un proxy de espera",
221
227
  "DEBUG_MODE_BUILD_LAZY_API_CALLED": "buildLazyAPI llamado",
222
228
  "DEBUG_MODE_COMPONENT_INITIALIZED": "Componente inicializado: {component} → this.{category}.{propertyName}",
223
229
  "DEBUG_MODE_LAZY_WRAPPER_REGISTERED": "Envoltorio diferido registrado",
@@ -261,6 +267,7 @@
261
267
  "HINT_WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "No se pueden fusionar valores primitivos (cadenas, números, booleanos). Para reemplazar el valor, usa el modo de colisión 'replace'. Para mantener el valor existente, continúa usando el modo 'warn'.",
262
268
  "HINT_WARNING_OWNERSHIP_CONFLICT": "La ruta ya pertenece a otro módulo. Para forzar la sobrescritura, usa forceOverwrite: true en las opciones de api.add(), o llama a api.slothlet.api.remove() primero para limpiar la ruta.",
263
269
  "HINT_V2_CONFIG_UNSUPPORTED": "Esta opción de configuración de v2 no está soportada en v3. Actualiza tu configuración para usar el equivalente de v3 para un mejor control y claridad.",
270
+ "HINT_V3_CONFIG_DEPRECATED": "Esta opción de configuración ha sido renombrada para mayor claridad. Actualiza tu código para usar el nuevo nombre de opción y garantizar la compatibilidad futura con v4.",
264
271
  "HINT_MODULE_LOAD_FAILED": "Comprueba el fichero del módulo en busca de errores. Asegúrate de que tiene una sintaxis de JavaScript válida y exportaciones.",
265
272
  "HINT_MODULE_IMPORT_FAILED": "Asegúrate de que el fichero del módulo existe y puede ser importado. Comprueba si hay errores de sintaxis o dependencias faltantes.",
266
273
  "HINT_MODULE_NO_EXPORTS": "El módulo debe exportar al menos una función u objeto.",
@@ -405,7 +412,29 @@
405
412
  "PERM_RULE_CONDITION_INVALID": "rule.condition debe ser un objeto plano, una función o un arreglo donde cada entrada sea un objeto plano o una función",
406
413
  "BRACE_EXPANSION_MAX_DEPTH": "La expansión de llaves superó la profundidad máxima de {maxDepth}",
407
414
  "HINT_BRACE_EXPANSION_MAX_DEPTH": "Reduce el anidamiento en tus patrones de llaves o aumenta la opción maxDepth.",
408
- "PERMISSION_MANAGER_NOT_AVAILABLE": "El administrador de permisos no está disponible en esta instancia de Slothlet"
415
+ "PERMISSION_MANAGER_NOT_AVAILABLE": "El administrador de permisos no está disponible en esta instancia de Slothlet",
416
+ "MODULE_MANIFEST_NOT_FOUND": "Manifiesto de módulo no encontrado para el paquete '{packageName}': se esperaba '{manifestPath}' pero el archivo no existe.",
417
+ "HINT_MODULE_MANIFEST_NOT_FOUND": "Los módulos plugin deben incluir un 'slothlet.module.json' en la raíz del paquete (o el archivo/clave especificado mediante la sobrescritura `manifest`). Verifique que el archivo exista en el paquete y que el localizador de sobrescritura sea correcto.",
418
+ "MODULE_MANIFEST_INVALID": "El manifiesto del módulo no es válido para el paquete '{packageName}' en '{manifestPath}': {reason}.",
419
+ "HINT_MODULE_MANIFEST_INVALID": "Abra el manifiesto y asegúrese de que sea JSON válido y coincida con el esquema del módulo slothlet (consulte schemas/slothlet.module.schema.json). Campos requeridos: schemaVersion, mountPath, apiDir.",
420
+ "MODULE_MANIFEST_UNKNOWN_FIELD": "El manifiesto del módulo para el paquete '{packageName}' contiene un campo de nivel superior no reconocido '{field}'. Los campos desconocidos son rechazados; use el bloque 'metadata' dedicado para extras definidos por el desarrollador.",
421
+ "HINT_MODULE_MANIFEST_UNKNOWN_FIELD": "Si '{field}' es un error tipográfico, corríjalo. Si son metadatos intencionales del desarrollador, muévalos dentro del objeto 'metadata'.",
422
+ "MODULE_MANIFEST_NAME_MISMATCH": "El manifiesto del módulo para el paquete '{packageName}' declara el nombre '{manifestName}' que no coincide con el nombre en package.json '{packageName}'.",
423
+ "HINT_MODULE_MANIFEST_NAME_MISMATCH": "El campo 'name' en slothlet.module.json es opcional pero debe coincidir con package.json cuando está presente. Elimine el campo 'name' del manifiesto o alinéelo con package.json.",
424
+ "MODULE_MANIFEST_VERSION_MISMATCH": "El manifiesto del módulo para el paquete '{packageName}' declara la versión '{manifestVersion}' que no coincide con la versión en package.json '{packageVersion}'.",
425
+ "HINT_MODULE_MANIFEST_VERSION_MISMATCH": "El campo 'version' en slothlet.module.json es opcional pero debe coincidir con package.json cuando está presente. Elimine el campo 'version' del manifiesto o alinéelo con package.json.",
426
+ "MODULE_PATH_TRAVERSAL": "El paquete de módulo '{packageName}' tiene apiDir '{apiDir}' que se resuelve fuera de la raíz del paquete ('{resolvedPath}' no está bajo '{packageRoot}').",
427
+ "HINT_MODULE_PATH_TRAVERSAL": "apiDir debe ser una ruta relativa que permanezca dentro del paquete. Elimine los segmentos '..' y rutas absolutas.",
428
+ "MODULE_VERSION_UNSUPPORTED": "El manifiesto del módulo para el paquete '{packageName}' utiliza una schemaVersion no compatible '{schemaVersion}'. Compatibles: 1.",
429
+ "HINT_MODULE_VERSION_UNSUPPORTED": "Actualice slothlet a una versión que sea compatible con schemaVersion {schemaVersion}, o actualice el manifiesto para usar schemaVersion 1.",
430
+ "MODULE_PACKAGE_NOT_FOUND": "Paquete de módulo '{packageName}' no encontrado en la caché de descubrimiento. {hint}",
431
+ "HINT_MODULE_PACKAGE_NOT_FOUND": "El paquete no está instalado, scanRoot no cubre su ubicación, o aún no se ha realizado una llamada a discover(). addModule(name) ejecutará discover() de forma diferida con scanRoot=process.cwd() si la caché está vacía.",
432
+ "MODULE_RESERVED_MOUNTPATH": "El paquete de módulo '{packageName}' declara la raíz reservada de mountPath '{mountPathRoot}' (de mountPath '{mountPath}'). Raíces reservadas: slothlet, shutdown, destroy.",
433
+ "HINT_MODULE_RESERVED_MOUNTPATH": "Las raíces reservadas de mountPath son utilizadas por la superficie integrada de slothlet y no pueden ser reclamadas por módulos. Elija un segmento raíz diferente.",
434
+ "MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "El paquete de módulo '{packageName}' versión '{version}' se encontró en múltiples rutas reales distintas: {paths}.",
435
+ "HINT_MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "Esto es casi con certeza una configuración incorrecta — el mismo paquete en la misma versión instalado en dos ubicaciones no relacionadas. Investigue cuál instalación es la deseada y elimine la otra.",
436
+ "MODULE_MOUNT_COLLISION": "El paquete de módulo '{packageName}' no se puede montar en '{mountPath}': la ruta ya está ocupada por el módulo '{existingModuleID}' y collisionMode es '{collisionMode}'.",
437
+ "HINT_MODULE_MOUNT_COLLISION": "Cambie el mountPath del manifiesto, pase `collisionMode: \"merge\"` a `addModule()` / `addModules()` para permitir la coexistencia, o llame primero a `removeModule()` en el módulo existente."
409
438
  },
410
439
  "metadata": {
411
440
  "code": "es-es",