@cldmv/slothlet 3.9.1 → 3.10.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 (49) hide show
  1. package/README.md +29 -17
  2. package/REFERENCE.md +19 -19
  3. package/dist/lib/builders/api_builder.mjs +1 -1
  4. package/dist/lib/builders/builder.mjs +1 -1
  5. package/dist/lib/builders/modes-processor.mjs +1 -1
  6. package/dist/lib/handlers/api-cache-manager.mjs +1 -1
  7. package/dist/lib/handlers/api-manager.mjs +1 -1
  8. package/dist/lib/handlers/hook-manager.mjs +1 -1
  9. package/dist/lib/handlers/permission-manager.mjs +1 -1
  10. package/dist/lib/helpers/class-instance-wrapper.mjs +1 -1
  11. package/dist/lib/helpers/config.mjs +1 -1
  12. package/dist/lib/helpers/generate-manifest.mjs +1 -1
  13. package/dist/lib/helpers/module-discovery.mjs +1 -1
  14. package/dist/lib/helpers/module-manifest-validator.mjs +1 -1
  15. package/dist/lib/i18n/languages/de-de.json +90 -64
  16. package/dist/lib/i18n/languages/en-gb.json +90 -64
  17. package/dist/lib/i18n/languages/en-us.json +90 -64
  18. package/dist/lib/i18n/languages/es-es.json +90 -64
  19. package/dist/lib/i18n/languages/es-mx.json +90 -64
  20. package/dist/lib/i18n/languages/fr-fr.json +90 -64
  21. package/dist/lib/i18n/languages/hi-in.json +90 -64
  22. package/dist/lib/i18n/languages/ja-jp.json +90 -64
  23. package/dist/lib/i18n/languages/ko-kr.json +90 -64
  24. package/dist/lib/i18n/languages/pt-br.json +90 -64
  25. package/dist/lib/i18n/languages/ru-ru.json +92 -66
  26. package/dist/lib/i18n/languages/zh-cn.json +90 -64
  27. package/dist/lib/modes/eager.mjs +1 -1
  28. package/dist/lib/modes/lazy.mjs +1 -1
  29. package/package.json +7 -4
  30. package/types/dist/lib/builders/api_builder.d.mts.map +1 -1
  31. package/types/dist/lib/builders/builder.d.mts.map +1 -1
  32. package/types/dist/lib/builders/modes-processor.d.mts.map +1 -1
  33. package/types/dist/lib/handlers/api-cache-manager.d.mts.map +1 -1
  34. package/types/dist/lib/handlers/api-manager.d.mts.map +1 -1
  35. package/types/dist/lib/handlers/hook-manager.d.mts +10 -3
  36. package/types/dist/lib/handlers/hook-manager.d.mts.map +1 -1
  37. package/types/dist/lib/handlers/permission-manager.d.mts +2 -0
  38. package/types/dist/lib/handlers/permission-manager.d.mts.map +1 -1
  39. package/types/dist/lib/helpers/class-instance-wrapper.d.mts.map +1 -1
  40. package/types/dist/lib/helpers/config.d.mts +13 -0
  41. package/types/dist/lib/helpers/config.d.mts.map +1 -1
  42. package/types/dist/lib/helpers/generate-manifest.d.mts +10 -0
  43. package/types/dist/lib/helpers/generate-manifest.d.mts.map +1 -1
  44. package/types/dist/lib/helpers/module-discovery.d.mts.map +1 -1
  45. package/types/dist/lib/helpers/module-manifest-validator.d.mts.map +1 -1
  46. package/types/dist/lib/modes/eager.d.mts +2 -1
  47. package/types/dist/lib/modes/eager.d.mts.map +1 -1
  48. package/types/dist/lib/modes/lazy.d.mts +2 -1
  49. package/types/dist/lib/modes/lazy.d.mts.map +1 -1
