@cldmv/slothlet 3.10.0 → 3.11.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.
- package/README.md +10 -10
- package/dist/lib/builders/builder.mjs +1 -1
- package/dist/lib/builders/modes-processor.mjs +1 -1
- package/dist/lib/handlers/api-cache-manager.mjs +1 -1
- package/dist/lib/handlers/api-manager.mjs +1 -1
- package/dist/lib/handlers/unified-wrapper.mjs +1 -1
- package/dist/lib/helpers/generate-manifest.mjs +1 -1
- package/dist/lib/helpers/platform.mjs +1 -1
- package/dist/lib/i18n/languages/en-us.json +2 -0
- package/dist/lib/i18n/translations.mjs +1 -1
- package/dist/lib/modes/eager.mjs +1 -1
- package/dist/lib/modes/lazy.mjs +1 -1
- package/dist/lib/processors/loader.mjs +1 -1
- package/dist/slothlet.mjs +1 -1
- package/package.json +58 -31
- package/types/stub/devcheck.d.mts +3 -0
- package/types/stub/index.d.mts +4 -0
- package/types/stub/lib/builders/api-assignment.d.mts +3 -0
- package/types/stub/lib/builders/api_builder.d.mts +3 -0
- package/types/stub/lib/builders/builder.d.mts +3 -0
- package/types/stub/lib/builders/modes-processor.d.mts +3 -0
- package/types/stub/lib/errors.d.mts +3 -0
- package/types/stub/lib/factories/component-base.d.mts +3 -0
- package/types/stub/lib/factories/context.d.mts +3 -0
- package/types/stub/lib/handlers/api-cache-manager.d.mts +3 -0
- package/types/stub/lib/handlers/api-manager.d.mts +3 -0
- package/types/stub/lib/handlers/context-async.d.mts +3 -0
- package/types/stub/lib/handlers/context-live.d.mts +3 -0
- package/types/stub/lib/handlers/hook-manager.d.mts +3 -0
- package/types/stub/lib/handlers/lifecycle-token.d.mts +3 -0
- package/types/stub/lib/handlers/lifecycle.d.mts +3 -0
- package/types/stub/lib/handlers/materialize-manager.d.mts +3 -0
- package/types/stub/lib/handlers/metadata.d.mts +3 -0
- package/types/stub/lib/handlers/module-manager.d.mts +3 -0
- package/types/stub/lib/handlers/ownership.d.mts +3 -0
- package/types/stub/lib/handlers/permission-manager.d.mts +3 -0
- package/types/stub/lib/handlers/unified-wrapper.d.mts +3 -0
- package/types/stub/lib/handlers/version-manager.d.mts +3 -0
- package/types/stub/lib/helpers/class-instance-wrapper.d.mts +3 -0
- package/types/stub/lib/helpers/config.d.mts +3 -0
- package/types/stub/lib/helpers/eventemitter-context.d.mts +3 -0
- package/types/stub/lib/helpers/generate-manifest.d.mts +3 -0
- package/types/stub/lib/helpers/hint-detector.d.mts +3 -0
- package/types/stub/lib/helpers/manifest-resolver.d.mts +3 -0
- package/types/stub/lib/helpers/modes-utils.d.mts +3 -0
- package/types/stub/lib/helpers/module-discovery.d.mts +3 -0
- package/types/stub/lib/helpers/module-manifest-validator.d.mts +3 -0
- package/types/stub/lib/helpers/module-sort.d.mts +3 -0
- package/types/stub/lib/helpers/pattern-matcher.d.mts +3 -0
- package/types/stub/lib/helpers/platform.d.mts +3 -0
- package/types/stub/lib/helpers/resolve-from-caller.d.mts +3 -0
- package/types/stub/lib/helpers/sanitize.d.mts +3 -0
- package/types/stub/lib/helpers/utilities.d.mts +3 -0
- package/types/stub/lib/i18n/translations.d.mts +3 -0
- package/types/stub/lib/modes/eager.d.mts +3 -0
- package/types/stub/lib/modes/lazy.d.mts +3 -0
- package/types/stub/lib/processors/flatten.d.mts +3 -0
- package/types/stub/lib/processors/loader.d.mts +3 -0
- package/types/stub/lib/processors/type-generator.d.mts +3 -0
- package/types/stub/lib/processors/typescript.d.mts +3 -0
- package/types/stub/lib/runtime/runtime-asynclocalstorage.d.mts +3 -0
- package/types/stub/lib/runtime/runtime-livebindings.d.mts +3 -0
- package/types/stub/lib/runtime/runtime.d.mts +3 -0
- package/types/stub/lib/typegen/typegen.d.mts +3 -0
- package/types/stub/slothlet.d.mts +4 -0
- package/dist/lib/i18n/languages/de-de.json +0 -470
- package/dist/lib/i18n/languages/en-gb.json +0 -470
- package/dist/lib/i18n/languages/es-es.json +0 -470
- package/dist/lib/i18n/languages/es-mx.json +0 -470
- package/dist/lib/i18n/languages/fr-fr.json +0 -470
- package/dist/lib/i18n/languages/hi-in.json +0 -470
- package/dist/lib/i18n/languages/ja-jp.json +0 -470
- package/dist/lib/i18n/languages/ko-kr.json +0 -470
- package/dist/lib/i18n/languages/pt-br.json +0 -470
- package/dist/lib/i18n/languages/ru-ru.json +0 -470
- package/dist/lib/i18n/languages/zh-cn.json +0 -470
- package/types/dist/lib/builders/api-assignment.d.mts +0 -8
- package/types/dist/lib/builders/api-assignment.d.mts.map +0 -1
- package/types/dist/lib/builders/api_builder.d.mts +0 -12
- package/types/dist/lib/builders/api_builder.d.mts.map +0 -1
- package/types/dist/lib/builders/builder.d.mts +0 -6
- package/types/dist/lib/builders/builder.d.mts.map +0 -1
- package/types/dist/lib/builders/modes-processor.d.mts +0 -8
- package/types/dist/lib/builders/modes-processor.d.mts.map +0 -1
- package/types/dist/lib/errors.d.mts +0 -28
- package/types/dist/lib/errors.d.mts.map +0 -1
- package/types/dist/lib/factories/component-base.d.mts +0 -12
- package/types/dist/lib/factories/component-base.d.mts.map +0 -1
- package/types/dist/lib/factories/context.d.mts +0 -8
- package/types/dist/lib/factories/context.d.mts.map +0 -1
- package/types/dist/lib/handlers/api-cache-manager.d.mts +0 -25
- package/types/dist/lib/handlers/api-cache-manager.d.mts.map +0 -1
- package/types/dist/lib/handlers/api-manager.d.mts +0 -47
- package/types/dist/lib/handlers/api-manager.d.mts.map +0 -1
- package/types/dist/lib/handlers/context-async.d.mts +0 -28
- package/types/dist/lib/handlers/context-async.d.mts.map +0 -1
- package/types/dist/lib/handlers/context-live.d.mts +0 -28
- package/types/dist/lib/handlers/context-live.d.mts.map +0 -1
- package/types/dist/lib/handlers/hook-manager.d.mts +0 -69
- package/types/dist/lib/handlers/hook-manager.d.mts.map +0 -1
- package/types/dist/lib/handlers/lifecycle-token.d.mts +0 -4
- package/types/dist/lib/handlers/lifecycle-token.d.mts.map +0 -1
- package/types/dist/lib/handlers/lifecycle.d.mts +0 -13
- package/types/dist/lib/handlers/lifecycle.d.mts.map +0 -1
- package/types/dist/lib/handlers/materialize-manager.d.mts +0 -13
- package/types/dist/lib/handlers/materialize-manager.d.mts.map +0 -1
- package/types/dist/lib/handlers/metadata.d.mts +0 -26
- package/types/dist/lib/handlers/metadata.d.mts.map +0 -1
- package/types/dist/lib/handlers/module-manager.d.mts +0 -29
- package/types/dist/lib/handlers/module-manager.d.mts.map +0 -1
- package/types/dist/lib/handlers/ownership.d.mts +0 -57
- package/types/dist/lib/handlers/ownership.d.mts.map +0 -1
- package/types/dist/lib/handlers/permission-manager.d.mts +0 -56
- package/types/dist/lib/handlers/permission-manager.d.mts.map +0 -1
- package/types/dist/lib/handlers/unified-wrapper.d.mts +0 -37
- package/types/dist/lib/handlers/unified-wrapper.d.mts.map +0 -1
- package/types/dist/lib/handlers/version-manager.d.mts +0 -37
- package/types/dist/lib/handlers/version-manager.d.mts.map +0 -1
- package/types/dist/lib/helpers/class-instance-wrapper.d.mts +0 -4
- package/types/dist/lib/helpers/class-instance-wrapper.d.mts.map +0 -1
- package/types/dist/lib/helpers/config.d.mts +0 -153
- package/types/dist/lib/helpers/config.d.mts.map +0 -1
- package/types/dist/lib/helpers/eventemitter-context.d.mts +0 -5
- package/types/dist/lib/helpers/eventemitter-context.d.mts.map +0 -1
- package/types/dist/lib/helpers/generate-manifest.d.mts +0 -12
- package/types/dist/lib/helpers/generate-manifest.d.mts.map +0 -1
- package/types/dist/lib/helpers/hint-detector.d.mts +0 -7
- package/types/dist/lib/helpers/hint-detector.d.mts.map +0 -1
- package/types/dist/lib/helpers/manifest-resolver.d.mts +0 -2
- package/types/dist/lib/helpers/manifest-resolver.d.mts.map +0 -1
- package/types/dist/lib/helpers/modes-utils.d.mts +0 -8
- package/types/dist/lib/helpers/modes-utils.d.mts.map +0 -1
- package/types/dist/lib/helpers/module-discovery.d.mts +0 -8
- package/types/dist/lib/helpers/module-discovery.d.mts.map +0 -1
- package/types/dist/lib/helpers/module-manifest-validator.d.mts +0 -14
- package/types/dist/lib/helpers/module-manifest-validator.d.mts.map +0 -1
- package/types/dist/lib/helpers/module-sort.d.mts +0 -2
- package/types/dist/lib/helpers/module-sort.d.mts.map +0 -1
- package/types/dist/lib/helpers/pattern-matcher.d.mts +0 -4
- package/types/dist/lib/helpers/pattern-matcher.d.mts.map +0 -1
- package/types/dist/lib/helpers/platform.d.mts +0 -12
- package/types/dist/lib/helpers/platform.d.mts.map +0 -1
- package/types/dist/lib/helpers/resolve-from-caller.d.mts +0 -9
- package/types/dist/lib/helpers/resolve-from-caller.d.mts.map +0 -1
- package/types/dist/lib/helpers/sanitize.d.mts +0 -10
- package/types/dist/lib/helpers/sanitize.d.mts.map +0 -1
- package/types/dist/lib/helpers/utilities.d.mts +0 -9
- package/types/dist/lib/helpers/utilities.d.mts.map +0 -1
- package/types/dist/lib/i18n/translations.d.mts +0 -7
- package/types/dist/lib/i18n/translations.d.mts.map +0 -1
- package/types/dist/lib/modes/eager.d.mts +0 -15
- package/types/dist/lib/modes/eager.d.mts.map +0 -1
- package/types/dist/lib/modes/lazy.d.mts +0 -17
- package/types/dist/lib/modes/lazy.d.mts.map +0 -1
- package/types/dist/lib/processors/flatten.d.mts +0 -63
- package/types/dist/lib/processors/flatten.d.mts.map +0 -1
- package/types/dist/lib/processors/loader.d.mts +0 -12
- package/types/dist/lib/processors/loader.d.mts.map +0 -1
- package/types/dist/lib/processors/type-generator.d.mts +0 -5
- package/types/dist/lib/processors/type-generator.d.mts.map +0 -1
- package/types/dist/lib/processors/typescript.d.mts +0 -18
- package/types/dist/lib/processors/typescript.d.mts.map +0 -1
- package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts +0 -4
- package/types/dist/lib/runtime/runtime-asynclocalstorage.d.mts.map +0 -1
- package/types/dist/lib/runtime/runtime-livebindings.d.mts +0 -3
- package/types/dist/lib/runtime/runtime-livebindings.d.mts.map +0 -1
- package/types/dist/lib/runtime/runtime.d.mts +0 -4
- package/types/dist/lib/runtime/runtime.d.mts.map +0 -1
- package/types/dist/lib/typegen/typegen.d.mts +0 -5
- package/types/dist/lib/typegen/typegen.d.mts.map +0 -1
- package/types/dist/slothlet.d.mts +0 -4
- package/types/dist/slothlet.d.mts.map +0 -1
- package/types/index.d.mts +0 -18
- package/types/index.d.mts.map +0 -1
|
@@ -1,470 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"translations": {
|
|
3
|
-
"INVALID_CONFIG": "Invalid configuration: {option} is {value}, expected {expected}. {hint}",
|
|
4
|
-
"HINT_INVALID_CONFIG": "Check the configuration value and ensure it matches the expected type and format.",
|
|
5
|
-
"INVALID_CONFIG_SYNTHETIC_EXPORTS_SHAPE": "Configuration error: inline exports must be a plain export-map object (a default and/or named exports), received {received}.",
|
|
6
|
-
"HINT_INVALID_CONFIG_SYNTHETIC_EXPORTS_SHAPE": "Pass exports as a plain object, e.g. { default: fn } or { name: fn } — or a { exports: { default?, ...named } } wrapper, or a bare function.",
|
|
7
|
-
"INVALID_CONFIG_SYNTHETIC_INPUT": "Configuration error: inline content must be a plain export-map object, an exports-wrapper object, or a bare function, received {received}.",
|
|
8
|
-
"HINT_INVALID_CONFIG_SYNTHETIC_INPUT": "Pass inline exports as a plain object or a bare function; a filesystem mount needs a string path.",
|
|
9
|
-
"INVALID_CONFIG_SYNTHETIC_NAME": "Configuration error: syntheticName must be a non-empty string, received {received}.",
|
|
10
|
-
"HINT_INVALID_CONFIG_SYNTHETIC_NAME": "Provide a string key name for the synthetic build, e.g. \"synthetic\".",
|
|
11
|
-
"INVALID_CONFIG_PRELOADED_STRUCTURE": "Configuration error: preloadedStructure must be a plain object with files and directories arrays, received {received}.",
|
|
12
|
-
"HINT_INVALID_CONFIG_PRELOADED_STRUCTURE": "preloadedStructure is built internally; pass an object with files and directories arrays, or omit it to scan a directory.",
|
|
13
|
-
"INVALID_CONFIG_DIR_MISSING": "Configuration error: 'dir' option is required. Provide a directory path to load API from.",
|
|
14
|
-
"HINT_INVALID_CONFIG_DIR_MISSING": "The directory path is required but was not provided.",
|
|
15
|
-
"INVALID_CONFIG_DIR_INVALID": "Configuration error: 'dir' must be a non-empty string path. Received: {dir}",
|
|
16
|
-
"HINT_INVALID_CONFIG_DIR_INVALID": "Ensure the directory path is a valid string and points to an existing directory.",
|
|
17
|
-
"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.",
|
|
18
|
-
"INVALID_CONFIG_BROWSER_MANIFEST_INVALID": "Configuration error: 'manifest' must be a plain object with 'files' and 'directories' arrays. Received: {received}",
|
|
19
|
-
"INVALID_CONFIG_BROWSER_RESOLVE_SPECIFIER_INVALID": "Configuration error: 'resolveModuleSpecifier' must be a function when env is 'browser'. Received: {received}",
|
|
20
|
-
"INVALID_CONFIG_MODE_INVALID": "Configuration error: 'mode' must be either 'eager' or 'lazy'. Received: {value}",
|
|
21
|
-
"HINT_INVALID_CONFIG_MODE_INVALID": "Mode must be either 'eager' or 'lazy'.",
|
|
22
|
-
"INVALID_CONFIG_NOT_LOADED": "Cannot perform operation '{operation}' - instance not loaded. Call load() first.",
|
|
23
|
-
"HINT_INVALID_CONFIG_NOT_LOADED": "The instance must be loaded before performing this operation. Call load() first.",
|
|
24
|
-
"INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED": "Failed to materialize lazy proxy for '{apiPath}'. Check that the module loads correctly.",
|
|
25
|
-
"INVALID_CONFIG_NOT_A_FUNCTION": "Cannot call '{apiPath}' - not a function (got {actualType}). Check that the module exports a callable function.",
|
|
26
|
-
"INVALID_CONFIG_API_PATH_INVALID": "Invalid API path '{apiPath}': {reason}. API paths must be non-empty, properly formatted dot-notation strings that don't conflict with reserved names. Segment at index {index}: '{segment}'.",
|
|
27
|
-
"HINT_INVALID_CONFIG_API_PATH_INVALID": "Ensure the API path is a valid dot-notation string (e.g., 'plugins.tools') without empty segments or reserved names (slothlet, shutdown, destroy).",
|
|
28
|
-
"INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "Configuration error: forceOverwrite/allowOverwrite requires a moduleID. Provide a unique moduleID when using overwrite options for API path '{apiPath}'.",
|
|
29
|
-
"HINT_INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "When using forceOverwrite or allowOverwrite, you must provide a unique moduleID to track ownership of the overwritten path.",
|
|
30
|
-
"INVALID_METADATA_TARGET": "Invalid metadata target: expected {expected}, received {target}. Metadata operations require a function or object reference.",
|
|
31
|
-
"HINT_INVALID_METADATA_TARGET": "The target must be a function or object that was loaded through Slothlet. Pass the actual function/object reference, not a string or primitive value.",
|
|
32
|
-
"METADATA_NO_MODULE_ID": "Cannot set user metadata: no moduleID found in system metadata. Ensure the target function/object was loaded through Slothlet.",
|
|
33
|
-
"HINT_METADATA_NO_MODULE_ID": "Ensure the function/object was loaded through Slothlet's module system. Only Slothlet-managed functions have associated metadata.",
|
|
34
|
-
"METADATA_LIFECYCLE_BYPASS": "tagSystemMetadata() must be called through the lifecycle system. Use lifecycle.emit('impl:created') or lifecycle.emit('impl:changed') instead of a direct call.",
|
|
35
|
-
"HINT_METADATA_LIFECYCLE_BYPASS": "Never call tagSystemMetadata() directly. Trigger the 'impl:created' or 'impl:changed' lifecycle events instead, which will invoke tagSystemMetadata() through the proper channel.",
|
|
36
|
-
"INVALID_METADATA_KEY": "Invalid metadata key: expected {expected}, received {type} for key '{key}'. Metadata keys must be properly formatted.",
|
|
37
|
-
"HINT_INVALID_METADATA_KEY": "Metadata keys must be strings, string arrays, or objects with array values. Check the key format matches one of these types.",
|
|
38
|
-
"WARNING_METADATA_MISMATCH": "Security warning: Metadata file path mismatch for '{apiPath}'. Stack trace shows '{stackFile}' but metadata shows '{metadataFile}'. This may indicate hot reload or tampering.",
|
|
39
|
-
"HINT_WARNING_METADATA_MISMATCH": "This warning indicates the function's execution location doesn't match its registered metadata path. This can occur during hot reload or if the function was tampered with. In most cases, this is expected during development with hot reload enabled.",
|
|
40
|
-
"COLLISION_ERROR": "Collision error at '{key}' (context: {collisionContext}, mode: {collisionMode}). Set collision mode to 'merge', 'replace', 'warn', or 'skip' to handle collisions.",
|
|
41
|
-
"HINT_COLLISION_ERROR": "Collision mode is set to 'error' which prevents any overwrites. Use collision: 'merge' (combine properties), 'replace' (overwrite completely), 'warn' (warn but keep existing), or 'skip' (silently ignore) instead.",
|
|
42
|
-
"COLLISION_DEFAULT_EXPORT_ERROR": "Collision detected: property '{key}' already exists on default export at '{apiPath}'. Collision mode is 'error'.",
|
|
43
|
-
"HINT_COLLISION_DEFAULT_EXPORT_ERROR": "A named export conflicts with a property already present on the default export object at this path. Change the collision mode to 'merge', 'replace', 'warn', or 'skip', or rename the conflicting property.",
|
|
44
|
-
"INVALID_ARGUMENT": "Invalid argument '{argument}': expected {expected}, received {received}.",
|
|
45
|
-
"HINT_INVALID_ARGUMENT": "Path must be a dot-notation string (e.g., 'math.add').",
|
|
46
|
-
"RUNTIME_NO_ACTIVE_CONTEXT": "No active context found. This operation requires being called from within a slothlet API function.",
|
|
47
|
-
"HINT_RUNTIME_NO_ACTIVE_CONTEXT": "metadata.self() must be called from within a slothlet API function.",
|
|
48
|
-
"INVALID_CONFIG_MUTATIONS_DISABLED": "Cannot perform '{operation}' - mutation is disabled. Set allowMutation: true to enable API modification operations (add/remove/reload).",
|
|
49
|
-
"HINT_INVALID_CONFIG_MUTATIONS_DISABLED": "API mutation operations require allowMutation: true in the configuration. Use diagnostics: true to access these methods for testing without enabling actual mutations.",
|
|
50
|
-
"CACHE_MODULEID_MISMATCH": "Cache entry moduleID mismatch: expected '{cacheKey}', but entry has '{entryModuleID}'. This indicates an internal cache inconsistency.",
|
|
51
|
-
"HINT_CACHE_MODULEID_MISMATCH": "This is an internal error indicating cache corruption. Please report this issue with steps to reproduce.",
|
|
52
|
-
"CACHE_NOT_FOUND": "Cache entry not found for moduleID '{moduleID}' during '{operation}' operation. The module may not be loaded or the cache may have been cleared.",
|
|
53
|
-
"HINT_CACHE_NOT_FOUND": "Ensure the module has been loaded before attempting to reload or rebuild its cache. Check that the moduleID is correct.",
|
|
54
|
-
"CACHE_MANAGER_NOT_AVAILABLE": "Cache manager is not available. Cannot perform '{operation}' operation. Ensure the cache manager is initialized.",
|
|
55
|
-
"HINT_CACHE_MANAGER_NOT_AVAILABLE": "The cache manager should be initialized automatically. If you see this error, it may indicate an internal initialization issue.",
|
|
56
|
-
"MODULE_LOAD_FAILED": "Failed to load module '{modulePath}' (ID: {moduleID}): {error}",
|
|
57
|
-
"HINT_MODULE_LOAD_FAILED": "Check the module file for errors. Ensure it has valid JavaScript syntax and exports.",
|
|
58
|
-
"MODULE_NOT_FOUND": "Module not found: {modulePath}. {hint}",
|
|
59
|
-
"HINT_MODULE_NOT_FOUND": "Ensure the module exists and the path is correct. Check for typos in the import statement.",
|
|
60
|
-
"MODULE_IMPORT_FAILED": "Failed to import module '{modulePath}': {error}. Check that the file exists and has valid syntax.",
|
|
61
|
-
"HINT_MODULE_IMPORT_FAILED": "Ensure the module file exists and can be imported. Check for syntax errors or missing dependencies.",
|
|
62
|
-
"CONTEXT_ALREADY_EXISTS": "Context for instance '{instanceID}' already exists. Cannot initialize twice.",
|
|
63
|
-
"HINT_CONTEXT_ALREADY_EXISTS": "This context already exists. Check if you're trying to initialize the same instance twice.",
|
|
64
|
-
"CONTEXT_NOT_FOUND": "Context not found for instance '{instanceID}'. Instance may have been shut down. Available instances: {availableInstances}",
|
|
65
|
-
"HINT_CONTEXT_NOT_FOUND": "Ensure the slothlet instance is initialized and the context is created before accessing it. Check that you're using the correct instance ID.",
|
|
66
|
-
"CONTEXT_EXECUTION_FAILED": "Failed to execute in context for instance '{instanceID}': {error}",
|
|
67
|
-
"HINT_CONTEXT_EXECUTION_FAILED": "An error occurred while executing the function. Check the error details for more information.",
|
|
68
|
-
"NO_ACTIVE_CONTEXT_LIVE": "No active context - no instance is currently active in live bindings mode.",
|
|
69
|
-
"HINT_NO_ACTIVE_CONTEXT_LIVE": "No active context found. Ensure you're calling this function from within a slothlet live context.",
|
|
70
|
-
"NO_ACTIVE_CONTEXT_ASYNC": "No active context - function must be called within slothlet API context.",
|
|
71
|
-
"HINT_NO_ACTIVE_CONTEXT_ASYNC": "No active context found. Ensure you're calling this function from within a slothlet async context.",
|
|
72
|
-
"RUNTIME_NO_ACTIVE_CONTEXT_SELF": "No active context - cannot access 'self'. Ensure you're calling from within a Slothlet API function.",
|
|
73
|
-
"HINT_RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Cannot access 'self' outside of a slothlet API function context.",
|
|
74
|
-
"RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "No active context - 'context' can only be modified within slothlet API calls.",
|
|
75
|
-
"HINT_RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Cannot access 'context' outside of a slothlet API function. Context can only be modified within slothlet API calls.",
|
|
76
|
-
"OWNERSHIP_INVALID_MODULE_ID": "Invalid ownership registration: moduleID '{moduleID}' is invalid.",
|
|
77
|
-
"HINT_OWNERSHIP_INVALID_MODULE_ID": "The module ID is invalid. Ensure the module was loaded properly and the ID is correct.",
|
|
78
|
-
"OWNERSHIP_INVALID_API_PATH": "Invalid ownership registration: apiPath '{apiPath}' is invalid.",
|
|
79
|
-
"HINT_OWNERSHIP_INVALID_API_PATH": "The API path is invalid. Ensure the path format is correct.",
|
|
80
|
-
"OWNERSHIP_CONFLICT": "Ownership conflict: Path '{apiPath}' is already owned by module '{existingModuleId}', cannot assign to '{newModuleId}'. Use forceOverwrite: true or removeApi first.",
|
|
81
|
-
"HINT_OWNERSHIP_CONFLICT": "Path is already owned by another module. Options: (1) Use forceOverwrite: true in api.add() options, (2) Set collision config to 'merge' or 'replace', (3) Call api.slothlet.api.remove() first to clear the path.",
|
|
82
|
-
"LOOSE_SET_NOT_OWNED": "Module {callerApiPath} is not permitted to write to {apiPath}. A module may write only under its own apiPath; use api.slothlet.api.add() to register at a different path.",
|
|
83
|
-
"HINT_LOOSE_SET_NOT_OWNED": "A module owning apiPath \"P\" may write only under \"P.*\". To register code at a different namespace, call api.slothlet.api.add() instead.",
|
|
84
|
-
"LOOSE_SET_RESERVED_KEY": "Cannot assign to reserved key segment '{segment}' in apiPath '{apiPath}'. Names like __proto__, prototype, and constructor are blocked to prevent prototype pollution of the API tree.",
|
|
85
|
-
"HINT_LOOSE_SET_RESERVED_KEY": "The segments __proto__, prototype, and constructor cannot be used as apiPath names because writing to them would mutate the JavaScript prototype chain. Choose a different name.",
|
|
86
|
-
"INVALID_DIRECTORY": "Invalid directory '{dir}': {error}. Ensure the directory exists and is accessible.",
|
|
87
|
-
"HINT_INVALID_DIRECTORY": "Ensure the directory path is correct and the directory exists and is accessible.",
|
|
88
|
-
"WARN_DIRECTORY_EMPTY": "Directory '{dir}' (resolved: '{resolvedPath}') is empty or contains no loadable modules (.mjs, .cjs, .js files). This is valid for add-api workflows but may indicate a misconfigured path.",
|
|
89
|
-
"HINT_WARN_DIRECTORY_EMPTY": "Check that the directory path is correct. Empty directories are valid for add-api workflows where modules will be added dynamically.",
|
|
90
|
-
"WARN_SYNTHETIC_ROOT_EMPTY": "Synthetic add at api path '{apiPath}' contributed no leaves; nothing was mounted.",
|
|
91
|
-
"HINT_WARN_SYNTHETIC_ROOT_EMPTY": "Provide at least one export — a named function default or named exports — so the synthetic add has something to mount.",
|
|
92
|
-
"WARN_SYNTHETIC_ROOT_UNNAMED": "Synthetic add at the API root has an anonymous default export; it cannot be keyed onto the root and was skipped.",
|
|
93
|
-
"HINT_WARN_SYNTHETIC_ROOT_UNNAMED": "Name the default function (its name becomes the root key), provide named exports, or mount the leaf at a named apiPath.",
|
|
94
|
-
"WARN_SYNTHETIC_ROOT_COLLISION": "Synthetic add at the API root re-keys its default to '{name}', but a named export already uses '{name}'; the named export takes precedence.",
|
|
95
|
-
"HINT_WARN_SYNTHETIC_ROOT_COLLISION": "Rename the default function or the conflicting named export so each lands on a distinct root key.",
|
|
96
|
-
"INTERNAL_HOOK_STATE_CORRUPT": "[INTERNAL ERROR] HookManager state is corrupt: hook \"{hookId}\" ({type}/{subset}/{pattern}) — {detail}. This is a bug in Slothlet — please report it.",
|
|
97
|
-
"HINT_INTERNAL_HOOK_STATE_CORRUPT": "HookManager internal state is inconsistent. This should never happen through normal usage — please file a bug report including how you called hook.on() and hook.remove().",
|
|
98
|
-
"WARNING_RESERVED_PROPERTY_CONFLICT": "User API conflicts with reserved properties: {properties}",
|
|
99
|
-
"HINT_WARNING_RESERVED_PROPERTY_CONFLICT": "The 'slothlet' property name is reserved for built-in API methods. Rename your API module or property to avoid conflicts with slothlet.shutdown(), slothlet.api.*, etc.",
|
|
100
|
-
"WARNING_LANGUAGE_LOAD_FAILED": "Failed to load language '{lang}', falling back to English.",
|
|
101
|
-
"WARNING_LANGUAGE_UNAVAILABLE": "Language '{lang}' is not available, using English.",
|
|
102
|
-
"WARNING_OWNERSHIP_CONFLICT": "Ownership conflict at '{apiPath}': already owned by '{existingModuleId}', cannot register '{newModuleId}'. Keeping existing.",
|
|
103
|
-
"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.",
|
|
104
|
-
"WARNING_HOT_RELOAD_PATH_COLLISION": "Path collision at {apiPath} - keeping existing value (collision mode: warn).",
|
|
105
|
-
"HINT_WARNING_HOT_RELOAD_PATH_COLLISION": "A collision occurred during hot reload at the specified path. The existing value is being kept. To force replacement, use collision mode 'replace' instead of 'warn'.",
|
|
106
|
-
"WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "Cannot merge primitive values at {apiPath} - keeping existing value. Use collision mode 'replace' to overwrite or ensure both values are objects.",
|
|
107
|
-
"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.",
|
|
108
|
-
"WARNING_COLLISION_FILE_FOLDER_MERGE": "Collision detected at '{key}' - merging file and folder exports (collision mode: 'warn').",
|
|
109
|
-
"HINT_WARNING_COLLISION_FILE_FOLDER_MERGE": "A file and a folder share the same name at '{key}'. Their exports are being merged. Rename one to avoid ambiguity, or set collisionMode to 'replace' or 'error' if merging is not intended.",
|
|
110
|
-
"WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "Collision warning: property '{key}' already exists on default export function at {apiPath}. Named export will overwrite.",
|
|
111
|
-
"HINT_WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "The named export '{key}' at '{apiPath}' is overwriting an existing property on the default export function. Rename the export or use a different apiPath to avoid the collision.",
|
|
112
|
-
"WARNING_COLLISION_TRIGGER_MATERIALIZE_ERROR": "Early materialization failed for lazy folder at '{apiPath}'. The collision replacement may be incomplete.",
|
|
113
|
-
"HINT_WARNING_COLLISION_TRIGGER_MATERIALIZE_ERROR": "This is a non-critical background error during collision handling. The lazy folder at the given path failed to materialize. Check that the module at that path is valid and can be loaded.",
|
|
114
|
-
"WARNING_LIFECYCLE_HANDLER_ERROR": "Lifecycle event handler threw an error for event '{event}'. Other handlers for this event continued executing.",
|
|
115
|
-
"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.",
|
|
116
|
-
"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.",
|
|
117
|
-
"HINT_WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "Multiple files export default functions at the root level. Each has been namespaced (e.g., api.filename()). Consider consolidating into one root export or moving files to subdirectories for clearer organization.",
|
|
118
|
-
"V3_CONFIG_DEPRECATED": "Configuration option '{option}' is deprecated and will be removed in v4. Use '{replacement}' instead.",
|
|
119
|
-
"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.",
|
|
120
|
-
"V2_CONFIG_UNSUPPORTED": "Configuration option '{option}' from v2 is not supported in v3. {hint} Use '{replacement}' instead.",
|
|
121
|
-
"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.",
|
|
122
|
-
"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}' behaviour will be enforced permanently.",
|
|
123
|
-
"HINT_WARN_SUPPRESS_FIX_ACTIVE": "Remove '{rule}' from 'suppressFixes' and update your API directory structure to accommodate the corrected behaviour before upgrading to v4.",
|
|
124
|
-
"DEBUG_MODE_ROOT_CONTRIBUTOR": "[{mode}] Root contributor detected: {functionName}",
|
|
125
|
-
"DEBUG_MODE_ROOT_CONTRIBUTOR_APPLIED": "[{mode}] Root contributor pattern applied - function API with {properties} additional properties",
|
|
126
|
-
"DEBUG_MODE_PROCESSING_DIRECTORY": "[{mode}] Processing directory: {categoryName} (depth {currentDepth})",
|
|
127
|
-
"DEBUG_MODE_MODULE_DECISION": "[{mode}] Module {moduleName}: {reason}",
|
|
128
|
-
"DEBUG_MODE_FLATTENING": "[{mode}] Flattening {moduleName}: {flattenType}",
|
|
129
|
-
"DEBUG_MODE_ASSIGN_TO_API": "ASSIGN-TO-API",
|
|
130
|
-
"DEBUG_MODE_COLLISION_CHECK": "COLLISION-CHECK",
|
|
131
|
-
"DEBUG_MODE_COLLISION_DETECT": "COLLISION-DETECT",
|
|
132
|
-
"DEBUG_MODE_COLLISION_WRAPPER_DETECTION": "[COLLISION]: wrapper detection",
|
|
133
|
-
"DEBUG_MODE_COLLISION_LAZY_DETECTION": "[COLLISION]: lazy detection",
|
|
134
|
-
"DEBUG_MODE_COLLISION_SET_MODE_EXISTING_WRAPPER": "[COLLISION]: Setting collision mode on EXISTING wrapper",
|
|
135
|
-
"DEBUG_MODE_COLLISION_VERIFIED_EXISTING_WRAPPER_MODE": "[COLLISION]: Verified existing wrapper collision mode",
|
|
136
|
-
"DEBUG_MODE_COLLISION_SET_MODE_VALUE_WRAPPER": "[COLLISION]: Setting collision mode on VALUE wrapper",
|
|
137
|
-
"DEBUG_MODE_COLLISION_VERIFIED_VALUE_WRAPPER_MODE": "[COLLISION]: Verified value wrapper collision mode",
|
|
138
|
-
"DEBUG_MODE_COLLISION_REPLACE_MATERIALIZE": "[COLLISION-REPLACE-MATERIALIZE]: Triggering immediate materialization",
|
|
139
|
-
"DEBUG_MODE_COLLISION_REPLACE_NO_COPY": "[COLLISION-REPLACE]: Not copying file properties - replace mode will clear everything on materialization",
|
|
140
|
-
"DEBUG_MODE_COLLISION_REPLACE_BEFORE": "[COLLISION-REPLACE]: BEFORE assignment",
|
|
141
|
-
"DEBUG_MODE_COLLISION_ASSIGN_REPLACING_WITH_LAZY": "[COLLISION-ASSIGN]: Replacing existing with lazy folder",
|
|
142
|
-
"DEBUG_MODE_COLLISION_REPLACE_AFTER": "[COLLISION-REPLACE]: AFTER assignment",
|
|
143
|
-
"DEBUG_MODE_COLLISION_REPLACE_VERIFY": "[COLLISION-REPLACE]: Verification",
|
|
144
|
-
"DEBUG_MODE_COLLISION_COPY_CHILD_KEYS": "[COLLISION-COPY]: Copying existing child keys",
|
|
145
|
-
"DEBUG_MODE_COLLISION_COPY_INDIVIDUAL_KEY": "[COLLISION-COPY]: Copying individual key",
|
|
146
|
-
"DEBUG_MODE_COLLISION_TRIGGER_EARLY_MAT": "[COLLISION-TRIGGER-MAT]: Triggering early materialization (fire-and-forget)",
|
|
147
|
-
"DEBUG_MODE_MERGE_API_OBJECTS_ENTRY": "mergeApiObjects entry",
|
|
148
|
-
"DEBUG_MODE_MERGE_API_OBJECTS_SOURCE_KEYS": "mergeApiObjects sourceApi keys",
|
|
149
|
-
"DEBUG_MODE_MERGE_API_OBJECTS_EXIT_INVALID_SOURCE": "mergeApiObjects exit - sourceApi not object/function",
|
|
150
|
-
"DEBUG_MODE_MERGE_API_OBJECTS_PROCESSING_KEY": "mergeApiObjects processing key",
|
|
151
|
-
"DEBUG_MODE_MERGE_API_OBJECTS_RECURSING": "mergeApiObjects - both plain objects, recursing",
|
|
152
|
-
"DEBUG_MODE_MERGE_API_OBJECTS_CALLING_ASSIGN": "mergeApiObjects calling assignToApiPath",
|
|
153
|
-
"DEBUG_MODE_BUILD_FINAL_API_CALLED": "buildFinalAPI called",
|
|
154
|
-
"DEBUG_MODE_SLOTHLET_NAMESPACE_CREATED": "Slothlet namespace created",
|
|
155
|
-
"DEBUG_MODE_BUILT_INS_ATTACHED": "Built-ins attached",
|
|
156
|
-
"DEBUG_MODE_CATEGORY_REUSE_EXISTING_WRAPPER": "Category reuse - using existing wrapper",
|
|
157
|
-
"DEBUG_MODE_CATEGORY_WRAPPER_CREATED": "Category wrapper created",
|
|
158
|
-
"DEBUG_MODE_CATEGORY_WRAPPER_ASSIGNED": "Category wrapper assigned to API",
|
|
159
|
-
"DEBUG_MODE_CATEGORY_CREATED": "Category created",
|
|
160
|
-
"DEBUG_MODE_CATEGORY_TARGET_API_STATUS": "Category targetApi status",
|
|
161
|
-
"DEBUG_MODE_PROCESSING_FILE": "Processing file",
|
|
162
|
-
"DEBUG_MODE_PROCESSING_MODULE": "Processing module",
|
|
163
|
-
"DEBUG_MODE_FILE_PROCESSING": "File processing",
|
|
164
|
-
"DEBUG_MODE_SINGLE_FILE_FOLDER_DETECTED": "Single-file folder detected",
|
|
165
|
-
"DEBUG_MODE_SINGLE_FILE_FOLDER_WRAPPED": "Single-file folder set to wrapped property",
|
|
166
|
-
"DEBUG_MODE_FLATTEN_MULTI_EXPORT_FILE": "Flatten multi-export file",
|
|
167
|
-
"DEBUG_MODE_FLATTEN_MULTI_EXPORT_TARGET_STATUS": "Flatten multi-export targetApi status",
|
|
168
|
-
"DEBUG_MODE_FLATTEN_MULTI_EXPORT_ASSIGNING": "Flatten multi-export assigning key",
|
|
169
|
-
"DEBUG_MODE_FLATTEN_MULTI_EXPORT_ASSIGNED": "Flatten multi-export key assigned successfully",
|
|
170
|
-
"DEBUG_MODE_FLATTEN_MULTI_EXPORT_BLOCKED": "Flatten multi-export key blocked by safeAssign",
|
|
171
|
-
"DEBUG_MODE_FILE_WRAPPER_ASSIGNMENT": "File wrapper assignment",
|
|
172
|
-
"DEBUG_MODE_AFTER_ASSIGNMENT_STATUS": "After assignment status",
|
|
173
|
-
"DEBUG_MODE_SUBDIRECTORY_CHECK": "Subdirectory check",
|
|
174
|
-
"DEBUG_MODE_DIRECTORY_CHECK": "Directory check",
|
|
175
|
-
"DEBUG_MODE_DIRECTORY_CHECK_PASSED": "Directory check passed",
|
|
176
|
-
"DEBUG_MODE_SUBDIRECTORIES_FOUND": "Subdirectories found",
|
|
177
|
-
"DEBUG_MODE_SUBDIRECTORY_LOOP_START": "Subdirectory loop start",
|
|
178
|
-
"DEBUG_MODE_PROCESSING_SUBDIRECTORY": "Processing subdirectory",
|
|
179
|
-
"DEBUG_MODE_FOLDER_LEVEL_FLATTEN_CHECK": "Folder-level flatten check",
|
|
180
|
-
"DEBUG_MODE_FOLDER_LEVEL_FLATTEN_SKIP_RECURSION": "Folder-level flatten - skipping recursion",
|
|
181
|
-
"DEBUG_MODE_FILE_FOLDER_COLLISION_MERGED": "File-folder collision: merged file exports into folder impl",
|
|
182
|
-
"DEBUG_MODE_CREATING_LAZY_SUBDIRECTORY": "Creating lazy subdirectory",
|
|
183
|
-
"DEBUG_MODE_MATERIALIZE_FUNCTION_STARTING": "Materialize function starting",
|
|
184
|
-
"DEBUG_MODE_MATERIALIZE_FUNCTION_RETURNING_IMPL": "Materialize function returning impl",
|
|
185
|
-
"DEBUG_MODE_FOLDER_PATTERN_MATCH": "Folder pattern match",
|
|
186
|
-
"DEBUG_MODE_FOLDER_PATTERN_ATTACH_PROPERTY": "Folder pattern attach property",
|
|
187
|
-
"DEBUG_MODE_FOLDER_PATTERN_RETURN": "Folder pattern return",
|
|
188
|
-
"DEBUG_MODE_CACHE_ENTRY_STORED": "Cache entry stored",
|
|
189
|
-
"DEBUG_MODE_CACHE_ENTRY_DELETED": "Cache entry deleted",
|
|
190
|
-
"DEBUG_MODE_ALL_CACHES_CLEARED": "All caches cleared",
|
|
191
|
-
"DEBUG_MODE_REBUILDING_CACHE_FROM_DISK": "Rebuilding cache from disk",
|
|
192
|
-
"DEBUG_MODE_CACHE_REBUILT_SUCCESSFULLY": "Cache rebuilt successfully",
|
|
193
|
-
"DEBUG_MODE_SYNC_WRAPPER_ENTRY_EXISTING": "syncWrapper entry - existingProxy",
|
|
194
|
-
"DEBUG_MODE_SYNC_WRAPPER_ENTRY_NEXT": "syncWrapper entry - nextProxy",
|
|
195
|
-
"DEBUG_MODE_SYNC_WRAPPER_EXISTING": "syncWrapper existingWrapper",
|
|
196
|
-
"DEBUG_MODE_SYNC_WRAPPER_NEXT": "syncWrapper nextWrapper",
|
|
197
|
-
"DEBUG_MODE_SYNC_WRAPPER_BEFORE_MERGE": "syncWrapper before merge",
|
|
198
|
-
"DEBUG_MODE_SYNC_WRAPPER_NEXT_IMPL_KEYS": "syncWrapper next wrapper impl keys",
|
|
199
|
-
"DEBUG_MODE_SYNC_WRAPPER_NEXT_CHILDCACHE_KEYS": "syncWrapper next wrapper childCache keys",
|
|
200
|
-
"DEBUG_MODE_MUTATE_API_VALUE_CALLED": "mutateApiValue called",
|
|
201
|
-
"DEBUG_MODE_MUTATE_API_VALUE_WRAPPER_STATUS": "mutateApiValue wrapper status",
|
|
202
|
-
"DEBUG_MODE_MUTATE_API_VALUE_NEXT_VALUE": "mutateApiValue nextValue",
|
|
203
|
-
"DEBUG_MODE_MUTATE_API_VALUE_NEXT_VALUE_KEYS": "mutateApiValue nextValue keys",
|
|
204
|
-
"DEBUG_MODE_MUTATE_API_VALUE_SYNC_WRAPPERS": "mutateApiValue - both are wrappers, calling syncWrapper",
|
|
205
|
-
"DEBUG_MODE_MUTATE_API_VALUE_MERGE_INTO_WRAPPER": "mutateApiValue - merging properties into existing wrapper",
|
|
206
|
-
"DEBUG_MODE_MUTATE_API_VALUE_MERGE_KEYS": "mutateApiValue nextValue keys to merge",
|
|
207
|
-
"DEBUG_MODE_MUTATE_API_VALUE_SETIMPL_FALLBACK": "mutateApiValue - using ___setImpl fallback",
|
|
208
|
-
"DEBUG_MODE_SET_VALUE_AT_PATH": "setValueAtPath",
|
|
209
|
-
"DEBUG_MODE_SET_VALUE_AT_PATH_SKIP_COLLISION": "setValueAtPath - skipping collision",
|
|
210
|
-
"DEBUG_MODE_SET_VALUE_AT_PATH_REPLACE_MERGE": "setValueAtPath - replacing with merge (preserves wrapper)",
|
|
211
|
-
"DEBUG_MODE_SET_VALUE_AT_PATH_MERGE_PROPS": "setValueAtPath - merging properties",
|
|
212
|
-
"DEBUG_MODE_SET_VALUE_AT_PATH_ASSIGN": "setValueAtPath - no collision, assigning",
|
|
213
|
-
"DEBUG_MODE_ADD_API_COMPONENT_BUILD_RETURN": "addApiComponent buildAPI return structure",
|
|
214
|
-
"DEBUG_MODE_RULE_13_DEDUP_HOISTED_KEY": "Rule 13 C34: AddApi path deduplication - hoisted duplicate key",
|
|
215
|
-
"DEBUG_MODE_ADD_API_COMPONENT_MERGE_KEYS": "addApiComponent apiToMerge keys",
|
|
216
|
-
"DEBUG_MODE_AWAITING_PENDING_MATERIALIZATIONS": "Awaiting {count} pending materialization(s) before completing add",
|
|
217
|
-
"DEBUG_MODE_CACHE_DELETED_MODULE_REMOVED": "Cache deleted for removed module",
|
|
218
|
-
"DEBUG_MODE_RELOADING_MODULE_BY_ID": "Reloading module by ID",
|
|
219
|
-
"DEBUG_MODE_FRESH_API_KEYS_BEFORE_RESTORE": "Fresh API keys before restore",
|
|
220
|
-
"DEBUG_MODE_FRESH_API_KEYS_AFTER_RESTORE": "Fresh API keys after restore",
|
|
221
|
-
"DEBUG_MODE_MODULE_RELOAD_COMPLETE": "Module reload complete",
|
|
222
|
-
"DEBUG_MODE_RELOADING_BY_API_PATH": "Reloading by API path",
|
|
223
|
-
"DEBUG_MODE_NO_CACHES_ATTEMPTING_RESTORE": "No caches found for path, attempting base restore",
|
|
224
|
-
"DEBUG_MODE_API_PATH_RELOAD_COMPLETE": "API path reload complete",
|
|
225
|
-
"DEBUG_MODE_RESTORE_ROOT_KEY_INSPECT": "RESTORE-ROOT-KEY-INSPECT",
|
|
226
|
-
"DEBUG_MODE_ROOT_KEY_RESET_LAZY": "Root key reset to lazy via ___resetLazy",
|
|
227
|
-
"DEBUG_MODE_ROOT_KEY_UPDATED_SETIMPL": "Root key updated via ___setImpl",
|
|
228
|
-
"DEBUG_MODE_RESTORE_NESTED_PATH": "[RESTORE]: nested path",
|
|
229
|
-
"DEBUG_MODE_RESTORE_FORCING_REPLACE": "[RESTORE]: forcing replace mode",
|
|
230
|
-
"DEBUG_MODE_UPDATED_WRAPPER_IMPL": "Updated existing wrapper implementation",
|
|
231
|
-
"DEBUG_MODE_CREATED_NEW_WRAPPER_UNEXPECTED": "Created new wrapper (unexpected in reload)",
|
|
232
|
-
"DEBUG_MODE_LIFECYCLE_EVENT": "Event: {event}",
|
|
233
|
-
"DEBUG_MODE_WRAPPER_CONSTRUCTOR_IMPL_KEYS": "UnifiedWrapper constructor - impl keys",
|
|
234
|
-
"DEBUG_MODE_WRAPPER_CONSTRUCTOR_AFTER_ADOPT": "UnifiedWrapper constructor - after adopt",
|
|
235
|
-
"DEBUG_MODE_BACKGROUND_MATERIALIZE_ERROR": "Background materialization error",
|
|
236
|
-
"DEBUG_MODE_APPLY_IMPL_UPDATE_PATH": "[APPLY-IMPL-UPDATE-PATH]: updated filePath from null",
|
|
237
|
-
"DEBUG_MODE_SETIMPL_CALLED": "___setImpl called",
|
|
238
|
-
"DEBUG_MODE_RESETLAZY_CALLED": "___resetLazy called",
|
|
239
|
-
"DEBUG_MODE_RESETLAZY_COMPLETE": "___resetLazy complete - wrapper is now un-materialized",
|
|
240
|
-
"DEBUG_MODE_MATERIALIZE_AWAIT": "[MATERIALIZE-AWAIT]: awaiting existing materialization promise",
|
|
241
|
-
"DEBUG_MODE_MATERIALIZE_START": "_materialize start",
|
|
242
|
-
"DEBUG_MODE_MATERIALIZE_CALLING_FUNC": "_materialize calling materializeFunc",
|
|
243
|
-
"DEBUG_MODE_MATERIALIZE_COMPLETE": "_materialize complete",
|
|
244
|
-
"DEBUG_MODE_MATERIALIZE_ERROR": "_materialize error",
|
|
245
|
-
"DEBUG_MODE_ADOPT_START": "ADOPT-START",
|
|
246
|
-
"DEBUG_MODE_ADOPT": "ADOPT",
|
|
247
|
-
"DEBUG_MODE_ADOPT_REPLACE_CLEARING": "[ADOPT]: REPLACE MODE - Clearing existing properties",
|
|
248
|
-
"DEBUG_MODE_ADOPT_PROCESS": "ADOPT-PROCESS",
|
|
249
|
-
"DEBUG_MODE_ADOPT_CHECK": "ADOPT-CHECK",
|
|
250
|
-
"DEBUG_MODE_ADOPT_SKIP_COLLISION_MERGED": "[ADOPT-SKIP]: is collision-merged, keeping file version",
|
|
251
|
-
"DEBUG_MODE_ADOPT_SKIP_NON_CONFIGURABLE": "[ADOPT-SKIP]: property is non-configurable (inherited)",
|
|
252
|
-
"DEBUG_MODE_ADOPT_SKIP_SAME_WRAPPER": "[ADOPT-SKIP]: property already exists with same wrapper",
|
|
253
|
-
"DEBUG_MODE_ADOPT_ALLOW_NOT_COLLISION_MERGED": "[ADOPT-ALLOW]: is NOT collision-merged, allowing",
|
|
254
|
-
"DEBUG_MODE_ADOPT_REUSE_CHILD_WRAPPER": "[ADOPT-REUSE]: Reused existing child wrapper",
|
|
255
|
-
"DEBUG_MODE_ADOPT_WRAP": "ADOPT-WRAP",
|
|
256
|
-
"DEBUG_MODE_ADOPT_DEFINE": "[ADOPT-DEFINE]: defining on wrapper",
|
|
257
|
-
"DEBUG_MODE_ADOPT_DEFINED": "[ADOPT-DEFINED]: defined successfully on wrapper",
|
|
258
|
-
"DEBUG_MODE_WRAP_CHILD_PATH_CHECK": "[WRAP-CHILD-PATH]: checking for child file path",
|
|
259
|
-
"DEBUG_MODE_WRAP_CHILD_PATH_AVAILABLE": "[WRAP-CHILD-PATH]: __childFilePaths available",
|
|
260
|
-
"DEBUG_MODE_WRAP_CHILD_PATH_USING": "[WRAP-CHILD-PATH]: Using __childFilePaths",
|
|
261
|
-
"DEBUG_MODE_WRAP_CHILD_PATH_PRE_MAT": "[WRAP-CHILD-PATH]: Using __childFilePathsPreMaterialize",
|
|
262
|
-
"DEBUG_MODE_WRAP_CHILD_PATH_FALLBACK": "[WRAP-CHILD-PATH]: Using fallback parentMetadata?.filePath",
|
|
263
|
-
"DEBUG_MODE_WAITING_TYPE": "WAITING-TYPE",
|
|
264
|
-
"DEBUG_MODE_WAITING_TYPE_WALK_WRAPPER": "[WAITING-TYPE-WALK]: found in wrapper",
|
|
265
|
-
"DEBUG_MODE_WAITING_TYPE_WALK_IMPL": "[WAITING-TYPE-WALK]: found in _impl",
|
|
266
|
-
"DEBUG_MODE_WAITING_TYPE_WALK_DIRECT": "[WAITING-TYPE-WALK]: accessed directly",
|
|
267
|
-
"DEBUG_MODE_WAITING_TYPE_RESOLVED": "WAITING-TYPE-RESOLVED",
|
|
268
|
-
"DEBUG_MODE_WAITING_TYPE_INFLIGHT": "[WAITING-TYPE-INFLIGHT]: returning IN_FLIGHT",
|
|
269
|
-
"DEBUG_MODE_WAITING_GET_PREMATURE": "[WAITING-GET-PREMATURE]: found in wrapper before materialization",
|
|
270
|
-
"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT": "[WAITING-GET-IMMEDIATE-MAT]: triggering immediate materialization for collision-merged folder",
|
|
271
|
-
"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_ERROR": "[WAITING-GET-IMMEDIATE-MAT-ERROR]: materialization failed",
|
|
272
|
-
"DEBUG_MODE_WAITING_GET_IMMEDIATE_MAT_SUCCESS": "[WAITING-GET-IMMEDIATE-MAT-SUCCESS]: now available in wrapper",
|
|
273
|
-
"DEBUG_MODE_WAITING_APPLY_ENTRY": "WAITING-APPLY-ENTRY",
|
|
274
|
-
"DEBUG_MODE_WAITING_APPLY_MATERIALIZE": "[WAITING-APPLY-MATERIALIZE]: Triggering materialization",
|
|
275
|
-
"DEBUG_MODE_WAITING_APPLY_MATERIALIZED": "[WAITING-APPLY-MATERIALIZED]: Materialization complete",
|
|
276
|
-
"DEBUG_MODE_WAITING_APPLY_START_WALK": "[WAITING-APPLY-START-WALK]: Starting propChain walk",
|
|
277
|
-
"DEBUG_MODE_WAITING_APPLY_WALK": "WAITING-APPLY-WALK",
|
|
278
|
-
"DEBUG_MODE_WAITING_APPLY": "WAITING-APPLY",
|
|
279
|
-
"DEBUG_MODE_GET_START": "GET-START",
|
|
280
|
-
"DEBUG_MODE_INSPECT_LAZY_UNMATERIALIZED": "util.inspect.custom: Lazy unmaterialized",
|
|
281
|
-
"DEBUG_MODE_GET_CACHED_REPLACE": "GET-CACHED-REPLACE",
|
|
282
|
-
"DEBUG_MODE_GET_CACHED": "GET-CACHED",
|
|
283
|
-
"DEBUG_MODE_GET_PROXYGET_ACCESSING": "[GET-PROXYGET]: Accessing",
|
|
284
|
-
"DEBUG_MODE_GET_PROXYGET_FOUND": "[GET-PROXYGET]: Found in wrapper",
|
|
285
|
-
"DEBUG_MODE_LAZY_GET_CREATE_WAITING_PROXY": "[LAZY-GET]: will create waiting proxy",
|
|
286
|
-
"DEBUG_MODE_BUILD_LAZY_API_CALLED": "buildLazyAPI called",
|
|
287
|
-
"DEBUG_MODE_COMPONENT_INITIALIZED": "Component initialized: {component} → this.{category}.{propertyName}",
|
|
288
|
-
"DEBUG_MODE_LAZY_WRAPPER_REGISTERED": "Lazy wrapper registered",
|
|
289
|
-
"DEBUG_MODE_LAZY_WRAPPER_MATERIALIZED": "Lazy wrapper materialized",
|
|
290
|
-
"DEBUG_MODE_ALL_LAZY_WRAPPERS_MATERIALIZED": "All lazy wrappers materialized",
|
|
291
|
-
"HINT_REFERENCE_REMOVED": "The 'reference' export has been removed from '@cldmv/slothlet/runtime'. Reference objects are now merged directly into the API. Access them via 'self.*' instead (e.g., 'self.myRefProperty').",
|
|
292
|
-
"HINT_SYNTAX_ERROR": "Check for syntax errors in the module file. Common issues: missing brackets, unclosed strings, or invalid JavaScript syntax.",
|
|
293
|
-
"INVALID_HOOK_HANDLER": "Hook handler must be a function. Received type: {receivedType}.",
|
|
294
|
-
"HINT_INVALID_HOOK_HANDLER": "Provide a function as the hook handler, not a string or other type.",
|
|
295
|
-
"DUPLICATE_HOOK_ID": "A hook with ID \"{id}\" already exists. Use a unique ID or omit the id option to auto-generate one.",
|
|
296
|
-
"HINT_DUPLICATE_HOOK_ID": "Either use a different id value or remove the id option to let Slothlet auto-generate a unique ID.",
|
|
297
|
-
"INVALID_HOOK_SUBSET": "Invalid hook subset \"{subset}\". Must be \"before\", \"primary\", or \"after\". Valid subsets: {validSubsets}.",
|
|
298
|
-
"HINT_INVALID_HOOK_SUBSET": "Subsets control execution order. Use 'before' for pre-processing, 'primary' (default) for main hooks, or 'after' for post-processing.",
|
|
299
|
-
"INVALID_TYPE_PATTERN": "Invalid type pattern \"{typePattern}\". {expected}",
|
|
300
|
-
"HINT_INVALID_TYPE_PATTERN": "Hook patterns use the form 'pattern:type', such as 'math.*:before' or '**:error'. The legacy 'type:pattern' form still works but is deprecated.",
|
|
301
|
-
"HOOK_BEFORE_RETURNED_PROMISE": "Before hook '{id}' for path '{path}' returned a Promise. Before hooks must be synchronous.",
|
|
302
|
-
"HINT_HOOK_BEFORE_RETURNED_PROMISE": "Before hooks execute synchronously before the API call. Remove async/await or Promise usage from this hook, or change it to an 'after' hook if async processing is needed.",
|
|
303
|
-
"HOOK_BRACE_EXPANSION_MAX_DEPTH": "Brace expansion in hook pattern exceeds the maximum nesting depth of {maxDepth}.",
|
|
304
|
-
"HINT_HOOK_BRACE_EXPANSION_MAX_DEPTH": "Simplify the hook path pattern to reduce brace nesting. Maximum allowed depth is {maxDepth} levels.",
|
|
305
|
-
"SCOPE_DISABLED": "Per-request context isolation is disabled. Set 'scope: {}' in your slothlet configuration to enable it.",
|
|
306
|
-
"HINT_SCOPE_DISABLED": "Add 'scope: {}' (or a scope config object) to your slothlet options to enable per-request context isolation via api.slothlet.run() and api.slothlet.scope().",
|
|
307
|
-
"SCOPE_INVALID_CONTEXT": "Context data must be a plain object. Received: {received}.",
|
|
308
|
-
"HINT_SCOPE_INVALID_CONTEXT": "Pass a plain object as the first argument to run(), e.g. api.slothlet.run({ userId: 1 }, callback).",
|
|
309
|
-
"SCOPE_INVALID_CALLBACK": "Callback must be a function. Received: {received}.",
|
|
310
|
-
"HINT_SCOPE_INVALID_CALLBACK": "Pass a function as the second argument to run(), e.g. api.slothlet.run(context, async () => { ... }).",
|
|
311
|
-
"SCOPE_INVALID_OPTIONS": "Options must be a plain object. Received: {received}.",
|
|
312
|
-
"HINT_SCOPE_INVALID_OPTIONS": "Pass a plain options object to scope(), e.g. api.slothlet.scope({ fn: myFunc, context: {} }).",
|
|
313
|
-
"SCOPE_INVALID_FN": "'fn' must be a function. Received: {received}.",
|
|
314
|
-
"HINT_SCOPE_INVALID_FN": "Set options.fn to the function you want to execute in the isolated context.",
|
|
315
|
-
"SCOPE_INVALID_CONTEXT_OBJECT": "'context' must be a plain object. Received: {received}.",
|
|
316
|
-
"HINT_SCOPE_INVALID_CONTEXT_OBJECT": "Set options.context to a plain object containing the per-request data to inject.",
|
|
317
|
-
"SCOPE_INVALID_MERGE_STRATEGY": "Invalid merge strategy '{merge}'. Must be 'shallow' or 'deep'.",
|
|
318
|
-
"HINT_SCOPE_INVALID_MERGE_STRATEGY": "Use merge: 'shallow' (default) for a top-level merge of the context object, or merge: 'deep' for a recursive deep merge.",
|
|
319
|
-
"SCOPE_INVALID_ISOLATION_MODE": "Invalid isolation mode '{isolationMode}'. Must be 'partial' or 'full'.",
|
|
320
|
-
"HINT_SCOPE_INVALID_ISOLATION_MODE": "Use isolation: 'partial' (default) to inherit the parent context and overlay new values, or isolation: 'full' to start with a completely fresh context.",
|
|
321
|
-
"CHAIN_ACCESS_UNDEFINED": "Cannot access '{prop}' on undefined while traversing '{apiPath}.{chainLabel}'.",
|
|
322
|
-
"HINT_CHAIN_ACCESS_UNDEFINED": "A property in the method chain resolved to undefined before reaching the target. Check that every intermediate property in the chain is a valid API path.",
|
|
323
|
-
"CHAIN_MATERIALIZE_FAILED": "Failed to materialize '{prop}' while traversing '{apiPath}.{chainLabel}'.",
|
|
324
|
-
"HINT_CHAIN_MATERIALIZE_FAILED": "The lazy API module at this path failed to load. Check that the module file exists and exports valid values.",
|
|
325
|
-
"CHAIN_NOT_CALLABLE": "'{apiPath}.{chainLabel}' is not callable or does not exist.",
|
|
326
|
-
"HINT_CHAIN_NOT_CALLABLE": "The chained property resolved to a non-function value. Ensure the API path refers to a function, or check that the module exports the expected function.",
|
|
327
|
-
"TYPESCRIPT_ESBUILD_NOT_INSTALLED": "TypeScript {mode} mode requires 'esbuild' to be installed.",
|
|
328
|
-
"HINT_TYPESCRIPT_ESBUILD_NOT_INSTALLED": "Install it with: npm install esbuild",
|
|
329
|
-
"TYPESCRIPT_TSC_NOT_INSTALLED": "TypeScript {mode} mode requires 'typescript' to be installed.",
|
|
330
|
-
"HINT_TYPESCRIPT_TSC_NOT_INSTALLED": "Install it with: npm install typescript",
|
|
331
|
-
"TYPESCRIPT_NOT_INSTALLED": "Type generation ({feature}) requires 'typescript' to be installed.",
|
|
332
|
-
"HINT_TYPESCRIPT_NOT_INSTALLED": "Tip: For type generation, install: npm install typescript",
|
|
333
|
-
"TS_STRICT_REQUIRES_OUTPUT": "TypeScript strict mode requires 'types.output' to be configured in your typescript config.",
|
|
334
|
-
"HINT_TS_STRICT_REQUIRES_OUTPUT": "Add 'types: { output: './types/api.d.ts', interfaceName: 'MyAPI' }' to your typescript configuration.",
|
|
335
|
-
"TS_STRICT_REQUIRES_INTERFACE_NAME": "TypeScript strict mode requires 'types.interfaceName' to be configured in your typescript config.",
|
|
336
|
-
"HINT_TS_STRICT_REQUIRES_INTERFACE_NAME": "Add 'interfaceName' to your 'types' config, e.g. types: { output: './types/api.d.ts', interfaceName: 'MyAPI' }.",
|
|
337
|
-
"TS_TYPE_GENERATION_FAILED": "Type generation failed: {error}",
|
|
338
|
-
"HINT_TS_TYPE_GENERATION_FAILED": "The child process that generates TypeScript declarations encountered an error. Check the error message for details and ensure the TypeScript source files are valid.",
|
|
339
|
-
"TS_TYPE_GENERATION_FORK_FAILED": "Failed to fork the type generation process: {error}",
|
|
340
|
-
"HINT_TS_TYPE_GENERATION_FORK_FAILED": "The type generation worker process could not be started. Ensure Node.js has permission to fork child processes and that the tools/build/generate-types-worker.mjs script exists.",
|
|
341
|
-
"TS_TYPE_GENERATION_PROCESS_EXITED": "Type generation process exited with code {code}: {output}",
|
|
342
|
-
"HINT_TS_TYPE_GENERATION_PROCESS_EXITED": "The type generation child process exited with a non-zero code. Check the output for compiler errors and verify the TypeScript sources are valid.",
|
|
343
|
-
"TS_TYPE_CHECK_ERRORS": "TypeScript type errors found in '{filePath}':\n{errors}",
|
|
344
|
-
"HINT_TS_TYPE_CHECK_ERRORS": "Fix the TypeScript type errors listed above in the source file, or set typescript.strict to false to skip type checking.",
|
|
345
|
-
"FLATTEN_REASON_MULTI_DEFAULT_WITH_DEFAULT": "Multi-default context with default export",
|
|
346
|
-
"FLATTEN_REASON_MULTI_DEFAULT_WITHOUT_DEFAULT": "Multi-default context without default export",
|
|
347
|
-
"FLATTEN_REASON_ADDAPI_METADATA_DEFAULT": "AddApi special file pattern with metadata default",
|
|
348
|
-
"FLATTEN_REASON_ADDAPI_SPECIAL_FILE": "AddApi special file pattern - always flatten",
|
|
349
|
-
"FLATTEN_REASON_ADDAPI_SPECIAL_FILE_PARENT": "AddApi special file pattern with metadata default - flatten named exports to parent",
|
|
350
|
-
"FLATTEN_REASON_SELF_REFERENTIAL": "Self-referential export detected",
|
|
351
|
-
"FLATTEN_REASON_SINGLE_EXPORT_MATCHES_FILENAME": "Single named export matches filename",
|
|
352
|
-
"FLATTEN_REASON_FILENAME_MATCHES_CATEGORY": "Filename matches category name",
|
|
353
|
-
"FLATTEN_REASON_PRESERVING_FUNCTION_NAME": "Preserving function name over filename",
|
|
354
|
-
"FLATTEN_REASON_DEFAULT_PRESERVE_NAMESPACE": "Default behavior - preserve namespace",
|
|
355
|
-
"FLATTEN_REASON_NO_CONDITIONS_MET": "No flattening conditions met",
|
|
356
|
-
"FLATTEN_REASON_FUNCTION_FOLDER_MATCH": "Function name matches folder name",
|
|
357
|
-
"FLATTEN_REASON_DEFAULT_OBJECT_EXPORT_FLATTEN": "Default object export matches folder name",
|
|
358
|
-
"FLATTEN_REASON_BASENAME_MATCHES_CATEGORY": "File basename matches category name",
|
|
359
|
-
"FLATTEN_REASON_GENERIC_FILENAME_SINGLE_EXPORT": "Generic filename with single export",
|
|
360
|
-
"FLATTEN_REASON_DEFAULT_FUNCTION_EXPORT": "Default function export",
|
|
361
|
-
"FLATTEN_REASON_SINGLE_EXPORT_MATCHES_MODULE": "Single named export matches module name (final check)",
|
|
362
|
-
"INVALID_CONFIG_PATH_TYPE": "Path must be a directory or a supported file type (.mjs, .cjs, .js). Got: {path}",
|
|
363
|
-
"HINT_INVALID_CONFIG_PATH_TYPE": "Ensure the path points to a directory or a JavaScript module file with a .mjs, .cjs, or .js extension.",
|
|
364
|
-
"INVALID_CONFIG_FILE_TYPE": "File must have a .mjs, .cjs, or .js extension. Got: {extension} for {path}",
|
|
365
|
-
"HINT_INVALID_CONFIG_FILE_TYPE": "Rename the file to use a supported extension (.mjs for ES modules, .cjs for CommonJS, .js for either).",
|
|
366
|
-
"API_PATH_REASON_ARRAY_ELEMENTS": "array elements must be strings",
|
|
367
|
-
"API_PATH_REASON_ARRAY_EMPTY_SEGMENTS": "array contains empty string segments",
|
|
368
|
-
"API_PATH_REASON_RESERVED_NAME": "conflicts with reserved names (slothlet, shutdown, destroy)",
|
|
369
|
-
"API_PATH_REASON_INVALID_TYPE": "must be a string, array of strings, empty string (root), or null/undefined (root)",
|
|
370
|
-
"API_PATH_REASON_EMPTY_SEGMENTS": "contains empty path segments",
|
|
371
|
-
"API_PATH_REASON_COLLISION_ERROR": "path already exists and collision mode is 'error'",
|
|
372
|
-
"API_PATH_REASON_NOT_TRAVERSABLE": "path segment does not exist or is not traversable",
|
|
373
|
-
"API_PATH_REASON_REQUIRED": "apiPath is required for removeApi operation",
|
|
374
|
-
"API_PATH_REASON_VERSIONED_ROOT": "versioned API components cannot be mounted at the root path; provide a dot-separated path such as 'auth' or 'v1.auth'",
|
|
375
|
-
"INVALID_API_PATH": "Invalid API path: '{apiPath}' does not exist in the loaded API.",
|
|
376
|
-
"HINT_INVALID_API_PATH": "Ensure the API path exists before using it. Use a dot-separated path (e.g. 'math.add') that refers to a currently loaded module.",
|
|
377
|
-
"HOOKS_NOT_INITIALIZED": "Cannot access hook functionality: the hook manager is not initialized.",
|
|
378
|
-
"HINT_HOOKS_NOT_INITIALIZED": "Hook support requires 'hooks: true' in your slothlet configuration.",
|
|
379
|
-
"METADATA_NOT_AVAILABLE": "Cannot access metadata functionality: the metadata handler is not initialized. Available handlers: {handlersKeys}. This is an internal bug - please report it.",
|
|
380
|
-
"HINT_METADATA_NOT_AVAILABLE": "Metadata support is built-in. If the metadata handler is missing, this indicates an internal slothlet initialization error.",
|
|
381
|
-
"NO_CONTEXT_MANAGER": "No context manager is configured for this slothlet instance.",
|
|
382
|
-
"HINT_NO_CONTEXT_MANAGER": "Context operations require a context manager. Initialize slothlet with 'contextManager: new AsyncContextManager()' or 'contextManager: new LiveContextManager()' in your configuration.",
|
|
383
|
-
"UNSUPPORTED_CONTEXT_MANAGER": "Unsupported context manager: '{manager}'. Only AsyncContextManager and LiveContextManager are supported.",
|
|
384
|
-
"HINT_UNSUPPORTED_CONTEXT_MANAGER": "Use AsyncContextManager for async/ALS-based context isolation or LiveContextManager for synchronous live-binding context.",
|
|
385
|
-
"INVALID_CONFIG_VERSION_DISPATCHER": "config.versionDispatcher must be a string (metadata key) or a function, received {received}",
|
|
386
|
-
"INVALID_CONFIG_VERSION_TAG": "versionConfig.version must be a non-empty string, received {received}",
|
|
387
|
-
"VERSION_NOT_FOUND": "Version '{version}' is not registered at path '{apiPath}'",
|
|
388
|
-
"HINT_VERSION_NOT_FOUND": "Call api.slothlet.versioning.list('{apiPath}') to see which version tags are currently registered at that path.",
|
|
389
|
-
"VERSION_NO_DEFAULT": "No default version configured for path '{apiPath}' and no version could be resolved from caller metadata",
|
|
390
|
-
"VERSION_DISPATCH_NOT_CALLABLE": "The versioned dispatcher at '{apiPath}' is a namespace, not a callable function",
|
|
391
|
-
"VERSION_REGISTER_DUPLICATE": "Version '{version}' is already registered at path '{apiPath}'. Use collisionMode 'replace' to overwrite",
|
|
392
|
-
"HINT_VERSION_REGISTER_DUPLICATE": "Call api.slothlet.versioning.unregister('{apiPath}', '{version}') first, or register with a different version tag.",
|
|
393
|
-
"VERSION_DISCRIMINATOR_INVALID_RETURN": "versionDispatcher function returned '{returned}' which is not a registered version tag for path '{apiPath}'",
|
|
394
|
-
"DEBUG_VERSION_RESOLVED": "Version resolved: {version} for path {apiPath} (caller: {callerModule})",
|
|
395
|
-
"DEBUG_VERSION_DEFAULT_USED": "No discriminator match for path {apiPath}; using default version {version}",
|
|
396
|
-
"DEBUG_VERSION_REGISTERED": "Version {version} registered at {logicalPath} (moduleID: {moduleID})",
|
|
397
|
-
"DEBUG_VERSION_UNREGISTERED": "Version {version} unregistered from {logicalPath}",
|
|
398
|
-
"PERMISSION_DENIED": "Access denied: caller '{caller}' is not permitted to access '{target}'",
|
|
399
|
-
"HINT_PERMISSION_DENIED": "Check permission rules for this caller/target pair. Use api.slothlet.permissions.global.rulesForPath('{target}') to inspect active rules.",
|
|
400
|
-
"PERMISSION_SELF_MODIFY": "Module '{moduleID}' cannot remove its own permission rule '{ruleId}'",
|
|
401
|
-
"HINT_PERMISSION_SELF_MODIFY": "Permission rules are immutable for the owning module. Another module must remove this rule.",
|
|
402
|
-
"INVALID_PERMISSION_RULE": "Invalid permission rule: {reason} (received: {received})",
|
|
403
|
-
"HINT_INVALID_PERMISSION_RULE": "Permission rules require: caller (string glob), target (string glob), and effect ('allow' or 'deny').",
|
|
404
|
-
"DEBUG_PERMISSION_DENIED": "Permission denied: caller '{caller}' -> target '{target}'",
|
|
405
|
-
"DEBUG_PERMISSION_ALLOWED": "Permission allowed: caller '{caller}' -> target '{target}'",
|
|
406
|
-
"DEBUG_PERMISSION_SELF_BYPASS": "Permission self-bypass: caller and target share moduleID '{moduleID}'",
|
|
407
|
-
"DEBUG_PERMISSION_DEFAULT": "Permission default policy applied: caller '{caller}' -> target '{target}' -> {effect}",
|
|
408
|
-
"DEBUG_PERMISSION_RULE_ADDED": "Permission rule added: {ruleId} ({caller} -> {target}: {effect}, owner: {ownerModuleID})",
|
|
409
|
-
"DEBUG_PERMISSION_RULE_REMOVED": "Permission rule removed: {ruleId} ({caller} -> {target}: {effect})",
|
|
410
|
-
"PERM_RULE_NOT_OBJECT": "rule must be a non-null object",
|
|
411
|
-
"PERM_RULE_CALLER_REQUIRED": "rule.caller must be a non-empty string",
|
|
412
|
-
"PERM_RULE_TARGET_REQUIRED": "rule.target must be a non-empty string",
|
|
413
|
-
"PERM_RULE_EFFECT_INVALID": "rule.effect must be 'allow' or 'deny'",
|
|
414
|
-
"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",
|
|
415
|
-
"BRACE_EXPANSION_MAX_DEPTH": "Brace expansion exceeded maximum depth of {maxDepth}",
|
|
416
|
-
"HINT_BRACE_EXPANSION_MAX_DEPTH": "Reduce nesting in your brace patterns or increase the maxDepth option.",
|
|
417
|
-
"PERMISSION_MANAGER_NOT_AVAILABLE": "Permission manager is not available in this Slothlet instance",
|
|
418
|
-
"MODULE_MANIFEST_NOT_FOUND": "Module manifest not found for package '{packageName}': expected '{manifestPath}' but the file does not exist.",
|
|
419
|
-
"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.",
|
|
420
|
-
"MODULE_MANIFEST_INVALID": "Module manifest is invalid for package '{packageName}' at '{manifestPath}': {reason}.",
|
|
421
|
-
"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.",
|
|
422
|
-
"MODULE_MANIFEST_REASON_NOT_OBJECT": "manifest must be a JSON object",
|
|
423
|
-
"MODULE_MANIFEST_REASON_MISSING_FIELD": "missing required field '{field}'",
|
|
424
|
-
"MODULE_MANIFEST_REASON_FIELD_TYPE": "field '{field}' must be {expected}",
|
|
425
|
-
"EXPECTED_NON_EMPTY_STRING": "a non-empty string",
|
|
426
|
-
"EXPECTED_STRING": "a string",
|
|
427
|
-
"EXPECTED_FINITE_NUMBER": "a finite number",
|
|
428
|
-
"EXPECTED_PLAIN_OBJECT": "a plain object",
|
|
429
|
-
"EXPECTED_ARRAY_OF_RULE_OBJECTS": "an array of rule objects",
|
|
430
|
-
"MODULE_MANIFEST_REASON_MOUNTPATH_SHAPE": "field 'mountPath' must be a non-empty string or non-empty array of non-empty strings",
|
|
431
|
-
"MODULE_MANIFEST_REASON_MOUNTPATH_ENTRIES": "field 'mountPath' array entries must all be non-empty strings",
|
|
432
|
-
"MODULE_MANIFEST_REASON_DEPENDENCY_TYPE": "dependency '{dependency}' must be a string version range",
|
|
433
|
-
"MODULE_MANIFEST_REASON_PERMISSION_RULE": "permissions[{index}] must be a rule object",
|
|
434
|
-
"MODULE_MANIFEST_REASON_PERMISSION_CALLER": "permissions[{index}].caller must be a non-empty string",
|
|
435
|
-
"MODULE_MANIFEST_REASON_PERMISSION_TARGET": "permissions[{index}].target must be a non-empty string",
|
|
436
|
-
"MODULE_MANIFEST_REASON_PERMISSION_EFFECT": "permissions[{index}].effect must be \"allow\" or \"deny\"",
|
|
437
|
-
"MODULE_MANIFEST_REASON_JSON_PARSE": "JSON parse error: {error}",
|
|
438
|
-
"GENERATE_MANIFEST_DIR_INVALID": "generateManifest: dir must be a non-empty string, received {received}",
|
|
439
|
-
"GENERATE_MANIFEST_DIR_UNREADABLE": "generateManifest: cannot read directory \"{dir}\": {reason}",
|
|
440
|
-
"GENERATE_MANIFEST_NOT_DIRECTORY": "generateManifest: \"{dir}\" is not a directory",
|
|
441
|
-
"GENERATE_BROWSER_ASSETS_SLOTHLET_BASE_INVALID": "generateBrowserAssets: options.slothletBase must be a string (where @cldmv/slothlet is served in the browser), received {received}",
|
|
442
|
-
"MODULE_MANIFEST_UNKNOWN_FIELD": "Module manifest for package '{packageName}' at '{manifestPath}' contains unrecognised top-level field '{field}'. Unknown fields are rejected; use the dedicated 'metadata' block for developer-defined extras.",
|
|
443
|
-
"HINT_MODULE_MANIFEST_UNKNOWN_FIELD": "If '{field}' is a typo, fix it. If it is intentional developer metadata, move it inside the 'metadata' object.",
|
|
444
|
-
"MODULE_MANIFEST_NAME_MISMATCH": "Module manifest for package '{packageName}' declares name '{manifestName}' which does not match package.json name '{packageName}'.",
|
|
445
|
-
"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.",
|
|
446
|
-
"MODULE_MANIFEST_VERSION_MISMATCH": "Module manifest for package '{packageName}' declares version '{manifestVersion}' which does not match package.json version '{packageVersion}'.",
|
|
447
|
-
"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.",
|
|
448
|
-
"MODULE_PATH_TRAVERSAL": "Module package '{packageName}' has apiDir '{apiDir}' that resolves outside the package root ('{resolvedPath}' is not under '{packageRoot}').",
|
|
449
|
-
"HINT_MODULE_PATH_TRAVERSAL": "apiDir must be a relative path that stays inside the package. Remove '..' segments and absolute paths.",
|
|
450
|
-
"MODULE_VERSION_UNSUPPORTED": "Module manifest for package '{packageName}' uses unsupported schemaVersion '{schemaVersion}'. Supported: 1.",
|
|
451
|
-
"HINT_MODULE_VERSION_UNSUPPORTED": "Upgrade slothlet to a version that supports schemaVersion {schemaVersion}, or update the manifest to use schemaVersion 1.",
|
|
452
|
-
"MODULE_PACKAGE_NOT_FOUND": "Module package '{packageName}' was not found in the discovery cache. {hint}",
|
|
453
|
-
"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.",
|
|
454
|
-
"MODULE_RESERVED_MOUNTPATH": "Module package '{packageName}' declares reserved mountPath root '{mountPathRoot}' (from mountPath '{mountPath}'). Reserved roots: slothlet, shutdown, destroy.",
|
|
455
|
-
"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.",
|
|
456
|
-
"MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "Module package '{packageName}' version '{version}' was found at multiple distinct real paths: {paths}.",
|
|
457
|
-
"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.",
|
|
458
|
-
"MODULE_MOUNT_COLLISION": "Module package '{packageName}' cannot mount at '{mountPath}': path is already occupied by module '{existingModuleID}' and collisionMode is '{collisionMode}'.",
|
|
459
|
-
"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.",
|
|
460
|
-
"HOOK_TYPEPATTERN_PREFIX_DEPRECATED": "Hook registration form '{given}' is deprecated and will be removed in v4. Use the path-first form '{suggested}' instead (e.g. 'math.*:before').",
|
|
461
|
-
"HINT_HOOK_TYPEPATTERN_PREFIX_DEPRECATED": "Move the hook type to the end as a suffix: rewrite a type-first selector like 'before:math.add' as the path-first form 'math.add:before'.",
|
|
462
|
-
"HOOK_UNPINNED_IGNORED": "lockCaller:false was ignored for hook '{pattern}'; hooks are pinned to their registering module. Set hook.pin:false (init) or call api.slothlet.hook.pin.disable() to permit unpinned hooks.",
|
|
463
|
-
"HINT_HOOK_UNPINNED_IGNORED": "Module-registered hooks are always pinned to their owner for security. To allow unpinned hooks, set hook.pin:false in the slothlet config, or call api.slothlet.hook.pin.disable() at runtime."
|
|
464
|
-
},
|
|
465
|
-
"metadata": {
|
|
466
|
-
"code": "en-gb",
|
|
467
|
-
"name": "English (UK)",
|
|
468
|
-
"nativeName": "English (UK)"
|
|
469
|
-
}
|
|
470
|
-
}
|