@refrainai/cli 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/ai-model-FM6GWCID.js +37 -0
  2. package/dist/ai-model-FM6GWCID.js.map +1 -0
  3. package/dist/chunk-2BVDAJZT.js +236 -0
  4. package/dist/chunk-2BVDAJZT.js.map +1 -0
  5. package/dist/chunk-2H7UOFLK.js +11 -0
  6. package/dist/chunk-2H7UOFLK.js.map +1 -0
  7. package/dist/chunk-7UCVPKD4.js +902 -0
  8. package/dist/chunk-7UCVPKD4.js.map +1 -0
  9. package/dist/chunk-AG3CFMYU.js +36 -0
  10. package/dist/chunk-AG3CFMYU.js.map +1 -0
  11. package/dist/chunk-CLYJHKPY.js +1131 -0
  12. package/dist/chunk-CLYJHKPY.js.map +1 -0
  13. package/dist/chunk-D5SI2PHK.js +74 -0
  14. package/dist/chunk-D5SI2PHK.js.map +1 -0
  15. package/dist/chunk-DJVUITRB.js +9084 -0
  16. package/dist/chunk-DJVUITRB.js.map +1 -0
  17. package/dist/chunk-H47NWH7N.js +4427 -0
  18. package/dist/chunk-H47NWH7N.js.map +1 -0
  19. package/dist/chunk-HQDXLWAY.js +109 -0
  20. package/dist/chunk-HQDXLWAY.js.map +1 -0
  21. package/dist/chunk-IGFCYKHC.js +1974 -0
  22. package/dist/chunk-IGFCYKHC.js.map +1 -0
  23. package/dist/chunk-RT664YIO.js +245 -0
  24. package/dist/chunk-RT664YIO.js.map +1 -0
  25. package/dist/chunk-RYIJPYM3.js +164 -0
  26. package/dist/chunk-RYIJPYM3.js.map +1 -0
  27. package/dist/chunk-TDSM3UXI.js +40 -0
  28. package/dist/chunk-TDSM3UXI.js.map +1 -0
  29. package/dist/chunk-UGPXCQY3.js +778 -0
  30. package/dist/chunk-UGPXCQY3.js.map +1 -0
  31. package/dist/chunk-VPK2MQAZ.js +589 -0
  32. package/dist/chunk-VPK2MQAZ.js.map +1 -0
  33. package/dist/chunk-WEYR56ZN.js +953 -0
  34. package/dist/chunk-WEYR56ZN.js.map +1 -0
  35. package/dist/chunk-XMFCXPYU.js +275 -0
  36. package/dist/chunk-XMFCXPYU.js.map +1 -0
  37. package/dist/chunk-Z33FCOTZ.js +251 -0
  38. package/dist/chunk-Z33FCOTZ.js.map +1 -0
  39. package/dist/cli.js +59 -0
  40. package/dist/cli.js.map +1 -0
  41. package/dist/compose-MTSIJY5D.js +547 -0
  42. package/dist/compose-MTSIJY5D.js.map +1 -0
  43. package/dist/config-ZSUNCFXR.js +9 -0
  44. package/dist/config-ZSUNCFXR.js.map +1 -0
  45. package/dist/fix-runbook-ZSBOTLC2.js +294 -0
  46. package/dist/fix-runbook-ZSBOTLC2.js.map +1 -0
  47. package/dist/google-sheets-DRWIVEVC.js +482 -0
  48. package/dist/google-sheets-DRWIVEVC.js.map +1 -0
  49. package/dist/registry-LZLYTNDJ.js +17 -0
  50. package/dist/registry-LZLYTNDJ.js.map +1 -0
  51. package/dist/runbook-data-helpers-KRR2SH76.js +16 -0
  52. package/dist/runbook-data-helpers-KRR2SH76.js.map +1 -0
  53. package/dist/runbook-executor-K7T6RJWJ.js +1480 -0
  54. package/dist/runbook-executor-K7T6RJWJ.js.map +1 -0
  55. package/dist/runbook-generator-MPXJBQ5N.js +800 -0
  56. package/dist/runbook-generator-MPXJBQ5N.js.map +1 -0
  57. package/dist/runbook-schema-3T6TP3JJ.js +35 -0
  58. package/dist/runbook-schema-3T6TP3JJ.js.map +1 -0
  59. package/dist/runbook-store-G5GUOWRR.js +11 -0
  60. package/dist/runbook-store-G5GUOWRR.js.map +1 -0
  61. package/dist/schema-5G6UQSPT.js +91 -0
  62. package/dist/schema-5G6UQSPT.js.map +1 -0
  63. package/dist/server-AG3LXQBI.js +8778 -0
  64. package/dist/server-AG3LXQBI.js.map +1 -0
  65. package/dist/tenant-ai-config-QPFEJUVJ.js +14 -0
  66. package/dist/tenant-ai-config-QPFEJUVJ.js.map +1 -0
  67. package/dist/yaml-patcher-VGUS2JGH.js +15 -0
  68. package/dist/yaml-patcher-VGUS2JGH.js.map +1 -0
  69. package/package.json +37 -0
