ihui-cli 0.0.0-stage → 1.0.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.
@@ -0,0 +1,533 @@
1
+ {
2
+ "common": {
3
+ "notFound": "{target}을(를) 찾을 수 없습니다"
4
+ },
5
+ "cli": {
6
+ "bgNoticeStatus": "작업 {id} 상태: {status} exitCode: {exitCode}",
7
+ "bgNoticeTimedOut": "[작업 시간 초과]",
8
+ "bgNoticeStoppedByUser": "[사용자 중지] 사람이 이 작업을 중단시켰습니다. 자동으로 다시 실행되지 않습니다.",
9
+ "bgNoticeStoppedByModel": "[모델 중지] 모델이 스스로 이 작업을 끝냈습니다. 작업이 아직 끝나지 않았다면 다시 요청하세요.",
10
+ "bgNoticeStoppedBySuperseded": "[후속 작업에 대체됨] 더 새로운 실행에 밀려 중단되었습니다. 여전히 필요다면 다시 요청하세요.",
11
+ "bgNoticeStopInitiatorUnknown": "[중지 주체 미기록] 이 작업은 중단되었지만 누가 중단했는 기록되지 않았습니다 — 추정하지 않습니다.",
12
+ "bgNoticeNoObservableSource": "[관찰 가능한 출처 없음] 프로세스가 종료되어 출력도 종료 코드도 남지 않았고 그때 받아 갈 대기자도 없었습니다 — 이 종료 상태의 결과는 되돌릴 수 없습니다. 성공으로 해석하지 마시고 같은 명령을 다시 실행하지 마세요(재실행은 별도의 결정이며 결과를 복구하는 수단이 아닙니다).",
13
+ "custom": {
14
+ "unknown": "커스텀 명령어 /{name} 이 정의되지 않았습니다. {dir} 에 {name}.md 파일을 만들면 추가할 수 있습니다(본문에서 $ARGUMENTS 로 전체 입력을 받고, $1 이나 $2 로 위치 인자를 받습니다). 내장 명령어는 /help 에서 확인해 주세요.",
15
+ "reserved": "커스텀 명령어 이름 /{name} 은 내장 명령어 /{owner} 와 중복되어 거부되었습니다(내장 명령어가 항상 우선합니다). 다른 이름을 사용해 주세요.",
16
+ "invalidName": "커스텀 명령어 이름 \"{name}\" 이 올바르지 않습니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈, 밑줄만 사용할 수 있습니다.",
17
+ "emptyBody": "커스텀 명령어 /{name} 의 본문이 비어 있어 보낼 내용이 없습니다. {path} 에 본문을 작성해 주세요.",
18
+ "unsupportedShell": "커스텀 명령어 /{name} 은 아직 지원하지 않는 동적 셸 확장(뱅 백틱 또는 뱅 코드 블록)을 사용하므로 실행이 거부되었습니다. 필요한 내용을 본문에 직접 작성해 주세요.",
19
+ "missingArgs": "커스텀 명령어 /{name} 은 {required} 번째 인자가 필요하지만 {given} 개만 받았습니다. 빠진 인자를 넘기거나 본문에서 $ARGUMENTS 를 사용해 전체 입력을 받아 주세요.",
20
+ "saved": "커스텀 명령어 /{name} 을 {path} 에 저장했습니다"
21
+ },
22
+ "permNoteDefault": "모든 단계에서 확인을 요청합니다(가장 안전)",
23
+ "permNotePlan": "계획만: 승인 전까지 파일은 변경되지 않습니다",
24
+ "permNoteAcceptEdits": "파일 편집은 자동 승인, 명령과 위험 도구는 계속 확인합니다",
25
+ "permNoteBypass": "단계별 확인 없음 — AI 가 파일과 명령을 직접 실행합니다(고위험)",
26
+ "permNoteManual": "읽기 조회를 포함해 모든 작업이 수동 승인 필요합니다",
27
+ "citationSources": "참조 출처: {sources}",
28
+ "steerApplied": "가이드 적용됨: {text}",
29
+ "budgetWarningTitle": "오늘 AI 사용량이 많습니다",
30
+ "budgetCriticalTitle": "오늘 AI 사용량이 곧 한도에 도달합니다",
31
+ "budgetNote": "{title}: {detail}",
32
+ "budgetUsedTokens": "{used} / {limit} 토큰 사용",
33
+ "budgetResetTomorrow": "자정 초기화",
34
+ "budgetTier": "{tier} 플랜",
35
+ "injectionApplied": "이번 턴의 참조 컨텍스트: {sources}",
36
+ "injectionSrcDeveloper": "사용자 지정 지침",
37
+ "injectionSrcWorkspace": "워크스페이스 기억",
38
+ "injectionSrcRepoWiki": "저장소 Wiki",
39
+ "injectionSrcAutoContext": "검색 컨텍스트 {count}개",
40
+ "retryHint": "↑ 를 눌러 이전 질문을 불러와 다시 보내세요",
41
+ "retryScheduled": "업스트림을 일시적으로 사용할 수 없습니다: {attempt}/{max}회 재시도, {seconds}초 후 계속",
42
+ "retryScheduledNow": "업스트림을 일시적으로 사용할 수 없습니다: {attempt}/{max}회 즉시 재시도",
43
+ "sessionResumed": "최근 세션 복원: {id} ({count, plural, =0 {기록 없음} other {{count}개 기록}})",
44
+ "sessionResumedWithId": "세션 복원: {id} ({count}개 기록)",
45
+ "noSessions": "최근 세션이 없습니다",
46
+ "errorPathIsDir": "경로는 디렉토리입니다, 파일이 아닙니다: {path}",
47
+ "errorFileEmpty": "파일 내용이 비어 있습니다: {path}",
48
+ "errorFileNotFound": "파일이 존재하지 않습니다: {path}",
49
+ "errorReadFile": "파일 읽기 실패: {message}",
50
+ "errorPromptFile": "--prompt-file 오류: {error}",
51
+ "agentUsage": "사용법: ihui agent <task> 또는 ihui agent --prompt-file <path>",
52
+ "agentsMdExists": "AGENTS.md가 이미 존재합니다. --force로 덮어쓰세요.",
53
+ "agentsMdCreated": "생성 완료: {path}",
54
+ "queue": {
55
+ "enqueued": "대기열에 추가했습니다 [{id}] (후속 입력 모드=queue, 대기 {n}건)",
56
+ "helpMove": "대기 항목 순서 변경 (실행 중에는 잠김)",
57
+ "helpEdit": "대기 텍스트 편집 (메타데이터는 변경되지 않음)",
58
+ "helpRun": "현재 턴을 중단하고 대기열 맨 앞 항목 실행",
59
+ "helpMode": "실행 중 입력의 후속 입력 모드 설정",
60
+ "usageMove": "사용법: /queue move <시작 번호> <끝 번호> (순서는 /queue list로 확인)",
61
+ "usageEdit": "사용법: /queue edit <id> <새 텍스트>",
62
+ "usageMode": "사용법: /queue mode <steer|queue>",
63
+ "denied": {
64
+ "reorder": "대기열 순서를 변경할 수 없습니다",
65
+ "undo": "대기 중인 메시지를 취소할 수 없습니다",
66
+ "interject": "현재 Runtime은 끼어들기를 지원하지 않으므로 메시지는 대기열에 남아 있습니다"
67
+ },
68
+ "reordered": "✓ 순서를 변경했습니다 ({from} → {to})",
69
+ "edited": "✓ 편집했습니다 [{id}] (메타데이터 변경 없음)",
70
+ "noopMove": "실행하지 않음: 번호가 범위를 벗어나거나 현재 위치와 같습니다",
71
+ "noopEdit": "실행하지 않음: 해당 id를 찾을 수 없거나 텍스트가 비어 있습니다 ({id})",
72
+ "interrupting": "현재 턴을 중단하고 대기열 맨 앞 항목 [{id}]을(를) 실행합니다",
73
+ "noRunning": "실행 중인 턴이 없습니다. 맨 앞 항목 [{id}]은(는) 다음 입력 주기 후 실행됩니다",
74
+ "runEmpty": "대기열이 비어 있어 실행할 항목이 없습니다",
75
+ "modeSet": "✓ 후속 입력 모드 = {mode}",
76
+ "degradedNote": " (강등: {reason})"
77
+ },
78
+ "branch": {
79
+ "usage": "사용법: /branch [제목] | /branch -c <대화 ID> [제목]",
80
+ "usageShort": "/branch [제목] | /branch -c <대화 ID> [제목]",
81
+ "menu": "서버 대화를 최근 응답 지점에서 새 대화로 분기합니다",
82
+ "errUnknownFlag": "지원하지 않는 인수입니다",
83
+ "errBadConversationId": "대화 ID는 서버 측 UUID여야 합니다",
84
+ "errBadTitle": "제목이 너무 깁니다(최대 255자)",
85
+ "errNoConversations": "분기할 대화가 없습니다",
86
+ "errNoMessages": "이 대화에는 메시지가 아직 없어 분기할 수 없습니다",
87
+ "errNoBranchable": "이 대화의 기록에 저장된 메시지 ID가 없어 분기할 수 없습니다",
88
+ "errRequestFailed": "서버가 요청을 거부했습니다",
89
+ "errTransportFailed": "백엔드에 연결할 수 없습니다",
90
+ "withDetail": "{reason}: {detail}",
91
+ "failedWithStatus": "분기 실패: {reason}(HTTP 상태 코드 {status})",
92
+ "failedNoStatus": "분기 실패: {reason}",
93
+ "resolvedLatest": "대화를 지정하지 않아 최근에 갱신된 대화 '{sourceTitle}'({sourceId})을 사용합니다",
94
+ "created": "✓ '{sourceTitle}'을(를) {anchor} 메시지 위치에서 분기하여 '{branchTitle}'을(를) 만들었습니다. 새 대화 ID: {branchId}",
95
+ "roleAssistant": "어시스턴트",
96
+ "roleUser": "사용자"
97
+ },
98
+ "hooks": {
99
+ "trustedHeader": "신뢰한 디렉터리(~/.ihui/trusted-folders):",
100
+ "trustedNone": " 없음 - 프로젝트에 포함된 훅이 하나도 실행되지 않습니다",
101
+ "currentDirMark": " ← 현재 디렉터리",
102
+ "currentDirUntrusted": " 현재 디렉터리는 신뢰되지 않았습니다: {path}(`ihui hooks trust`로 신뢰하세요)",
103
+ "trustDesc": "지정한 디렉터리(기본값은 현재 디렉터리)를 신뢰하여 여기에 포함된 프로젝트 훅의 실행을 허용합니다",
104
+ "trustErrNotDir": "✗ 디렉터리가 존재하지 않아 신뢰 목록에 기록하지 않았습니다: {path}",
105
+ "trustAlready": "✓ 이 디렉터리는 이미 신뢰 목록에 있습니다: {path}",
106
+ "trustWriteFailed": "✗ ~/.ihui/trusted-folders 기록에 실패했습니다: {path}",
107
+ "trustOk": "✓ 디렉터리를 신뢰했습니다: {path}",
108
+ "trustWarning": " 이제부터 이 디렉터리 아래의 .ihui/.claude/.cursor hooks.json이 실제로 실행됩니다(command는 셸을 타고, webhook은 도구 입출력을 외부로 전송합니다). 직접 작성한 설정만 신뢰하세요.",
109
+ "untrustDesc": "디렉터리를 신뢰 목록(~/.ihui/trusted-folders)에서 제거합니다",
110
+ "untrustNotListed": "✓ 이 디렉터리는 애초에 신뢰 목록에 없었습니다: {path}",
111
+ "untrustOk": "✓ 신뢰를 취소했습니다: {path}"
112
+ },
113
+ "commandSafety": {
114
+ "dangerous": "⚠ 위험한 명령이 차단되었습니다: 위험 패턴 {pattern}와 일치했습니다\n꼭 실행해야 한다면 IHUI_YOLO=1을 설정하세요",
115
+ "alwaysConfirm": "⚠ 명령이 차단되었습니다: 이 명령은 \"항상 확인 필요\" 단계(삭제 / 강제 push / rebase / 릴리스처럼 되돌리기 어려운 작업)에 속하므로 IHUI_YOLO로도 조용히 통과되지 않습니다.\nIHUI_YOLO를 해제한 뒤 다시 시도하여 하나씩 확인하세요."
116
+ },
117
+ "sandbox": {
118
+ "spawnError": "명령을 시작하지 못했습니다({code})—— 하위 프로세스가 한 번도 실행되지 않았습니다. 이는 \"실행은 됐지만 출력이 없는\" 경우가 아닙니다. 명령과 현재 작업 디렉터리({cwd})가 존재하는지 확인하세요.",
119
+ "outputLimit": "출력이 {maxOutputBytes} 바이트 상한({code})을 초과했습니다. 프로세스가 종료되고 출력이 잘렸습니다 —— 이는 \"출력 과다\"라는 별개의 최종 상태로, 시간 초수가 아닙니다. 전체 출력을 받으려면 maxOutputBytes를 늘리거나 명령 출력을 줄이세요.",
120
+ "outputSpilled": "출력이 {maxOutputBytes} 바이트 메모리 창을 초과했습니다. 넘친 부분은 {path}에 기록되었습니다 —— 전체 출력을 메모리에 보관하지 않습니다. 파일은 증거로 보존되므로 확인 후 삭제하세요.",
121
+ "statusMissing": "없음",
122
+ "unattributed": "실패 유형을 판정하지 못했습니다(원본 정보 유지: {raw})—— 시간 초수로도, 정상 완료로도 분류하지 않았습니다. 직접 확인한 뒤 다시 시도하세요.",
123
+ "fsProbeUnavailable": "명령이 출력 없이 {status}(으)로 종료했지만 파일 시스템 상태를 조회할 수 없습니다({why})—— 미판정: \"공간/inode 고갈\"로도, \"아무 일도 일어나지 않은 것\"으로도 간주하지 않습니다.",
124
+ "fsExhaustedSpace": "원인 진단: 명령이 출력 없이 {status}(으)로 종료했지만 {cwd}가 있는 파일 시스템의 여유 공간이 고갈된 것으로 측정되었습니다(bavail×bsize≈{availMB}MB, 10MB 진단 임계값 미만)—— 디스크 공간 부족으로 출력/쓰기가 실패했을 가능성이 높습니다. 디스크 공간을 정리한 뒤 다시 시도하세요.",
125
+ "fsExhaustedInodes": "원인 진단: 명령이 출력 없이 {status}(으)로 종료했지만 {cwd}가 있는 파일 시스템의 inode가 고갈된 것으로 측정되었습니다(ffree={freeInodes}, 1000 진단 임계값 미만)—— 디렉터리 항목이 가득 찼습니다. 작은 파일/디렉터리를 정리하거나 파일 시스템의 inode 할당량을 확인한 뒤 다시 시도하세요.",
126
+ "envCredentialReport": "자격 증명으로 보이는 형태의 환경 변수를 자식 프로세스 env에서 제거했습니다(기본 전면 제거; 화이트리스트 통과는 MCP server.env / hook 설정 경유): {vars} — 동일한 목록은 샌드박스 감사 로그(IHUI_SANDBOX_AUDIT_LOG)에 구조화되어 기록되며, 서드파티 CLI가 갑자기 자격 증명을 잃었을 때의 직접적인 증거 경로입니다."
127
+ },
128
+ "goalNotAchieved": "독립 검증에 통과하지 못해 이 실행을 완료로 보고할 수 없습니다",
129
+ "truncatedByLength": "출력이 길이 상한에 도달해 잘렸으며 응답은 불완전할 수 있습니다. 나눠서 계속 요청하거나 max_tokens를 높인 뒤 다시 시도하세요.",
130
+ "truncationContinuationBadge": "출력이 길이 제한에 도달하여 자동으로 이어쓰는 중입니다({count}/{max}, 이유: {reason}). 최종적으로 불완전하면 다시 알려드립니다.",
131
+ "truncatedContinuationExhausted": "자동 이어쓰기 3번 후에도 길이 상한에 도달해 응답이 불완전합니다. max_tokens를 높이거나 나눠서 계속 요청하세요.",
132
+ "partialDoneTitle": "응답이 중단되었습니다. 아래 내용은 불완전할 수 있습니다",
133
+ "mcpCredentials": {
134
+ "storePlaintext": "MCP 자격 증명이 {path}에 평문으로 저장되어 있습니다(이 기기에서는 평문으로 강등)",
135
+ "storeEncrypted": "MCP 자격 증명이 암호화되어 저장되었습니다(백엔드: {backend})",
136
+ "migrationFailed": "자격 증명 이전이 완료되지 않아 원본 파일을 그대로 두고 덮어쓰지 않았습니다({reason})"
137
+ }
138
+ },
139
+ "waiting": {
140
+ "agent": {
141
+ "first": {
142
+ "0": "답변을 준비하고 있습니다…",
143
+ "1": "답변 구성을 생각하고 있습니다…",
144
+ "2": "알겠습니다, 답변을 고민 중입니다…",
145
+ "3": "답변을 생성하고 있습니다…",
146
+ "4": "질문을 받았습니다, 처리 중입니다…"
147
+ },
148
+ "middle": {
149
+ "0": "계속 처리하고 있습니다…",
150
+ "1": "앞 내용을 이어서 생각하고 있습니다…",
151
+ "2": "나머지 답변을 정리하고 있습니다…",
152
+ "3": "질문에 대응하고 있습니다…",
153
+ "4": "다음 답변을 생성하고 있습니다…"
154
+ },
155
+ "followup": {
156
+ "0": "추가 질문을 확인하고 있습니다…",
157
+ "1": "맥락을 고려해 생각하고 있습니다…",
158
+ "2": "추가 질문에 대한 답변을 정리하고 있습니다…",
159
+ "3": "추가 질문을 받았습니다…",
160
+ "4": "답변을 보충하고 있습니다…"
161
+ }
162
+ },
163
+ "computer": {
164
+ "first": {
165
+ "0": "연산 리소스를 확보하고 있습니다…",
166
+ "1": "실행 환경을 초기화하고 있습니다…",
167
+ "2": "처리를 시작하고 있습니다…",
168
+ "3": "연산을 할당하고 있습니다…",
169
+ "4": "초기 계산을 실행하고 있습니다…"
170
+ },
171
+ "middle": {
172
+ "0": "실행 중입니다…",
173
+ "1": "계산하고 있습니다, 잠시만 기다려 주세요…",
174
+ "2": "중간 결과를 처리하고 있습니다…",
175
+ "3": "중단 없이 진행하고 있습니다…",
176
+ "4": "연산 중입니다…"
177
+ },
178
+ "followup": {
179
+ "0": "다시 계산하고 있습니다…",
180
+ "1": "새 입력으로 처리를 이어가고 있습니다…",
181
+ "2": "추가분을 처리하고 있습니다…",
182
+ "3": "결과를 업데이트하고 있습니다…",
183
+ "4": "추가 요청에 대응하고 있습니다…"
184
+ }
185
+ },
186
+ "context": {
187
+ "first": {
188
+ "0": "대화 맥락을 확인하고 있습니다…",
189
+ "1": "관련 맥락을 불러오고 있습니다…",
190
+ "2": "배경 정보를 정리하고 있습니다…",
191
+ "3": "관련 기억을 떠올리고 있습니다…",
192
+ "4": "맥락을 준비하고 있습니다…"
193
+ },
194
+ "middle": {
195
+ "0": "앞 내용과 연결해 이어가고 있습니다…",
196
+ "1": "맥락을 고려해 생각하고 있습니다…",
197
+ "2": "이전 메시지를 되돌아보고 있습니다…",
198
+ "3": "맥락 준비 완료, 처리 중입니다…",
199
+ "4": "이전 메시지와 대조하고 있습니다…"
200
+ },
201
+ "followup": {
202
+ "0": "맥락과 함께 추가 질문을 이해하고 있습니다…",
203
+ "1": "관련 맥락을 되돌아보고 있습니다…",
204
+ "2": "이전 논의와 연결하고 있습니다…",
205
+ "3": "앞 내용과 대조해 보충하고 있습니다…",
206
+ "4": "맥락을 바탕으로 처리하고 있습니다…"
207
+ }
208
+ },
209
+ "plan": {
210
+ "first": {
211
+ "0": "대응 계획을 세우고 있습니다…",
212
+ "1": "요청을 분해하고 있습니다…",
213
+ "2": "실행 단계를 계획하고 있습니다…",
214
+ "3": "작업 요점을 분석하고 있습니다…",
215
+ "4": "답변 개요를 만들고 있습니다…"
216
+ },
217
+ "middle": {
218
+ "0": "계획을 진행하고 있습니다…",
219
+ "1": "다음 단계로 넘어가고 있습니다…",
220
+ "2": "계획 실행 중입니다…",
221
+ "3": "단계대로 처리하고 있습니다…",
222
+ "4": "남은 단계를 실행하고 있습니다…"
223
+ },
224
+ "followup": {
225
+ "0": "계획을 조정하고 있습니다…",
226
+ "1": "추가 질문에 맞춰 단계를 업데이트하고 있습니다…",
227
+ "2": "다시 계획하고 있습니다…",
228
+ "3": "계획 세부 사항을 보충하고 있습니다…",
229
+ "4": "새로운 요청에 대응하고 있습니다…"
230
+ }
231
+ },
232
+ "detail": {
233
+ "first": {
234
+ "0": "자세한 설명을 준비하고 있습니다…",
235
+ "1": "세부 사항을 정리하고 있습니다…",
236
+ "2": "요점을 정리하고 있습니다…",
237
+ "3": "자세한 답변을 생성하고 있습니다…",
238
+ "4": "답변 세부 사항을 다듬고 있습니다…"
239
+ },
240
+ "middle": {
241
+ "0": "세부 사항을 보충하고 있습니다…",
242
+ "1": "설명을 확장하고 있습니다…",
243
+ "2": "후속 내용을 다듬고 있습니다…",
244
+ "3": "세부 사항을 정리하는 중입니다…",
245
+ "4": "답변을 다듬고 있습니다…"
246
+ },
247
+ "followup": {
248
+ "0": "질문하신 세부 사항을 보충하고 있습니다…",
249
+ "1": "추가 질문의 요점을 확장하고 있습니다…",
250
+ "2": "설명을 자세히 다듬고 있습니다…",
251
+ "3": "보충 내용을 준비하고 있습니다…",
252
+ "4": "추가 질문에 대한 답변을 마무리하고 있습니다…"
253
+ }
254
+ },
255
+ "vividTail": ", 금방 끝납니다"
256
+ },
257
+ "cliImportSessions": {
258
+ "sourceClaude": "Claude Code의 세션 transcript",
259
+ "sourceCodex": "Codex CLI의 rollout 세션 로그",
260
+ "sourceCursor": "Cursor가 내보낸 chat JSON / state.vscdb(SQLite) / cursor-agent 전사",
261
+ "sourceAider": "Aider가 저장소에 남기는 chat markdown 기록",
262
+ "invalidSource": "유효하지 않은 세션 출처: {valueValue}",
263
+ "validValues": " 유효한 값: {values}",
264
+ "sourcesHint": " 각 출처 설명은 다음으로 확인하세요: ihui import sessions sources",
265
+ "ambiguousNonInteractive": "{length}개의 후보 내보내기 파일을 발견했습니다. 비대화 환경에서는 선택할 수 없습니다.",
266
+ "passPathExplicitly": " 대상 파일 경로를 인자로 전달하세요: ihui import sessions parse <source> <파일 경로>",
267
+ "chooseExportFile": "가져올 내보내기 파일을 선택하세요:",
268
+ "pathNotFound": "경로가 존재하지 않습니다: {abs}",
269
+ "noImportableFile": "가져올 수 있는 내보내기 파일을 찾지 못했습니다.",
270
+ "scannedPaths": " 스캔 위치: {scanned}",
271
+ "acceptedExtensions": " 허용 확장자: {extensions}",
272
+ "alsoSpecifyPath": " 파일 경로를 직접 지정할 수도 있습니다: ihui import sessions parse {source} <파일 경로>",
273
+ "autoDiscovered": "내보내기 파일을 자동 발견했습니다: {first}",
274
+ "candidatesListed": "{length}개의 후보 내보내기 파일을 발견했습니다(수정 시간 내림차순):",
275
+ "fileTooLarge": "파일이 너무 큽니다: {size}MB(상한 {limitMb}MB). 분할 후 가져오세요.",
276
+ "fileMissing": "파일이 존재하지 않습니다: {absFile}",
277
+ "readFailed": "파일 읽기에 실패했습니다: {reason}",
278
+ "parseFailed": "분석에 실패했습니다: {error}",
279
+ "untitled": "(제목 없음)",
280
+ "previewHeader": "\n세션 분석 미리보기({label})",
281
+ "previewFile": " 파일: {absFile}",
282
+ "truncatedWarning": " ⚠ 내보내기 용량이 커 서버에서 잘렸습니다. 저장된 메시지는 불완전할 수 있습니다",
283
+ "warningsHeader": " 경고:",
284
+ "noSessionsParsed": " 분석된 세션이 없습니다",
285
+ "sessionsCountLine": "\n 세션 {length}개(메타 정보만 표시하며 메시지 본문은 보여주지 않습니다):",
286
+ "noValidContent": "유효한 메시지 내용이 없습니다",
287
+ "skipNoContent": " ✗ #{index}는 유효한 메시지 내용이 없어 건너뛰었습니다",
288
+ "importedLine": " ✓ #{index} {detail}",
289
+ "importedSuffix": " · 세션 {conversationId} · 메시지 {importedMessages}개",
290
+ "importFailed": " ✗ #{index} 가져오기 실패: {error}",
291
+ "importError": " ✗ #{index} 가져오기 중 예외: {reason}",
292
+ "indexOutOfRange": "범위를 벗어난 번호입니다: {index}(이번에 {total}개 세션을 분석했습니다)",
293
+ "supportedSources": "\n지원하는 이전 세션 출처:",
294
+ "sourceExtensions": " 확장자: {extensions}",
295
+ "sourceDirs": " 일반적인 내보내기 디렉터리: {dirs}",
296
+ "backendDoesParsing": "\n 분석과 저장은 백엔드에서 수행합니다. CLI는 업로드와 메타 정보 표시만 담당합니다.",
297
+ "noneDiscovered": " 내보내기 파일을 찾지 못했습니다(스캔 위치 {scanned})",
298
+ "hintParse": "\n 가져오기: ihui import sessions parse <source> <파일 경로>",
299
+ "hintCommit": " 저장: ihui import sessions commit {source} \"{abs}\" --all(또는 --only 1,3)",
300
+ "scopeRequired": "가져올 범위를 명시하세요: --all 또는 --only <번호>",
301
+ "exampleAll": " 예: ihui import sessions commit claude_code --all",
302
+ "exampleOnly": " 예: ihui import sessions commit claude_code export.jsonl --only 1,3-5",
303
+ "indexesFromPreview": " 번호는 분석 미리보기에서 확인합니다. 먼저 ihui import sessions parse를 실행하세요.",
304
+ "invalidOnly": "유효하지 않은 --only 값: {only}",
305
+ "onlyFormat": " 형식: 쉼표로 구분한 번호, 구간 지원(예: 1,3,5-8)",
306
+ "nothingToImport": "가져올 세션이 없습니다.",
307
+ "startImport": "\n세션 {length}개를 가져옵니다(직렬 실행, 한 건 실패해도 중단하지 않습니다):",
308
+ "importDone": "\n가져오기 완료:",
309
+ "importSucceeded": " 성공: {imported}",
310
+ "importFailedCount": " 실패: {failed}",
311
+ "failureDetails": "\n 실패 세부 사항:",
312
+ "noImportHistory": "\n세션 가져오기 기록이 없습니다",
313
+ "importHistoryHeader": "\n세션 가져오기 이력(최신순, {length}건 표시{suffix}):",
314
+ "importHistoryRow": " 분석 {parsedCount} · 성공 {importedCount} · 실패 {failedCount}{error}",
315
+ "cmdDesc": "외부 이전 세션 가져오기(Claude Code / Codex / Cursor / Aider)",
316
+ "sourcesDesc": "지원 출처·허용 확장자·일반적 내보내기 디렉터리 목록",
317
+ "discoverDesc": "로컬 내보내기 후보를 자동 발견(source 생략 시 모든 출처 스캔)",
318
+ "scanDirDesc": "스캔 디렉터리 지정(기본은 해당 출처의 일반 내보내기 경로)",
319
+ "limitDesc": "최대 표시 건수(기본 {DEFAULT_DISCOVER_LIMIT})",
320
+ "parseDesc": "업로드 후 분석·미리보기(저장 없음, 메시지 본문 미표시)",
321
+ "commitDesc": "분석 후 각 세션을 직렬로 저장",
322
+ "allDesc": "이번에 분석한 모든 세션 가져오기",
323
+ "onlyDesc": "지정한 번호만 가져오기(예: 1,3,5-8)",
324
+ "historyDesc": "세션 가져오기 이력 조회(최근 50건)",
325
+ "conversationMeta": "· 메시지 {count}개 · 모델 {model} · 시작 {started}",
326
+ "historyCappedSuffix": ", 서버 상한 50건에 도달",
327
+ "noFixedRoots": "고정 내보내기 디렉터리 없음(--path로 지정)",
328
+ "sourceWechat": "WeChat 채팅 기록 내보내기(서드파티 도구 또는 수동 저장한 zip/txt)"
329
+ },
330
+ "cliEntry": {
331
+ "tagline": "IHUI AI Coding Agent — Claude Code / Codex를 지향하는 코딩 에이전트",
332
+ "modelIdDesc": "모델 ID",
333
+ "workspacePathDesc": "작업 공간 경로",
334
+ "maxIterationsDesc": "도구 반복 최대 횟수",
335
+ "maxTurnsDesc": "도구 반복 최대 횟수(--max-iterations 별칭, P1-3에서 OpenAI o1/o3 용어에 맞춤",
336
+ "apiUrlDesc": "백엔드 API 주소(기본은 settings.json, 최후 대체는 http://localhost:8802)",
337
+ "apiKeyDesc": "API 키",
338
+ "resumeDesc": "이전 세션 재개",
339
+ "continueDesc": "최근 세션 이어하기",
340
+ "jsonDesc": "Headless 모드: NDJSON 이벤트 스트림 출력(비 TTY에서는 자동 활성화, CI/CD 친화)",
341
+ "outputFormatDesc": "P1-5 Headless 출력 형식: text|json|markdown|yaml(--json 덮어쓰기, 기본 text)",
342
+ "mcpFlagDesc": "MCP 도구 사용(~/.ihui/mcp.json에서 불러오기)",
343
+ "allowDangerousDesc": "위험한 도구(run_command/delete_file/git_commit)를 확인 없이 자동 실행(기본은 거부, REPL에서는 대화형 확인)",
344
+ "permissionLeaseDesc": "권한 리스: 이번 실행에서만 단계별 승인을 완화할 도구를 명시적으로 지정(쉼표 구분, 예 write_file,git_commit). 지정하지 않으면 아무것도 부여되지 않으며 동작은 변경 전과 동일",
345
+ "permissionLeaseTtlDesc": "권한 리스 지속 시간(분, 기본 10, 상한 60. 시간과 턴 수 중 먼저 도달한 쪽에서 만료)",
346
+ "permissionLeaseTurnsDesc": "권한 리스 턴 수 상한(기본 1, 상한 25. 시간과 턴 수 중 먼저 도달한 쪽에서 만료)",
347
+ "permissionLeaseGranted": "ℹ 권한 리스가 부여됨: {tools}(지속 {ttl}분 / {turns}턴, 만료 {expiresAt})",
348
+ "permissionLeaseDigestDesc": "콘텐츠 바인딩 모드 켜기(완화가 아니라 강화입니다): 목록의 도구는 먼저 실제 승인을 한 번 받아야 해제되며, 이후 호출 내용이 바뀌면 기존 승인이 무효화되어 다시 확인합니다. --permission-lease와 함께 사용하세요. 끄려면: 이 flag를 삭제하거나 IHUI_LEASE_SLOT_DIGEST=0으로 설정",
349
+ "permissionLeaseDigestGranted": "ℹ 콘텐츠 바인딩 모드가 켜졌습니다(완화가 아니라 강화): 목록의 도구는 첫 승인이 호출 내용에 바인딩되며, 내용이 바뀌면 기존 승인이 무효화되어 다시 확인합니다. 유효 시간과 턴 수는 위 줄을 참고하세요. 끄려면 --permission-lease-digest를 삭제하거나 IHUI_LEASE_SLOT_DIGEST=0으로 설정",
350
+ "permissionLeaseInvalid": "권한 리스를 부여할 수 없어 이번 실행을 중단했습니다: {reason}",
351
+ "replLeaseDesc": "대화형으로 권한 리스 부여/조회/취소(지정 도구는 매번 승인 생략, 시간·턴 수 제한)",
352
+ "replLeaseUsage": "/lease <도구1,도구2> [--ttl=분] [--turns=턴] | /lease | /lease off",
353
+ "replLeaseGranted": "✅ 권한 리스를 부여했습니다: {tools}(기간 {ttl}분 / {turns}턴, 만료 {expiresAt}, 감사 참조 {auditRef})",
354
+ "replLeaseNone": "권한 리스가 부여되지 않았습니다(기본 모드): 넓은 권한 작업은 계속 매번 승인을 요청합니다",
355
+ "replLeaseActive": "권한 리스 활성: scope={scope} 기능={tools} 잔여 {remainingSeconds}초, 턴 {turnsUsed}/{turnsTotal}, 만료 {expiresAt}, 감사 참조 {auditRef}",
356
+ "replLeaseDigestGranted": "ℹ 콘텐츠 바인딩 모드가 켜졌습니다(완화가 아니라 강화): 위 도구의 첫 승인이 호출 내용에 바인딩되며, 내용이 바뀌면 기존 승인이 무효화되어 다시 확인합니다. 끄려면: --digest를 삭제하거나 IHUI_LEASE_SLOT_DIGEST=0으로 설정",
357
+ "replLeaseDigestStateOn": "다이제스트 바인딩: 켜기(이미 {slots}개 슬롯이 바인딩됨. 아직 바인딩되지 않은 도구는 첫 승인까지 계속 확인합니다)",
358
+ "replLeaseDigestStateOff": "다이제스트 바인딩: 끄기(도구 이름이 일치하면 해제되며 호출 내용으로는 고정하지 않음)",
359
+ "replLeaseExpired": "권한 리스가 만료되었습니다(시간 초과 또는 턴 소진): 감사 참조 {auditRef}",
360
+ "replLeaseRevoked": "권한 리스를 즉시 취소했습니다: 감사 참조 {auditRef}(이후 기본 모드로 돌아갑니다)",
361
+ "replLeaseNothingToRevoke": "취소할 권한 리스가 없습니다(기본 모드이므로 불필요)",
362
+ "replLeaseInvalid": "✗ 권한 리스를 부여하지 않았습니다. 현재 상태는 변경되지 않았습니다: {reason}",
363
+ "planDesc": "도구 실행 전 Agent가 먼저 계획(plan 블록)을 출력하도록 강제(긴 작업에 권장)",
364
+ "autoApprovePlanDesc": "P0-C LLM이 제안한 plan 블록 자동 승인(위험: 사용자 승인 관문을 건너뜁니다. 기본 꺼짐, 켜려면 명시 필요)",
365
+ "temperatureDesc": "LLM 온도(0-2, 코드 작업은 0.2, 창작 작업은 0.7 권장)",
366
+ "maxTokensDesc": "생성 토큰 최대 수",
367
+ "localeDesc": "인터페이스 언어(zh-CN/en/ja/ko/zh-TW)",
368
+ "promptFileDesc": "파일에서 prompt 읽기(매우 긴 PRD 지원, UTF-8)",
369
+ "toolsAllowDesc": "P0-7 도구 허용 목록(쉼표 구분, 예: read_file,grep,glob). 지정되면 이 도구만 허용됩니다",
370
+ "toolsDenyDesc": "P0-7 도구 거부 목록(쉼표 구분, 예: delete_file,git_commit). 지정 도구는 항상 거부됩니다",
371
+ "permissionModeDesc": "권한 모드: default|acceptEdits|bypassPermissions|plan|manual",
372
+ "noUpdateCheckDesc": "P1-15 시작 시 버전 확인 비활성화(기본은 24시간마다 npm registry 확인)",
373
+ "noSetupDesc": "첫 실행 안내 생략(~/.ihui/settings.json이 없어도 대화형 질문을 하지 않음)",
374
+ "promptFileConflict": "⚠ positional prompt와 --prompt-file이 함께 주어졌습니다. --prompt-file을 우선합니다",
375
+ "interruptSaving": "\n⚠ 중단입니다. 세션을 저장하는 중...",
376
+ "apiKeyExposedWarn": "⚠ --api-key는 프로세스 목록에 노출됩니다. IHUI_API_KEY 환경 변수나 settings.json을 사용하세요",
377
+ "chatArgumentDesc": "바로 실행할 작업(생략하면 REPL 진입)",
378
+ "chatModeDesc": "대화 모드 진입(멀티 턴)",
379
+ "agentModeDesc": "Agent 모드: 작업을 자율적으로 여러 단계로 실행(--json headless 지원, --prompt-file로 긴 prompt 입력)",
380
+ "initDesc": "현재 디렉터리에 AGENTS.md 템플릿 생성",
381
+ "forceDesc": "기존 파일 덮어쓰기",
382
+ "sessionsDesc": "이전 세션 목록 보기",
383
+ "sessionsHeader": "\n이전 세션:",
384
+ "sessionsRow": " 작업 공간: {workspacePath} 모델: {modelId} 이력: {length} 개",
385
+ "mcpCmdDesc": "MCP 서버 관리",
386
+ "mcpListDesc": "설정된 MCP 서버 목록 보기",
387
+ "mcpLocalHeader": "\n로컬 MCP 서버 설정:",
388
+ "mcpConfigPathLine": " 설정 파일: {configPath}",
389
+ "mcpLocalEmpty": "\n로컬 MCP 서버 설정이 없습니다",
390
+ "mcpAddDesc": "MCP 서버 설정 추가",
391
+ "mcpAddArgsDesc": "명수행 인자(stdio)",
392
+ "mcpAddTransportDesc": "전송 방식: stdio|http|sse",
393
+ "mcpAddUrlDesc": "http/sse 엔드포인트 URL",
394
+ "mcpAddTokenDesc": "bearer 인증 토큰",
395
+ "mcpAddUsage": "사용법: ihui mcp add <name> [command] [-t stdio|http|sse] [-u url]",
396
+ "mcpAdded": "MCP 서버를 추가했습니다: {name}",
397
+ "mcpTransportLine": " 전송 방식: {transport}",
398
+ "mcpCommandLine": " 명령: {command}",
399
+ "mcpRemoveDesc": "MCP 서버 설정 삭제",
400
+ "mcpRemoved": "MCP 서버를 삭제했습니다: {name}",
401
+ "mcpNotFound": "MCP 서버를 찾을 수 없습니다: {name}",
402
+ "skillsCmdDesc": "skills 관리·확인(.ihui/skills/*.md 등 4단계 디렉터리를 평면 로딩)",
403
+ "skillsListDesc": "현재 작업 공간에 불러온 skills 목록 보기",
404
+ "skillsEmpty": "skills이 없습니다(다음 디렉터리에 *.md 파일을 만드세요):",
405
+ "skillsLoaded": "\n{count}개의 skill을 불러왔습니다:",
406
+ "skillsSourceLine": " 출처: {source}",
407
+ "skillShowDesc": "지정한 skill 내용 보기",
408
+ "skillShadowReportDesc": "allowed-tools 그림자 장부를 확인합니다(기록 전용, 차단 없음)",
409
+ "skillNotFound": "skill을 찾을 수 없습니다: {name}",
410
+ "skillSourceDetail": "출처: {source}",
411
+ "skillDescriptionLine": "설명: {description}\n",
412
+ "settingsCmdDesc": "~/.ihui/settings.json 통합 설정 관리",
413
+ "settingsInitDesc": "settings.json 템플릿 생성(이미 있으면 --force로 덮어씀)",
414
+ "settingsTemplateCreated": "설정 템플릿을 생성했습니다: {settingsPath}",
415
+ "settingsEditHint": "이 파일에서 기본값을 설정하세요. CLI flag가 최우선입니다",
416
+ "settingsAlreadyExists": "설정 파일이 이미 있습니다: {settingsPath}",
417
+ "settingsForceHint": "--force로 덮어쓰세요",
418
+ "settingsPathDesc": "settings.json 경로 표시",
419
+ "acpDesc": "ACP(Agent Client Protocol) 서버 시작 — Zed/VSCode/Cursor 등 편집기 임베드용",
420
+ "undoDryRunDesc": "복원할 파일과 영향을 받는 턴만 미리 보고 실제로 롤백하지 않습니다",
421
+ "undoPreparing": "복원할 파일과 영향을 받는 턴을 확인하는 중…",
422
+ "undoConfirm": "{fileCount}개 파일을 복원하고 이 라운드부터 영향받는 {turnCount}라운드 변경을 취소합니다. 작업 기록은 삭제되지 않습니다.",
423
+ "undoSucceeded": "{count}개 파일을 복원했습니다. 작업 기록은 유지됩니다.",
424
+ "undoPartialWarning": "일부 변경이 CLI 파일 체크포인트에 없어 롤백이 불완전할 수 있습니다.",
425
+ "undoUnavailable": "파일 체크포인트를 사용할 수 없습니다. 작업 공간은 변경되지 않았습니다.",
426
+ "undoFailedChanged": "롤백 미완료: 작업 공간이 변경되었습니다(확인됨). 계속하기 전에 아래 파일 목록을 확인하세요.",
427
+ "undoFailedUnverifiable": "롤백 미완료. 작업 공간 변경 여부를 확인할 수 없습니다(일부 파일을 읽을 수 없음). 재시도 전에 수동으로 확인하세요.",
428
+ "undoDesc": "최근 N단계 파일 변경 되돌리기(기본 1, agent 세션 작업 공간에서 실행 필요)",
429
+ "sessionOptDesc": "세션 ID(기본은 최근 세션)",
430
+ "undoNothing": "되돌릴 변경이 없습니다",
431
+ "undoDone": "✓ {undoneSteps}단계를 되돌렸습니다(남은 되돌리기 가능 {remaining}단계):",
432
+ "redoDesc": "최근 되돌린 N단계 다시 실행(기본 1)",
433
+ "redoNothing": "다시 실행할 변경이 없습니다",
434
+ "redoDone": "✓ {redoneSteps}단계를 다시 실행했습니다(남은 다시 실행 가능 {remaining}단계):",
435
+ "shareDesc": "공유 가능한 세션 스냅샷 생성(markdown+HTML+단축 링크+QR 코드)",
436
+ "shareFormatDesc": "출력 형식: markdown|html|json",
437
+ "shareNoToolsDesc": "도구 호출 상세 제외(기본은 포함)",
438
+ "shareIncludeFilesDesc": "파일 내용 포함(민감 정보 유출 위험, 기본 꺼짐)",
439
+ "shareTitleDesc": "스냅샷 제목",
440
+ "shareNoSession": "세션을 찾을 수 없습니다. 먼저 ihui agent로 세션을 실행하세요",
441
+ "shareDone": "✓ 세션 스냅샷을 생성했습니다",
442
+ "shareShortUrl": " 단축 링크: {url}",
443
+ "shareHash": " 변조 방지 해시: {hash}",
444
+ "shareSize": " 크기: {sizeBytes} 바이트",
445
+ "qrGenerated": " QR 코드: 생성됨(data URL)",
446
+ "qrFallback": " QR 코드: 대체 모드(qr 라이브러리를 추가하면 활성화)",
447
+ "modeDesc": "인터랙션 모드 확인·전환: plan(읽기 전용 조사) | build(변경 실행) | review(diff 심사)",
448
+ "modeCurrent": "현재 모드: {mode}",
449
+ "modeAvailable": "사용 가능한 모드: plan(읽기 전용) / build(실행) / review(심사)",
450
+ "modeUsage": "사용법: ihui mode build # build 모드로 전환",
451
+ "modeUnknown": "알 수 없는 모드: {modeArg}(선택지: plan/build/review)",
452
+ "auditCmdDesc": "감사 로그 조회·필터링",
453
+ "auditQueryDesc": "감사 로그 조회(도구명/시간/성공 여부로 필터)",
454
+ "auditToolFilterDesc": "도구명으로 필터(부분 일치, 대소문자 무시)",
455
+ "auditSinceDesc": "시작 시간(ISO 문자열 또는 1h/30m/1d 같은 상대 시각)",
456
+ "auditSuccessOnlyDesc": "성공한 호출만 표시",
457
+ "auditFailureOnlyDesc": "실패한 호출만 표시",
458
+ "auditLimitDesc": "반환 최대 건수(기본 50)",
459
+ "auditJsonDesc": "JSON 형식 출력(파이프 처리에 유리)",
460
+ "auditListHeader": "\n📋 감사 로그(표시 {count} / 일치 {filtered} / 전체 {total}):",
461
+ "auditStatsDesc": "감사 로그 통계(도구명·성공/패별 집계)",
462
+ "auditToolArgsDesc": "과거 도구 호출을 오프라인으로 인수 검증에 다시 실행해 편차 명단을 출력합니다(인수 값은 기록하지 않음)",
463
+ "auditToolArgsLimitDesc": "다시 실행할 기록 수 상한(기본 100000)",
464
+ "auditToolArgsHeader": "\n🔍 인수 편차 명단(기록 {records} / 등록부 일치 {matched} / 알 수 없는 도구 {unknown} / 편차 있음 {invalid} / 명단 행 {rows}):",
465
+ "auditToolArgsNone": "인수 편차가 없습니다({matched}회 호출 모두 검증 통과)",
466
+ "auditToolArgsFooter": "형 변환만 {coerced}건 · 검증기 예외 {threw}건",
467
+ "auditEmpty": "감사 로그가 비어 있습니다",
468
+ "auditStatsHeader": "\n📊 감사 통계(전체 {total}건, 일치 {filtered}건):",
469
+ "auditNoMatch": "일치하는 감사 로그가 없습니다(전체 {total}건)",
470
+ "auditColTool": "도구",
471
+ "auditColTotal": "총건수",
472
+ "auditColSuccess": "성공",
473
+ "auditColFailure": "실패",
474
+ "auditColRate": "성공률",
475
+ "goalDesc": "goal 모드: 목표 텍스트(--goal-criteria 와 함께 사용)",
476
+ "goalCriteriaDesc": "goal 모드: 필수 조건 JSON 파일(배열, 각 항목은 id/statement, 선택 probe_command/expected_exit_code/required)",
477
+ "goalCriteriaBadArg": "--goal-criteria 에는 파일 경로가 필요합니다",
478
+ "goalCriteriaUnreadable": "--goal-criteria 파일 {file}을(를) 읽을 수 없습니다: {error}",
479
+ "goalCriteriaNotAnArray": "{file}은(는) 빈 배열이 아닌 JSON 배열이어야 합니다",
480
+ "goalCriteriaBadEntry": "{index}번째 조건에 id 또는 statement가 없습니다"
481
+ },
482
+ "cliWorkflows": {
483
+ "contextBadJson": "--context가 유효한 JSON이 아닙니다: {message}",
484
+ "noWorkflows": "(워크플로 없음)",
485
+ "listHeader": "\n=== 워크플로 목록 ===",
486
+ "listRow": " [{id}] {name} [{triggerType}] [{isActive}] [{length}단계]",
487
+ "paginationFooter": "\n총 {total}건({page} 페이지, 페이지당 {pageSize}건)",
488
+ "detailHeader": "\n=== 워크플로 상세 ===",
489
+ "detailName": " 이름: {name}",
490
+ "detailDescription": " 설명: {description}",
491
+ "detailTrigger": " 트리거: {triggerType}",
492
+ "detailActive": " 활성화: {isActive}",
493
+ "detailSteps": " 단계 수: {length}",
494
+ "detailCreator": " 생성자: {creator}",
495
+ "detailCreatedAt": " 생성 시간: {createdAt}",
496
+ "detailUpdatedAt": " 업데이트: {updatedAt}",
497
+ "stepsOverview": "\n단계 개요:",
498
+ "stepLabel": "(단계 {step})",
499
+ "triggered": "✓ 워크플로를 실행했습니다",
500
+ "instanceTasks": " [instance={id} status={status}] 작업 {length}개",
501
+ "noInstances": "(인스턴스 없음)",
502
+ "instanceListHeader": "\n=== 인스턴스 목록 ===",
503
+ "instanceListRow": " [{id}] wf={workflowId} [{status}] 시작={startedAt} 종료={completedAt}",
504
+ "instanceDetailHeader": "\n=== 인스턴스 상세 ===",
505
+ "instanceDetailId": " 인스턴스: {id}",
506
+ "instanceDetailWorkflow": " 워크플로: {workflowId}",
507
+ "instanceDetailProject": " 프로젝트: {projectId}",
508
+ "instanceDetailStatus": " 상태: {status}",
509
+ "instanceDetailStarted": " 시작 시간: {startedAt}",
510
+ "instanceDetailCompleted": " 완료 시간: {completedAt}",
511
+ "instanceDetailCreatedAt": " 생성 시간: {createdAt}",
512
+ "instanceDetailError": " 오류: {error}",
513
+ "tasksHeader": "\n작업({length}개):",
514
+ "noTasks": "\n(작업 없음)",
515
+ "instanceCancelled": "✓ 인스턴스를 취소했습니다 id={id} (status={status})",
516
+ "cmdDesc": "워크플로 관리·실행(Web 쪽 /workflows 대응)",
517
+ "listDesc": "워크플로 목록(페이지핑)",
518
+ "pageDesc": "페이지 번호(기본 1)",
519
+ "pageSizeDesc": "페이지당 건수(기본 20)",
520
+ "jsonDesc": "JSON 형식으로 출력",
521
+ "notLoggedIn": "✗ 미로그인 또는 토큰이 만료되었습니다. 다음을 실행하세요: ihui login",
522
+ "showDesc": "워크플로 상세 보기",
523
+ "triggerDesc": "워크플로를 실행해 instance 생성 및 작업 배정",
524
+ "projectIdDesc": "연결된 프로젝트 ID",
525
+ "contextDesc": "트리거 컨텍스트(JSON 문자열)",
526
+ "instancesDesc": "인스턴스 목록(워크플로·상태로 필터)",
527
+ "filterWorkflowDesc": "워크플로 ID로 필터",
528
+ "filterStatusDesc": "상태로 필터(pending/running/completed/failed/cancelled/timeout)",
529
+ "instanceShowDesc": "인스턴스 상세 보기(tasks 포함)",
530
+ "cancelDesc": "실행 중인 인스턴스 취소",
531
+ "unknownValue": "(알 수 없음)"
532
+ }
533
+ }