@@ -1,54 +1,110 @@
1
1
  {
2
2
  "translations": {
3
3
  "INVALID_CONFIG": "구동 설정 오류: {option}은(는) {value}이며, {expected}이(가) 필요합니다. {hint}",
4
+ "HINT_INVALID_CONFIG": "설정 값을 확인하고 예상되는 유형 및 형식과 일치하는지 확인하십시오.",
5
+ "INVALID_CONFIG_SYNTHETIC_EXPORTS_SHAPE": "설정 오류: 인라인 exports는 { default?, ...named }의 일반 객체여야 합니다. 받은 값: {received}.",
6
+ "HINT_INVALID_CONFIG_SYNTHETIC_EXPORTS_SHAPE": "exports를 일반 객체로 전달하세요. 예: { default: fn } 또는 { name: fn } — 또는 { exports: { default?, ...named } } 래퍼나 단독 함수.",
7
+ "INVALID_CONFIG_SYNTHETIC_INPUT": "설정 오류: 인라인 콘텐츠는 { default?, ...named } exports의 일반 객체, { exports: … } 래퍼, 또는 단독 함수여야 합니다. 받은 값: {received}.",
8
+ "HINT_INVALID_CONFIG_SYNTHETIC_INPUT": "인라인 exports를 일반 객체 또는 단독 함수로 전달하세요. 파일 시스템 마운트에는 문자열 경로가 필요합니다.",
9
+ "INVALID_CONFIG_SYNTHETIC_NAME": "설정 오류: syntheticName은 비어 있지 않은 문자열이어야 합니다. 받은 값: {received}.",
10
+ "HINT_INVALID_CONFIG_SYNTHETIC_NAME": "synthetic 빌드의 문자열 키 이름을 제공하세요. 예: \"synthetic\".",
11
+ "INVALID_CONFIG_PRELOADED_STRUCTURE": "구성 오류: preloadedStructure는 files 및 directories 배열을 가진 일반 객체여야 합니다. 받은 값: {received}.",
12
+ "HINT_INVALID_CONFIG_PRELOADED_STRUCTURE": "preloadedStructure는 내부적으로 생성됩니다. files 및 directories 배열을 가진 객체를 전달하거나 디렉터리를 스캔하려면 생략하십시오.",
4
13
  "INVALID_CONFIG_DIR_MISSING": "설정 오류: 'dir' 옵션이 필요합니다. API를 로드할 디렉토리 경로를 제공하십시오.",
14
+ "HINT_INVALID_CONFIG_DIR_MISSING": "디렉토리 경로가 필요하지만 제공되지 않았습니다.",
5
15
  "INVALID_CONFIG_BROWSER_REQUIRES_MANIFEST": "구성 오류: env가 'browser'일 때 'manifest'가 필요합니다. 'files' 및 'directories' 배열이 포함된 사전 생성된 manifest 객체를 제공하세요.",
6
16
  "INVALID_CONFIG_BROWSER_MANIFEST_INVALID": "구성 오류: 'manifest'는 'files' 및 'directories' 배열이 있는 일반 객체여야 합니다. 수신됨: {received}",
7
17
  "INVALID_CONFIG_BROWSER_RESOLVE_SPECIFIER_INVALID": "구성 오류: env가 'browser'일 때 'resolveModuleSpecifier'는 함수여야 합니다. 수신됨: {received}",
8
18
  "INVALID_CONFIG_DIR_INVALID": "설정 오류: 'dir'은 비어 있지 않은 문자열 경로여야 합니다. 받은 값: {dir}",
19
+ "HINT_INVALID_CONFIG_DIR_INVALID": "디렉토리 경로가 유효한 문자열이고 존재하는 디렉토리를 가리키는지 확인하십시오.",
9
20
  "INVALID_CONFIG_MODE_INVALID": "설정 오류: 'mode'는 'eager' 또는 'lazy'여야 합니다. 받은 값: {value}",
21
+ "HINT_INVALID_CONFIG_MODE_INVALID": "모드는 'eager' 또는 'lazy'여야 합니다.",
10
22
  "INVALID_CONFIG_NOT_LOADED": "'{operation}' 작업을 수행할 수 없습니다 - 인스턴스가 로드되지 않았습니다. load()를 먼저 호출하십시오.",
23
+ "HINT_INVALID_CONFIG_NOT_LOADED": "이 작업을 수행하기 전에 인스턴스를 로드해야 합니다. 먼저 load()를 호출하십시오.",
11
24
  "INVALID_CONFIG_LAZY_MATERIALIZATION_FAILED": "'{apiPath}'에 대한 지연 프록시 구체화에 실패했습니다. 모듈이 올바르게 로드되는지 확인하십시오.",
12
25
  "INVALID_CONFIG_NOT_A_FUNCTION": "'{apiPath}'을(를) 호출할 수 없습니다 - 함수가 아닙니다({actualType} 확인됨). 모듈이 호출 가능한 함수를 내보내는지 확인하십시오.",
13
26
  "INVALID_CONFIG_API_PATH_INVALID": "유효하지 않은 API 경로 '{apiPath}': {reason}. API 경로는 비어 있지 않아야 하며, 예약어와 충돌하지 않는 올바른 점 표기법 문자열이어야 합니다. 인덱스 {index}의 세그먼트: '{segment}'.",
27
+ "HINT_INVALID_CONFIG_API_PATH_INVALID": "API 경로가 빈 세그먼트나 예약어(slothlet, shutdown, destroy)가 없는 유효한 점 표기법 문자열(예: 'plugins.tools')인지 확인하십시오.",
14
28
  "INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "설정 오류: forceOverwrite/allowOverwrite를 사용하려면 moduleID가 필요합니다. API 경로 '{apiPath}'에 대해 덮어쓰기 옵션을 사용할 때 고유한 moduleID를 제공하십시오.",
29
+ "HINT_INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "forceOverwrite 또는 allowOverwrite를 사용할 때, 덮어씌워진 경로의 소유권을 추적하기 위해 고유한 moduleID를 제공해야 합니다.",
15
30
  "INVALID_METADATA_TARGET": "유효하지 않은 메타데이터 대상: {expected}이(가) 필요하지만 {target}을(를) 받았습니다. 메타데이터 작업에는 함수 또는 객체 참조가 필요합니다.",
31
+ "HINT_INVALID_METADATA_TARGET": "대상은 Slothlet을 통해 로드된 함수나 객체여야 합니다. 문자열이나 원시 값이 아닌 실제 함수/객체 참조를 전달하십시오.",
16
32
  "METADATA_NO_MODULE_ID": "사용자 메타데이터를 설정할 수 없습니다: 시스템 메타데이터에서 moduleID를 찾을 수 없습니다. 대상 함수/객체가 Slothlet을 통해 로드되었는지 확인하십시오.",
33
+ "HINT_METADATA_NO_MODULE_ID": "함수/객체가 Slothlet의 모듈 시스템을 통해 로드되었는지 확인하십시오. Slothlet이 관리하는 함수만 연결된 메타데이터를 가집니다.",
17
34
  "METADATA_LIFECYCLE_BYPASS": "tagSystemMetadata()는 수명 주기 시스템을 통해 호출되어야 합니다. 직접 호출 대신 lifecycle.emit('impl:created') 또는 lifecycle.emit('impl:changed')를 사용하십시오.",
35
+ "HINT_METADATA_LIFECYCLE_BYPASS": "tagSystemMetadata()를 직접 호출하지 마십시오. 대신 'impl:created' 또는 'impl:changed' 수명 주기 이벤트를 트리거하면 적절한 채널을 통해 tagSystemMetadata()가 호출됩니다.",
18
36
  "INVALID_METADATA_KEY": "유효하지 않은 메타데이터 키: {expected}이(가) 필요하지만 키 '{key}'에 대해 {type}을(를) 받았습니다. 메타데이터 키는 올바른 형식이어야 합니다.",
37
+ "HINT_INVALID_METADATA_KEY": "메타데이터 키는 문자열, 문자열 배열, 또는 배열 값을 가진 객체여야 합니다. 키 형식이 이러한 유형 중 하나와 일치하는지 확인하십시오.",
19
38
  "WARNING_METADATA_MISMATCH": "보안 경고: '{apiPath}'에 대한 메타데이터 파일 경로가 일치하지 않습니다. 스택 추적에는 '{stackFile}'로 표시되지만 메타데이터에는 '{metadataFile}'로 표시됩니다. 이는 핫 리로드 또는 변조를 나타낼 수 있습니다.",
39
+ "HINT_WARNING_METADATA_MISMATCH": "이 경고는 함수의 실행 위치가 등록된 메타데이터 경로와 일치하지 않음을 나타냅니다. 이는 핫 리로드 중에 또는 함수가 변조된 경우 발생할 수 있습니다. 대부분의 경우 핫 리로드가 활성화된 개발 중에는 예상되는 상황입니다.",
20
40
  "COLLISION_ERROR": "'{key}'에서 충돌 오류 발생 (컨텍스트: {collisionContext}, 모드: {collisionMode}). 충돌을 처리하려면 충돌 모드를 'merge', 'replace', 'warn' 또는 'skip'으로 설정하십시오.",
41
+ "HINT_COLLISION_ERROR": "충돌 모드가 'error'로 설정되어 있어 덮어쓰기가 방지되었습니다. 대신 'merge'(속성 결합), 'replace'(완전 덮어쓰기), 'warn'(경고를 출력하고 기존 항목 유지), 또는 'skip'(조용히 무시)을 사용하십시오.",
21
42
  "COLLISION_DEFAULT_EXPORT_ERROR": "충돌 감지: '{apiPath}'의 기본 내보내기에 '{key}' 속성이 이미 존재합니다. 충돌 모드가 'error'입니다.",
43
+ "HINT_COLLISION_DEFAULT_EXPORT_ERROR": "명명된 내보내기가 해당 경로의 기본 내보내기 객체에 이미 존재하는 속성과 충돌합니다. 충돌 모드를 'merge', 'replace', 'warn' 또는 'skip'으로 변경하거나 충돌하는 속성의 이름을 바꾸십시오.",
22
44
  "INVALID_ARGUMENT": "유효하지 않은 인수 '{argument}': {expected}이(가) 필요하지만 {received}을(를) 받았습니다.",
45
+ "HINT_INVALID_ARGUMENT": "경로는 'math.add'와 같은 점 표기법 문자열이어야 합니다.",
23
46
  "RUNTIME_NO_ACTIVE_CONTEXT": "활성 컨텍스트를 찾을 수 없습니다. 이 작업은 slothlet API 함수 내에서 호출되어야 합니다.",
47
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT": "metadata.self()는 Slothlet API 함수 내에서 호출되어야 합니다.",
24
48
  "INVALID_CONFIG_MUTATIONS_DISABLED": "'{operation}'을 수행할 수 없습니다 - 변경이 비활성화되었습니다. API 수정 작업(추가/제거/재로드)을 활성화하려면 allowMutation: true를 설정하십시오.",
49
+ "HINT_INVALID_CONFIG_MUTATIONS_DISABLED": "API 수정 작업에는 설정에서 allowMutation: true가 필요합니다. 실제 수정을 활성화하지 않고 테스트용으로 이 메서드들을 사용하려면 diagnostics: true를 사용하십시오.",
25
50
  "CACHE_MODULEID_MISMATCH": "캐시 항목 moduleID 불일치: '{cacheKey}'를 예상했지만 항목에 '{entryModuleID}'이(가) 있습니다. 이는 내부 캐시 불일치를 나타냅니다.",
51
+ "HINT_CACHE_MODULEID_MISMATCH": "이는 캐시 손상을 나타내는 내부 오류입니다. 재현 단계와 함께 이 문제를 보고해 주십시오.",
26
52
  "CACHE_NOT_FOUND": "'{operation}' 작업 중 moduleID '{moduleID}'에 대한 캐시 항목을 찾을 수 없습니다. 모듈이 로드되지 않았거나 캐시가 삭제되었을 수 있습니다.",
53
+ "HINT_CACHE_NOT_FOUND": "캐시를 재로드하거나 재빌드하기 전에 모듈이 로드되었는지 확인하십시오. moduleID가 올바른지 확인하십시오.",
27
54
  "CACHE_MANAGER_NOT_AVAILABLE": "캐시 관리자를 사용할 수 없습니다. '{operation}' 작업을 수행할 수 없습니다. 캐시 관리자가 초기화되었는지 확인하십시오.",
55
+ "HINT_CACHE_MANAGER_NOT_AVAILABLE": "캐시 관리자는 자동으로 초기화되어야 합니다. 이 오류가 보인다면 내부 초기화 문제를 나타낼 수 있습니다.",
28
56
  "MODULE_LOAD_FAILED": "모듈 '{modulePath}'(ID: {moduleID}) 로드 실패: {error}",
57
+ "HINT_MODULE_LOAD_FAILED": "모듈 파일의 오류를 확인하십시오. 유효한 JavaScript 구문과 내보내기를 가지고 있는지 확인하십시오.",
29
58
  "MODULE_NOT_FOUND": "모듈을 찾을 수 없음: {modulePath}. {hint}",
59
+ "HINT_MODULE_NOT_FOUND": "모듈이 존재하고 경로가 올바른지 확인하십시오. import문의 오타를 확인하십시오.",
30
60
  "MODULE_IMPORT_FAILED": "모듈 '{modulePath}' 가져오기 실패: {error}. 파일이 존재하고 유효한 구문인지 확인하십시오.",
61
+ "HINT_MODULE_IMPORT_FAILED": "모듈 파일이 존재하고 가져올 수 있는지 확인하십시오. 구문 오류나 누락된 종속성을 확인하십시오.",
31
62
  "CONTEXT_ALREADY_EXISTS": "인스턴스 '{instanceID}'의 컨텍스트가 이미 존재합니다. 두 번 초기화할 수 없습니다.",
63
+ "HINT_CONTEXT_ALREADY_EXISTS": "이 컨텍스트는 이미 존재합니다. 동일한 인스턴스를 두 번 초기화하려 하는지 확인하십시오.",
32
64
  "CONTEXT_NOT_FOUND": "인스턴스 '{instanceID}'의 컨텍스트를 찾을 수 없습니다. 인스턴스가 종료되었을 수 있습니다. 사용 가능한 인스턴스: {availableInstances}",
65
+ "HINT_CONTEXT_NOT_FOUND": "Slothlet 인스턴스가 초기화되었고 액세스 전에 컨텍스트가 생성되었는지 확인하십시오. 올바른 인스턴스 ID를 사용하고 있는지 확인하십시오.",
33
66
  "CONTEXT_EXECUTION_FAILED": "인스턴스 '{instanceID}'의 컨텍스트에서 실행 실패: {error}",
67
+ "HINT_CONTEXT_EXECUTION_FAILED": "함수 실행 중 오류가 발생했습니다. 자세한 내용은 오류 세부 정보를 확인하십시오.",
34
68
  "NO_ACTIVE_CONTEXT_LIVE": "활성 컨텍스트 없음 - 현재 라이브 바인딩 모드에서 활성화된 인스턴스가 없습니다.",
69
+ "HINT_NO_ACTIVE_CONTEXT_LIVE": "활성 컨텍스트를 찾을 수 없습니다. Slothlet 라이브 컨텍스트 내에서 이 함수를 호출하고 있는지 확인하십시오.",
35
70
  "NO_ACTIVE_CONTEXT_ASYNC": "활성 컨텍스트 없음 - 함수가 slothlet API 컨텍스트 내에서 호출되어야 합니다.",
71
+ "HINT_NO_ACTIVE_CONTEXT_ASYNC": "활성 컨텍스트를 찾을 수 없습니다. Slothlet 비동기 컨텍스트 내에서 이 함수를 호출하고 있는지 확인하십시오.",
36
72
  "RUNTIME_NO_ACTIVE_CONTEXT_SELF": "활성 컨텍스트 없음 - 'self'에 액세스할 수 없습니다. Slothlet API 함수 내에서 호출하고 있는지 확인하십시오.",
73
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Slothlet API 함수 컨텍스트 밖에서는 'self'에 액세스할 수 없습니다.",
37
74
  "RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "활성 컨텍스트 없음 - 'context'는 slothlet API 호출 내에서만 수정할 수 있습니다.",
75
+ "HINT_RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Slothlet API 함수 밖에서는 'context'에 액세스할 수 없습니다. 컨텍스트는 Slothlet API 호출 내에서만 수정할 수 있습니다.",
38
76
  "OWNERSHIP_INVALID_MODULE_ID": "유효하지 않은 소유권 등록: moduleID '{moduleID}'이(가) 유효하지 않습니다.",
77
+ "HINT_OWNERSHIP_INVALID_MODULE_ID": "모듈 ID가 유효하지 않습니다. 모듈이 제대로 로드되었고 ID가 올바른지 확인하십시오.",
39
78
  "OWNERSHIP_INVALID_API_PATH": "유효하지 않은 소유권 등록: apiPath '{apiPath}'이(가) 유효하지 않습니다.",
79
+ "HINT_OWNERSHIP_INVALID_API_PATH": "API 경로가 유효하지 않습니다. 경로 형식이 올바른지 확인하십시오.",
40
80
  "OWNERSHIP_CONFLICT": "소유권 충돌: 경로 '{apiPath}'은(는) 이미 모듈 '{existingModuleId}'이(가) 소유하고 있습니다. '{newModuleId}'에 할당할 수 없습니다. forceOverwrite: true를 사용하거나 먼저 removeApi를 호출하십시오.",
81
+ "HINT_OWNERSHIP_CONFLICT": "경로가 이미 다른 모듈에 의해 소유되고 있습니다. 옵션: (1) api.add() 옵션에서 forceOverwrite: true 사용, (2) 충돌 설정을 'merge' 또는 'replace'로 설정, (3) 먼저 api.slothlet.api.remove()를 호출하여 경로를 삭제.",
41
82
  "LOOSE_SET_NOT_OWNED": "모듈 {callerApiPath}은(는) {apiPath}에 쓸 수 없습니다. 모듈은 자신의 apiPath 아래에서만 쓸 수 있습니다. 다른 경로에 등록하려면 api.slothlet.api.add()를 사용하세요.",
83
+ "HINT_LOOSE_SET_NOT_OWNED": "apiPath가 \"P\"인 모듈은 \"P.*\" 아래에만 쓸 수 있습니다. 다른 네임스페이스에 코드를 등록하려면 api.slothlet.api.add()를 호출하세요.",
42
84
  "LOOSE_SET_RESERVED_KEY": "apiPath '{apiPath}'의 예약된 키 세그먼트 '{segment}'에 할당할 수 없습니다. __proto__, prototype, constructor와 같은 이름은 API 트리의 프로토타입 오염을 방지하기 위해 차단됩니다.",
85
+ "HINT_LOOSE_SET_RESERVED_KEY": "__proto__, prototype, constructor 세그먼트는 이들에 쓰면 JavaScript 프로토타입 체인이 변경되므로 apiPath 이름으로 사용할 수 없습니다. 다른 이름을 선택하세요.",
43
86
  "INVALID_DIRECTORY": "유효하지 않은 디렉토리 '{dir}': {error}. 디렉토리가 존재하고 액세스 가능한지 확인하십시오.",
87
+ "HINT_INVALID_DIRECTORY": "디렉토리 경로가 올바르고 디렉토리가 존재하며 액세스 가능한지 확인하십시오.",
44
88
  "WARN_DIRECTORY_EMPTY": "디렉토리 '{dir}'(확인된 경로: '{resolvedPath}')이(가) 비어 있거나 로드 가능한 모듈(.mjs, .cjs, .js 파일)이 없습니다. 이는 add-api 워크플로에서는 유효하지만 잘못 설정된 경로일 수 있습니다.",
89
+ "HINT_WARN_DIRECTORY_EMPTY": "디렉토리 경로가 올바른지 확인하십시오. 비어 있는 디렉토리는 모듈이 동적으로 추가되는 add-api 워크플로에서는 유효합니다.",
90
+ "WARN_SYNTHETIC_ROOT_EMPTY": "API 경로 '{apiPath}'의 합성 추가가 리프를 제공하지 않았습니다. 아무것도 마운트되지 않았습니다.",
91
+ "HINT_WARN_SYNTHETIC_ROOT_EMPTY": "합성 추가가 마운트할 대상을 갖도록 최소한 하나의 내보내기(이름이 지정된 기본 함수 또는 이름이 지정된 내보내기)를 제공하세요.",
92
+ "WARN_SYNTHETIC_ROOT_UNNAMED": "API 루트의 합성 추가에 익명 기본 내보내기가 있습니다. 루트에 키로 지정할 수 없어 건너뛰었습니다.",
93
+ "HINT_WARN_SYNTHETIC_ROOT_UNNAMED": "기본 함수에 이름을 지정하거나(그 이름이 루트 키가 됩니다), 이름이 지정된 내보내기를 제공하거나, 리프를 이름이 지정된 apiPath에 마운트하세요.",
94
+ "WARN_SYNTHETIC_ROOT_COLLISION": "API 루트의 합성 추가가 기본값을 '{name}'(으)로 다시 키 지정하지만, 이름이 지정된 내보내기가 이미 '{name}'을(를) 사용합니다. 이름이 지정된 내보내기가 우선합니다.",
95
+ "HINT_WARN_SYNTHETIC_ROOT_COLLISION": "기본 함수 또는 충돌하는 이름이 지정된 내보내기의 이름을 변경하여 각각 별도의 루트 키에 배치되도록 하세요.",
45
96
  "INTERNAL_HOOK_STATE_CORRUPT": "[내부 오류] HookManager 상태가 손상됨: 후크 \"{hookId}\" ({type}/{subset}/{pattern}) — {detail}. 이는 Slothlet의 버그입니다. 보고해 주십시오.",
97
+ "HINT_INTERNAL_HOOK_STATE_CORRUPT": "HookManager 내부 상태가 일치하지 않습니다. 이는 정상적인 사용으로는 발생해서는 안 됩니다. hook.on() 및 hook.remove() 호출 방법을 포함하여 버그 보고서를 제출해 주십시오.",
46
98
  "WARNING_RESERVED_PROPERTY_CONFLICT": "사용자 API가 예약된 속성과 충돌합니다: {properties}",
99
+ "HINT_WARNING_RESERVED_PROPERTY_CONFLICT": "'slothlet' 속성 이름은 내장 API 메서드를 위해 예약되어 있습니다. slothlet.shutdown(), slothlet.api.* 등과의 충돌을 피하기 위해 API 모듈이나 속성 이름을 바꾸십시오.",
47
100
  "WARNING_LANGUAGE_LOAD_FAILED": "언어 '{lang}' 로드 실패, 영어로 대체합니다.",
48
101
  "WARNING_LANGUAGE_UNAVAILABLE": "언어 '{lang}'을(를) 사용할 수 없습니다. 영어를 사용합니다.",
49
102
  "WARNING_OWNERSHIP_CONFLICT": "'{apiPath}'에서 소유권 충돌 발생: 이미 '{existingModuleId}'이(가) 소유하고 있어 '{newModuleId}'을(를) 등록할 수 없습니다. 기존 항목을 유지합니다.",
103
+ "HINT_WARNING_OWNERSHIP_CONFLICT": "경로가 이미 다른 모듈에 의해 소유되고 있습니다. 강제로 덮어쓰려면 api.add() 옵션에서 forceOverwrite: true를 사용하거나, 먼저 api.slothlet.api.remove()를 호출하여 경로를 삭제하십시오.",
50
104
  "WARNING_HOT_RELOAD_PATH_COLLISION": "{apiPath}에서 경로 충돌 발생 - 기존 값을 유지합니다 (충돌 모드: warn).",
105
+ "HINT_WARNING_HOT_RELOAD_PATH_COLLISION": "핫 리로드 중 지정된 경로에서 충돌이 발생했습니다. 기존 값이 유지됩니다. 강제로 교체하려면 'warn' 대신 충돌 모드 'replace'를 사용하십시오.",
51
106
  "WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "{apiPath}에서 원시(primitive) 값을 병합할 수 없음 - 기존 값을 유지합니다. 덮어쓰려면 충돌 모드 'replace'를 사용하거나 두 값이 모두 객체인지 확인하십시오.",
107
+ "HINT_WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "원시 값(문자열, 숫자, 불리언)은 병합할 수 없습니다. 값을 교체하려면 충돌 모드 'replace'를 사용하십시오. 기존 값을 유지하려면 'warn' 모드를 계속 사용하십시오.",
52
108
  "WARNING_COLLISION_FILE_FOLDER_MERGE": "'{key}'에서 충돌 감지 - 파일 및 폴더 내보내기를 병합합니다 (충돌 모드: 'warn').",
53
109
  "HINT_WARNING_COLLISION_FILE_FOLDER_MERGE": "'{key}'에서 파일과 폴더의 이름이 동일합니다. 내보내기가 병합되는 중입니다. 모호함을 피하려면 하나의 이름을 바꾸거나, 병합을 원치 않으면 collisionMode를 'replace' 또는 'error'로 설정하십시오.",
54
110
  "WARNING_COLLISION_DEFAULT_EXPORT_OVERWRITE": "충돌 경고: {apiPath}의 기본 내보내기 함수에 '{key}' 속성이 이미 존재합니다. 명명된 내보내기가 덮어씁니다.",
@@ -58,10 +114,13 @@
58
114
  "WARNING_LIFECYCLE_HANDLER_ERROR": "'{event}' 이벤트에 대한 수명 주기 이벤트 핸들러가 오류를 던졌습니다. 다른 핸들러는 계속 실행됩니다.",
59
115
  "HINT_WARNING_LIFECYCLE_HANDLER_ERROR": "'{event}' 이벤트에 등록된 수명 주기 핸들러에서 오류가 발생했습니다. lifecycle.on('{event}', ...) 핸들러에 버그가 있는지 확인하십시오. 다른 핸들러는 영향을 받지 않습니다.",
60
116
  "WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "여러 루트 수준 기본 함수 내보내기 감지됨: {rootContributors}. 각각 파일 이름(예: api.{firstContributor}())으로 네임스페이스가 지정되었습니다. 단일 루트 수준 기본 내보내기를 사용하거나 파일을 하위 디렉토리로 이동하는 것을 고려하십시오.",
117
+ "HINT_WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "여러 파일이 루트 수준에서 기본 함수를 내보내고 있습니다. 각각 고유한 네임스페이스(예: api.파일이름())를 가집니다. 더 명확한 구성을 위해 단일 루트 내보내기로 통합하거나 파일을 하위 디렉토리로 이동하는 것을 고려하십시오.",
61
118
  "WARN_SUPPRESS_FIX_ACTIVE": "규칙 수정 '{rule}'이 'suppressFixes'를 통해 억제되었습니다. 자세한 내용은 {url}을 참조하십시오. 이것은 임시 재정의이며 v4에서 제거됩니다. 수정된 '{rule}' 동작이 영구적으로 적용됩니다.",
62
119
  "HINT_WARN_SUPPRESS_FIX_ACTIVE": "v4로 업그레이드하기 전에 'suppressFixes'에서 '{rule}'을 제거하고 수정된 동작을 수용하도록 API 디렉토리 구조를 업데이트하십시오.",
63
120
  "V3_CONFIG_DEPRECATED": "구성 옵션 '{option}'은(는) 더 이상 사용되지 않으며 v4에서 제거됩니다. 대신 '{replacement}'을(를) 사용하세요.",
121
+ "HINT_V3_CONFIG_DEPRECATED": "이 구성 옵션은 명확성을 위해 이름이 변경되었습니다. v4와의 호환성을 보장하려면 새 옵션 이름을 사용하도록 코드를 업데이트하세요.",
64
122
  "V2_CONFIG_UNSUPPORTED": "v2의 설정 옵션 '{option}'은(는) v3에서 지원되지 않습니다. {hint} 대신 '{replacement}'을(를) 사용하십시오.",
123
+ "HINT_V2_CONFIG_UNSUPPORTED": "v2의 이 설정 옵션은 v3에서 지원되지 않습니다. 더 나은 제어와 명확성을 위해 v3에 해당하는 옵션을 사용하도록 설정을 업데이트하십시오.",
65
124
  "DEBUG_MODE_ROOT_CONTRIBUTOR": "[{mode}] 루트 컨트리뷰터 감지됨: {functionName}",
66
125
  "DEBUG_MODE_ROOT_CONTRIBUTOR_APPLIED": "[{mode}] 루트 컨트리뷰터 패턴 적용됨 - {properties}개의 추가 속성을 가진 함수 API",
67
126
  "DEBUG_MODE_PROCESSING_DIRECTORY": "[{mode}] 디렉토리 처리 중: {categoryName} (깊이 {currentDepth})",
@@ -230,72 +289,15 @@
230
289
  "DEBUG_MODE_LAZY_WRAPPER_MATERIALIZED": "지연 래퍼 구체화됨",
231
290
  "DEBUG_MODE_ALL_LAZY_WRAPPERS_MATERIALIZED": "모든 지연 래퍼가 구체화됨",
232
291
  "HINT_REFERENCE_REMOVED": "'reference' 내보내기가 '@cldmv/slothlet/runtime'에서 제거되었습니다. 참조 객체는 이제 API에 직접 병합됩니다. 'self.*'(예: 'self.myRefProperty')를 통해 액세스하십시오.",
233
- "HINT_MODULE_NOT_FOUND": "모듈이 존재하고 경로가 올바른지 확인하십시오. import문의 오타를 확인하십시오.",
234
292
  "HINT_SYNTAX_ERROR": "모듈 파일의 구문 오류를 확인하십시오. 일반적인 원인: 괄호 누락, 닫히지 않은 문자열, 또는 유효하지 않은 JavaScript 구문.",
235
- "HINT_CONTEXT_NOT_FOUND": "Slothlet 인스턴스가 초기화되었고 액세스 전에 컨텍스트가 생성되었는지 확인하십시오. 올바른 인스턴스 ID를 사용하고 있는지 확인하십시오.",
236
- "HINT_CONTEXT_ALREADY_EXISTS": "이 컨텍스트는 이미 존재합니다. 동일한 인스턴스를 두 번 초기화하려 하는지 확인하십시오.",
237
- "HINT_CONTEXT_EXECUTION_FAILED": "함수 실행 중 오류가 발생했습니다. 자세한 내용은 오류 세부 정보를 확인하십시오.",
238
- "HINT_NO_ACTIVE_CONTEXT": "활성 컨텍스트를 찾을 수 없습니다. Slothlet 컨텍스트(비동기 또는 라이브 모드) 내에서 이 함수를 호출하고 있는지 확인하십시오.",
239
- "HINT_NO_ACTIVE_CONTEXT_ASYNC": "활성 컨텍스트를 찾을 수 없습니다. Slothlet 비동기 컨텍스트 내에서 이 함수를 호출하고 있는지 확인하십시오.",
240
- "HINT_NO_ACTIVE_CONTEXT_LIVE": "활성 컨텍스트를 찾을 수 없습니다. Slothlet 라이브 컨텍스트 내에서 이 함수를 호출하고 있는지 확인하십시오.",
241
- "HINT_OWNERSHIP_INVALID_MODULE_ID": "모듈 ID가 유효하지 않습니다. 모듈이 제대로 로드되었고 ID가 올바른지 확인하십시오.",
242
- "HINT_OWNERSHIP_INVALID_API_PATH": "API 경로가 유효하지 않습니다. 경로 형식이 올바른지 확인하십시오.",
243
- "HINT_OWNERSHIP_CONFLICT": "경로가 이미 다른 모듈에 의해 소유되고 있습니다. 옵션: (1) api.add() 옵션에서 forceOverwrite: true 사용, (2) 충돌 설정을 'merge' 또는 'replace'로 설정, (3) 먼저 api.slothlet.api.remove()를 호출하여 경로를 삭제.",
244
- "HINT_INVALID_CONFIG": "설정 값을 확인하고 예상되는 유형 및 형식과 일치하는지 확인하십시오.",
245
- "HINT_INVALID_CONFIG_DIR_INVALID": "디렉토리 경로가 유효한 문자열이고 존재하는 디렉토리를 가리키는지 확인하십시오.",
246
- "HINT_INVALID_CONFIG_FORCE_OVERWRITE_REQUIRES_MODULE_ID": "forceOverwrite 또는 allowOverwrite를 사용할 때, 덮어씌워진 경로의 소유권을 추적하기 위해 고유한 moduleID를 제공해야 합니다.",
247
- "HINT_COLLISION_ERROR": "충돌 모드가 'error'로 설정되어 있어 덮어쓰기가 방지되었습니다. 대신 'merge'(속성 결합), 'replace'(완전 덮어쓰기), 'warn'(경고를 출력하고 기존 항목 유지), 또는 'skip'(조용히 무시)을 사용하십시오.",
248
- "HINT_COLLISION_DEFAULT_EXPORT_ERROR": "명명된 내보내기가 해당 경로의 기본 내보내기 객체에 이미 존재하는 속성과 충돌합니다. 충돌 모드를 'merge', 'replace', 'warn' 또는 'skip'으로 변경하거나 충돌하는 속성의 이름을 바꾸십시오.",
249
- "HINT_INVALID_ARGUMENT": "경로는 'math.add'와 같은 점 표기법 문자열이어야 합니다.",
250
- "HINT_RUNTIME_NO_ACTIVE_CONTEXT": "metadata.self()는 Slothlet API 함수 내에서 호출되어야 합니다.",
251
- "HINT_INVALID_CONFIG_MODE_INVALID": "모드는 'eager' 또는 'lazy'여야 합니다.",
252
- "HINT_INVALID_CONFIG_MODE_UNKNOWN": "알 수 없는 모드가 지정되었습니다. 'eager' 또는 'lazy'를 사용하십시오.",
253
- "HINT_INVALID_CONFIG_DIR_MISSING": "디렉토리 경로가 필요하지만 제공되지 않았습니다.",
254
- "HINT_INVALID_CONFIG_API_PATH_INVALID": "API 경로가 빈 세그먼트나 예약어(slothlet, shutdown, destroy)가 없는 유효한 점 표기법 문자열(예: 'plugins.tools')인지 확인하십시오.",
255
- "HINT_INVALID_CONFIG_MUTATIONS_DISABLED": "API 수정 작업에는 설정에서 allowMutation: true가 필요합니다. 실제 수정을 활성화하지 않고 테스트용으로 이 메서드들을 사용하려면 diagnostics: true를 사용하십시오.",
256
- "HINT_CACHE_MODULEID_MISMATCH": "이는 캐시 손상을 나타내는 내부 오류입니다. 재현 단계와 함께 이 문제를 보고해 주십시오.",
257
- "HINT_CACHE_NOT_FOUND": "캐시를 재로드하거나 재빌드하기 전에 모듈이 로드되었는지 확인하십시오. moduleID가 올바른지 확인하십시오.",
258
- "HINT_CACHE_MANAGER_NOT_AVAILABLE": "캐시 관리자는 자동으로 초기화되어야 합니다. 이 오류가 보인다면 내부 초기화 문제를 나타낼 수 있습니다.",
259
- "HINT_INVALID_METADATA_TARGET": "대상은 Slothlet을 통해 로드된 함수나 객체여야 합니다. 문자열이나 원시 값이 아닌 실제 함수/객체 참조를 전달하십시오.",
260
- "HINT_METADATA_NO_MODULE_ID": "함수/객체가 Slothlet의 모듈 시스템을 통해 로드되었는지 확인하십시오. Slothlet이 관리하는 함수만 연결된 메타데이터를 가집니다.",
261
- "HINT_METADATA_LIFECYCLE_BYPASS": "tagSystemMetadata()를 직접 호출하지 마십시오. 대신 'impl:created' 또는 'impl:changed' 수명 주기 이벤트를 트리거하면 적절한 채널을 통해 tagSystemMetadata()가 호출됩니다.",
262
- "HINT_INVALID_METADATA_KEY": "메타데이터 키는 문자열, 문자열 배열, 또는 배열 값을 가진 객체여야 합니다. 키 형식이 이러한 유형 중 하나와 일치하는지 확인하십시오.",
263
- "HINT_WARNING_METADATA_MISMATCH": "이 경고는 함수의 실행 위치가 등록된 메타데이터 경로와 일치하지 않음을 나타냅니다. 이는 핫 리로드 중에 또는 함수가 변조된 경우 발생할 수 있습니다. 대부분의 경우 핫 리로드가 활성화된 개발 중에는 예상되는 상황입니다.",
264
- "HINT_WARNING_INIT_COMPONENT_SKIPPED": "가져오기에 실패한 구성 요소 파일은 건너뜁니다. 이는 선택적 구성 요소의 경우 정상입니다. 구성 요소가 로드되어야 한다면 오류 메시지에서 세부 정보를 확인하십시오.",
265
- "HINT_WARNING_MULTIPLE_ROOT_CONTRIBUTORS": "여러 파일이 루트 수준에서 기본 함수를 내보내고 있습니다. 각각 고유한 네임스페이스(예: api.파일이름())를 가집니다. 더 명확한 구성을 위해 단일 루트 내보내기로 통합하거나 파일을 하위 디렉토리로 이동하는 것을 고려하십시오.",
266
- "HINT_WARNING_HOT_RELOAD_PATH_COLLISION": "핫 리로드 중 지정된 경로에서 충돌이 발생했습니다. 기존 값이 유지됩니다. 강제로 교체하려면 'warn' 대신 충돌 모드 'replace'를 사용하십시오.",
267
- "HINT_WARNING_HOT_RELOAD_MERGE_PRIMITIVES": "원시 값(문자열, 숫자, 불리언)은 병합할 수 없습니다. 값을 교체하려면 충돌 모드 'replace'를 사용하십시오. 기존 값을 유지하려면 'warn' 모드를 계속 사용하십시오.",
268
- "HINT_WARNING_OWNERSHIP_CONFLICT": "경로가 이미 다른 모듈에 의해 소유되고 있습니다. 강제로 덮어쓰려면 api.add() 옵션에서 forceOverwrite: true를 사용하거나, 먼저 api.slothlet.api.remove()를 호출하여 경로를 삭제하십시오.",
269
- "HINT_V2_CONFIG_UNSUPPORTED": "v2의 이 설정 옵션은 v3에서 지원되지 않습니다. 더 나은 제어와 명확성을 위해 v3에 해당하는 옵션을 사용하도록 설정을 업데이트하십시오.",
270
- "HINT_V3_CONFIG_DEPRECATED": "이 구성 옵션은 명확성을 위해 이름이 변경되었습니다. v4와의 호환성을 보장하려면 새 옵션 이름을 사용하도록 코드를 업데이트하세요.",
271
- "HINT_MODULE_LOAD_FAILED": "모듈 파일의 오류를 확인하십시오. 유효한 JavaScript 구문과 내보내기를 가지고 있는지 확인하십시오.",
272
- "HINT_MODULE_IMPORT_FAILED": "모듈 파일이 존재하고 가져올 수 있는지 확인하십시오. 구문 오류나 누락된 종속성을 확인하십시오.",
273
- "HINT_MODULE_NO_EXPORTS": "모듈은 최소 하나 이상의 함수나 객체를 내보내야 합니다.",
274
- "HINT_INVALID_DIRECTORY": "디렉토리 경로가 올바르고 디렉토리가 존재하며 액세스 가능한지 확인하십시오.",
275
- "HINT_WARN_DIRECTORY_EMPTY": "디렉토리 경로가 올바른지 확인하십시오. 비어 있는 디렉토리는 모듈이 동적으로 추가되는 add-api 워크플로에서는 유효합니다.",
276
- "HINT_INVALID_CONFIG_LAZY_NOT_READY": "지연 모드에서는 함수를 호출하기 전에 속성에 액세스하여 구체화를 트리거하십시오.",
277
- "HINT_INTERNAL_INVALID_STATE": "내부 상태 오류가 발생했습니다. 이는 버그일 가능성이 높습니다. 세부 정보와 함께 보고해 주십시오.",
278
- "HINT_INTERNAL_HOOK_STATE_CORRUPT": "HookManager 내부 상태가 일치하지 않습니다. 이는 정상적인 사용으로는 발생해서는 안 됩니다. hook.on() 및 hook.remove() 호출 방법을 포함하여 버그 보고서를 제출해 주십시오.",
279
- "HINT_INVALID_CONFIG_LAZY_ASYNC_REQUIRED": "지연 모드에는 비동기 작업이 필요합니다. 즉시 모드를 사용하거나 적절한 비동기 패턴을 구현하십시오.",
280
- "HINT_RUNTIME_NO_ACTIVE_CONTEXT_SELF": "Slothlet API 함수 컨텍스트 밖에서는 'self'에 액세스할 수 없습니다.",
281
- "HINT_RUNTIME_NO_ACTIVE_CONTEXT_CONTEXT": "Slothlet API 함수 밖에서는 'context'에 액세스할 수 없습니다. 컨텍스트는 Slothlet API 호출 내에서만 수정할 수 있습니다.",
282
- "HINT_LOOSE_SET_NOT_OWNED": "apiPath가 \"P\"인 모듈은 \"P.*\" 아래에만 쓸 수 있습니다. 다른 네임스페이스에 코드를 등록하려면 api.slothlet.api.add()를 호출하세요.",
283
- "HINT_LOOSE_SET_RESERVED_KEY": "__proto__, prototype, constructor 세그먼트는 이들에 쓰면 JavaScript 프로토타입 체인이 변경되므로 apiPath 이름으로 사용할 수 없습니다. 다른 이름을 선택하세요.",
284
- "HINT_INVALID_CONFIG_NOT_LOADED": "이 작업을 수행하기 전에 인스턴스를 로드해야 합니다. 먼저 load()를 호출하십시오.",
285
- "HINT_INVALID_CONFIG_RELOAD_NOT_IMPL": "힌트: 재로드 기능은 아직 구현되지 않았습니다. 향후 버전에서 추가될 예정입니다.",
286
- "HINT_WARNING_RESERVED_PROPERTY_CONFLICT": "'slothlet' 속성 이름은 내장 API 메서드를 위해 예약되어 있습니다. slothlet.shutdown(), slothlet.api.* 등과의 충돌을 피하기 위해 API 모듈이나 속성 이름을 바꾸십시오.",
287
- "HINT_DEPRECATED_CONFIG_OPTION": "이 설정 옵션은 더 이상 사용되지 않으며 향후 버전에서 제거될 예정입니다. 권장되는 대체 옵션을 사용하도록 설정을 업데이트하십시오.",
288
- "HINT_ERROR_RUNTIME_IMPORT_FAILED": "런타임 모듈을 로드할 수 없습니다. @cldmv/slothlet/runtime 내보내기를 사용할 수 없거나 순환 종속성이 있는 경우 발생할 수 있습니다. 런타임 액세스가 필요한 일부 기능이 제한될 수 있습니다.",
289
- "INVALID_HOOK_TYPE": "유효하지 않은 후크 유형 \"{type}\". {validTypes} 중 하나여야 합니다.",
290
293
  "INVALID_HOOK_HANDLER": "후크 핸들러는 함수여야 합니다. 받은 유형: {receivedType}.",
291
- "DUPLICATE_HOOK_ID": "ID가 \"{id}\"인 후크가 이미 존재합니다. 고유한 ID를 사용하거나 고유 ID를 자동 생성하도록 id 옵션을 생략하십시오.",
292
- "INVALID_HOOK_SUBSET": "유효하지 않은 후크 서브셋 \"{subset}\". \"before\", \"primary\" 또는 \"after\"여야 합니다. 유효한 서브셋: {validSubsets}.",
293
- "INVALID_TYPE_PATTERN": "유효하지 않은 유형 패턴 \"{typePattern}\". {expected}",
294
- "HINT_INVALID_HOOK_TYPE": "before, after, always, error 중 유효한 후크 유형을 사용하십시오.",
295
294
  "HINT_INVALID_HOOK_HANDLER": "문자열이나 다른 유형이 아닌 함수를 후크 핸들러로 제공하십시오.",
295
+ "DUPLICATE_HOOK_ID": "ID가 \"{id}\"인 후크가 이미 존재합니다. 고유한 ID를 사용하거나 고유 ID를 자동 생성하도록 id 옵션을 생략하십시오.",
296
296
  "HINT_DUPLICATE_HOOK_ID": "다른 id 값을 사용하거나 id 옵션을 제거하여 Slothlet이 고유 ID를 자동 생성하게 하십시오.",
297
+ "INVALID_HOOK_SUBSET": "유효하지 않은 후크 서브셋 \"{subset}\". \"before\", \"primary\" 또는 \"after\"여야 합니다. 유효한 서브셋: {validSubsets}.",
297
298
  "HINT_INVALID_HOOK_SUBSET": "서브셋은 실행 순서를 제어합니다. 전처리는 'before', 주요 후크는 'primary'(기본값), 후처리는 'after'를 사용하십시오.",
298
- "HINT_INVALID_TYPE_PATTERN": "유형 패턴은 'before:math.*' 또는 'error:**'와 같이 '유형:패턴' 형식이어야 합니다.",
299
+ "INVALID_TYPE_PATTERN": "유효하지 않은 유형 패턴 \"{typePattern}\". {expected}",
300
+ "HINT_INVALID_TYPE_PATTERN": "후크 패턴은 'pattern:type' 형식을 사용합니다(예: 'math.*:before' 또는 '**:error'). 기존 'type:pattern' 형식도 여전히 작동하지만 더 이상 사용되지 않습니다.",
299
301
  "HOOK_BEFORE_RETURNED_PROMISE": "경로 '{path}'에 대한 before 후크 '{id}'이(가) Promise를 반환했습니다. before 후크는 동기식이어야 합니다.",
300
302
  "HINT_HOOK_BEFORE_RETURNED_PROMISE": "before 후크는 API 호출 전 동기적으로 실행됩니다. 이 후크에서 async/await 또는 Promise 사용을 제거하거나, 비동기 처리가 필요하면 'after' 후크로 변경하십시오.",
301
303
  "HOOK_BRACE_EXPANSION_MAX_DEPTH": "후크 패턴의 중괄호 확장이 최대 중첩 깊이 {maxDepth}를 초과했습니다.",
@@ -383,11 +385,11 @@
383
385
  "INVALID_CONFIG_VERSION_DISPATCHER": "config.versionDispatcher는 문자열(메타데이터 키) 또는 함수여야 합니다. 수신됨: {received}",
384
386
  "INVALID_CONFIG_VERSION_TAG": "versionConfig.version은 비어 있지 않은 문자열이어야 합니다. 수신됨: {received}",
385
387
  "VERSION_NOT_FOUND": "버전 '{version}'은(는) 경로 '{apiPath}'에 등록되지 않았습니다.",
388
+ "HINT_VERSION_NOT_FOUND": "api.slothlet.versioning.list('{apiPath}')를 호출하여 해당 경로에 현재 등록된 버전 태그를 확인하세요.",
386
389
  "VERSION_NO_DEFAULT": "경로 '{apiPath}'에 대한 기본 버전이 구성되지 않았으며, 호출자 메타데이터에서 버전을 해석할 수 없습니다.",
387
390
  "VERSION_DISPATCH_NOT_CALLABLE": "'{apiPath}'의 버전 Dispatcher는 네임스페이스이며 호출 가능한 함수가 아닙니다.",
388
391
  "VERSION_REGISTER_DUPLICATE": "버전 '{version}'은(는) 이미 경로 '{apiPath}'에 등록되어 있습니다. 덮어쓰려면 collisionMode 'replace'를 사용하세요.",
389
392
  "HINT_VERSION_REGISTER_DUPLICATE": "먼저 api.slothlet.versioning.unregister('{apiPath}', '{version}')를 호출하거나 다른 버전 태그로 등록하세요.",
390
- "HINT_VERSION_NOT_FOUND": "api.slothlet.versioning.list('{apiPath}')를 호출하여 해당 경로에 현재 등록된 버전 태그를 확인하세요.",
391
393
  "VERSION_DISCRIMINATOR_INVALID_RETURN": "versionDispatcher 함수가 '{returned}'를 반환했는데, 이는 경로 '{apiPath}'에 등록된 버전 태그가 아닙니다.",
392
394
  "DEBUG_VERSION_RESOLVED": "버전 해석됨: {version}, 경로: {apiPath} (호출자: {callerModule})",
393
395
  "DEBUG_VERSION_DEFAULT_USED": "경로 {apiPath}에 대한 Discriminator 일치 없음; 기본 버전 {version}을(를) 사용합니다.",
@@ -417,7 +419,27 @@
417
419
  "HINT_MODULE_MANIFEST_NOT_FOUND": "플러그인 모듈은 패키지 루트에 'slothlet.module.json'(또는 `manifest` 재정의로 지정된 파일/키)을 포함해야 합니다. 파일이 패키지에 존재하고 재정의 로케이터가 올바른지 확인하세요.",
418
420
  "MODULE_MANIFEST_INVALID": "패키지 '{packageName}'의 모듈 매니페스트가 '{manifestPath}'에서 유효하지 않습니다: {reason}.",
419
421
  "HINT_MODULE_MANIFEST_INVALID": "매니페스트를 열고 유효한 JSON이며 slothlet 모듈 스키마(schemas/slothlet.module.schema.json 참조)와 일치하는지 확인하세요. 필수 필드: schemaVersion, mountPath, apiDir.",
420
- "MODULE_MANIFEST_UNKNOWN_FIELD": "패키지 '{packageName}'의 모듈 매니페스트에 인식되지 않은 최상위 필드 '{field}'가 포함되어 있습니다. 알 수 없는 필드는 거부됩니다. 개발자 정의 추가 항목에는 전용 'metadata' 블록을 사용하세요.",
422
+ "MODULE_MANIFEST_REASON_NOT_OBJECT": "매니페스트는 JSON 객체여야 합니다",
423
+ "MODULE_MANIFEST_REASON_MISSING_FIELD": "필수 필드 '{field}'이(가) 누락되었습니다",
424
+ "MODULE_MANIFEST_REASON_FIELD_TYPE": "필드 '{field}'은(는) {expected}(이)어야 합니다",
425
+ "EXPECTED_NON_EMPTY_STRING": "비어 있지 않은 문자열",
426
+ "EXPECTED_STRING": "문자열",
427
+ "EXPECTED_FINITE_NUMBER": "유한한 숫자",
428
+ "EXPECTED_PLAIN_OBJECT": "일반 객체",
429
+ "EXPECTED_ARRAY_OF_RULE_OBJECTS": "규칙 객체의 배열",
430
+ "MODULE_MANIFEST_REASON_MOUNTPATH_SHAPE": "필드 'mountPath'는 비어 있지 않은 문자열 또는 비어 있지 않은 문자열로 구성된 비어 있지 않은 배열이어야 합니다",
431
+ "MODULE_MANIFEST_REASON_MOUNTPATH_ENTRIES": "필드 'mountPath' 배열의 모든 항목은 비어 있지 않은 문자열이어야 합니다",
432
+ "MODULE_MANIFEST_REASON_DEPENDENCY_TYPE": "의존성 '{dependency}'은(는) 문자열 버전 범위여야 합니다",
433
+ "MODULE_MANIFEST_REASON_PERMISSION_RULE": "permissions[{index}]은(는) 규칙 객체여야 합니다",
434
+ "MODULE_MANIFEST_REASON_PERMISSION_CALLER": "permissions[{index}].caller는 비어 있지 않은 문자열이어야 합니다",
435
+ "MODULE_MANIFEST_REASON_PERMISSION_TARGET": "permissions[{index}].target은 비어 있지 않은 문자열이어야 합니다",
436
+ "MODULE_MANIFEST_REASON_PERMISSION_EFFECT": "permissions[{index}].effect는 \"allow\" 또는 \"deny\"이어야 합니다",
437
+ "MODULE_MANIFEST_REASON_JSON_PARSE": "JSON 파싱 오류: {error}",
438
+ "GENERATE_MANIFEST_DIR_INVALID": "generateManifest: dir은 비어 있지 않은 문자열이어야 합니다. 수신됨: {received}",
439
+ "GENERATE_MANIFEST_DIR_UNREADABLE": "generateManifest: 디렉토리 \"{dir}\"을(를) 읽을 수 없습니다: {reason}",
440
+ "GENERATE_MANIFEST_NOT_DIRECTORY": "generateManifest: \"{dir}\"은(는) 디렉토리가 아닙니다",
441
+ "GENERATE_BROWSER_ASSETS_SLOTHLET_BASE_INVALID": "generateBrowserAssets: options.slothletBase는 문자열이어야 합니다(@cldmv/slothlet이 브라우저에서 제공되는 경로). 수신됨: {received}",
442
+ "MODULE_MANIFEST_UNKNOWN_FIELD": "패키지 '{packageName}'의 '{manifestPath}'에 있는 모듈 매니페스트에 인식되지 않은 최상위 필드 '{field}'가 포함되어 있습니다. 알 수 없는 필드는 거부됩니다. 개발자 정의 추가 항목에는 전용 'metadata' 블록을 사용하세요.",
421
443
  "HINT_MODULE_MANIFEST_UNKNOWN_FIELD": "'{field}'가 오타인 경우 수정하세요. 의도적인 개발자 메타데이터인 경우 'metadata' 객체 안으로 이동하세요.",
422
444
  "MODULE_MANIFEST_NAME_MISMATCH": "패키지 '{packageName}'의 모듈 매니페스트가 이름 '{manifestName}'을(를) 선언하는데 package.json의 이름 '{packageName}'과(와) 일치하지 않습니다.",
423
445
  "HINT_MODULE_MANIFEST_NAME_MISMATCH": "slothlet.module.json의 'name' 필드는 선택 사항이지만 존재하는 경우 package.json과 일치해야 합니다. 매니페스트의 'name' 필드를 제거하거나 package.json과 맞추세요.",
@@ -434,7 +456,11 @@
434
456
  "MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "모듈 패키지 '{packageName}' 버전 '{version}'이(가) 여러 개의 다른 실제 경로에서 발견되었습니다: {paths}.",
435
457
  "HINT_MODULE_DUPLICATE_NAME_VERSION_MISMATCH": "이것은 거의 확실히 잘못된 구성입니다 — 동일한 버전의 동일한 패키지가 관련 없는 두 위치에 설치되어 있습니다. 어떤 설치가 의도된 것인지 조사하고 다른 것을 제거하세요.",
436
458
  "MODULE_MOUNT_COLLISION": "모듈 패키지 '{packageName}'을(를) '{mountPath}'에 마운트할 수 없습니다: 경로가 이미 모듈 '{existingModuleID}'에 의해 점유되어 있고 collisionMode는 '{collisionMode}'입니다.",
437
- "HINT_MODULE_MOUNT_COLLISION": "매니페스트의 mountPath를 변경하거나, 공존을 허용하기 위해 `addModule()` / `addModules()`에 `collisionMode: \"merge\"`를 전달하거나, 먼저 기존 모듈에서 `removeModule()`을 호출하세요."
459
+ "HINT_MODULE_MOUNT_COLLISION": "매니페스트의 mountPath를 변경하거나, 공존을 허용하기 위해 `addModule()` / `addModules()`에 `collisionMode: \"merge\"`를 전달하거나, 먼저 기존 모듈에서 `removeModule()`을 호출하세요.",
460
+ "HOOK_TYPEPATTERN_PREFIX_DEPRECATED": "후크 등록 형식 '{given}'은(는) 더 이상 사용되지 않으며 v4에서 제거됩니다. 대신 경로 우선 형식 '{suggested}'을(를) 사용하세요(예: 'math.*:before').",
461
+ "HINT_HOOK_TYPEPATTERN_PREFIX_DEPRECATED": "후크 유형을 끝으로 옮겨 접미사로 사용하세요. 'before:math.add'처럼 유형이 앞에 오는 선택자를 경로 우선 형식 'math.add:before'로 다시 작성하세요.",
462
+ "HOOK_UNPINNED_IGNORED": "후크 '{pattern}'에 대해 lockCaller:false가 무시되었습니다. 후크는 등록한 모듈에 고정됩니다. 고정되지 않은 후크를 허용하려면 hook.pin:false(초기화)를 설정하거나 api.slothlet.hook.pin.disable()을 호출하세요.",
463
+ "HINT_HOOK_UNPINNED_IGNORED": "모듈이 등록한 후크는 보안을 위해 항상 소유자에 고정됩니다. 고정되지 않은 후크를 허용하려면 slothlet 구성에서 hook.pin:false를 설정하거나 런타임에 api.slothlet.hook.pin.disable()을 호출하세요."
438
464
  },
439
465
  "metadata": {
440
466
  "code": "ko-kr",