@@ -0,0 +1,902 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/i18n/messages/en.ts
4
+ var messages = {
5
+ common: {
6
+ success: "Success",
7
+ failure: "Failed",
8
+ skipped: "Skipped",
9
+ aborted: "Aborted",
10
+ none: "(none)",
11
+ unknown: "(unknown)",
12
+ items: "items",
13
+ files: "files",
14
+ conditionSkipped: "condition skipped",
15
+ iterations: "iterations",
16
+ iteration: "iteration"
17
+ },
18
+ risk: {
19
+ low: "Low-side-effect operation",
20
+ medium: "Form submission, settings change, etc.",
21
+ high: "Irreversible operation (deletion, payment, etc.)"
22
+ },
23
+ reporter: {
24
+ runbook: "Runbook: {title}",
25
+ startUrl: "Start URL: {url}",
26
+ totalSteps: "Total steps: {count}",
27
+ statsLine: "Executed: {executed} Succeeded: {succeeded} Failed: {failed} Skipped: {skipped}",
28
+ statusAborted: "Status: Aborted",
29
+ totalDuration: "Total duration: {duration}",
30
+ memory: "Memory: {info}",
31
+ downloads: "Downloads: {count} files",
32
+ executionResult: "Execution Result",
33
+ batchResult: "Batch Execution Result",
34
+ batchTotalRows: "Total rows: {count}",
35
+ batchStats: "Succeeded: {succeeded} Failed: {failed}"
36
+ },
37
+ selfHeal: {
38
+ debugResult: "Self-Healing Result",
39
+ allStepsSuccess: "All steps passed ({count} steps, {duration})",
40
+ failedSteps: "--- Failed Steps ---",
41
+ yamlSuggestions: "--- Runbook (YAML) Fix Suggestions ---",
42
+ contextSuggestions: "--- Context (markdown) Fix Suggestions ---",
43
+ retryWarnings: "--- Retry Warnings ---",
44
+ retryCount: "#{ordinal} {description}: {count} retries (threshold: {threshold})"
45
+ },
46
+ confirmation: {
47
+ title: "Approval Required",
48
+ stepInfo: "Step {ordinal}: {description}",
49
+ riskLevelLabel: "Risk level: {level} ({hint})",
50
+ selectAction: "Select an action",
51
+ approve: "Approve and execute",
52
+ skip: "Skip this step",
53
+ abort: "Abort execution",
54
+ abortHint: "Stop all"
55
+ },
56
+ planner: {
57
+ extractingFromContext: "Extracting variable values from context...",
58
+ extractedFromContext: "{count} values extracted from context",
59
+ unresolvedRequired: "{count} required variables are unresolved. Please enter them.",
60
+ placeholder: "(required \u2014 could not extract from context)",
61
+ variableRequired: 'Variable "{name}" is required',
62
+ preVariables: "Pre-resolved variables:",
63
+ runtimeCaptures: "Runtime captures:",
64
+ controlFlow: "Control flow:",
65
+ conditionLabel: " Step {ordinal}: condition {condition}",
66
+ loopLabel: " Step {ordinal}: loop (max {max} iterations, {subSteps} sub-steps, condition: {condition})",
67
+ forEachLabel: " Step {ordinal}: forEach (max {max} items, {subSteps} sub-steps, source: {forEach})",
68
+ branchLabel: " Step {ordinal}: branch on {value} (cases: {cases})",
69
+ batchMode: "Batch mode: {count} rows ({path})",
70
+ stepCount: "Step count: {count}",
71
+ executionPlan: "Execution Plan",
72
+ confirmStart: "Start execution?",
73
+ fromSecrets: " (from secrets)",
74
+ fromContext: " (extracted from context)",
75
+ fromDataSource: " (from data source)"
76
+ },
77
+ errors: {
78
+ elementNotFound: "Check the selector ariaLabel / role / text and update to match the current page structure",
79
+ elementStale: "Page structure has changed. Delete the selector cache and re-run",
80
+ pageStructureChanged: "Page structure has significantly changed. Record the changes in context.md",
81
+ navigationTimeout: "Page navigation is delayed. Consider adding a wait step or increasing step-delay",
82
+ actionFailed: "Element was found but the action failed. Consider changing the action type (e.g., click \u2192 hover)",
83
+ unknownError: "Review the error details and check the corresponding runbook step",
84
+ scriptExecutionError: "Script execution error",
85
+ browserActionError: "Browser action error",
86
+ operationTimedOut: "Operation timed out"
87
+ },
88
+ slack: {
89
+ batchComplete: "Batch execution complete: {title}",
90
+ executionComplete: "Execution complete: {title}",
91
+ debugFailure: "Self-healing validation failed: {title}",
92
+ failedLabel: "Failed:",
93
+ failedRows: "Failed rows:",
94
+ suggestionsLabel: "Fix suggestions:",
95
+ retryWarningsLabel: "Retry warnings:",
96
+ abortTag: "Aborted",
97
+ batchTag: "batch",
98
+ totalRows: "Total {count} rows",
99
+ moreSteps: "- ...{count} more steps",
100
+ moreRows: "- ...{count} more rows",
101
+ moreItems: "- ...{count} more items",
102
+ approvalRequest: "Approval request: {description}",
103
+ approvalDescription: 'An approval request for an operation has arrived.\n{goalLine}Step: "{description}"\nRisk level: {riskEmoji} {riskLevel}',
104
+ taskLabel: "Task: ",
105
+ stepLabel: "Step: ",
106
+ riskLabel: "Risk level: ",
107
+ approveButton: "Approve",
108
+ skipButton: "Skip",
109
+ abortButton: "Abort",
110
+ approvalWaiting: "Waiting for approval (risk: {riskLevel})",
111
+ approvalTimeout: ":hourglass: Timed out (auto-abort)",
112
+ approved: ":white_check_mark: Approved",
113
+ slackSkipped: ":fast_forward: Skipped",
114
+ slackAborted: ":octagonal_sign: Aborted"
115
+ },
116
+ executor: {
117
+ openingUrl: "Opening {url}...",
118
+ browserReady: "Browser ready",
119
+ recordingStarted: "Recording started: {path}",
120
+ recordingStartFailed: "Failed to start recording: {error}",
121
+ recordingComplete: "Recording complete: {path}",
122
+ recordingStopFailed: "Failed to stop recording: {error}",
123
+ jobAbortedTimeout: "Job aborted: timeout exceeded",
124
+ conditionSkipping: "Condition false, skipping: {condition}",
125
+ stopOnErrorAborting: "stopOnError=true, aborting execution",
126
+ approvalWaiting: "Awaiting approval: Step {ordinal} (risk: {riskLevel})",
127
+ approvalAborted: "Approval result: aborted (Step {ordinal})",
128
+ approvalSkipped: "Approval result: skipped (Step {ordinal})",
129
+ approvalApproved: "Approval result: approved (Step {ordinal})",
130
+ userAborted: "User aborted",
131
+ batchBrowserReady: "Batch browser ready",
132
+ chromeErrorDetected: "Navigation failed: page landed on chrome-error:// (previous URL: {url})"
133
+ },
134
+ chat: {
135
+ approvalRequest: "Approval request: {description}",
136
+ approvalDescription: 'An approval request for an operation has arrived.\n{goalLine}Step: "{description}"\nRisk level: {riskEmoji} {riskLevel}',
137
+ taskLabel: "Task: ",
138
+ stepLabel: "Step: ",
139
+ riskLabel: "Risk level: ",
140
+ approveButton: "Approve",
141
+ skipButton: "Skip",
142
+ abortButton: "Abort",
143
+ approvalWaiting: "Waiting for approval (risk: {riskLevel})",
144
+ approvalTimeout: "\u231B Timed out (auto-abort)",
145
+ approved: "\u2705 Approved",
146
+ chatSkipped: "\u23E9 Skipped",
147
+ chatAborted: "\u{1F6D1} Aborted",
148
+ executionComplete: "Execution complete: {title}",
149
+ batchComplete: "Batch execution complete: {title}",
150
+ debugFailure: "Self-healing validation failed: {title}",
151
+ failedLabel: "Failed:",
152
+ failedRows: "Failed rows:",
153
+ suggestionsLabel: "Fix suggestions:",
154
+ retryWarningsLabel: "Retry warnings:",
155
+ abortTag: "Aborted",
156
+ batchTag: "batch",
157
+ totalRows: "Total {count} rows",
158
+ moreSteps: "- ...{count} more steps",
159
+ moreRows: "- ...{count} more rows",
160
+ moreItems: "- ...{count} more items",
161
+ stepPrefix: "Step",
162
+ succeededFieldLabel: "Succeeded",
163
+ failedFieldLabel: "Failed",
164
+ skippedFieldLabel: "Skipped",
165
+ durationFieldLabel: "Duration",
166
+ totalFieldLabel: "Total",
167
+ generateComplete: "Runbook generation complete",
168
+ goalFieldLabel: "Goal",
169
+ goalAchievedFieldLabel: "Goal achieved",
170
+ stepsFieldLabel: "Steps",
171
+ yamlFieldLabel: "YAML generated"
172
+ },
173
+ review: {
174
+ keptSteps: "Kept steps:",
175
+ confirmationRequired: "Steps requiring confirmation:",
176
+ removedSteps: "Removed steps:",
177
+ capturedValues: "Captured values from page:",
178
+ notes: "Notes:",
179
+ guidancePrefix: "[Guidance {index}]",
180
+ summaryLabel: "Summary: {summary}",
181
+ reviewResult: "Review Result",
182
+ confirm: "Confirm",
183
+ confirmHint: "Proceed to YAML generation",
184
+ toggleConfirmation: "Toggle step confirmation requirements",
185
+ editCaptures: "Edit captured values from page",
186
+ editCapturesHint: "accept/reject/add",
187
+ editNotes: "Edit notes",
188
+ editNotesHint: "",
189
+ selectAction: "Select an action",
190
+ selectConfirmSteps: "Select steps requiring confirmation (Space to toggle, Enter to confirm)",
191
+ selectNotesAction: "Select note action",
192
+ addCustomNote: "Add custom note",
193
+ addSuggestedNote: "Select from AI-suggested notes",
194
+ deleteNote: "Delete notes",
195
+ noteContent: "Note content",
196
+ noteContentRequired: "Please enter note content",
197
+ notesAdded: "{count} notes added.",
198
+ notesDeleted: "{count} notes deleted.",
199
+ selectCaptureAction: "Select capture action",
200
+ acceptAllCaptures: "Accept all existing captures",
201
+ rejectCaptures: "Reject captures",
202
+ addCapture: "Add new capture",
203
+ allCapturesAccepted: "All captures accepted.",
204
+ noCapturesAvailable: "No captures available.",
205
+ selectCapturesToReject: "Select captures to reject",
206
+ capturesRejected: "{count} captures rejected.",
207
+ captureStepNumber: "Target step number (ordinal)",
208
+ captureStepRequired: "Please enter a step number",
209
+ captureStepNumeric: "Please enter a number",
210
+ captureVarName: "Capture variable name (camelCase)",
211
+ captureVarRequired: "Please enter a variable name",
212
+ captureStrategy: "Capture strategy",
213
+ strategySnapshot: "snapshot (regex match)",
214
+ strategyUrl: "url (URL regex match)",
215
+ strategyAi: "ai (AI extraction)",
216
+ strategyExpression: "expression (template)",
217
+ regexPattern: "Regex pattern",
218
+ aiExtractionPrompt: "AI extraction prompt",
219
+ templateExpression: "Template expression",
220
+ captureAdded: 'Added capture "{name}" to Step #{ordinal}.',
221
+ highRiskNote: "Always get approval before executing high-risk steps ({ordinals})",
222
+ credentialNote: "This flow contains credential input steps. Verify the execution environment's auth settings",
223
+ removedStepsNote: "{count} steps were removed. The exploration may have been redundant",
224
+ stepNotFound: "Step #{ordinal} not found."
225
+ },
226
+ fix: {
227
+ noSuggestions: "No fix suggestions found in the report.",
228
+ noSuggestionsHint: "Hint: Run with --self-heal flag to generate AI fix suggestions.",
229
+ complete: "Done",
230
+ suggestionCount: "Fix suggestions: {count}",
231
+ errorLabel: " Error: {error}",
232
+ categoryLabel: " Category: {category}",
233
+ yamlFixLabel: " YAML fix: {fix}",
234
+ contextFixLabel: " Context fix: {fix}",
235
+ recoveryHintLabel: " Recovery hint: {hint}",
236
+ noYamlFix: " No YAML fix suggestion \u2014 skipping.",
237
+ applyPrompt: "What would you like to do with this suggestion?",
238
+ applyLabel: "Apply",
239
+ applyHint: "AI will modify the YAML",
240
+ skipLabel: "Skip",
241
+ skipHint: "Ignore this suggestion",
242
+ abortLabel: "Abort",
243
+ abortHint: "Stop processing remaining suggestions",
244
+ patchGenerated: "Patch generated. Diff:",
245
+ confirmApply: "Apply this change?",
246
+ applied: "Applied fix for Step #{ordinal}.",
247
+ skippedMsg: "Skipped.",
248
+ patchFailed: "Patch generation failed: {error}",
249
+ writePrompt: "Write {count} fixes to {path}?",
250
+ writeSuccess: "Updated {path}.",
251
+ writeCancelled: "Write cancelled.",
252
+ noChanges: "No fixes were applied.",
253
+ verifyCommand: "Verify command:",
254
+ noDiff: "(no changes)"
255
+ },
256
+ generator: {
257
+ cancelled: "Exploration was cancelled.",
258
+ feedbackPrompt: "Enter feedback or improvements for the exploration (Enter to skip)",
259
+ aiReviewing: "AI reviewing...",
260
+ aiReviewFailed: "AI review failed: {error}",
261
+ openingUrl: "Opening {url}...",
262
+ pageLoaded: "Page loaded",
263
+ recordingStarted: "Recording started: {path}",
264
+ recordingStartFailed: "Failed to start recording: {error}",
265
+ screenshotSaved: "Initial screenshot saved: {path}",
266
+ paused: "\u23F8 Paused",
267
+ waitingForAI: "Waiting for AI response... [Enter: pause / q: cancel]",
268
+ cancelledByUser: "\u23F9 Cancelled",
269
+ exploringStep: "Exploring (step {current}/{total})",
270
+ explorationComplete: "Exploration complete ({duration})",
271
+ recordingComplete: "Recording complete: {path}",
272
+ recordingStopFailed: "Failed to stop recording: {error}"
273
+ },
274
+ cli: {
275
+ cancelledMessage: "Operation cancelled.",
276
+ executionCancelled: "Execution cancelled.",
277
+ runbookRequired: "--runbook is required",
278
+ urlRequired: "--url is required",
279
+ goalRequired: "--goal is required",
280
+ outputRequired: "--output is required",
281
+ invalidApprovalMode: "--approval-mode must be one of: web, slack, teams, discord",
282
+ reportRequired: "--report is required",
283
+ contextRequired: "--context is required",
284
+ stealthEnabled: "Stealth: enabled",
285
+ proxyEnabled: "Proxy: {proxy}",
286
+ providerRequired: "--model-provider (or AI_MODEL_PROVIDER env var) is required. Valid: anthropic, openai, openai-compatible, google, azure, bedrock, vertex"
287
+ },
288
+ browserTool: {
289
+ interventionGuidance: "[User guidance] {text}",
290
+ successCount: "{count} succeeded",
291
+ truncated: "[truncated]"
292
+ },
293
+ tenant: {
294
+ slugLength: "Slug must be between 3 and 48 characters",
295
+ slugPattern: "Slug must contain only lowercase letters, numbers, and hyphens",
296
+ slugReserved: 'Slugs starting with "user-" are reserved',
297
+ slugTaken: "Slug is already taken"
298
+ },
299
+ compose: {
300
+ title: "compose -- Runbook Composition",
301
+ complete: "Composition complete: {path}",
302
+ branchVarPrompt: "Branch variable name (e.g. sourceType)",
303
+ yamlPathPrompt: "Path to runbook YAML",
304
+ matchValuePrompt: "Match value for this case",
305
+ caseLoaded: 'Loaded: "{title}" ({steps} steps, {vars} variables)',
306
+ addAnotherCase: "Add another case?",
307
+ goalPrompt: "Goal description (optional)",
308
+ variableMergePreview: "Variable Merge Preview",
309
+ sharedVariables: "Shared variables:",
310
+ conflictingVariables: "Conflicts:",
311
+ caseSpecificVariables: "Case-specific variables:",
312
+ branchVariable: "Branch variable:",
313
+ conflictPrompt: 'Variable "{name}" has different definitions:',
314
+ useFromCase: 'Use definition from "{case}"',
315
+ settingsDiffPrompt: "Settings differ: {key}",
316
+ composedPreview: "Composed Runbook Preview",
317
+ selectAction: "Select an action",
318
+ confirm: "Confirm",
319
+ confirmHint: "Write composed YAML",
320
+ editBranch: "Edit branch variable name",
321
+ editMatches: "Edit match values",
322
+ editVariables: "Edit variables",
323
+ editTitle: "Edit title/goal",
324
+ selectCase: "Select a case to edit",
325
+ newMatchValue: "New match value",
326
+ newBranchVar: "New branch variable name",
327
+ newTitle: "New title/goal",
328
+ editVarAction: "Select variable action",
329
+ deleteVar: "Delete a variable",
330
+ addVar: "Add a variable",
331
+ editVarDef: "Edit variable definition",
332
+ selectVar: "Select a variable",
333
+ varDeleted: 'Variable "{name}" deleted.',
334
+ newVarName: "Variable name",
335
+ newVarSource: "Variable source",
336
+ newVarValue: "Variable value (optional)",
337
+ newVarDescription: "Variable description (optional)",
338
+ varAdded: 'Variable "{name}" added.',
339
+ varUpdated: 'Variable "{name}" updated.',
340
+ branchVarConflict: 'Variable name "{name}" conflicts with the branch variable. Choose a different name.',
341
+ noCases: "At least 2 cases are required."
342
+ },
343
+ serverErrors: {
344
+ unauthorized: "Unauthorized",
345
+ sessionRequired: "Session authentication required",
346
+ emailVerificationRequired: "Email verification required",
347
+ apiKeyRevoked: "API key has been revoked",
348
+ roleForbidden: "Forbidden: {role} or higher role required",
349
+ tenantRequired: "Tenant required",
350
+ tenantNotFound: "Tenant not found",
351
+ notMember: "Not a member of this tenant",
352
+ tenantIdRequired: "tenantId is required",
353
+ nameRequired: "name is required",
354
+ emailRequired: "email is required",
355
+ invalidRole: "role must be one of: {roles}",
356
+ communityNoApiKey: "Community tier does not require API keys",
357
+ apiKeyNotFoundOrRevoked: "API key not found or already revoked",
358
+ adminRequired: "Forbidden: owner or admin required",
359
+ ownerOnly: "Forbidden: owner only",
360
+ ownerOnlyAssign: "Forbidden: only owner can assign owner role",
361
+ ownerOnlyRemoveAdmin: "Forbidden: only owner can remove admin",
362
+ alreadyMember: "User is already a member",
363
+ invitationPending: "An invitation is already pending for this email",
364
+ memberNotFound: "Member not found",
365
+ cannotRemoveOwner: "Cannot remove owner",
366
+ invitationNotFound: "Invitation not found",
367
+ invitationExpired: "Invitation has expired",
368
+ noFieldsToUpdate: "No fields to update",
369
+ invalidLocale: 'locale must be "en" or "ja"',
370
+ providerIdMismatch: "Provider ID mismatch",
371
+ providerNotConfigured: "Provider not configured",
372
+ missingCredentials: "Missing required credentials for {platform}: {fields}",
373
+ planFeatureRequired: "This feature requires {tier} plan or higher",
374
+ planStepLimitExceeded: "Runbook has {count} steps, but your plan allows up to {limit}",
375
+ scheduledAtMustBeFuture: "Scheduled time has already passed. Please select a future date and time."
376
+ }
377
+ };
378
+ var en_default = messages;
379
+
380
+ // src/i18n/messages/ja.ts
381
+ var messages2 = {
382
+ common: {
383
+ success: "\u6210\u529F",
384
+ failure: "\u5931\u6557",
385
+ skipped: "\u30B9\u30AD\u30C3\u30D7",
386
+ aborted: "\u4E2D\u6B62",
387
+ none: "(\u306A\u3057)",
388
+ unknown: "(\u4E0D\u660E)",
389
+ items: "\u4EF6",
390
+ files: "\u30D5\u30A1\u30A4\u30EB",
391
+ conditionSkipped: "\u6761\u4EF6\u30B9\u30AD\u30C3\u30D7",
392
+ iterations: "\u56DE",
393
+ iteration: "\u56DE"
394
+ },
395
+ risk: {
396
+ low: "\u526F\u4F5C\u7528\u306E\u5C11\u306A\u3044\u64CD\u4F5C",
397
+ medium: "\u30D5\u30A9\u30FC\u30E0\u9001\u4FE1\u30FB\u8A2D\u5B9A\u5909\u66F4\u306A\u3069",
398
+ high: "\u524A\u9664\u30FB\u6C7A\u6E08\u306A\u3069\u4E0D\u53EF\u9006\u64CD\u4F5C"
399
+ },
400
+ reporter: {
401
+ runbook: "\u624B\u9806\u66F8: {title}",
402
+ startUrl: "\u958B\u59CBURL: {url}",
403
+ totalSteps: "\u5168\u30B9\u30C6\u30C3\u30D7: {count}",
404
+ statsLine: "\u5B9F\u884C: {executed} \u6210\u529F: {succeeded} \u5931\u6557: {failed} \u30B9\u30AD\u30C3\u30D7: {skipped}",
405
+ statusAborted: "\u72B6\u614B: \u4E2D\u6B62",
406
+ totalDuration: "\u5408\u8A08\u5B9F\u884C\u6642\u9593: {duration}",
407
+ memory: "\u30E1\u30E2\u30EA: {info}",
408
+ downloads: "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9: {count}\u30D5\u30A1\u30A4\u30EB",
409
+ executionResult: "\u5B9F\u884C\u7D50\u679C",
410
+ batchResult: "\u30D0\u30C3\u30C1\u5B9F\u884C\u7D50\u679C",
411
+ batchTotalRows: "\u5168\u884C\u6570: {count}",
412
+ batchStats: "\u6210\u529F: {succeeded} \u5931\u6557: {failed}"
413
+ },
414
+ selfHeal: {
415
+ debugResult: "\u81EA\u52D5\u4FEE\u6B63\u7D50\u679C",
416
+ allStepsSuccess: "\u5168\u30B9\u30C6\u30C3\u30D7\u6210\u529F ({count} steps, {duration})",
417
+ failedSteps: "--- \u5931\u6557\u30B9\u30C6\u30C3\u30D7 ---",
418
+ yamlSuggestions: "--- \u624B\u9806\u66F8\uFF08YAML\uFF09\u306E\u4FEE\u6B63\u63D0\u6848 ---",
419
+ contextSuggestions: "--- \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\uFF08markdown\uFF09\u306E\u4FEE\u6B63\u63D0\u6848 ---",
420
+ retryWarnings: "--- \u30EA\u30C8\u30E9\u30A4\u8B66\u544A ---",
421
+ retryCount: "#{ordinal} {description}: {count}\u56DE\u30EA\u30C8\u30E9\u30A4 (\u95BE\u5024: {threshold})"
422
+ },
423
+ confirmation: {
424
+ title: "\u627F\u8A8D\u304C\u5FC5\u8981\u3067\u3059",
425
+ stepInfo: "\u30B9\u30C6\u30C3\u30D7 {ordinal}: {description}",
426
+ riskLevelLabel: "\u30EA\u30B9\u30AF\u30EC\u30D9\u30EB: {level} ({hint})",
427
+ selectAction: "\u64CD\u4F5C\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
428
+ approve: "\u627F\u8A8D\u3057\u3066\u5B9F\u884C",
429
+ skip: "\u3053\u306E\u30B9\u30C6\u30C3\u30D7\u3092\u30B9\u30AD\u30C3\u30D7",
430
+ abort: "\u5B9F\u884C\u3092\u4E2D\u6B62",
431
+ abortHint: "\u5168\u4F53\u3092\u505C\u6B62"
432
+ },
433
+ planner: {
434
+ extractingFromContext: "context\u304B\u3089\u5909\u6570\u5024\u3092\u62BD\u51FA\u4E2D...",
435
+ extractedFromContext: "{count}\u4EF6\u306E\u5024\u3092context\u304B\u3089\u62BD\u51FA",
436
+ unresolvedRequired: "{count}\u4EF6\u306E\u5FC5\u9808\u5909\u6570\u304C\u672A\u89E3\u6C7A\u3067\u3059\u3002\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
437
+ placeholder: "(\u5FC5\u9808 \u2014 context\u304B\u3089\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F)",
438
+ variableRequired: '\u5909\u6570 "{name}" \u306F\u5FC5\u9808\u3067\u3059',
439
+ preVariables: "\u4E8B\u524D\u5909\u6570:",
440
+ runtimeCaptures: "\u30E9\u30F3\u30BF\u30A4\u30E0\u30AD\u30E3\u30D7\u30C1\u30E3:",
441
+ controlFlow: "\u5236\u5FA1\u30D5\u30ED\u30FC:",
442
+ conditionLabel: " Step {ordinal}: \u6761\u4EF6 {condition}",
443
+ loopLabel: " Step {ordinal}: \u30EB\u30FC\u30D7 (\u6700\u5927{max}\u56DE, {subSteps}\u30B5\u30D6\u30B9\u30C6\u30C3\u30D7, \u6761\u4EF6: {condition})",
444
+ forEachLabel: " Step {ordinal}: forEach (\u6700\u5927{max}\u4EF6, {subSteps}\u30B5\u30D6\u30B9\u30C6\u30C3\u30D7, \u30BD\u30FC\u30B9: {forEach})",
445
+ branchLabel: " Step {ordinal}: \u5206\u5C90 {value} (\u30B1\u30FC\u30B9: {cases})",
446
+ batchMode: "\u30D0\u30C3\u30C1\u30E2\u30FC\u30C9: {count}\u884C ({path})",
447
+ stepCount: "\u30B9\u30C6\u30C3\u30D7\u6570: {count}",
448
+ executionPlan: "\u5B9F\u884C\u30D7\u30E9\u30F3",
449
+ confirmStart: "\u5B9F\u884C\u3092\u958B\u59CB\u3057\u307E\u3059\u304B\uFF1F",
450
+ fromSecrets: " (secrets\u304B\u3089\u8AAD\u307F\u8FBC\u307F)",
451
+ fromContext: " (context\u304B\u3089\u62BD\u51FA)",
452
+ fromDataSource: " (\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u304B\u3089)"
453
+ },
454
+ errors: {
455
+ elementNotFound: "\u30BB\u30EC\u30AF\u30BF\u306E ariaLabel / role / text \u3092\u78BA\u8A8D\u3057\u3001\u73FE\u5728\u306E\u30DA\u30FC\u30B8\u69CB\u9020\u306B\u5408\u308F\u305B\u3066\u66F4\u65B0\u3057\u3066\u304F\u3060\u3055\u3044",
456
+ elementStale: "\u30DA\u30FC\u30B8\u69CB\u9020\u304C\u5909\u5316\u3057\u3066\u3044\u307E\u3059\u3002\u30BB\u30EC\u30AF\u30BF\u30AD\u30E3\u30C3\u30B7\u30E5\u3092\u524A\u9664\u3057\u3066\u518D\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044",
457
+ pageStructureChanged: "\u30DA\u30FC\u30B8\u69CB\u9020\u304C\u5927\u5E45\u306B\u5909\u5316\u3057\u3066\u3044\u307E\u3059\u3002context.md \u306B\u30DA\u30FC\u30B8\u69CB\u9020\u306E\u5909\u66F4\u3092\u8A18\u9332\u3057\u3066\u304F\u3060\u3055\u3044",
458
+ navigationTimeout: "\u30DA\u30FC\u30B8\u9077\u79FB\u304C\u9045\u5EF6\u3057\u3066\u3044\u307E\u3059\u3002wait \u30B9\u30C6\u30C3\u30D7\u306E\u8FFD\u52A0\u307E\u305F\u306F step-delay \u306E\u5897\u52A0\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044",
459
+ actionFailed: "\u8981\u7D20\u306F\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u304C\u30A2\u30AF\u30B7\u30E7\u30F3\u304C\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u30A2\u30AF\u30B7\u30E7\u30F3\u7A2E\u5225\u306E\u5909\u66F4\uFF08\u4F8B: click \u2192 hover\uFF09\u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044",
460
+ unknownError: "\u30A8\u30E9\u30FC\u5185\u5BB9\u3092\u78BA\u8A8D\u3057\u3001\u624B\u9806\u66F8\u306E\u8A72\u5F53\u30B9\u30C6\u30C3\u30D7\u3092\u898B\u76F4\u3057\u3066\u304F\u3060\u3055\u3044",
461
+ scriptExecutionError: "\u30B9\u30AF\u30EA\u30D7\u30C8\u5B9F\u884C\u30A8\u30E9\u30FC",
462
+ browserActionError: "\u30D6\u30E9\u30A6\u30B6\u64CD\u4F5C\u30A8\u30E9\u30FC",
463
+ operationTimedOut: "\u64CD\u4F5C\u304C\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F"
464
+ },
465
+ slack: {
466
+ batchComplete: "\u30D0\u30C3\u30C1\u5B9F\u884C\u5B8C\u4E86: {title}",
467
+ executionComplete: "\u5B9F\u884C\u5B8C\u4E86: {title}",
468
+ debugFailure: "\u30C7\u30D0\u30C3\u30B0\u691C\u8A3C\u5931\u6557: {title}",
469
+ failedLabel: "\u5931\u6557:",
470
+ failedRows: "\u5931\u6557\u884C:",
471
+ suggestionsLabel: "\u4FEE\u6B63\u63D0\u6848:",
472
+ retryWarningsLabel: "\u30EA\u30C8\u30E9\u30A4\u8B66\u544A:",
473
+ abortTag: "\u4E2D\u6B62",
474
+ batchTag: "\u30D0\u30C3\u30C1",
475
+ totalRows: "\u5168{count}\u884C",
476
+ moreSteps: "- ...\u4ED6 {count} \u30B9\u30C6\u30C3\u30D7",
477
+ moreRows: "- ...\u4ED6 {count} \u884C",
478
+ moreItems: "- ...\u4ED6 {count} \u4EF6",
479
+ approvalRequest: "\u627F\u8A8D\u4F9D\u983C: {description}",
480
+ approvalDescription: "\u64CD\u4F5C\u306E\u627F\u8A8D\u4F9D\u983C\u304C\u5C4A\u304D\u307E\u3057\u305F\u3002\n{goalLine}\u30B9\u30C6\u30C3\u30D7\uFF1A\u300C{description}\u300D\n\u64CD\u4F5C\u306E\u30EA\u30B9\u30AF\u30EC\u30D9\u30EB\uFF1A{riskEmoji} {riskLevel}",
481
+ taskLabel: "\u696D\u52D9\u5185\u5BB9\uFF1A",
482
+ stepLabel: "\u30B9\u30C6\u30C3\u30D7\uFF1A",
483
+ riskLabel: "\u64CD\u4F5C\u306E\u30EA\u30B9\u30AF\u30EC\u30D9\u30EB\uFF1A",
484
+ approveButton: "\u627F\u8A8D",
485
+ skipButton: "\u30B9\u30AD\u30C3\u30D7",
486
+ abortButton: "\u4E2D\u6B62",
487
+ approvalWaiting: "\u627F\u8A8D\u5F85\u3061 (\u30EA\u30B9\u30AF: {riskLevel})",
488
+ approvalTimeout: ":hourglass: \u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u81EA\u52D5\u4E2D\u6B62\uFF09",
489
+ approved: ":white_check_mark: \u627F\u8A8D\u6E08\u307F",
490
+ slackSkipped: ":fast_forward: \u30B9\u30AD\u30C3\u30D7",
491
+ slackAborted: ":octagonal_sign: \u4E2D\u6B62"
492
+ },
493
+ executor: {
494
+ openingUrl: "{url} \u3092\u958B\u3044\u3066\u3044\u307E\u3059...",
495
+ browserReady: "\u30D6\u30E9\u30A6\u30B6\u8D77\u52D5\u5B8C\u4E86",
496
+ recordingStarted: "\u9332\u753B\u958B\u59CB: {path}",
497
+ recordingStartFailed: "\u9332\u753B\u958B\u59CB\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
498
+ recordingComplete: "\u9332\u753B\u5B8C\u4E86: {path}",
499
+ recordingStopFailed: "\u9332\u753B\u505C\u6B62\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
500
+ jobAbortedTimeout: "\u30B8\u30E7\u30D6\u4E2D\u6B62: \u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u8D85\u904E",
501
+ conditionSkipping: "\u6761\u4EF6\u4E0D\u6210\u7ACB\u3001\u30B9\u30AD\u30C3\u30D7: {condition}",
502
+ stopOnErrorAborting: "stopOnError=true\u3001\u5B9F\u884C\u3092\u4E2D\u6B62",
503
+ approvalWaiting: "\u627F\u8A8D\u5F85\u3061: Step {ordinal} (\u30EA\u30B9\u30AF: {riskLevel})",
504
+ approvalAborted: "\u627F\u8A8D\u7D50\u679C: \u4E2D\u6B62 (Step {ordinal})",
505
+ approvalSkipped: "\u627F\u8A8D\u7D50\u679C: \u30B9\u30AD\u30C3\u30D7 (Step {ordinal})",
506
+ approvalApproved: "\u627F\u8A8D\u7D50\u679C: \u5B9F\u884C (Step {ordinal})",
507
+ userAborted: "\u30E6\u30FC\u30B6\u30FC\u304C\u4E2D\u6B62\u3057\u307E\u3057\u305F",
508
+ batchBrowserReady: "\u30D0\u30C3\u30C1\u7528\u30D6\u30E9\u30A6\u30B6\u8D77\u52D5\u5B8C\u4E86",
509
+ chromeErrorDetected: "\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u5931\u6557: chrome-error:// \u306B\u9077\u79FB\u3057\u307E\u3057\u305F\uFF08\u524D\u306EURL: {url}\uFF09"
510
+ },
511
+ chat: {
512
+ approvalRequest: "\u627F\u8A8D\u4F9D\u983C: {description}",
513
+ approvalDescription: "\u64CD\u4F5C\u306E\u627F\u8A8D\u4F9D\u983C\u304C\u5C4A\u304D\u307E\u3057\u305F\u3002\n{goalLine}\u30B9\u30C6\u30C3\u30D7\uFF1A\u300C{description}\u300D\n\u64CD\u4F5C\u306E\u30EA\u30B9\u30AF\u30EC\u30D9\u30EB\uFF1A{riskEmoji} {riskLevel}",
514
+ taskLabel: "\u696D\u52D9\u5185\u5BB9\uFF1A",
515
+ stepLabel: "\u30B9\u30C6\u30C3\u30D7\uFF1A",
516
+ riskLabel: "\u64CD\u4F5C\u306E\u30EA\u30B9\u30AF\u30EC\u30D9\u30EB\uFF1A",
517
+ approveButton: "\u627F\u8A8D",
518
+ skipButton: "\u30B9\u30AD\u30C3\u30D7",
519
+ abortButton: "\u4E2D\u6B62",
520
+ approvalWaiting: "\u627F\u8A8D\u5F85\u3061 (\u30EA\u30B9\u30AF: {riskLevel})",
521
+ approvalTimeout: "\u231B \u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\uFF08\u81EA\u52D5\u4E2D\u6B62\uFF09",
522
+ approved: "\u2705 \u627F\u8A8D\u6E08\u307F",
523
+ chatSkipped: "\u23E9 \u30B9\u30AD\u30C3\u30D7",
524
+ chatAborted: "\u{1F6D1} \u4E2D\u6B62",
525
+ executionComplete: "\u5B9F\u884C\u5B8C\u4E86: {title}",
526
+ batchComplete: "\u30D0\u30C3\u30C1\u5B9F\u884C\u5B8C\u4E86: {title}",
527
+ debugFailure: "\u30C7\u30D0\u30C3\u30B0\u691C\u8A3C\u5931\u6557: {title}",
528
+ failedLabel: "\u5931\u6557:",
529
+ failedRows: "\u5931\u6557\u884C:",
530
+ suggestionsLabel: "\u4FEE\u6B63\u63D0\u6848:",
531
+ retryWarningsLabel: "\u30EA\u30C8\u30E9\u30A4\u8B66\u544A:",
532
+ abortTag: "\u4E2D\u6B62",
533
+ batchTag: "\u30D0\u30C3\u30C1",
534
+ totalRows: "\u5168{count}\u884C",
535
+ moreSteps: "- ...\u4ED6 {count} \u30B9\u30C6\u30C3\u30D7",
536
+ moreRows: "- ...\u4ED6 {count} \u884C",
537
+ moreItems: "- ...\u4ED6 {count} \u4EF6",
538
+ stepPrefix: "\u30B9\u30C6\u30C3\u30D7",
539
+ succeededFieldLabel: "\u6210\u529F",
540
+ failedFieldLabel: "\u5931\u6557",
541
+ skippedFieldLabel: "\u30B9\u30AD\u30C3\u30D7",
542
+ durationFieldLabel: "\u5B9F\u884C\u6642\u9593",
543
+ totalFieldLabel: "\u5408\u8A08",
544
+ generateComplete: "\u624B\u9806\u66F8\u751F\u6210\u5B8C\u4E86",
545
+ goalFieldLabel: "\u30B4\u30FC\u30EB",
546
+ goalAchievedFieldLabel: "\u30B4\u30FC\u30EB\u9054\u6210",
547
+ stepsFieldLabel: "\u30B9\u30C6\u30C3\u30D7\u6570",
548
+ yamlFieldLabel: "YAML\u751F\u6210"
549
+ },
550
+ review: {
551
+ keptSteps: "\u4FDD\u6301\u3055\u308C\u308B\u30B9\u30C6\u30C3\u30D7:",
552
+ confirmationRequired: "\u627F\u8A8D\u304C\u5FC5\u8981\u306A\u30B9\u30C6\u30C3\u30D7:",
553
+ removedSteps: "\u9664\u5916\u3055\u308C\u308B\u30B9\u30C6\u30C3\u30D7:",
554
+ capturedValues: "\u30DA\u30FC\u30B8\u304B\u3089\u53D6\u5F97\u3059\u308B\u5024:",
555
+ notes: "\u30CE\u30FC\u30C8:",
556
+ guidancePrefix: "[\u65B9\u91DD\u4FEE\u6B63 {index}]",
557
+ summaryLabel: "Summary: {summary}",
558
+ reviewResult: "\u30EC\u30D3\u30E5\u30FC\u7D50\u679C",
559
+ confirm: "\u78BA\u5B9A",
560
+ confirmHint: "YAML\u751F\u6210\u306B\u9032\u3080",
561
+ toggleConfirmation: "\u30B9\u30C6\u30C3\u30D7\u306E\u627F\u8A8D\u8981\u5426\u3092\u5909\u66F4",
562
+ editCaptures: "\u30DA\u30FC\u30B8\u304B\u3089\u53D6\u5F97\u3059\u308B\u5024\u3092\u7DE8\u96C6",
563
+ editCapturesHint: "accept/reject/add",
564
+ editNotes: "\u30CE\u30FC\u30C8\u3092\u7DE8\u96C6",
565
+ editNotesHint: "",
566
+ selectAction: "\u64CD\u4F5C\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044",
567
+ selectConfirmSteps: "\u627F\u8A8D\u304C\u5FC5\u8981\u306A\u30B9\u30C6\u30C3\u30D7\u3092\u9078\u629E\uFF08\u30B9\u30DA\u30FC\u30B9\u3067\u5207\u66FF\u3001Enter\u3067\u78BA\u5B9A\uFF09",
568
+ selectNotesAction: "\u30CE\u30FC\u30C8\u64CD\u4F5C\u3092\u9078\u629E",
569
+ addCustomNote: "\u30AB\u30B9\u30BF\u30E0\u30CE\u30FC\u30C8\u3092\u8FFD\u52A0",
570
+ addSuggestedNote: "AI\u63D0\u6848\u30CE\u30FC\u30C8\u304B\u3089\u9078\u629E",
571
+ deleteNote: "\u30CE\u30FC\u30C8\u3092\u524A\u9664",
572
+ noteContent: "\u30CE\u30FC\u30C8\u5185\u5BB9",
573
+ noteContentRequired: "\u30CE\u30FC\u30C8\u5185\u5BB9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
574
+ notesAdded: "{count}\u4EF6\u306E\u30CE\u30FC\u30C8\u3092\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002",
575
+ notesDeleted: "{count}\u4EF6\u306E\u30CE\u30FC\u30C8\u3092\u524A\u9664\u3057\u307E\u3057\u305F\u3002",
576
+ selectCaptureAction: "\u30DA\u30FC\u30B8\u304B\u3089\u53D6\u5F97\u3059\u308B\u5024\u306E\u64CD\u4F5C\u3092\u9078\u629E",
577
+ acceptAllCaptures: "\u65E2\u5B58\u306E\u53D6\u5F97\u5024\u3092\u3059\u3079\u3066\u627F\u8A8D",
578
+ rejectCaptures: "\u53D6\u5F97\u5024\u3092\u9664\u5916",
579
+ addCapture: "\u65B0\u3057\u3044\u53D6\u5F97\u5024\u3092\u8FFD\u52A0",
580
+ allCapturesAccepted: "\u3059\u3079\u3066\u306E\u53D6\u5F97\u5024\u3092\u627F\u8A8D\u3057\u307E\u3057\u305F\u3002",
581
+ noCapturesAvailable: "\u53D6\u5F97\u5024\u304C\u3042\u308A\u307E\u305B\u3093\u3002",
582
+ selectCapturesToReject: "\u9664\u5916\u3059\u308B\u53D6\u5F97\u5024\u3092\u9078\u629E",
583
+ capturesRejected: "{count}\u4EF6\u306E\u53D6\u5F97\u5024\u3092\u9664\u5916\u3057\u307E\u3057\u305F\u3002",
584
+ captureStepNumber: "\u8FFD\u52A0\u5148\u306E\u30B9\u30C6\u30C3\u30D7\u756A\u53F7 (ordinal)",
585
+ captureStepRequired: "\u30B9\u30C6\u30C3\u30D7\u756A\u53F7\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
586
+ captureStepNumeric: "\u6570\u5024\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
587
+ captureVarName: "\u53D6\u5F97\u5024\u306E\u5909\u6570\u540D (camelCase)",
588
+ captureVarRequired: "\u5909\u6570\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
589
+ captureStrategy: "\u53D6\u5F97\u6226\u7565",
590
+ strategySnapshot: "snapshot (\u6B63\u898F\u8868\u73FE\u30DE\u30C3\u30C1)",
591
+ strategyUrl: "url (URL\u306E\u6B63\u898F\u8868\u73FE\u30DE\u30C3\u30C1)",
592
+ strategyAi: "ai (AI\u62BD\u51FA)",
593
+ strategyExpression: "expression (\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8)",
594
+ regexPattern: "\u6B63\u898F\u8868\u73FE\u30D1\u30BF\u30FC\u30F3",
595
+ aiExtractionPrompt: "AI\u62BD\u51FA\u30D7\u30ED\u30F3\u30D7\u30C8",
596
+ templateExpression: "\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u5F0F",
597
+ captureAdded: 'Step #{ordinal} \u306B\u53D6\u5F97\u5024 "{name}" \u3092\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002',
598
+ highRiskNote: "\u9AD8\u30EA\u30B9\u30AF\u30B9\u30C6\u30C3\u30D7\uFF08{ordinals}\uFF09\u306E\u5B9F\u884C\u524D\u306B\u5FC5\u305A\u627F\u8A8D\u3092\u53D6\u308B\u3053\u3068",
599
+ credentialNote: "\u8A8D\u8A3C\u60C5\u5831\u3092\u542B\u3080\u30B9\u30C6\u30C3\u30D7\u304C\u3042\u308A\u307E\u3059\u3002\u5B9F\u884C\u74B0\u5883\u306E\u8A8D\u8A3C\u8A2D\u5B9A\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044",
600
+ removedStepsNote: "{count}\u30B9\u30C6\u30C3\u30D7\u304C\u9664\u5916\u3055\u308C\u307E\u3057\u305F\u3002\u63A2\u7D22\u304C\u5197\u9577\u3060\u3063\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059",
601
+ stepNotFound: "Step #{ordinal} \u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002"
602
+ },
603
+ fix: {
604
+ noSuggestions: "\u30EC\u30DD\u30FC\u30C8\u306B\u4FEE\u6B63\u63D0\u6848\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
605
+ noSuggestionsHint: "\u30D2\u30F3\u30C8: --self-heal \u30D5\u30E9\u30B0\u4ED8\u304D\u3067\u5B9F\u884C\u3059\u308B\u3068 AI \u4FEE\u6B63\u63D0\u6848\u304C\u751F\u6210\u3055\u308C\u307E\u3059\u3002",
606
+ complete: "\u5B8C\u4E86",
607
+ suggestionCount: "\u4FEE\u6B63\u63D0\u6848: {count} \u4EF6",
608
+ errorLabel: " \u30A8\u30E9\u30FC: {error}",
609
+ categoryLabel: " \u5206\u985E: {category}",
610
+ yamlFixLabel: " YAML \u4FEE\u6B63: {fix}",
611
+ contextFixLabel: " Context \u4FEE\u6B63: {fix}",
612
+ recoveryHintLabel: " \u63A8\u5968\u5BFE\u5FDC: {hint}",
613
+ noYamlFix: " YAML \u4FEE\u6B63\u63D0\u6848\u304C\u306A\u3044\u305F\u3081\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059\u3002",
614
+ applyPrompt: "\u3053\u306E\u63D0\u6848\u3092\u3069\u3046\u3057\u307E\u3059\u304B\uFF1F",
615
+ applyLabel: "\u9069\u7528",
616
+ applyHint: "AI \u304C YAML \u3092\u4FEE\u6B63\u3057\u307E\u3059",
617
+ skipLabel: "\u30B9\u30AD\u30C3\u30D7",
618
+ skipHint: "\u3053\u306E\u63D0\u6848\u3092\u7121\u8996",
619
+ abortLabel: "\u4E2D\u6B62",
620
+ abortHint: "\u6B8B\u308A\u306E\u63D0\u6848\u3082\u542B\u3081\u3066\u4E2D\u6B62",
621
+ patchGenerated: "\u30D1\u30C3\u30C1\u751F\u6210\u6210\u529F\u3002\u5DEE\u5206:",
622
+ confirmApply: "\u3053\u306E\u5909\u66F4\u3092\u9069\u7528\u3057\u307E\u3059\u304B\uFF1F",
623
+ applied: "Step #{ordinal} \u306E\u4FEE\u6B63\u3092\u9069\u7528\u3057\u307E\u3057\u305F\u3002",
624
+ skippedMsg: "\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3057\u305F\u3002",
625
+ patchFailed: "\u30D1\u30C3\u30C1\u751F\u6210\u5931\u6557: {error}",
626
+ writePrompt: "{count} \u4EF6\u306E\u4FEE\u6B63\u3092 {path} \u306B\u66F8\u304D\u8FBC\u307F\u307E\u3059\u304B\uFF1F",
627
+ writeSuccess: "{path} \u3092\u66F4\u65B0\u3057\u307E\u3057\u305F\u3002",
628
+ writeCancelled: "\u66F8\u304D\u8FBC\u307F\u3092\u30AD\u30E3\u30F3\u30BB\u30EB\u3057\u307E\u3057\u305F\u3002",
629
+ noChanges: "\u9069\u7528\u3055\u308C\u305F\u4FEE\u6B63\u306F\u3042\u308A\u307E\u305B\u3093\u3002",
630
+ verifyCommand: "\u691C\u8A3C\u30B3\u30DE\u30F3\u30C9:",
631
+ noDiff: "(\u5909\u66F4\u306A\u3057)"
632
+ },
633
+ generator: {
634
+ cancelled: "\u63A2\u7D22\u304C\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F\u3002",
635
+ feedbackPrompt: "\u63A2\u7D22\u306E\u6539\u5584\u70B9\u3084\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08Enter\u3067\u30B9\u30AD\u30C3\u30D7\uFF09",
636
+ aiReviewing: "AI\u30EC\u30D3\u30E5\u30FC\u4E2D...",
637
+ aiReviewFailed: "AI\u30EC\u30D3\u30E5\u30FC\u5931\u6557: {error}",
638
+ openingUrl: "{url} \u3092\u958B\u3044\u3066\u3044\u307E\u3059...",
639
+ pageLoaded: "\u30DA\u30FC\u30B8\u8AAD\u307F\u8FBC\u307F\u5B8C\u4E86",
640
+ recordingStarted: "\u9332\u753B\u958B\u59CB: {path}",
641
+ recordingStartFailed: "\u9332\u753B\u958B\u59CB\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
642
+ screenshotSaved: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30B7\u30E7\u30C3\u30C8\u4FDD\u5B58: {path}",
643
+ paused: "\u23F8 \u4E00\u6642\u505C\u6B62",
644
+ waitingForAI: "AI \u5FDC\u7B54\u5F85\u3061... [Enter: \u4E00\u6642\u505C\u6B62 / q: \u30AD\u30E3\u30F3\u30BB\u30EB]",
645
+ cancelledByUser: "\u23F9 \u30AD\u30E3\u30F3\u30BB\u30EB",
646
+ exploringStep: "\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u63A2\u7D22\u4E2D (\u30B9\u30C6\u30C3\u30D7 {current}/{total})",
647
+ explorationComplete: "\u63A2\u7D22\u5B8C\u4E86 ({duration})",
648
+ recordingComplete: "\u9332\u753B\u5B8C\u4E86: {path}",
649
+ recordingStopFailed: "\u9332\u753B\u505C\u6B62\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}"
650
+ },
651
+ cli: {
652
+ cancelledMessage: "\u64CD\u4F5C\u304C\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F\u3002",
653
+ executionCancelled: "\u5B9F\u884C\u304C\u30AD\u30E3\u30F3\u30BB\u30EB\u3055\u308C\u307E\u3057\u305F\u3002",
654
+ runbookRequired: "--runbook \u306F\u5FC5\u9808\u3067\u3059",
655
+ urlRequired: "--url \u306F\u5FC5\u9808\u3067\u3059",
656
+ goalRequired: "--goal \u306F\u5FC5\u9808\u3067\u3059",
657
+ outputRequired: "--output \u306F\u5FC5\u9808\u3067\u3059",
658
+ invalidApprovalMode: "--approval-mode \u306F web, slack, teams, discord \u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
659
+ reportRequired: "--report \u306F\u5FC5\u9808\u3067\u3059",
660
+ contextRequired: "--context \u306F\u5FC5\u9808\u3067\u3059",
661
+ stealthEnabled: "\u30B9\u30C6\u30EB\u30B9: \u6709\u52B9",
662
+ proxyEnabled: "\u30D7\u30ED\u30AD\u30B7: {proxy}",
663
+ providerRequired: "--model-provider\uFF08\u307E\u305F\u306F\u74B0\u5883\u5909\u6570 AI_MODEL_PROVIDER\uFF09\u306F\u5FC5\u9808\u3067\u3059\u3002\u6709\u52B9\u5024: anthropic, openai, openai-compatible, google, azure, bedrock, vertex"
664
+ },
665
+ browserTool: {
666
+ interventionGuidance: "[\u30E6\u30FC\u30B6\u30FC\u304B\u3089\u306E\u65B9\u91DD\u4FEE\u6B63] {text}",
667
+ successCount: "{count}\u4EF6\u6210\u529F",
668
+ truncated: "[\u7701\u7565]"
669
+ },
670
+ tenant: {
671
+ slugLength: "Slug \u306F 3\u301C48 \u6587\u5B57\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
672
+ slugPattern: "Slug \u306B\u306F\u5C0F\u6587\u5B57\u82F1\u6570\u5B57\u3068\u30CF\u30A4\u30D5\u30F3\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059",
673
+ slugReserved: '"user-" \u3067\u59CB\u307E\u308B Slug \u306F\u4E88\u7D04\u3055\u308C\u3066\u3044\u307E\u3059',
674
+ slugTaken: "\u3053\u306E Slug \u306F\u65E2\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059"
675
+ },
676
+ compose: {
677
+ title: "compose -- \u624B\u9806\u66F8\u5408\u6210",
678
+ complete: "\u5408\u6210\u5B8C\u4E86: {path}",
679
+ branchVarPrompt: "\u5206\u5C90\u5909\u6570\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044 (\u4F8B: sourceType)",
680
+ yamlPathPrompt: "\u624B\u9806\u66F8 YAML \u30D1\u30B9",
681
+ matchValuePrompt: "\u30DE\u30C3\u30C1\u5024",
682
+ caseLoaded: '\u8AAD\u307F\u8FBC\u307F: "{title}" ({steps} steps, {vars} variables)',
683
+ addAnotherCase: "\u30B1\u30FC\u30B9\u3092\u8FFD\u52A0\u3057\u307E\u3059\u304B\uFF1F",
684
+ goalPrompt: "\u5408\u6210\u5F8C\u306E\u30B4\u30FC\u30EB\uFF08\u7A7A\u6B04\u3067\u30B9\u30AD\u30C3\u30D7\uFF09",
685
+ variableMergePreview: "\u5909\u6570\u30DE\u30FC\u30B8\u30D7\u30EC\u30D3\u30E5\u30FC",
686
+ sharedVariables: "\u5171\u901A\u5909\u6570\uFF08\u5B9A\u7FA9\u4E00\u81F4\uFF09:",
687
+ conflictingVariables: "\u7AF6\u5408\u5909\u6570\uFF08\u5B9A\u7FA9\u4E0D\u4E00\u81F4\uFF09:",
688
+ caseSpecificVariables: "\u30B1\u30FC\u30B9\u56FA\u6709\u5909\u6570:",
689
+ branchVariable: "\u5206\u5C90\u5909\u6570:",
690
+ conflictPrompt: '\u5909\u6570 "{name}" \u306E\u5B9A\u7FA9\u304C\u7570\u306A\u308A\u307E\u3059:',
691
+ useFromCase: '"{case}" \u306E\u5B9A\u7FA9\u3092\u4F7F\u7528',
692
+ settingsDiffPrompt: "Settings \u306E\u5DEE\u5206: {key}",
693
+ composedPreview: "\u5408\u6210\u624B\u9806\u66F8\u30D7\u30EC\u30D3\u30E5\u30FC",
694
+ selectAction: "\u64CD\u4F5C\u3092\u9078\u629E",
695
+ confirm: "\u78BA\u5B9A",
696
+ confirmHint: "YAML \u3092\u51FA\u529B",
697
+ editBranch: "\u5206\u5C90\u5909\u6570\u540D\u3092\u5909\u66F4",
698
+ editMatches: "\u30DE\u30C3\u30C1\u5024\u3092\u5909\u66F4",
699
+ editVariables: "\u5909\u6570\u3092\u7DE8\u96C6",
700
+ editTitle: "\u30BF\u30A4\u30C8\u30EB/\u30B4\u30FC\u30EB\u3092\u5909\u66F4",
701
+ selectCase: "\u7DE8\u96C6\u3059\u308B\u30B1\u30FC\u30B9\u3092\u9078\u629E",
702
+ newMatchValue: "\u65B0\u3057\u3044\u30DE\u30C3\u30C1\u5024",
703
+ newBranchVar: "\u65B0\u3057\u3044\u5206\u5C90\u5909\u6570\u540D",
704
+ newTitle: "\u65B0\u3057\u3044\u30BF\u30A4\u30C8\u30EB/\u30B4\u30FC\u30EB",
705
+ editVarAction: "\u5909\u6570\u306E\u64CD\u4F5C\u3092\u9078\u629E",
706
+ deleteVar: "\u5909\u6570\u3092\u524A\u9664",
707
+ addVar: "\u5909\u6570\u3092\u8FFD\u52A0",
708
+ editVarDef: "\u5909\u6570\u306E\u5B9A\u7FA9\u3092\u5909\u66F4",
709
+ selectVar: "\u5909\u6570\u3092\u9078\u629E",
710
+ varDeleted: '\u5909\u6570 "{name}" \u3092\u524A\u9664\u3057\u307E\u3057\u305F\u3002',
711
+ newVarName: "\u5909\u6570\u540D",
712
+ newVarSource: "\u5909\u6570\u306E\u30BD\u30FC\u30B9",
713
+ newVarValue: "\u5909\u6570\u306E\u5024\uFF08\u7701\u7565\u53EF\uFF09",
714
+ newVarDescription: "\u5909\u6570\u306E\u8AAC\u660E\uFF08\u7701\u7565\u53EF\uFF09",
715
+ varAdded: '\u5909\u6570 "{name}" \u3092\u8FFD\u52A0\u3057\u307E\u3057\u305F\u3002',
716
+ varUpdated: '\u5909\u6570 "{name}" \u3092\u66F4\u65B0\u3057\u307E\u3057\u305F\u3002',
717
+ branchVarConflict: '\u5909\u6570\u540D "{name}" \u306F\u5206\u5C90\u5909\u6570\u3068\u7AF6\u5408\u3057\u3066\u3044\u307E\u3059\u3002\u5225\u306E\u540D\u524D\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002',
718
+ noCases: "2\u3064\u4EE5\u4E0A\u306E\u30B1\u30FC\u30B9\u304C\u5FC5\u8981\u3067\u3059\u3002"
719
+ },
720
+ serverErrors: {
721
+ unauthorized: "\u8A8D\u8A3C\u304C\u5FC5\u8981\u3067\u3059",
722
+ sessionRequired: "\u30BB\u30C3\u30B7\u30E7\u30F3\u8A8D\u8A3C\u304C\u5FC5\u8981\u3067\u3059",
723
+ emailVerificationRequired: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u306E\u78BA\u8A8D\u304C\u5FC5\u8981\u3067\u3059",
724
+ apiKeyRevoked: "API \u30AD\u30FC\u306F\u5931\u52B9\u3057\u3066\u3044\u307E\u3059",
725
+ roleForbidden: "{role} \u4EE5\u4E0A\u306E\u30ED\u30FC\u30EB\u304C\u5FC5\u8981\u3067\u3059",
726
+ tenantRequired: "\u30C6\u30CA\u30F3\u30C8\u304C\u5FC5\u8981\u3067\u3059",
727
+ tenantNotFound: "\u30C6\u30CA\u30F3\u30C8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
728
+ notMember: "\u3053\u306E\u30C6\u30CA\u30F3\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306F\u3042\u308A\u307E\u305B\u3093",
729
+ tenantIdRequired: "tenantId \u306F\u5FC5\u9808\u3067\u3059",
730
+ nameRequired: "name \u306F\u5FC5\u9808\u3067\u3059",
731
+ emailRequired: "email \u306F\u5FC5\u9808\u3067\u3059",
732
+ invalidRole: "role \u306F\u6B21\u306E\u3044\u305A\u308C\u304B\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: {roles}",
733
+ communityNoApiKey: "Community \u30C6\u30A3\u30A2\u3067\u306F API \u30AD\u30FC\u306F\u4E0D\u8981\u3067\u3059",
734
+ apiKeyNotFoundOrRevoked: "API \u30AD\u30FC\u304C\u898B\u3064\u304B\u3089\u306A\u3044\u304B\u3001\u65E2\u306B\u5931\u52B9\u3057\u3066\u3044\u307E\u3059",
735
+ adminRequired: "owner \u307E\u305F\u306F admin \u306E\u30ED\u30FC\u30EB\u304C\u5FC5\u8981\u3067\u3059",
736
+ ownerOnly: "owner \u306E\u307F\u5B9F\u884C\u53EF\u80FD\u3067\u3059",
737
+ ownerOnlyAssign: "owner \u30ED\u30FC\u30EB\u306E\u4ED8\u4E0E\u306F owner \u306E\u307F\u53EF\u80FD\u3067\u3059",
738
+ ownerOnlyRemoveAdmin: "admin \u306E\u524A\u9664\u306F owner \u306E\u307F\u53EF\u80FD\u3067\u3059",
739
+ alreadyMember: "\u65E2\u306B\u30E1\u30F3\u30D0\u30FC\u3067\u3059",
740
+ invitationPending: "\u3053\u306E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3078\u306E\u62DB\u5F85\u306F\u65E2\u306B\u4FDD\u7559\u4E2D\u3067\u3059",
741
+ memberNotFound: "\u30E1\u30F3\u30D0\u30FC\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
742
+ cannotRemoveOwner: "owner \u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093",
743
+ invitationNotFound: "\u62DB\u5F85\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093",
744
+ invitationExpired: "\u62DB\u5F85\u306E\u6709\u52B9\u671F\u9650\u304C\u5207\u308C\u3066\u3044\u307E\u3059",
745
+ noFieldsToUpdate: "\u66F4\u65B0\u3059\u308B\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u3042\u308A\u307E\u305B\u3093",
746
+ invalidLocale: 'locale \u306F "en" \u307E\u305F\u306F "ja" \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044',
747
+ providerIdMismatch: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC ID \u304C\u4E00\u81F4\u3057\u307E\u305B\u3093",
748
+ providerNotConfigured: "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
749
+ missingCredentials: "{platform} \u306E\u5FC5\u9808\u8A8D\u8A3C\u60C5\u5831\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059: {fields}",
750
+ planFeatureRequired: "\u3053\u306E\u6A5F\u80FD\u306F {tier} \u30D7\u30E9\u30F3\u4EE5\u4E0A\u3067\u5229\u7528\u53EF\u80FD\u3067\u3059",
751
+ planStepLimitExceeded: "\u624B\u9806\u66F8\u306E\u30B9\u30C6\u30C3\u30D7\u6570\u304C {count} \u3067\u3059\u304C\u3001\u73FE\u5728\u306E\u30D7\u30E9\u30F3\u306E\u4E0A\u9650\u306F {limit} \u3067\u3059",
752
+ scheduledAtMustBeFuture: "\u4E88\u7D04\u6642\u523B\u3092\u904E\u304E\u3066\u3044\u307E\u3059\u3002\u672A\u6765\u306E\u65E5\u6642\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
753
+ }
754
+ };
755
+ var ja_default = messages2;
756
+
757
+ // src/i18n/index.ts
758
+ var currentLocale = "en";
759
+ function getLocale() {
760
+ return currentLocale;
761
+ }
762
+ function initLocale(explicit) {
763
+ if (explicit === "ja" || explicit === "en") {
764
+ currentLocale = explicit;
765
+ return;
766
+ }
767
+ const envLocale = process.env.REFRAIN_LOCALE;
768
+ if (envLocale === "ja" || envLocale === "en") {
769
+ currentLocale = envLocale;
770
+ return;
771
+ }
772
+ currentLocale = "en";
773
+ }
774
+ function getMessages() {
775
+ return currentLocale === "ja" ? ja_default : en_default;
776
+ }
777
+ function t(key) {
778
+ const messages3 = getMessages();
779
+ const parts = key.split(".");
780
+ let current = messages3;
781
+ for (const part of parts) {
782
+ if (current && typeof current === "object") {
783
+ current = current[part];
784
+ } else {
785
+ return key;
786
+ }
787
+ }
788
+ return typeof current === "string" ? current : key;
789
+ }
790
+ function tf(key, params) {
791
+ let message = t(key);
792
+ for (const [k, v] of Object.entries(params)) {
793
+ message = message.replaceAll(`{${k}}`, String(v));
794
+ }
795
+ return message;
796
+ }
797
+ function tWithLocale(key, locale) {
798
+ const messages3 = locale === "ja" ? ja_default : en_default;
799
+ const parts = key.split(".");
800
+ let current = messages3;
801
+ for (const part of parts) {
802
+ if (current && typeof current === "object") {
803
+ current = current[part];
804
+ } else {
805
+ return key;
806
+ }
807
+ }
808
+ return typeof current === "string" ? current : key;
809
+ }
810
+ function tfWithLocale(key, locale, params) {
811
+ let message = tWithLocale(key, locale);
812
+ for (const [k, v] of Object.entries(params)) {
813
+ message = message.replaceAll(`{${k}}`, String(v));
814
+ }
815
+ return message;
816
+ }
817
+ function resolveAcceptLanguage(acceptLanguage) {
818
+ if (!acceptLanguage) return "en";
819
+ const lower = acceptLanguage.toLowerCase();
820
+ const jaIndex = lower.indexOf("ja");
821
+ if (jaIndex === -1) return "en";
822
+ const enIndex = lower.indexOf("en");
823
+ if (enIndex === -1) return "ja";
824
+ return jaIndex < enIndex ? "ja" : "en";
825
+ }
826
+
827
+ // src/cli/prompts.ts
828
+ import * as p from "@clack/prompts";
829
+ function exitIfCancelled(value) {
830
+ if (p.isCancel(value)) {
831
+ p.cancel(t("cli.cancelledMessage"));
832
+ process.exit(0);
833
+ }
834
+ return value;
835
+ }
836
+ function formatRiskHint(level) {
837
+ const keyMap = {
838
+ low: "risk.low",
839
+ medium: "risk.medium",
840
+ high: "risk.high"
841
+ };
842
+ return t(keyMap[level]);
843
+ }
844
+ async function promptSelect(message, options) {
845
+ const result = await p.select({
846
+ message,
847
+ options
848
+ });
849
+ return exitIfCancelled(result);
850
+ }
851
+ async function promptMultiselect(message, options, opts) {
852
+ const result = await p.multiselect({
853
+ message,
854
+ options,
855
+ initialValues: opts?.initialValues,
856
+ required: opts?.required ?? false
857
+ });
858
+ return exitIfCancelled(result);
859
+ }
860
+ async function promptText(message, opts) {
861
+ const result = await p.text({
862
+ message,
863
+ initialValue: opts?.initialValue,
864
+ placeholder: opts?.placeholder,
865
+ validate: opts?.validate
866
+ });
867
+ return exitIfCancelled(result);
868
+ }
869
+ async function promptConfirm(message, initialValue) {
870
+ const result = await p.confirm({
871
+ message,
872
+ initialValue
873
+ });
874
+ return exitIfCancelled(result);
875
+ }
876
+ var intro2 = p.intro;
877
+ var outro2 = p.outro;
878
+ var note2 = p.note;
879
+ var cancel2 = p.cancel;
880
+ var log2 = p.log;
881
+ var isDebug = process.env.DEBUG === "1" || process.env.DEBUG === "true";
882
+
883
+ export {
884
+ getLocale,
885
+ initLocale,
886
+ t,
887
+ tf,
888
+ tWithLocale,
889
+ tfWithLocale,
890
+ resolveAcceptLanguage,
891
+ formatRiskHint,
892
+ promptSelect,
893
+ promptMultiselect,
894
+ promptText,
895
+ promptConfirm,
896
+ intro2 as intro,
897
+ outro2 as outro,
898
+ note2 as note,
899
+ cancel2 as cancel,
900
+ log2 as log
901
+ };
902
+ //# sourceMappingURL=chunk-7UCVPKD4.js.map