micro-models-agent 2.26.0 → 2.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/dist/assets/js/feed/core.js +1 -1
- package/dist/assets/js/feed/history.js +1 -1
- package/dist/assets/js/feed/image-card.js +1 -0
- package/dist/assets/js/feed/stream.js +1 -1
- package/dist/assets/js/feed/turn.js +4 -4
- package/dist/assets/js/format.js +2 -2
- package/dist/assets/js/lightbox.js +1 -0
- package/dist/assets/js/settings/controls.js +1 -1
- package/dist/assets/js/settings/editors.js +1 -1
- package/dist/assets/js/settings/panels.js +1 -1
- package/dist/assets/styles.css +1 -1
- package/dist/i18n/en.json +1 -1
- package/dist/i18n/ru.json +1 -1
- package/dist/main.js +321 -321
- package/package.json +1 -1
package/dist/i18n/en.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file.created":"Created {path}","file.deleted":"Deleted {path}","file.updated":"Updated {path}","file.written":"Written {path}","file.syntax_error":"Syntax error in {path}:\n{error}\n\nFile was NOT written. Fix the syntax error and try again.","file.notfound":"File not found: {path}\nThis does NOT mean the project is missing — the path may be wrong. Run list_dir on the working directory first; create files only after confirming what exists.","file.dir_notfound":"Directory not found: {path}","file.path_not_allowed":"Path not allowed: {path}","file.path_not_allowed_short":"Path not allowed","file.is_directory":"Is a directory, use rmdir: {path}","file.replaced_in":"Replaced in {path}","file.string_not_found":"String not found in file:\n{str}\n\nUse read_file on {path} to see the current content before editing — the target may differ (whitespace, line endings) or was already replaced.","file.edit_args_invalid":"edit_file requires string \"old\" and \"new\" arguments. Received: old={oldType}, new={newType}.","file.read_failed":"Could not read {path}: {error}","file.write_failed":"Could not write {path}: {error}","file.protected_path_ask":"Protected path \"{path}\" (matches {pattern}). Do NOT modify it. Ask the user for explicit confirmation before proceeding and wait for their answer — do not retry around this.","file.moved":"Moved {from} → {to}","file.not_found_short":"Not found: {path}","file.notfound_resolved":"File not found: {path} (resolved to {resolved})\nThe path was joined onto the working directory because it does not exist as given. Run list_dir to find the correct path.","file.empty":"(empty)","file.no_matches":"No matches","file.truncated":"\n... (truncated)","file.read_header":"── {path} ({ext}, {total} lines, lines {from}-{to})","file.read_range":"lines {from}-{to} of {total}","file.read_truncated":"\n\n[Truncated: {remaining} more lines. Use read_file with offset={next} to continue]","file.empty_page":"(empty page)","error.timeout":"Request timed out","error.unknown":"An unknown error occurred","error.notfound":"Not found: {path}","error.prefix":"Error: ","error.command_error":"Command error: {message}","error.llm":"LLM error: {message}","error.response_blocked":"Response blocked: {reason}","error.max_iters":"Max iterations ({max}) reached","error.empty_response":"Model returned an empty response after retries","error.audit_failed":"Task could not be verified as complete: {summary}","error.retry_loop_stopped":"Stopped after {count} consecutive failed tool batches — the agent kept retrying a failing action instead of finishing","error.readonly_loop_stopped":"Stopped after {count} consecutive read-only steps — the agent kept reading/searching instead of answering or making a change","error.grep_failed":"Grep failed: {message}","error.grep_no_engine":"grep engine \"{engine}\" is unavailable: no such binary in PATH. Set tools.grepEngine=auto or js, or use read_file/list_dir.","error.search_failed":"Search failed: {message}","error.fetch_failed":"Fetch failed: {message}","error.fetch_url_failed":"Failed to fetch {url}: {message}","error.http":"HTTP {status}: {statusText}","error.llm_api":"LLM API error {status} ({statusText}): {errorText}","error.llm_retries":"LLM request failed after retries","error.llm_429":"Rate limit exceeded (HTTP 429) for {model} on {baseUrl}. The provider is throttling requests — free models are especially strict. Get an API key or switch to a paid/faster model: {baseUrl}","error.no_response_body":"No response body stream","error.llm_stream_idle":"LLM stream stalled — no data for {timeout}ms. If the provider buffers streaming (e.g. LM Studio) or generates very long tool calls, raise \"retry.noDataTimeoutMs\" in ~/.mma/config.json (restart required)","error.llm_stream_idle_toolcall":"LLM stream stalled after a tool_call started — no data for {timeout}ms. The provider most likely buffers SSE instead of streaming tool-call argument deltas (seen with LM Studio). Raise \"retry.noDataTimeoutMs\" in ~/.mma/config.json (restart required)","error.llm_truncated":"Response hit the completion token limit ({tokens}) and was cut off before any content arrived. Split the task into smaller outputs or raise \"maxCompletionTokens\" in the config","error.llm_truncated_toolcall":"Response hit the completion token limit ({tokens}) in the middle of a tool_call — its arguments were cut off. Write the file in smaller chunks (several write_file/edit_file calls) or raise \"maxCompletionTokens\" in the config","error.llm_output_truncated":"The response hit the completion token limit ({tokens}) and was cut off — this answer is incomplete. Raise \"maxCompletionTokens\" in the config to allow longer replies","error.llm_provider_stream_error":"Provider returned an error mid-stream: {error}","error.llm_timeout":"LLM request timed out ({timeout}ms)","error.context_log_init":"Context log is enabled but could not be initialized: {error}. No context diff will be written.","error.provider_build":"Could not build provider \"{name}\": {error}","env.runtime_node":"Running under Node (v{version}) — clipboard image paste, subagent performance and LSP spawn on Windows degrade. Install Bun (https://bun.sh) for full features.","env.runtime_old":"Runtime version {version} is below the required engines {engine}.","env.tool_missing":"Tool not found on PATH: {tool}","env.playwright_missing":"Playwright package is not installed — the browser tool will fail. Install with: bun add playwright","env.playwright_browsers_missing":"Playwright browsers not downloaded ({dir}). The browser tool will fail. Install with: bunx playwright install chromium","env.crash_stderr":"MMA crashed ({type}): {message} — crash report written to ~/.mma/logs/crash.jsonl","env.model_autoload_failed":"Model auto-load failed: {error}. Continuing with manual load.","env.model_loaded":"Model {model} loaded in {seconds}s","env.reasoning_probe":"Reasoning probe: strategy={strategy} → {result}","env.reasoning_respected":"mechanism respected","env.reasoning_ignored":"mechanism IGNORED","env.indexing":"Indexing project files…","env.indexed":"Indexed {files} file(s) for the project map","env.indexing_failed":"Project indexing failed: {error}","env.index_skip_unreadable":"indexer: skipping unreadable entry \"{path}\"","env.killed_processes":"Killed {count} background process(es) on shutdown","session.started":"Session started: {id}","session.ended":"Session ended: {id}","session.not_found":"Session not found: {id}","session.no_active":"No active session","session.deleted":"Session deleted: {id}","session.pruned":"Pruned {n} empty session(s)","session.prune_dry":"Would prune {n} empty session(s)","session.prune_empty":"No empty sessions to prune","session.renamed":"Session renamed to: {name}","session.created":"Created session: {name}","session.resumed":"Resumed session: {name}","session.chat_cleared":"Chat cleared. Start typing to begin.","session.chat_loaded":"Chat history loaded. Pick up where you left off.","session.chat_history":"Chat history:","session.user_label":"User","session.assistant_label":"Assistant","session.no_history":"Chat history is empty","session.no_sessions":"No sessions found","session.no_sessions_hint":"No sessions found. Create one with /new <name>","session.available":"Available sessions:","session.no_match":"No session matching \"{query}\"","session.default_name":"Session {date}","session.auto_named":"Session auto-named: {name}","session.info_full":"[Session: \"{name}\" ({id}) | model: {model} | context: {contextWindow} tokens]","session.col_active":"","session.col_id":"ID","session.col_name":"Name","session.col_updated":"Updated","session.col_msgs":"Msgs","tool.executed":"Executed {name}","tool.failed":"Tool {name} failed: {error}","tool.unknown":"Unknown tool: {name}","tool.not_allowed":"Tool not allowed in this mode: {name}","tool.blocked":"Blocked by plugin: {plugin}","tool.ui.security_blocked":"Blocked by security policy","tool.ui.protected_path":"Protected path — confirmation needed","tool.blocked_reason":"Blocked by plugin: {plugin}. Reason: {reason}","tool.using":"[{label}]","tool.friendly.write_file":"Writing file","tool.friendly.read_file":"Reading file","tool.friendly.edit_file":"Editing file","tool.friendly.create_dir":"Creating directory","tool.friendly.delete_file":"Deleting file","tool.friendly.move_file":"Moving file","tool.friendly.list_dir":"Listing files","tool.friendly.file_info":"File info","tool.friendly.glob":"Searching files","tool.friendly.grep":"Searching content","tool.friendly.bash":"Running command","bash.echo_write_blocked":"Writing files via echo/printf is unreliable in Windows cmd.exe (quotes and multi-line break). Use the write_file tool instead (target: {path}).","bash.cwd_flag_hint":"--cwd is not a standard flag. Pass the directory via the bash tool's \"workdir\" parameter instead (e.g. workdir=\"{workdir}\").","bash.posix_workdir_hint":"workdir \"{workdir}\" is a POSIX path, but this shell is Windows cmd.exe. Use a Windows path, or omit workdir to use the workspace root ({baseDir}).","tool.friendly.load_skill":"Loading skill","tool.friendly.plan":"Planning","tool.friendly.todo":"Updating tasks","tool.friendly.verify":"Verifying","tool.friendly.web_search":"Web search","tool.friendly.web_fetch":"Fetching page","tool.friendly.web_browse":"Browsing page","tool.friendly.download_file":"Downloading file","tool.friendly.chunk_query":"Querying chunks","tool.web_fetch_result":"Fetched page: {url} — {chars} chars, {lines} lines{truncated}","tool.web_fetch_no_content":"No readable content at {url} — the page needs JavaScript or is a bot wall. Use the \"browser\" tool, or pick a different source.","tool.web_browse_result":"Browsed page: {url} — {chars} chars, {lines} lines{truncated}","tool.web_search_result":"Search results for \"{query}\" — {count} results","tool.downloaded":"Downloaded {url} → {path} ({size} bytes, {type})","tool.download_too_large":"Download blocked: file exceeds the {max} bytes limit","tool.friendly.browser":"Browser","tool.friendly.subagent":"Sub-agent task","tool.friendly.question":"Question to user","tool.friendly.approve":"Approval request","tool.friendly.search_history":"Searching history","tool.friendly.pipeline_run":"Running pipeline","tool.friendly.mcp_call":"MCP call","tool.friendly.lsp_check":"Checking code","tool.friendly.meet_done":"Interview complete","tool.truncated":"[Truncated: {tokens} tokens removed]","critic.repair":"A verifier flagged critical problems; fix them before finishing:\n{issues}\nSummary: {summary}","critic.advice":"A verifier flagged issues worth checking before you finish:\n{issues}","critic.repeat":"The verifier repeats a previously flagged problem — do not produce the same answer again. Change the approach, or finish honestly if the complaint does not apply:\n{issues}","tool.subagent_queued":"Sub-agent task queued: {task}","tool.subagent_artifact":"Sub-agent completed. Full result saved to artifact: {path}\nIterations: {iterations}\nSummary:\n{summary}","tool.pipeline_started":"Pipeline \"{name}\" execution started. Pipeline engine is a stub — run dispatched.","tool.mcp_call":"MCP call: {server}/{tool} with {args}","tool.action_required":"Action is required.","tool.approve_prompt":"Approve? {action}","tool.approve_yes":"Yes","tool.approve_yes_desc":"Approve the action","tool.approve_no":"No","tool.approve_no_desc":"Reject the action","tool.approved":"Approved","tool.rejected":"Rejected by user","tool.user_input.custom_option":"Type your own answer","tool.user_input.choice_single":"> Select [1-{max}]: ","tool.user_input.choice_multiple":"> Select (comma-separated, e.g. 1,3): ","tool.user_input.invalid":"Invalid choice, try again.","tool.user_input.custom_prompt":"Your answer: ","tool.question.progress":"Question {current}/{total}","tool.question.no_questions":"No questions provided","tool.question.unanswered":"Unanswered","tool.question.answered":"User has answered your questions: {formatted}. You can now continue with the user's answers in mind.","tool.question.memory_only":"Memory already answers these questions — they were NOT asked. Do NOT call question for them again: continue with the memory values and briefly tell the user what you took from memory.","tool.question.memory_known":"Memory already answers: {formatted}. These were NOT asked — do not re-ask them. Continue with these values; if the user corrects you, update your answer, but don't call question again.","tool.question.memory_repeat":"Repeat: this topic is already answered by memory above. Do not call question again — continue with the known value.","tool.question.session_only":"Answers live only in this session — persist nothing via remember unless the user explicitly asks.","tool.question.batch_truncated":"Asked the first {shown} of {total} unknown questions — call the tool again for the rest.","tool.name_or_task":"Provide either \"name\" or \"task\" parameter","tool.chunk_query_no_query":"chunk_query: a query string is required.","tool.chunk_query_no_input":"chunk_query: provide input_path or text.","tool.chunk_query_no_provider":"chunk_query: missing LLM provider in context.","tool.chunk_query_path_not_allowed":"[SCOPE] {reason}","tool.chunk_query_read_failed":"Cannot read {path}: {error}","tool.subagent_cannot_run":"Sub-agent cannot run: missing LLM provider or tool executor in context.","tool.subagent_failed":"Sub-agent failed: {error}\nPartial output: {text}","tool.subagent_completed":"Sub-agent completed:\n{text}\n\nIterations: {iterations}","tool.subagent_error":"Sub-agent error: {error}","tool.pipeline_cannot_run":"Pipeline cannot run: missing LLM provider or tool executor in context.","tool.pipeline_failed":"Pipeline \"{name}\" failed. Executed {done}/{total} steps.\n{logs}","tool.pipeline_completed":"Pipeline \"{name}\" completed successfully ({steps} steps).\n{logs}","tool.pipeline_error":"Pipeline error: {error}","tool.mcp_server_not_found":"MCP server \"{server}\" not found. Available: {available}","tool.mcp_call_failed":"MCP call failed: {error}","tool.meet_done":"Interview marked complete.","tool.invalid_params":"Invalid parameters","tool.skill_budget":"Skill \"{name}\" loaded ({tokens} tokens, {remaining} remaining in skills budget). Skill content is now in system prompt — no need to reload after context compaction.","tool.skill_available_hint":"Available skills","tool.skill_did_you_mean":"Did you mean","tool.no_results":"No results found for \"{query}\"","tool.search_results":"Search results for \"{query}\":\n{results}","tool.web_search_disabled":"Web search is disabled (webSearch.enabled: false). Use file/system tools only.","tool.history_results":"History results for \"{query}\":\n{results}","tool.no_history":"No history entries matching \"{query}\"","tool.no_sessions_dir":"No sessions directory found at {dir}","tool.history_error":"Error searching history: {error}","tool.memory_error":"Memory error: {error}","tool.screenshot_unavailable":"[Screenshot captured — image not available for text-only model]","tool.timeout":"Tool {name} timed out after {seconds} seconds","tool.aborted":"Tool {name} was interrupted by user","tool.interactive_disabled":"Interactive tool is disabled in exit-on-complete mode. Proceed without asking the user.","proc.started":"Started background process {id} (PID {pid}).\nCommand: {command}","proc.promoted_hint":"Command still running after {ms} ms — moved to the background","proc.manage_hint":"Check output: process_log id={id}. Wait for completion: process_wait id={id}. Stop it: process_kill id={id}. List all: process_list.","proc.output_preview":"First output:\n{lines}","proc.none":"No background processes running.","proc.not_found":"Process not found: {id}","proc.missing_id":"Provide the process id: process_kill id=proc_xxx (the id is returned by bash when a command goes to the background, or by process_list).","proc.missing_id_list":"No background processes are currently running.","proc.killed":"Process {id} (PID {pid}) killed.","proc.kill_failed":"Failed to kill process {id}","proc.list_header":"Background processes","proc.log_header":"Process {id} ({status}) output:","proc.log_empty":"(no output yet)","proc.hint":"Manage them with {list}, {log}, {kill}.","proc.status_running":"running","proc.status_exited":"exited","proc.status_killed":"killed","proc.wait_exited":"Process {id} {status} after {ms} ms with exit code {code}.","proc.wait_running":"Process {id} still running after {ms} ms.","proc.wait_hint":"Wait again: process_wait id={id}. Check output: process_log id={id}. Stop it: process_kill id={id}.","tool.friendly.process_list":"Listing background processes","tool.friendly.process_log":"Process output","tool.friendly.process_kill":"Stopping process","tool.friendly.process_wait":"Waiting for process","plan.no_steps":"No plan steps specified. Provide concrete steps with files and commands.","plan.created":"Plan created: {title} ({steps} steps)","plan.coverage_blocked":"Plan does not cover files required by the task: {missing}. Add steps naming these files (exact paths) with checks, then call plan create again.","plan.checks_required":"Each step needs a verification contract: pass checks aligned 1:1 with steps — one per step: \"file-exists:<path>\" (auto-verified on done), \"command:<cmd>\" (run it before done), or \"manual:<what to check by eye>\" (UI/visual work only).","plan.checks_not_array":"checks must be an array of check strings, aligned 1:1 with steps","plan.checks_mismatch":"checks must align 1:1 with steps: got {actual} checks for {expected} steps. Example: steps [\"Create src/a.ts\"] + checks [\"file-exists:src/a.ts\"]. Omit checks to let each step self-certify.","plan.checks_invalid":"Invalid check(s): {kinds}. Each check must start with \"file-exists:\", \"command:\", or \"manual:\".","plan.check_failed":"Cannot mark step {step} done: its check failed — {check}. Run the check first (create the file / run the command), then mark done.","plan.check_self_certified":"check self-certified: {check} — confirmed run before done.","plan.step_done":"Step {n}/{total}: {description} ✓","plan.complete":"Task complete: {summary}","plan.title_steps":"Plan \"{title}\" created with {count} steps","plan.step_marked":"Step {step} marked as {status}","plan.aborted":"Plan aborted","plan.completed_archived":"Plan {id} is complete ({done}/{total} steps) — archived. You may create a new plan for new work (plan create), or reply with your final answer.","plan.unknown_action":"Unknown plan action: {action}","plan.updated":"Plan updated: {title} ({steps} steps)","plan.acknowledged":"Plan {action}: acknowledged","plan.step_status":"Step {step}: {status}","plan.no_active":"No active plan","plan.no_active_with_last":"No active plan. Last completed: {id} \"{title}\" ({done}/{total} steps). Continue with a new plan (action=create) or finish your answer.","plan.step_not_found":"Step not found","plan.step_required":"Provide the step number: plan_step step=N status=done|failed|skipped.","plan.bad_status":"Invalid status \"{status}\". Use one of: {allowed}.","plan.step_already_done":"Step {step} is already done — nothing to do. Plan progress:","plan.order_blocked":"Cannot mark step {step} done: step {first} (\"{desc}\") is not finished yet. Complete earlier steps first, or mark step {first} status=skipped if it is not needed.","plan.deliverables_missing":"Cannot mark step {step} done: the files it names do not exist yet: {files}. Create these files first (or mark the step status=skipped if they are not actually needed).","plan.kinds_mismatch":"kinds array length must match steps","plan.kinds_invalid":"Invalid step kind(s): {kinds}. Use \"create\" or \"delete\".","plan.kinds_not_array":"kinds must be an array of \"create\" or \"delete\"","plan.deliverables_remain":"Cannot mark step {step} done: the files it names still exist: {files}. This step is kind=delete — delete these files first (or set status=skipped if they should stay).","plan.typecheck_failed":"Cannot mark step {step} done: the last check still reports a compile error:\n{error}\nFix the error and re-edit the file (a clean write clears the failure), or mark the step status=skipped if it is not needed.","plan.show_header":"Plan status:","plan.show_empty":"(plan has no steps)","plan.list_header":"Plans:","plan.list_empty":"No plans","plan.switch_no_id":"Provide a plan id to switch to","plan.not_found":"Plan not found: {id}","plan.switched":"Switched to plan {id}: {title}","plan.replanned":"Plan re-planned: {kept} completed steps kept, {steps} new steps added","plan.replan_no_steps":"Provide new steps for re-planning","plan.active_in_progress":"Cannot create a new plan: active plan {id} already has progress ({done}/{total} done, current: step {current}). Resume it — use \"plan show\" to view, then continue working. To replace it, call \"plan abort\" first, then \"plan create\" again.","plan.id_ignored":"note: plan ids are auto-generated; use \"plan switch\" to activate an existing plan by id.","plan.existing_fresh":"note: the previous active plan had no progress and was preserved as a draft.","plan.already_active":"Plan {id} is already active — nothing to switch.","plan.already_archived":"Plan {id} is already archived — nothing to abort.","plan.aborted_id":"Plan {id} aborted and archived.","plan.delete_no_id":"Provide a plan id to delete (plan delete id=plan_xxx).","plan.deleted":"Plan {id} deleted permanently.","plan.purged":"Deleted {count} plan(s). Plan storage is empty.","plan.no_deliverables":"note: step {step} names no files — verify the result in a task-appropriate way before your final answer (for code: build/tests/lint; for research/advice tasks: re-check the answer, do NOT create files just to have deliverables).","plan.bulk_update_rejected":"Bulk steps[] rewrite via action=update is not supported: it would discard all step statuses. Use \"re-plan\" (keeps completed steps, replaces the rest) or mark steps individually: plan_step step=N status=done|failed|skipped.","plan.readonly":"Plan {id} is {status} (read-only) — it cannot be updated. Use \"plan switch\" to activate it, or create a new plan for new work.","plan.list_legend":"[*] active · [ ] draft · [-] archived","exec.plan_nudge":"You made {count} file-changing tool call(s) without a plan. For tasks that create or modify files, or span multiple steps, create a plan first (plan create) with concrete steps (exact filenames, commands, deliverables), then continue.","exec.plan_summary_complete":"[{id}] \"{title}\" {done}/{total} done — plan complete. You may create a new plan for new work (plan create), or reply with your final answer.","exec.plan_summary_continue":"[{id}] \"{title}\" {done}/{total} done, current: step {current} — continue it (plan show / re-plan), do NOT create a new plan","exec.test_fail_summary":"{framework} reported {failed} FAILING test(s) ({passed} passing). Do NOT mark the current step as done — fix the failing tests (read the failure output, correct the code) and re-run them until all pass.","exec.test_pass_summary":"{framework}: all {passed} test(s) passed for \"{cmd}\". You may mark the current step as done via plan_step step=N status=done.","exec.skills_hint":"If relevant skills are available, consider loading one with load_skill for expert guidance.","todo.added":"Added {count} todo(s): {items}","todo.marked_done":"Marked {count} item(s) as done","todo.no_active":"No active todos","todo.no_items":"No todo items specified — provide items to mark done","todo.subtask_not_found":"No matching sub-task(s) found for: {items}. Use ids from todo list (todo done ids=[...]) for reliable matching.","todo.subtask_id_not_found":"No sub-task(s) with id(s): {ids}. Check ids with todo list.","todo.unknown_action":"Unknown todo action: {action}","todo.acknowledged":"Todo acknowledged","verify.passed":"Verification passed","verify.failed":"Verification failed: {details}","verify.file_exists":"File exists: {path}","verify.file_not_found":"File not found: {path}","verify.script_passed":"Script '{script}' passed","verify.script_failed":"Script '{script}' failed: {message}","verify.syntax_error":"Syntax error in: {path}","verify.file_still_exists":"File should be deleted but still exists: {path}","verify.no_files":"Step {step} has no named files to verify — run a real check instead (bash: bun run build / bun test / lsp_check) and confirm the result.","verify.typecheck_skipped_no_tsconfig":"No tsconfig.json found — skipping type check","verify.typecheck_skipped_no_tsc":"tsc not installed — skipping type check","verify.typecheck_passed":"TypeScript type check passed","verify.typecheck_failed":"TypeScript type check failed: {error}","verify.tests_skipped_no_package":"No package.json found — skipping tests","verify.tests_skipped_no_script":"No test script defined — skipping tests","lsp.unavailable":"static checks are unavailable (server not found). Verify via the project's own build/test instead.","lsp.check_disabled":"LSP checks are disabled in the config.","lsp.check_no_path":"Provide a path (file or directory) to check.","lsp.check_notfound":"Path not found: {path}","lsp.check_unsupported":"No LSP server configured for: {path}","lsp.check_clean":"No errors or warnings detected ({count} file(s) checked).","lsp.checked_files":"Checked {count} file(s):","lsp.startup_header":"[Existing project errors (baseline, checked at session start) — informational. Do NOT fix them unless the current request is about these errors; otherwise ignore them and work only on what the user asked.]:","lsp.hint_binary_missing":"Hint: install the language server or set lsp.servers.<lang>.command to an existing binary.","lsp.hint_network":"Hint: cannot download the language server (npm registry unavailable) — install it on PATH, set a registry mirror in lsp.servers.<lang>.env, or set MMA_LSP_OFFLINE=1.","lsp.hint_offline":"Hint: offline mode is on and the server binary is not in PATH — install it or unset MMA_LSP_OFFLINE.","lsp.hint_spawn":"Hint: the server command failed to start — check the command and PATH.","lsp.hint_timeout":"Hint: the server did not initialize in time — it may be slow; raise lsp.servers.<lang>.timeout.","cli.description":"Micro Models Agent — AI coding agent for small models","cli.init":"Run the provider setup wizard (deprecated alias of mma setup).","cli.init_deprecated":"mma init is deprecated — use mma setup","cli.setup":"Interactive setup wizard (provider, model, security).","cli.meet":"Get acquainted — record your preferences and usage profile.","cli.agents":"Agent management.","cli.agents_init":"Generate or update AGENTS.md for this workspace.","cli.config_saved":"Configuration saved to ~/.mma/config.json","cli.manage_config":"Manage configuration","cli.config_key":"Config key (e.g., model, provider.baseUrl)","cli.set_value":"Set a config value","cli.config_force":"Bypass validation and write the raw value as-is","cli.set_done":"Set {key}={value}","cli.config_invalid":"Invalid value for '{key}' ({reason}). Config not changed.","cli.show_config":"Show the effective configuration (secrets redacted; use --show-secrets to reveal)","cli.migrate_config":"Migrate legacy config.json to domain format","cli.manage_models":"Manage models","cli.list_models":"List available models","cli.current_model":"Current model:","cli.model_hint":"(Use /model use <name> to change)","cli.model_fetch_failed":"Failed to fetch models: {error}","cli.available_models":"Available models:","cli.cert_label":"supported — certified on this provider","cli.cert_stale_label":"certified on an older MMA version — recommended","cli.no_models_found":"No models found from provider","cli.fetching_models":"Fetching model list...","cli.manage_context":"Manage context window","cli.invalid_context_size":"Invalid context size. Must be a number >= 1024","cli.context_set":"Context window set to: {size} tokens","cli.context_budget_header":"Context budget (window {window} tokens):","cli.context_system_line":" system prompt: {tokens} tokens ({percent}%)","cli.context_reserve_line":" response reserve: {tokens} tokens ({percent}%)","cli.context_history_line":" history: {tokens} tokens ({percent}%)","cli.context_system_fraction":"System-prompt share of the context window (0.05–0.9)","cli.context_reserve_fraction":"Response-reserve share of the context window (0.05–0.9)","cli.context_fraction_set":"{key} share set to {value}","cli.context_invalid_fraction":"Invalid share. Use a number between 0.05 and 0.9 (system + reserve must stay below 0.95).","repl.reload":"Reload agent with current config","repl.reload_usage":"Usage: /reload","repl.reloading":"Reloading agent...","repl.reloaded":"Agent reloaded","cli.set_model":"Set default model","cli.model_name":"Model name","cli.model_set":"Model set to: {name}","cli.certify":"Run certification suite for a model","cli.cert_provider_url":"Provider base URL to certify against (default: current config)","cli.cert_provider_key":"Provider API key (optional)","cli.cert_context_window":"Context window size in tokens","cli.cert_tags":"Comma-separated scenario tags (core, security, image, network, browser, shell, research)","cli.cert_scenarios":"Comma-separated scenario ids to (re-)run (e.g. 3.5-data-pipeline); other results are preserved","cli.cert_scenarios_unknown":"Unknown scenario(s): {ids}. Available: {available}","cli.cert_partial_merge":"Preserved {kept} result(s) from the previous certification","cli.cert_reps":"Default repetitions per scenario (overridden by scenario)","cli.cert_timeout":"Per-rep timeout in ms (default 300000; overridden by scenario)","cli.cert_force":"Re-run an existing certification","cli.cert_clean":"Remove sandbox directories after a successful run","cli.cert_security_required":"Security is disabled. Enable it first (e.g. `mma security set-policy balanced`) to run the security suite.","cli.cert_no_scenarios":"No scenarios match tags: {tags}","cli.cert_exists":"A certification for {model} already exists on this provider.","cli.cert_exists_hint":"Use --force to re-run.","cli.cert_started":"Certifying {model} on {provider}...","cli.cert_done":"Certification complete: {passed} pass, {failed} fail, {skipped} skipped ({total} total)","cli.cert_rep_pass":"pass","cli.cert_rep_fail":"fail","cli.cert_status":"Show certification status for a model","cli.cert_list":"List all certifications","cli.cert_uncertify":"Remove a certification","cli.cert_not_found":"No certification found for {model}","cli.cert_uncertified":"Certification removed for {model}","cli.cert_empty":"No certifications yet. Run `mma model certify <model>` first.","cli.cert_provider_col":"provider","cli.cert_suite_col":"suite","cli.cert_date_col":"date","cli.cert_version_col":"MMA version","cli.cert_stale_hint":"Run `mma model certify --force` to refresh.","cli.cert_fixture_missing":"Fixture missing for {id}: {path}","cli.cert_marks_hint":"Markers: ✔ certified on this provider, ○ certified on an older MMA version, · not certified","cli.manage_providers":"Manage providers","cli.provider_check":"Probe configured providers (free listModels call)","cli.probe_timeout":"Per-provider probe timeout in ms","repl.provider_down":"[WARN] Provider \"{name}\" is unreachable: {error}","repl.meet_start_prompt":"Let's get acquainted. Start the interview now.","repl.meet_unavailable":"Can't start: the provider is not responding ({reason}).","repl.meet_unavailable_hint":"Start the model and try /meet again — nothing was saved.","onboarding.already":"Already running.","onboarding.non_interactive":"This command needs an interactive terminal.","onboarding.write_restricted":"in this mode only AGENTS.md is writable","repl.init_start_prompt":"Generate or improve {dir} for this workspace. Scan first, then write.","repl.init_unavailable":"Can't run init: the provider is not responding ({reason}).","repl.meet_usage":"/meet [stop] — get acquainted","repl.meet_already_hint":"Already in the get-acquainted interview. Run /meet stop to end it.","repl.meet_stop_done":"Interview ended.","repl.meet_stop_none":"No interview is running.","repl.init_usage":"/init — generate/update AGENTS.md","repl.init":"Generate or update AGENTS.md for this workspace.","repl.memory_usage":"/memory [get|set|unset|find|forget]","repl.memory_empty":"Memory is empty.","repl.memory_prefs":"Preferences:","repl.memory_set":"Saved {key}={value}","repl.memory_unset":"Removed {key}","repl.memory_not_found":"No preference \"{key}\"","repl.memory_entry_not_found":"No {category} entry #{n}","repl.memory_forgotten":"Removed {category} entry {n}","repl.meet_offer":"Shall we get acquainted? I'll ask a few questions and remember how you like to work.","repl.meet_offer_hint":"You can skip now and run /meet later.","repl.meet_done":"Done — preferences saved. See /memory.","onboarding.provider_down":"⚠ Provider is not responding — \"{cmd}\" is unavailable for now.","onboarding.provider_down_hint":"↳ Start the model and run /{cmd}. Nothing was saved.","cli.list_providers":"List providers","cli.current_provider":"Current provider:","cli.base_url":"Base URL:","cli.set_provider":"Set active provider","cli.provider_set":"Provider set to: {name}","cli.provider_name":"Provider name","cli.provider_type_label":"Provider type or label","cli.provider_base_url":"Base URL","cli.provider_api_key":"API key","cli.provider_priority":"Fallback priority (lower = tried first)","cli.provider_context_window":"Context window override for this entry","cli.provider_rpm":"Max requests per minute for this entry","cli.provider_parallel":"Max parallel tasks for this entry","cli.manage_sessions":"Manage sessions","cli.list_sessions":"List all sessions","cli.show_details":"Show session details","cli.session_id":"Session id","cli.session_id_or_prefix":"Session id (or name prefix)","cli.session_field_id":"ID:","cli.session_field_name":"Name:","cli.session_field_created":"Created:","cli.session_field_updated":"Updated:","cli.session_field_messages":"Messages:","cli.session_field_model":"Model:","cli.session_field_context":"Context:","cli.session_field_project":"Project:","cli.session_moe_events":"MoE events:","cli.delete_session":"Delete a session","cli.prune_sessions":"Delete sessions without user messages","cli.prune_dry_run":"Show what would be deleted without deleting","cli.export_session":"Export a session to a file (md, json, or jsonl)","cli.export_format":"Output format: md|json|jsonl (default md)","cli.export_out":"Output path ('-' for stdout)","cli.export_no_redact":"Do not redact secrets","cli.export_compact":"Omit tool result bodies (compact readable export)","cli.first_run":"First run detected. Running setup wizard...","cli.first_run_oneshot":"No configuration found — running with defaults. Run `mma` (no arguments) once to set up the wizard.","cli.web_setup_required":"No configuration found — opening the browser setup wizard.","cli.web.description":"Run the agent with a browser UI","cli.web.port":"fixed port (default: random)","cli.web.host":"bind address (default: 127.0.0.1)","cli.web.token":"require this token (mandatory for non-loopback)","cli.web.no_open":"do not open the browser automatically","cli.web_started":"web ui → {url} (directory: {dir})","cli.web_invalid_port":"invalid --port \"{port}\": expected an integer between 1 and 65535","cli.relaunch_failed":"Failed to relaunch the CLI: {message}","cli.prompt_arg":"Prompt to execute","cli.run_prompt":"Run a single prompt","cli.setup_saved_restart":"Settings saved. Restarting with the new configuration...","cli.unknown_cmd":"Unknown command: {name}.","cli.unknown_command":"Unknown command \"{input}\". Did you mean \"{suggestion}\"?","cli.help_hint":"Type /help for available commands.","cli.available_cmds":"\nAvailable commands:","cli.no_output":"The agent finished but produced no output. The task may be incomplete.","cli.no_agents_md":"Disable loading AGENTS.md files into system prompt","cli.dir":"Working directory for the agent (defaults to current directory)","cli.exit_on_complete":"Exit immediately when the task is done; interactive tools (question/approve) fail fast instead of blocking on stdin","cli.reasoning_level":"Set reasoning effort level (auto|none|low|medium|high|max)","cli.json":"Output the result as JSON (single-run mode)","cli.context_log":"Write the full LLM context to <session>/context.diff as a git-style diff (first snapshot full, then +/- changes)","cli.verbose":"Show full chat detail (tool bodies, lists); default is quiet","cli.security.description":"Manage security settings","cli.security.status":"Show current security configuration","cli.security.policies":"List available security policies","cli.security.set_policy":"Apply a security policy preset","cli.security.preset":"Policy preset (strict, balanced, permissive)","cli.security.invalid_preset":"Invalid preset. Available: {presets}","cli.security.policy_applied":"Security policy applied: {name}","cli.security.policy_description":"Description: {description}","cli.security.enable_encryption":"Enable session file encryption","cli.security.disable_encryption":"Disable session file encryption","cli.security.encryption_enabled":"Session file encryption enabled","cli.security.encryption_disabled":"Session file encryption disabled","cli.security.enable_audit":"Enable audit notifications","cli.security.disable_audit":"Disable audit notifications","cli.security.audit_enabled":"Audit notifications enabled","cli.security.audit_disabled":"Audit notifications disabled","cli.security.audit_stats":"Show audit notification statistics","cli.security.audit_stats_title":"Audit Notification Statistics","cli.security.total_notifications":"Total notifications","cli.security.by_severity":"By severity","cli.security.by_type":"By type","cli.security.low":"Low","cli.security.medium":"Medium","cli.security.high":"High","cli.security.critical":"Critical","cli.security.current_policy":"Current Security Configuration","cli.security.bash_enabled":"Bash command validation","cli.security.path_validation":"Path access validation","cli.security.network_validation":"Network request validation","cli.security.content_scanning":"Content scanning","cli.security.max_recursion":"Max recursion depth","cli.security.max_file_ops":"Max file operations","cli.security.rate_limit":"Rate limit","cli.security.session_encryption":"Session encryption","cli.security.audit_notifier":"Audit notifications","cli.security.available_policies":"Available Security Policies","cli.security.recommended_for":"Recommended for","cli.yes":"Yes","cli.no":"No","cli.plugins.description":"Manage plugins","cli.plugins.list":"List loaded plugins (name, version, source)","cli.plugins.all":"Include builtin plugins","cli.plugins.only_external":"(builtin plugins omitted — use --all to show them)","cli.plugins.none":"No plugins loaded","cli.plugins.header":"Plugins: {count} loaded (MMA v{mma})","cli.plugins.builtin_mark":"●","repl.help":"Show available commands","repl.help_usage":"Usage: /help","repl.exit":"Exit the REPL","repl.exit_usage":"Usage: /exit","repl.clear":"Clear the screen","repl.clear_usage":"Usage: /clear","repl.clear_hint":"Screen cleared. To start a fresh session and context: /new","repl.run":"Run a prompt through the agent","repl.run_usage":"Usage: /run <prompt>","repl.config":"Show or change settings (get / set / reset)","repl.config_usage":"Usage: /config [<key> [value]] | /config reset <key> | /config reset --all [--yes] | /config migrate","repl.reasoning":"Show reasoning status, toggle display, or set effort level","repl.reasoning_usage":"Usage: /reasoning [show|hide|level <auto|default|none|low|medium|high|max>]","repl.reasoning_level_set":"Reasoning level set to: {level}","repl.reasoning_invalid_level":"Invalid level '{level}'. Valid: {valid}","repl.verbose":"Chat verbosity (quiet, normal, verbose)","repl.verbose_usage":"Usage: /verbose [quiet|normal|verbose]","repl.verbose_set":"Chat verbosity: {level}","repl.verbose_invalid_level":"Invalid level '{level}'. Valid: {valid}","repl.last_action_none":"No recent action to show.","repl.status":"Show a compact status line","repl.status_usage":"Usage: /status","repl.security":"Show security configuration (on/off per area)","repl.plugins":"List loaded plugins","repl.plugins_usage":"Usage: /plugins [--all]","repl.sessions":"List all sessions (* active)","repl.sessions_usage":"Usage: /sessions","repl.new":"Create a new session","repl.new_usage":"Usage: /new [name]","repl.resume":"Switch to a session by id or name prefix","repl.resume_usage":"Usage: /resume <id|name>","repl.rename":"Rename the current session","repl.rename_usage":"Usage: /rename <new-name>","repl.delete":"Delete a session by id","repl.delete_usage":"Usage: /delete <session-id>","repl.skill":"Manage skills (list, loaded, load, unload, search)","repl.no_skills":"No skills available","repl.available_skills":"Available skills:","repl.no_loaded":"No skills loaded","repl.loaded_skills":"Loaded skills:","repl.budget":"Budget: {used} / {total} tokens ({remaining} remaining)","repl.skill_load_usage":"Usage: /skill load <name>","repl.skill_unload_usage":"Usage: /skill unload <name>","repl.skill_unloaded":"Skill \"{name}\" unloaded","repl.skill_not_loaded":"Skill \"{name}\" is not loaded","repl.skill_search_usage":"Usage: /skill search <query>","repl.no_skill_match":"No skills match \"{query}\"","repl.skills_matching":"Skills matching \"{query}\":","repl.skill_unknown_sub":"Unknown skill subcommand: {subcmd}","repl.skill_usage":"Usage: /skill [list|loaded|load|unload|search]","repl.agent":"Agent: ","repl.you":"You: ","repl.you_reasoning":"You [{level}]: ","repl.you_reasoning_cont":"You [{level}]… ","repl.interrupt":"Interrupted (Esc)","repl.title":"MMA REPL v{version}","repl.model":"Model:","repl.provider":"Provider:","repl.context":"Context:","repl.ctx_part_system":"system","repl.ctx_part_reserve":"reserve","repl.ctx_part_history":"history","repl.sysprompt_label":"System prompt:","repl.sysprompt_size":"{used} / {budget} tokens","repl.sysprompt_desc":"System prompt size and blocks (use --full for the text)","repl.sysprompt_usage":"Usage: /sysprompt [--full]","repl.sysprompt_full_hint":"Full prompt text hidden — run /sysprompt --full to print it.","repl.sysprompt_tokens":"System prompt ({count} tokens):","repl.excluded_blocks":"\nExcluded blocks: {count}","repl.context_usage":"Usage: /context [<size, min 1024> | system <share> | reserve <share>] (share 0.05–0.9 or e.g. 10%; system+reserve ≤ 0.95)","repl.msgs":"msgs","repl.api_line":" API: {prompt} prompt + {completion} completion = {total} total","repl.compacted":"Context compacted ({count})","repl.skills_available":"{count} available, budget: {budget} tokens","repl.plugins_active":"{count} active ({names})","repl.plugins_hidden":"({count} builtin hidden — /plugins --all to show)","repl.loaded":"[loaded]","repl.yes":"yes","repl.no":"no","repl.max_iters":"Max iters:","repl.stuck_thresh":"Stuck thresh:","repl.reasoning_label":"Reasoning:","repl.log_level":"Log level:","repl.locale":"Locale:","repl.session_label":"Session:","repl.skills_label":"Skills:","repl.plugins_label":"Plugins:","repl.mcp_label":"MCP:","repl.lsp_label":"LSP:","repl.lsp_timeout":"timeout","repl.lsp_failed":"did not start","repl.lsp_unknown":"unknown","repl.lsp":"LSP server management (Language Server Protocol) — status, restart, check, doctor","repl.lsp_usage":"Usage: /lsp [status|restart|doctor|check <path>]","repl.lsp_not_available":"LSP module not available","repl.lsp_status_header":"LSP Status:","repl.lsp_enabled":"Enabled:","repl.lsp_disabled_servers":"Disabled servers:","repl.lsp_failure_counts":"Failure counts:","repl.lsp_all_ok":"All servers operational","repl.lsp_restarting":"Resetting LSP server state...","repl.lsp_restarted":"LSP servers reset. Failed servers will be retried on next use.","repl.lsp_check_usage":"Usage: /lsp check <file-or-directory>","repl.lsp_checking":"Running LSP check on {path}...","repl.lsp_check_error":"LSP check failed: {error}","repl.lsp_doctor_header":"LSP doctor","repl.lsp_doctor_enabled":"enabled","repl.lsp_doctor_offline":"offline","repl.lsp_doctor_project":"project","repl.lsp_doctor_yes":"yes","repl.lsp_doctor_no":"no","repl.lsp_doctor_none":"no configured servers","repl.lsp_reason_ok":"ok","repl.lsp_reason_disabled":"disabled","repl.lsp_reason_not_applicable":"no matching files","repl.lsp_reason_binary_missing":"binary not found","repl.lsp_reason_offline":"offline — install the binary","repl.lsp_reason_network":"network — server download failed","repl.lsp_reason_timeout":"timeout (initialize)","repl.lsp_reason_spawn_failed":"spawn failed","repl.lsp_reason_server_error":"server error","repl.lsp_reason_deadline":"skipped (deadline)","repl.lsp_via":"via","repl.lsp_via_global":"global binary","repl.lsp_via_npx":"npx (download)","repl.lsp_doctor_hint":"locked-down network? install servers on PATH, set a registry mirror in lsp.servers.<lang>.env, or set MMA_LSP_OFFLINE=1","repl.lsp_install":"install globally: {command}","repl.work_dir":"Dir:","repl.agents_label":"Instructions:","repl.not_found":"not found","repl.disabled":"disabled (--no-agents-md)","repl.context_probe_small":"Context probe: model \"{model}\" is loaded with {actual} tokens, configured {configured} — overflow risk","repl.context_probe_big":"Context probe: model \"{model}\" supports {actual} tokens — consider \"mma context {actual}\"","repl.show":"show","repl.hide":"hide","repl.resume_hint":"Use /resume <id> or /resume <name> to switch between sessions","repl.reasoning_status":"Reasoning: {status}","repl.wizard":"Run setup wizard","repl.wizard_usage":"Usage: /wizard","repl.wizard_running":"Running setup wizard... (current config will be overwritten)","repl.provider_list":"List configured providers or hot-swap the active one","repl.provider_current":"Current provider","repl.provider_set":"Provider set to: {name}","repl.provider_usage":"Usage: /provider list | /provider use <name> | /provider add <name> [flags]\n --url <url> base API URL (fallback: known presets)\n --key <key> API key\n --priority <n> fallback order; lower = tried first\n --context-window <n> per-provider context window (tokens)\n --rpm <n> max requests/minute (default 60)\n --parallel <n> max parallel tasks (default 1)","repl.provider_add_missing_value":"Missing value for {flag}","repl.provider_add_invalid_number":"Invalid number for {flag}: '{value}'","repl.provider_switch_hint":"Switch to it with: /provider use {name}","repl.provider_flag_url":"Base API URL (fallback: known presets)","repl.provider_flag_key":"API key","repl.provider_flag_priority":"Fallback order; lower = tried first","repl.provider_flag_context_window":"Per-provider context window (tokens)","repl.provider_flag_rpm":"Max requests per minute (default 60)","repl.provider_flag_parallel":"Max parallel tasks (default 1)","repl.model_list":"List models of the active provider or switch the model","repl.model_current":"Current model","repl.model_set":"Model set to: {name}","repl.model_usage":"Usage: /model list | /model use <name>","repl.unknown_sub":"Unknown subcommand '{sub}' for /{cmd}. See usage below.","repl.help_unknown":"Unknown command '/{name}'","repl.help_aliases":"Aliases: {names}","repl.help_examples":"Examples:","repl.export":"Export a session to a file","repl.export_usage":"Usage: /export [<id|name>] [--format md|json|jsonl] [--out <path>] [--no-redact] [--compact]","config.header":"Managed settings","config.col_setting":"Setting","config.col_value":"Value","config.col_domain":"Domain","config.col_change":"Change with","config.session_line":"Session: {name} ({id}) — {count} messages","config.usage_hint":"Get: /config <key> · Set: /config <key> <value> · Reset: /config reset <key>","config.saved":"saved · reset: /config reset {key}","config.read_only_hint":"read-only","config.read_only":"'{key}' is read-only","config.unknown_key":"Unknown key '{key}'. {suggestion}","config.suggest":"Did you mean '{name}'?","config.valid_keys":"Valid keys: {keys}","config.invalid_value":"Invalid value for {key}. {hint}","config.range":"Value out of range for {key}","config.combined":"system + reserve must stay below 0.95","config.hint_string":"Expected a non-empty string","config.hint_enum":"Allowed: {values}","config.hint_bool":"Expected on/off","config.hint_share":"Expected 0.05–0.9 or a percentage (e.g. 10%)","config.hint_int":"Expected an integer ≥ {min}","config.reset_ok":"{key} restored to session-start value: {value} · saved","config.reset_unchanged":"{key} already at session value","config.reset_none":"No settings changed this session","config.reset_all_confirm":"Reset {count} changed setting(s) to session-start values? [y/N] ","config.reset_all_done":"Restored {count} setting(s) · saved","config.reset_all_needs_yes":"Refusing to reset without confirmation in non-interactive mode; pass --yes","config.reset_cancelled":"Reset cancelled","config.reset_usage":"Usage: /config reset <key> | /config reset --all [--yes]","config.alias_label":"alias of","config.group_label":"group","reasoning.status":"Reasoning: display {display} · effort {level} {auto}","reasoning.on":"on","reasoning.off":"off","reasoning.auto_on":"(auto policy)","reasoning.auto_off":"(auto policy off)","reasoning.auto_off_hint":"Auto policy off. Restore with: /config reset reasoning.mode","reasoning.display_set":"Reasoning display: {state}","reasoning.unknown_sub":"Unknown argument '{sub}'.","reasoning.sub_show":"Show reasoning content","reasoning.sub_hide":"Hide reasoning content","reasoning.sub_level":"Set reasoning effort level","verbose.status":"Verbosity: {level}","verbose.sub_quiet":"One line per action","verbose.sub_normal":"Add short result summaries","verbose.sub_verbose":"Full per-action detail","context.unknown_arg":"Unknown argument '{arg}'.","context.sub_system":"System-prompt share","context.sub_reserve":"Response-reserve share","model.not_in_list":"Note: '{name}' is not in the known model list","model.sub_list":"List models of the active provider","model.sub_use":"Switch model","provider.sub_list":"List configured providers","provider.sub_use":"Switch active provider","provider.sub_add":"Add a provider","map.sub_summary":"Show the project map summary","map.sub_refresh":"Rebuild the project index","map.sub_find":"Search the project map","lsp.sub_status":"Show LSP server status","lsp.sub_restart":"Reset disabled servers","lsp.sub_check":"Run an LSP check on a path","lsp.sub_doctor":"Diagnose LSP servers","skill.sub_list":"List available skills","skill.sub_loaded":"List loaded skills","skill.sub_load":"Load a skill","skill.sub_unload":"Unload a skill","skill.sub_search":"Search skills","export.written":"Exported to {path}","export.redacted":"secrets redacted (--no-redact to disable)","export.raw":"secrets NOT redacted","export.empty":"session has no messages — nothing exported","export.invalid_format":"Unknown format '{format}'. Use md|json|jsonl","export.missing_value":"Missing value for {flag}","export.write_failed":"Failed to write export: {error}","repl.group.general":"General","repl.group.agent":"Agent","repl.group.session":"Sessions","repl.group.skill":"Skills","setup.title":"\n MMA Setup Wizard v2\n","setup.select_provider":"\n Select provider type:","setup.select_provider_num":"\n Select provider (1-{max})","setup.select_language_num":"\n Select language (1-{max})","setup.scanning":" Scanning local LLM servers...","setup.found_servers":" Found {count} server(s):","setup.no_servers":" No local servers found. Enter URL manually.","setup.api_base":" API Base URL","setup.provider_type":" Provider type","setup.api_key":" API Key (press Enter to skip)","setup.fetching_models":" Fetching model list...","setup.available_models":" Available models:","setup.select_model":" Select model (1-{max})","setup.model_name":" Model name","setup.testing":"\n Testing chat with model \"{model}\"...","setup.ok":" OK — connection successful","setup.warning":" WARNING: could not connect — check your API endpoint and key","setup.agent_settings":"\n --- Agent settings ---","setup.context_window":" Context window (tokens)","setup.max_iters":" Max tool iterations","setup.language":"\n --- Language ---","setup.ui_lang":" UI language (en/ru)","setup.complete":"\n Setup complete!\n","setup.select_server":"\n Select server (1-{max})","setup.custom_url":"Custom URL","setup.scanning_spinner":"Scanning local LLM servers…","setup.fetching_spinner":"Fetching model list…","setup.testing_spinner":"Testing chat with \"{model}\"…","setup.security_header":"\n --- Security ---","setup.security_status_off":" Security: OFF (default — all commands allowed)","setup.security_status_on":" Security: ON (balanced policy by default)","setup.security_configure":" Configure security? (y/N)","setup.security_bash_block":" Block dangerous commands (rm, sudo, ssh, etc.)? (y/N)","setup.security_flags_block":" Block dangerous flags (--force, -rf, etc.)? (y/N)","setup.security_paths_restrict":" Restrict access to .git/, .env, node_modules/? (Y/n)","skill.already_loaded":"Skill \"{name}\" is already loaded","skill.not_found":"Skill \"{name}\" not found in any source directory","skill.no_match":"No skills match for: {task}","skill.too_large":"Skill \"{name}\" is too large ({tokens} tokens). Budget: {budget} tokens. Continue the task without this skill.","skill.exceeds_budget":"Skill \"{name}\" ({tokens} tokens) exceeds remaining budget ({remaining} tokens). Unload other skills first.","skill.loaded":"Skill \"{name}\" loaded ({tokens} tokens, {remaining} remaining)","skill.auto_loaded":"[Auto-loaded skill: {name}]","skill.prompt_hint":"Do NOT load skills automatically. Only load a skill when the user explicitly asks for it (e.g. 'use skill X' or 'load the Y skill'). Skills are listed below for reference only — do not guess which skill to use based on the task description.","skill.prompt_fallback":"If load_skill fails because a skill is too large, continue the task without it — do not stop.","skill.loaded_content":"[Skill loaded: {name}]\n{content}\n\nUse this knowledge to answer the user's question.","exec.stuck":"No progress on step {stepId} ({description}) for {iterations} iterations.","exec.stuck_recovery":"Step {stepId} — \"{description}\" — has had no progress for {iterations} iterations. Try a different approach: review what this step needs, check if dependencies are installed, or create files directly via write_file instead of shell commands. After completing the step call plan_step step={stepId} status=done.","exec.tool_errors":"Tool {tool} failed {count} times. Consider using a different tool.","exec.tool_errors_recovery":"Tool {tool} has failed {count} times in a row. Try an alternative: create files directly via write_file, use a different command, or if nothing works — skip this step via plan_step step=N status=skipped with a note explaining why.","exec.repetitive_tool":"Called {tool} {count} times with identical arguments and result. Try a different approach — create files directly, change arguments, or check process status via process_log.","exec.repetitive_process_log_hint":"You are polling a background process — call process_wait once instead of polling process_log.","exec.consecutive_failures_recovery":"{count} consecutive tool failures. Create files directly via write_file instead of terminal commands. Check that dependencies are installed (npm install). Do not run build/tests until all files are created.","exec.bash_flailing_recovery":"bash failed in {fails} of the last {window} attempts. Stop using shell commands for file operations on this machine — they do not work. Use the dedicated tools instead: read_file (the header shows line counts), write_file, edit_file, file_info (file size), glob/grep for search","exec.bash_flailing":"bash failed in {fails} of the last {window} attempts.","exec.consecutive_failures":"{count} consecutive tool failures.","exec.honest_stop":"STOP retrying. {count} consecutive tool batches failed or were blocked with no successful call in between — more variants of the same action will not help. Do NOT try another command, flag, or workaround for this. Write your final text answer NOW: state plainly what was done, what could NOT be done or verified, and why. Do NOT paste output you did not actually receive from a tool.","exec.readonly_directive":"You have only been reading, searching, and fetching for {count} steps with no result committed. Stop exploring now: either WRITE your final answer using what you already have, or make the concrete change the task needs. Do not fetch or search the same source again.","exec.read_only_loop":"No write/exec for {count} tool calls — the agent is only reading/exploring.","exec.read_only_loop_recovery":"{count} consecutive read-only tool calls (read_file/glob/grep/browser) with no writes. STOP exploring and make the edit the task requires: read the file, then call write_file or edit_file. If you cannot finish the task, ask the user instead of re-reading the same files.","exec.plan_warning":"Current plan step {step} is \"{description}\", but {tool} is being called for files outside this step. Complete the current step first, then call plan_step step={step} status=done before moving to the next step.","exec.plan_blocked":"{max} consecutive calls outside the current step. Finish step {step} before proceeding — other steps should wait until this one is complete.","exec.off_track":"Step {stepId} — \"{description}\" — but you are using {tool} on a different path. Return to the current step.","exec.step_gate_deps":"[⚠ Step {step} \"{description}\": dependencies are not installed. First run the install command (npm install, pip install, etc.). Verify the lock file or dependency directory exists. If this step is NOT actually needed (no external dependencies), skip it: plan_step step={step} status=skipped note=\"deps not needed\".]","exec.step_gate_deps_force":"[⚠ Step {step}: dependencies still not installed (no lock file) — 2nd warning. If this step is NOT needed, IMMEDIATELY call: plan_step step={step} status=skipped note=\"deps not needed\". If it IS needed, run the install command right now. Do NOT make other tool calls before updating the plan.]","exec.step_gate_empty":"[⚠ Step {step}: files exist but appear empty: {files}. Add real code to these files before advancing to the next step.]","exec.step_gate_ok":"[✓] Step {step} completed and verified. MOVING to step {nextStep}: \"{nextDesc}\". Work ONLY on this step.","exec.step_gate_last":"[✓] Step {step} completed — that was the final step. Verify everything together and provide the final answer.]","exec.step_gate_manual":"[⚠ Step {step}: its deliverables look present, but auto-advance is off. If the step is truly done, mark it yourself: plan_step step={step} status=done. If not, continue working on it.]","exec.audit_pass":"[✓] Task complete: {done}/{total} steps done, {files} files verified","exec.audit_pending":"[✗] Task incomplete: {done}/{total} steps done — remaining steps are not marked done","exec.audit_fail":"[✗] Task incomplete: {done}/{total} steps done, {files} files missing","exec.audit_leftovers":"[✗] Task incomplete: {done}/{total} steps done, {files} files from delete-steps still exist","exec.audit_fail_tests":"[✗] Task incomplete: {done}/{total} steps done, tests FAILING: {failed} failed / {passed} passed — {detail}","exec.audit_fail_typecheck":"[✗] Task incomplete: {done}/{total} steps done, {missing} files missing, typecheck error: {typeError}","exec.audit_incomplete":"❗ Final audit incomplete: {summary}. Task is NOT finished. Remaining steps: {steps}. Resolve them - pick ONE path: (a) if the step's deliverable already exists on disk, mark it done (plan_step step=N status=done); (b) if the step is no longer needed, mark it skipped; (c) if the plan drifted from reality (wrong file names, changed approach), re-plan to align it. Do NOT retry plan_step repeatedly without changing anything.","exec.mass_edit_warning":"⚠️ Plan affects {count} files — review the full list before proceeding.","exec.escalation":"\n\n⚠️ Agent stuck on step {stepId} ({description}). Escalating to user — please provide guidance.","exec.escalation_directive":"You have been stuck for several attempts. Stop repeating the same action and pick ONE of these: (1) switch to a fundamentally different approach, (2) search the exact error text with web_search (or the error-search tool), (3) ask the user a short clarifying question, or (4) if the step cannot be completed, use plan_step step=<n> status=skipped with a note (or re-plan). Explain your choice briefly.","exec.test_churn_nudge":"You have edited the test/spec file \"{file}\" several times in a row without changing any production code. If the tests fail, fix the PRODUCTION code under test (not the test) unless the test itself is genuinely wrong — and if so, explain why. If you intended test-first, now write the implementation.","exec.script_workaround_nudge":"A security restriction already blocked one of your commands. Writing a shell script (.bat/.cmd/.sh/.ps1) to run it another way does NOT lift the restriction and usually just fails. Instead: use write_file for file output, run one plain command per call, pass \"workdir\" instead of \"cd\", or ask the user.","exec.hints":"\n[Hints]\n{hints}","exec.file_rewrite_warning":"⚠️ File {file} has been rewritten {count} times. Consider a different approach — the current fix strategy is not working.","exec.forbidden_cmd":"STOP using \"{cmd}\" via the bash tool — it is not a native Windows cmd.exe command and has failed repeatedly this session. Use the dedicated tool instead: grep → the grep tool, ls/dir → list_dir, find → glob, rm → delete_file, sed → edit_file, touch → write_file, which → `where`, cp/mv → move_file, diff → read_file. Do NOT call bash for this purpose again.","exec.error_search_results":"The error \"{sig}\" has occurred {count} times. Web search found:\n{results}\nApply a matching solution from these results. If none is relevant — do NOT repeat the same approach; change strategy or honestly report being stuck.","exec.error_search_failed":"Web search returned nothing for \"{query}\".","exec.error_search_no_query":"Error output is not meaningful — skipping the web search.","exec.npm_exec_hint":"\"could not determine executable to run\" — no \"bin\" for that package/script. Use \"npm run <script>\" (script must exist in package.json) or \"bunx <pkg>\" for a package that declares a bin.","exec.interactive_hint":"the command needed interactive input but the shell has no TTY (prompt aborted). Re-run it non-interactively — pass every required flag/argument (e.g. `bun create vite <name> --template react-ts` instead of a bare interactive scaffold).","exec.hidden_tool_hint":"\"{tool}\" is not a shell command — it is an MMA tool that is currently hidden. Call the enable_tools tool with tags [\"shell\"] to unlock it; it becomes available on the next iteration.","exec.tool_as_command_hint":"\"{tool}\" is an MMA tool, not a shell command. Call it as a tool (function call), not through bash.","exec.task_reminder":"Task: {task}. Continue making progress — do not repeat failed actions.","hall.max_retries_exhausted":"Model returned empty or insufficient responses after multiple retries","hall.short_response":"Response too short or empty","hall.repetitive":"Response too repetitive ({pct}% overlap)","hall.uncertainty":"Uncertainty markers: {markers}","hall.unknown_paths":"Mentioned file paths not found in known files: {paths}","hall.contradiction_llm":"Contradicts an earlier decision{reason}","hall.claim_contradiction":"The answer claims success, but a recent tool result indicates a problem ({tool}: {snippet}). Either verify and fix, then re-run the check — or soften the claim to match the evidence (e.g. staged, will appear shortly).","hall.claim_artifact":"The answer presents {path} as done, but on disk: {detail}. Either fix the file and re-verify by actually reading it — or soften the claim to what was really checked.","hall.claim_output_unverified":"The answer shows output as if produced by a run ({detail}). Either execute it with an allowed tool and quote the real output — or label it clearly as expected/example output.","hall.claim_web_unverified":"The answer states figures ({detail}) that do not appear in any page actually fetched. Either find and quote a source, or mark those values as unverified/approximate and say the pages could not be read.","hall.claim_file_not_created":"You stated a file was saved ({detail}), but no file was written this turn. Actually create it with write_file (the user asked for a file), or correct the statement and deliver the content.","hall.uncertainty_prefix":"\n\n[⚠️ Uncertainty] ","browser.repeated_action":"You have repeated the same action ({action}) {threshold} times. Try a different approach: use \"snapshot\" to re-read the page, try different element numbers, or navigate to a different URL.","browser.unknown_action":"Unknown action: {action}","browser.error":"Browser error: {message}","browser.no_page":"No page open. Use action \"open\" first.","browser.url_required":"URL is required","browser.create_page_failed":"Failed to create page","browser.nav_failed":"Navigation failed: {message}","browser.invalid_target":"Invalid target. Provide element number from snapshot.","browser.click_failed":"Click failed: {message}. Check element number.","browser.invalid_target_short":"Invalid target.","browser.text_required":"Text is required.","browser.type_failed":"Type failed: {message}","browser.direction_invalid":"Direction must be: up, down, top, bottom","browser.scroll_failed":"Scroll failed: {message}","browser.closed":"Browser closed.","browser.no_page_short":"No page","browser.no_elements":"(no interactive elements on page)","browser.more_elements":"... and more elements not shown. Use scroll or search to find others.","browser.content_header":"Content:","browser.console_header":"Console:","browser.network_errors_header":"Network errors:","browser.truncated":"... (truncated)","pipeline.invalid":"Invalid pipeline: name and steps required","pipeline.step_missing_fields":"Step missing required fields (id, agent, prompt): {step}","pipeline.circular":"Circular dependency: {stepId}","plugin.loaded":"Loaded plugin: {name}","plugin.skipped":"Skipped incompatible plugin: {entry} ({message})","plugin.incompatible":"Skipped plugin {name}: requires MMA v{min}, current is v{current}","plugin.dedup_older":"Plugin {name} v{version} skipped: a newer version is already loaded","migration.detected":"[MMA] Detected old config. {summary}","migration.summary":"[MMA] {summary}","migration.config_bak":"- config → config.json.bak","migration.dir_bak":"- .mma/ → .mma.bak/ ({count} files)","migration.migrated":"Migrated:","migration.not_needed":"No migration needed","ui.error_prefix":"✗ ","ui.success_prefix":"✓ ","ui.warning_prefix":"⚠ ","ui.thinking":"Thinking…","ui.thinking_label":"thinking","ui.thinking_label_1":"thinking","ui.thinking_label_2":"working it out","ui.thinking_label_3":"considering","ui.action_fallback":"Action","ui.actions_summary":"{count} actions","ui.plan_update":"step {step} → {status}","ui.todo_action":"{action} · {count}","ui.tool_running":"{tool}…","ui.step_context":"step {id}: {desc}","ui.draft_retracted":"↳ draft rejected by verification, refining…","indexer.map_header":"Project map","indexer.top_directories":"Top directories","indexer.files":"Files","indexer.empty":"No indexed files","indexer.and_more":"... and {count} more files","indexer.project_map_desc":"Get a map of the project: summary of files, languages, and exports. Use action 'find' to search files by path or exported name, 'symbol' to locate a symbol definition, 'outline' for a file's symbol table of contents, 'refresh' to rebuild the index.","indexer.project_map_action_desc":"Action: summary, refresh, find, symbol, or outline","indexer.project_map_query_desc":"Search query: matches file path/exported names (find), a symbol name (symbol), or a file path (outline)","indexer.summary":"Project map: {summary}","indexer.refreshed":"Project map refreshed: {summary}","indexer.not_indexed":"Project has not been indexed yet","indexer.find_results":"Found {count} matching files:\n{results}","indexer.find_more":"... and {count} more matches","indexer.symbol_results":"Found {count} symbol definitions:\n{results}","indexer.outline_empty":"(no symbols extracted)","indexer.no_matches":"No matching files for \"{query}\"","indexer.truncated":"[!] Index truncated at {max} files (raise indexer.maxFiles to cover the whole tree)","indexer.duplicates":"Duplicate basenames (verify which file is the real source): {names}","indexer.stack_deps":"deps","indexer.stack_dev":"dev","indexer.stack_scripts":"scripts","tool.friendly.project_map":"Project map","config.decryption_warning":"Warning: Failed to decrypt config: {error}","config.encryption_warning":"Warning: Failed to encrypt config: {error}","config.migrate_start":"Migrating config to domain format...","config.migrate_done":"Migration complete. Created {count} domain files. Legacy saved as config.json.bak.","config.migrate_no_legacy":"No legacy config.json found. Already using domain format.","config.migrate_error":"Migration failed: {error}","config.legacy_hint":"Config: using legacy config.json. Run \"mma config migrate\" to switch to domain format.","config.parse_failed":"Warning: failed to parse {path} — falling back to defaults. Fix or delete the file to restore your settings.","image.source_required":"Image source is required. Provide a file path, URL, or \"clipboard\".","image.clipboard_empty":"Clipboard does not contain an image. Copy an image first (e.g. screenshot with Win+Shift+S).","image.not_found":"Image file not found: {path}","image.no_context":"No context manager available. Image can only be attached during an active session.","image.attached":"Image attached from {source} ({size}). It will be included in the next message.","image.error":"Failed to load image: {message}","tool.friendly.attach_image":"Attach image","repl.image":"Attach image","repl.image_usage":"/image <path|url|clipboard> — attach an image to the next message","tool.friendly.remember":"Remember","tool.friendly.recall":"Recall","tool.remember.preference":"Remembered: {key} = {value}","tool.remember.entry":"Remembered: {category} — \"{entry}\"","tool.remember.key_required":"Key is required for preferences","tool.remember.entry_required":"Entry text is required","tool.recall.empty":"Nothing found for \"{query}\"","tool.recall.no_memory":"Memory is empty","tool.recall.search_results":"{category} results:\n{results}","ctx.compactions":"compactions: {count}","ctx.quality":"quality: {percent}%","ctx.delta_pos":"ctx +{tokens}","ctx.delta_neg":"ctx -{tokens} ","ctx.delta_zero":"ctx +0","updater.check_error":"[updater] update check failed: {error}","updater.available":"[updater] Update available: {current} → {latest}. Run `npm install -g micro-models-agent` to upgrade.","updater.installing":"[updater] Installing {latest} globally (current: {current})…","updater.installed":"[updater] Installed {latest}. Restart MMA to use it (was {current}).\n{changelog}","updater.install_failed":"[updater] Failed to install {latest}: {error}. Update manually with `npm install -g micro-models-agent`.","cli.changelog_title":"Changelog (micro-models-agent@{version}):","cli.changelog_not_found":"Changelog not found for this installation.","cli.changelog_range":"Changes since {from}:","tools.enable_no_tags":"enable_tools requires at least one tag in the \"tags\" array.","tools.enable_no_executor":"Tool executor is not available — cannot enumerate enabled tools.","tools.enable_already_active":"Tool tags already active: {tags}.","tools.enable_added":"Enabled tool tags: {tags}. Available tools now: {tools}","tools.hidden_header":"Additional tools (enable on demand via enable_tools or route to subagent tool_tags):","tool.friendly.enable_tools":"Enable tools","tool.friendly.set_thinking":"Set reasoning level","tool.thinking_set":"Reasoning level: {level} ({reason})","tool.thinking_set_clamped":"Reasoning level: {level} (clamped from request, {reason})","tool.thinking_cooldown":"Reasoning override deferred ({remaining} iterations until available). Current: {current}","tool.thinking_invalid_level":"Invalid reasoning level: {level}. Use: none, low, high, max","reasoning.probe_failed":"Reasoning effort mechanism not supported by this backend. Dynamic control disabled.","reasoning.mode_set":"Reasoning mode: {mode}","reasoning.current":"Reasoning: {level} ({mode})","reasoning.invalid_mode":"Invalid reasoning mode: {mode}. Use: auto, default, none, low, medium, high, max","cli.provider_base_hint":"Base URL set to: {baseUrl}","cli.add_provider":"Add a provider to the config","cli.provider_no_url":"No base URL for provider \"{name}\". Pass --url.","cli.provider_name_conflict":"Provider \"{name}\" already exists — choose another name.","cli.provider_added":"Provider added: {name}","cli.provider_switch_hint":"Switch to it with: mma provider use <name>","repl.cost":"Total cost: {cost}","repl.cost_breakdown":"By provider: {breakdown}","repl.tokens":"Tokens used: {tokens}","repl.cache":"Cache: {hit}% hit · saved {saved}","repl.cache_nosave":"Cache: {hit}% hit","repl.prefix":"Prefix stable: {stable}% · broke: {cause}","cache.cause.system":"system prompt","cache.cause.tools":"tool set","cache.cause.history":"history","cache.cause.volatile":"volatile content","cache.cause.unknown":"unknown","cli.session_usage":"API usage: {prompt} prompt + {completion} completion = {total} tokens","cli.session_cache":"Cache: {hit}% hit ({cached} cached / {uncached} uncached)","cli.usage":"Show provider balance/usage (OpenRouter)","cli.usage_unsupported":"Provider \"{provider}\" does not expose an API balance. Only OpenRouter does; OpenCode Zen/Go show it in the web dashboard.","cli.usage_no_key":"No API key configured for the active provider.","cli.usage_error":"Failed to fetch balance: {error}","cli.usage_key_usage":"Key usage: {usage}","cli.usage_key_limit":"Key limit: {limit} · remaining {remaining}","cli.usage_balance":"Balance: {balance}","cli.usage_account":"Account: {credits} purchased · {used} used","cli.usage_empty":"No balance information returned.","repl.ctrl_c_interrupt":"\n[Ctrl+C] Stopping agent... (press again to force)","repl.force_exit":"\nForcing exit — background cleanup may be incomplete.","exec.stop_directive":"STOP. Step {stepId} (\"{description}\") took {iterations} iterations with no progress. DO NOT continue this step. Immediately call: plan_step step={stepId} status=done (if code works despite warnings) OR plan_step step={stepId} status=skipped note=\"reason\". Do NOT make any other tool calls before updating the plan.","exec.test_runner_fail":"[test-runner] {framework}: {failed} test(s) FAILING, {passed} passing — do NOT mark verification steps as done while tests fail. Investigate the failures, fix the code, then re-run the tests.","exec.test_runner_pass":"[test-runner] {framework}: all {passed} test(s) passing.","plan.subtasks_done":"All sub-tasks done — call plan_step step={stepId} status=done to complete this step.","plan.no_subtasks":"(no sub-tasks)","plan.step_label":"Step {stepId}: {description}","exec.hint_deps":"Check if a lock file exists (package-lock.json, poetry.lock). If missing, run the install command first.","exec.hint_test":"Make sure the source files exist and have real code before running tests.","exec.hint_build":"Check that all dependencies are installed and source files are not empty.","exec.hint_deploy":"Verify credentials and network access before deploying.","exec.hint_repetitive":"You are calling the same tool repeatedly with the same arguments. Try a different approach.","exec.hint_consecutive":"Multiple different tools are failing. Check if the environment is set up correctly.","exec.hint_read_only":"You have made many read-only tool calls (read_file/glob/grep/browser) without writing anything. Stop exploring — make the edit/write the task needs, or use the plan tool to decide next steps.","moe.replan_started":"🔄 Re-plan {cycle}/{max}: executing updated plan...","moe.executing":"⚙️ Executing {count} subtasks (cycle {cycle})...","moe.execution_complete":"Execution complete: {succeeded}/{total} succeeded","moe.cycles_exhausted":"Max re-plan cycles ({max}) reached — returning partial results","moe.partial_result":"Partial result","moe.planning":"🤖 Planning with MoE mode...\n","moe.plan_fallback":"⚠️ Plan validation failed. Falling back to single-agent mode.\n","moe.plan_autofixed":"🔧 Auto-fixed {count} plan issues.\n","moe.plan_failed":"MoE plan failed: {error} — falling back to single-agent","moe.no_orchestrator":"MoE enabled but no orchestrator model configured — falling back to single-agent. Set orchestrator.model to activate MoE.","moe.scope_approved":"🔓 Scope expanded for \"{subtask}\": {files}","moe.scope_rejected":"⛔ Scope request rejected for \"{subtask}\"","prompt.overflow.compressing":"System prompt overflow: compressing {count} block(s) before the first run — this may take a while on a local model.","prompt.overflow.summarizing":"System prompt overflow: summarizing \"{label}\" ({original} tok → {budget} tok budget) with the model…","prompt.overflow.truncating":"System prompt overflow: truncating \"{label}\" ({original} tok) — summarization unavailable.","prompt.overflow.summarize_failed":"System prompt overflow: summarization failed for \"{label}\": {error} — falling back to truncation.","prompt.overflow.hint_needed":"the prompt needs ~{needed} system tokens (current budget: {window} × {fraction} = {budget})","prompt.overflow.hint_window":"raise contextWindow to at least {required} (standard size {recommended}) — {how}","prompt.overflow.hint_fraction":"or keep the window and raise contextBudget.systemPrompt to ~{fraction} (run: mma context --system {fraction})","prompt.overflow.exceeded":"Prompt overflow: the system prompt needs ~{needed} tok (budget {budget} tok); \"{label}\" ({original} tok) was {mode} to {resolved} tok. To fit everything fully, {hint}.","prompt.overflow.failed":"Prompt overflow resolution failed: {error} — oversized blocks will be dropped.","prompt.overflow.startup":"Startup check: the system prompt needs ~{needed} tok (budget: {budget} tok); {block} ({original} tok) will be summarized/truncated before the first run. To include everything fully, {hint}.","tool.session_info.no_active":"No active session","tool.session_info.result":"Session: \"{name}\" ({id})\nModel: {model}\nProvider: {provider}\nContext window: {contextWindow} tokens\nMessages: {messages}\nCreated: {createdAt}\nUpdated: {updatedAt}","tool.session_info.context":"Context used: {used} / {budget} tokens ({percent}%)","tool.friendly.session_info":"Session info","cli.map.description":"Work with the project index / map","cli.map.action":"Action: summary (default), refresh, find","cli.map.query":"Search query for the find action","repl.map":"Show the project map / index (summary, refresh, find)","repl.map_usage":"Usage: /map [summary|refresh|find <query>]","map.refreshed":"Project map refreshed","map.find_usage":"Usage: map find <query>","web.topbar.new_chat":"new chat","web.topbar.settings":"settings","web.topbar.all_sessions":"all sessions","web.topbar.sidebar":"sidebar","web.topbar.close":"close","web.sessbar.prev":"previous session","web.sessbar.next":"next session","web.conn.reconnecting":"reconnecting…","web.i18n.stale":"translations updated — restart the server","web.i18n.reload":"reload page","web.sidebar.plan":"plan","web.sidebar.session":"session","web.sidebar.usage":"usage","web.sidebar.env":"environment","web.sidebar.tab_session":"Session","web.sidebar.tab_map":"Map","web.sidebar.tab_trace":"Trace","web.sidebar.tab_lsp":"LSP","web.sidebar.tab_files":"Files","web.sidebar.lsp_what":"LSP — editor-grade diagnostics","web.sidebar.lsp_status":"status","web.sidebar.lsp_enabled":"enabled","web.sidebar.lsp_offline":"offline","web.sidebar.lsp_check":"Run check","web.sidebar.lsp_checking":"checking…","web.sidebar.lsp_not_checked":"not checked yet","web.sidebar.lsp_none":"no configured servers","web.sidebar.lsp_unavailable":"LSP unavailable","web.sidebar.lsp_via":"via","web.sidebar.lsp_via_global":"global binary","web.sidebar.lsp_via_npx":"npx","web.sidebar.lsp_reason_ok":"ok","web.sidebar.lsp_reason_disabled":"disabled","web.sidebar.lsp_reason_not_applicable":"no matching files","web.sidebar.lsp_reason_binary_missing":"binary not found","web.sidebar.lsp_reason_offline":"offline — install the binary","web.sidebar.lsp_reason_network":"network — server download failed","web.sidebar.lsp_reason_timeout":"timeout (initialize)","web.sidebar.lsp_reason_spawn_failed":"spawn failed","web.sidebar.lsp_reason_server_error":"server error","web.sidebar.lsp_reason_deadline":"skipped (deadline)","web.sidebar.lsp_info":"Info and setup","web.sidebar.lsp_switch_enabled":"LSP enabled","web.sidebar.lsp_switch_offline":"Offline (global binaries only)","web.sidebar.lsp_offline_hint":"Offline mode skips npx entirely — install the servers below globally.","web.sidebar.lsp_install_title":"Manual install","web.sidebar.lsp_copy":"copy","web.sidebar.lsp_copied":"copied","web.sidebar.lsp_busy":"wait for the current turn to finish","web.sidebar.map_status":"status","web.sidebar.map_ready":"ready","web.sidebar.map_indexing":"indexing…","web.sidebar.map_stale":"stale","web.sidebar.map_updated":"updated","web.sidebar.map_never":"never","web.sidebar.map_today":"today, {time}","web.sidebar.map_watcher":"watcher","web.sidebar.map_on":"on","web.sidebar.map_off":"off","web.sidebar.map_files":"files","web.sidebar.map_symbols":"symbols","web.sidebar.map_tokens":"tokens","web.sidebar.map_root":"root","web.sidebar.map_languages":"languages","web.sidebar.map_reindex":"Re-index","web.sidebar.map_reindexing":"re-indexing…","web.sidebar.map_reindex_failed":"re-index failed","web.sidebar.trace_empty":"no events yet","web.sidebar.trace_turn":"turn {n}","web.sidebar.trace_text":"composing… {count} chars","web.sidebar.trace_plan":"plan update","web.sidebar.trace_question":"question","web.sidebar.trace_status":"status","web.sidebar.trace_log":"log · {level}","web.sidebar.trace_retract":"draft retracted","web.sidebar.trace_index":"index · {phase}","web.sidebar.trace_critic":"critic · {status}","web.sidebar.trace_moe":"moe","web.sidebar.trace_compaction":"compaction","web.sidebar.trace_probe":"context probe","web.sidebar.trace_usage":"llm usage","web.sidebar.trace_audit":"audit","web.sidebar.trace_claim":"claim retry · {kind}","web.sidebar.trace_output":"output","web.sidebar.detail_metadata":"metadata","web.sidebar.detail_arguments":"arguments","web.sidebar.detail_output":"output","web.sidebar.detail_error":"error","web.sidebar.detail_text":"text","web.sidebar.detail_plan":"plan","web.sidebar.detail_reasoning":"reasoning","web.sidebar.detail_status":"status","web.sidebar.detail_ok":"ok","web.sidebar.detail_fail":"failed","web.sidebar.detail_duration":"duration","web.sidebar.detail_time":"time","web.sidebar.detail_tool_call":"tool call","web.sidebar.detail_session":"session","web.sidebar.detail_turn":"turn","web.sidebar.detail_iteration":"iteration","web.sidebar.detail_provenance":"session-log provenance","web.sidebar.detail_provenance_count":"{n} assistant messages in log","web.env.dir":"dir","web.env.agents":"AGENTS.md","web.env.map":"map","web.env.agents_disabled":"disabled","web.env.agents_none":"not found","web.env.map_not_indexed":"not indexed","web.env.files_one":"{count} file","web.env.files_few":"{count} files","web.env.files_many":"{count} files","web.env.symbols_one":"{count} symbol","web.env.symbols_few":"{count} symbols","web.env.symbols_many":"{count} symbols","web.env.tokens_one":"~{count} token","web.env.tokens_few":"~{count} tokens","web.env.tokens_many":"~{count} tokens","web.usage.session":"session","web.usage.copy_id":"copy session id","web.usage.model":"model","web.usage.context":"context","web.usage.cache":"cache","web.usage.cost":"cost","web.usage.compactions":"compactions","web.usage.part_system":"instructions","web.usage.part_tools":"tools","web.usage.part_history":"dialogue","web.usage.part_reserve":"response reserve","web.usage.part_free":"free","web.usage.quality":"quality","web.usage.probe":"probe","web.usage.probe_loaded":"{actual} loaded","web.usage.probe_low":"{actual} loaded · configured {configured}","web.start.label":"start:","web.start.session":"session","web.turn.tools":"{count} tools","web.question.custom":"own answer…","web.question.custom_send":"send","config.key.model":"model","config.key.provider.active":"active provider","config.key.contextWindow":"context window","config.key.contextBudget.systemPrompt":"system prompt share","config.key.contextBudget.responseReserve":"response reserve share","config.key.showReasoning":"show reasoning","config.key.reasoning.mode":"reasoning mode","config.key.ui.verbosity":"verbosity","config.key.maxToolIterations":"max tool iterations","config.key.stuckThreshold":"stuck threshold","config.key.moe.enabled":"MoE","config.key.moe.maxReplanCycles":"MoE re-plan cycles","config.key.critic.enabled":"verifier (critic)","config.key.critic.model":"verifier model","config.key.critic.provider":"verifier provider","config.key.critic.tools":"verifier checks","config.key.critic.maxCalls":"verifier max calls","config.key.critic.maxRepairCycles":"verifier repair cycles","config.key.critic.timeoutMs":"verifier timeout (ms)","config.key.logLevel":"log level","config.key.locale":"language","config.key.version":"version","config.key.security.enabled":"security","config.key.security.paths.enabled":"restrict file paths","config.key.security.contentScan.enabled":"scan file content","config.key.security.sessionEncryption.enabled":"encrypt session files","config.enum.silent":"silent","config.enum.error":"error","config.enum.warn":"warning","config.enum.info":"info","config.enum.debug":"debug","config.enum.quiet":"quiet","config.enum.normal":"normal","config.enum.verbose":"verbose","config.enum.auto":"auto","config.enum.rg":"ripgrep","config.enum.grep":"grep","config.enum.js":"built-in JS","config.enum.default":"default","config.enum.off":"off","config.enum.ledger":"tool ledger","config.enum.line":"line","config.enum.meta":"hints row","config.enum.full":"full width","config.enum.compact":"compact","config.enum.legacy":"legacy","config.enum.v2":"v2","config.enum.comfortable":"comfortable","config.enum.large":"large","config.enum.none":"none","config.enum.low":"low","config.enum.medium":"medium","config.enum.high":"high","config.enum.max":"max","config.enum.en":"English","config.enum.ru":"Russian","config.enum.security_block":"security block","config.enum.bash_command":"bash command","config.enum.file_operation":"file operation","config.enum.network_request":"network request","config.enum.tool_call":"tool call","config.enum.authentication":"authentication","config.enum.configuration_change":"config change","config.enum.session_start":"session start","config.enum.session_end":"session end","config.desc.model":"Model used for the main agent.","config.desc.provider.active":"Which configured provider is used.","config.desc.contextWindow":"Total context size in tokens (system prompt + history + reserve).","config.desc.contextBudget.systemPrompt":"Share of the context reserved for the system prompt (e.g. 10%).","config.desc.contextBudget.responseReserve":"Share of the context reserved for the model's response.","config.desc.showReasoning":"Show the model's reasoning in the chat.","config.desc.reasoning.mode":"When to request/emit reasoning (auto follows the model).","config.desc.ui.verbosity":"How much detail the chat shows for actions and tools.","config.desc.maxToolIterations":"Hard cap on tool-call iterations per turn.","config.desc.stuckThreshold":"Repeated identical actions before the agent is nudged to change approach.","config.desc.moe.enabled":"Agent-level MoE: plan → parallel experts → verify (uses the orchestrator provider).","config.desc.moe.maxReplanCycles":"Max plan→execute→verify cycles before a partial result is accepted.","config.desc.critic.enabled":"In-loop verifier that reviews work on mutations and before finishing.","config.desc.critic.model":"Dedicated verifier model (empty = active model).","config.desc.critic.provider":"Dedicated verifier provider config (empty = active provider).","config.desc.critic.tools":"Let the verifier run bounded read-only file checks before the final verdict.","config.desc.critic.maxCalls":"Hard cap on verifier LLM calls per run.","config.desc.critic.maxRepairCycles":"Bounded repair cycles triggered by a critical verdict.","config.desc.critic.timeoutMs":"Verifier call timeout (fail-open).","config.desc.logLevel":"Diagnostic log verbosity.","config.desc.locale":"Language of the interface and agent messages.","config.desc.version":"Installed MMA version.","config.desc.security.enabled":"Master switch for the security module (path checks, content scans, limits).","config.desc.security.paths.enabled":"Restrict file operations to the workspace and block paths outside it.","config.desc.security.contentScan.enabled":"Scan file contents for dangerous patterns before writing.","config.desc.security.sessionEncryption.enabled":"Encrypt saved session logs on disk.","config.desc.webToken":"Token required for non-localhost access to this web UI (set via --token / MMA_WEBUI_TOKEN).","web.settings.title":"settings","web.settings.general":"General","web.settings.model":"Model & Provider","web.settings.context":"Context","web.settings.reasoning":"Reasoning","web.settings.agent":"Agent","web.settings.network":"Network","web.settings.browser":"Browser","web.settings.sessions":"Sessions","web.settings.ui":"UI & Theme","web.settings.memory":"Memory","web.settings.skills":"Skills","web.settings.plugins":"Plugins · MCP","web.settings.security":"Security","web.settings.advanced":"Advanced","web.settings.search_placeholder":"search settings","web.settings.search_empty":"no matching setting","web.settings.table_invalid":"fill the required fields first ({field})","web.settings.sec.general.interface":"Interface","web.settings.sec.general.agent":"Agent loop","web.settings.sec.general.agent.desc":"How long and how persistently the agent works before it stops.","web.settings.sec.general.provider":"Providers","web.settings.sec.model.tuning":"Performance","web.settings.sec.model.tuning.desc":"Token budget and how the model is loaded into memory.","web.settings.sec.model.capabilities":"Capabilities","web.settings.sec.model.capabilities.desc":"Manual overrides for vision/tools when probing a model gets it wrong.","web.settings.sec.context.window":"Context window","web.settings.sec.context.window.desc":"Total window and how it is split between the system prompt, the reply and history.","web.settings.sec.context.compaction":"Compaction","web.settings.sec.context.compaction.desc":"When old history is summarised to free space.","web.settings.sec.context.instructions":"Instructions","web.settings.sec.context.instructions.desc":"What happens when AGENTS.md or the project map is too large for the prompt.","web.settings.sec.context.indexer":"Project index","web.settings.sec.context.indexer.desc":"How the project map is built: file cap and whether .gitignore is respected.","web.settings.sec.context.log":"Context log","web.settings.sec.context.log.desc":"Write every prompt sent to the model to a diff file next to the session.","web.settings.sec.reasoning.display":"Display","web.settings.sec.reasoning.effort":"Effort","web.settings.sec.reasoning.effort.desc":"Stop overrides the range — auto picks a level per step inside it.","web.settings.sec.agent.moe":"Mixture of experts","web.settings.sec.agent.moe.desc":"Split work into expert subtasks with a planner; slower but stronger on multi-step tasks.","web.settings.sec.agent.critic":"Critic","web.settings.sec.agent.critic.desc":"A second pass that reviews the agent's own work before it answers.","web.settings.sec.agent.tools":"Tools & skills","web.settings.sec.agent.tools.desc":"Which tools are visible up front and how much of the prompt skills may use.","web.settings.sec.agent.subagent":"Sub-agents","web.settings.sec.agent.subagent.desc":"How results from sub-agents come back and how they are parallelised.","web.settings.sec.agent.hallucination":"Hallucination check","web.settings.sec.agent.hallucination.desc":"Run a consistency pass on the reply before showing it.","web.settings.sec.network.web":"Web search","web.settings.sec.network.web.desc":"Master switch for the web_search tool.","web.settings.sec.network.error":"Automatic error search","web.settings.sec.network.error.desc":"Search the web when the same error repeats.","web.settings.sec.browser.main":"Browser","web.settings.sec.browser.limits":"Limits","web.settings.sec.browser.limits.desc":"Caps that keep a page snapshot small enough for the context window.","web.settings.sec.browser.viewport":"Viewport & timeouts","web.settings.sec.sessions.main":"Sessions","web.settings.sec.sessions.main.desc":"Saving, naming and how many past sessions are kept.","web.settings.sec.sessions.isolation":"Isolation","web.settings.sec.sessions.isolation.desc":"Keep plugins and temp files separate per session.","web.settings.sec.ui.chat":"Chat output","web.settings.sec.ui.chat.desc":"Status lines, progress and context meters in the chat feed.","web.settings.sec.ui.theme":"Theme","web.settings.sec.ui.theme.desc":"Colour scheme of this web UI. Stored in the browser, not in the config file.","web.settings.sec.memory.add":"Add a note","web.settings.memory_add_title":"new memory","config.field.name":"name","config.field.model":"model","config.field.tool_tags":"tool tags","config.field.max_attempts":"attempts","config.field.description":"description","config.field.input":"input $/1M","config.field.output":"output $/1M","config.field.cachedInput":"cached $/1M","config.field.cacheWrite":"write $/1M","config.field.vision":"vision","config.field.tools":"tools","web.settings.sec.security.switches":"Switches","web.settings.sec.security.switches.desc":"Master switches per protection. Turning one off disables its whole group below.","web.settings.sec.security.limits":"Limits","web.settings.sec.security.limits.desc":"Depth, volume and rate caps for tool activity.","web.settings.sec.security.bash":"Bash rules","web.settings.sec.security.bash.desc":"Commands, flags and operators the bash tool refuses.","web.settings.sec.security.paths":"Path rules","web.settings.sec.security.paths.desc":"Glob patterns for paths that are denied or, if set, exclusively allowed.","web.settings.sec.security.network":"Network rules","web.settings.sec.security.network.desc":"Domains blocked or, if set, exclusively allowed.","web.settings.sec.security.scan":"Content scan","web.settings.sec.security.scan.desc":"Patterns searched in file contents before writing.","web.settings.sec.security.audit":"Audit log","web.settings.sec.security.audit.desc":"Send security events to a file or a webhook.","web.settings.sec.security.encryption":"Session encryption","web.settings.sec.security.encryption.desc":"Encrypt saved chat history and session log on disk.","web.settings.sec.security.access":"Access","web.settings.sec.advanced.diagnostics":"Diagnostics","web.settings.sec.advanced.diagnostics.desc":"Log verbosity and the installed version.","web.settings.sec.advanced.retry":"Retry","web.settings.sec.advanced.retry.desc":"Backoff for failed or stalled provider requests.","web.settings.sec.advanced.service":"Service","web.settings.sec.advanced.service.desc":"Cost tracking, prices and the background update check.","web.settings.sec.plugins.lsp":"LSP","web.settings.sec.plugins.lsp.desc":"Editor-grade diagnostics; offline mode runs installed binaries without npx.","web.settings.add":"add","web.settings.forget":"forget","web.settings.search":"search","web.settings.saved":"saved","web.settings.save_failed":"save failed","web.settings.use":"use","web.settings.active":"active","web.settings.active_check":"active ✓","web.settings.search_models":"search models…","web.settings.no_models":"no models reported by provider","web.settings.no_matches":"no matches","web.settings.active_provider":"active provider","web.settings.add_provider":"add provider","web.settings.section_models":"Model","web.settings.section_providers":"Providers","web.settings.provider_add_title":"add provider","web.settings.provider_preset":"preset","web.settings.provider_custom":"custom / local","web.settings.provider_name_conflict":"a provider with this name already exists — pick another name","web.settings.provider_edit_title":"edit provider","web.settings.provider_advanced":"advanced","web.settings.provider_make_active":"make active","web.settings.providers_empty":"no providers configured","web.settings.edit":"edit","web.settings.delete":"delete","web.settings.cancel":"cancel","web.settings.save":"save","web.settings.delete_failed":"delete failed","web.settings.provider_type":"type","web.settings.provider_label_field":"label","web.settings.provider_baseurl":"base URL","web.settings.provider_baseurl_custom":"custom URL…","web.settings.provider_apikey":"API key","web.settings.provider_key_keep":"leave blank to keep","web.settings.provider_context":"context window","web.settings.provider_priority":"priority","web.settings.provider_rpm":"requests / min","web.settings.provider_parallel":"max parallel","web.settings.provider_max_tokens":"max completion tokens","web.settings.provider_cache_mechanism":"cache mechanism","web.settings.provider_cache_report":"cache report format","web.settings.provider_cache_flags":"cache flags","web.settings.provider_retry":"retry","web.settings.provider_retry_max":"max retries","web.settings.provider_retry_base":"retry base delay (ms)","web.settings.provider_retry_maxdelay":"retry max delay (ms)","web.settings.provider_flag.sessionHeader":"x-opencode-session header","web.settings.provider_flag.requestCachePrompt":"cache_prompt (llama.cpp)","web.settings.provider_flag.requestPromptCacheKey":"prompt_cache_key (OpenAI)","web.settings.provider_flag.requestSessionId":"session_id (OpenRouter)","web.settings.provider_flag.requestCacheControl":"cache_control (Anthropic)","web.settings.provider_flag.requestStreamUsage":"stream usage chunk","web.settings.provider_required":"type and base URL are required","web.settings.provider_invalid":"invalid numeric value","web.settings.provider_active_guard":"cannot delete the active provider — switch first","web.settings.builtin":"builtin","web.settings.plugins_note":"plugins are loaded from ~/.mma/plugins and <project>/.mma/plugins; enable or disable them by adding or removing the plugin file there (takes effect on the next run).","web.settings.mcp_enable":"enable","web.settings.mcp_disable":"disable","web.settings.mcp_saved":"saved · takes effect on the next run","web.settings.mcp_note":"MCP server changes are saved to config and take effect on the next run.","web.settings.theme":"theme","web.settings.security_note":"protected paths, restricted mode and web token are managed by the terminal wizard.","web.settings.web_token":"web token","web.settings.web_token_none":"not set","web.settings.terminal_tag":"terminal","web.settings.memory_unavailable":"memory unavailable","web.settings.new_memory":"new memory…","web.settings.memory_category":"memory category","web.settings.add_failed":"add failed","web.settings.search_memory":"search memory…","web.settings.forget_failed":"forget failed","web.settings.preferences":"preferences","web.settings.no_memory":"no memory entries","web.settings.skills_unavailable":"skills unavailable","web.settings.no_skills":"no skills found","web.settings.enabled":"enabled","web.settings.available":"available","web.settings.plugins_unavailable":"plugins unavailable","web.settings.plugins_header":"plugins","web.settings.no_plugins":"no plugins registered","web.settings.disabled":"disabled","web.settings.mcp_servers":"mcp servers","web.settings.no_mcp":"no MCP servers configured","web.settings.mcp_add":"add MCP server","web.settings.mcp_edit_title":"edit MCP server","web.settings.mcp_required":"name plus command (stdio) or URL (sse/http) is required","web.settings.mcp_invalid":"invalid value: timeout 1000–300000 ms, args/env/headers as JSON","web.settings.lsp_servers":"LSP servers","web.settings.no_lsp":"no LSP servers configured","web.settings.lsp_note":"LSP changes are saved to config and take effect on the next run.","web.settings.lsp_unavailable":"LSP unavailable","web.settings.loading":"loading…","web.input.placeholder":"message… (/ for commands)","web.input.enter":"Enter — send","web.input.shift_enter":"Shift+Enter — newline","web.input.esc":"Esc — stop","web.input.attach":"Ctrl+V — attach","web.input.send":"send","web.input.stop":"stop","web.input.queued":"queued · position {n}","web.input.queue_full":"message queue is full — wait for the turn to end","web.tab.working":"working","web.tab.waiting":"waiting for you","web.tab.queued":"queued","web.tab.failed":"failed","web.tab.gone":"gone","web.session.gone":"session deleted or unavailable — close the tab","web.empty.title":"new chat","web.message_empty":"Type a message first.","web.empty.hint":"type a message below · / — commands · model and context are chosen above the input","web.attach.title":"attach image","web.attach.remove":"remove","web.attach.only_images":"only images can be attached","web.attach.too_many":"too many images (max {max})","web.attach.too_large":"image too large (max 50 MB)","web.attach.invalid":"invalid image","web.attach.read_failed":"could not read image","web.sessions.active":"active","web.sessions.recent":"recent","web.sessions.new":"+ new session","web.sessions.refresh":"↻ refresh","web.sessions.none_active":"— no active session —","web.sessions.none":"— none —","web.sessions.delete":"delete","web.sessions.search":"search sessions…","web.sessions.create_failed":"session create failed","web.sessions.delete_failed":"delete failed","web.sessions.confirm_title":"Delete session?","web.sessions.confirm_body":"“{name}” will be permanently deleted. This cannot be undone.","web.sessions.active_guard":"cannot delete the active session — switch to another first","web.selectors.model":"model","web.selectors.provider":"provider","web.selectors.context":"context","web.selectors.reasoning":"reasoning","web.selectors.switch_busy":"switch in progress, please wait","web.selectors.reasoning_off":"off (backend ignores it)","web.selectors.no_models":"no models","web.selectors.search_models":"search models…","web.selectors.refresh_list":"↻ refresh list","web.selectors.custom":"custom…","web.selectors.current":"current","web.selectors.context_prompt":"context window (tokens)","web.rail.working":"working","web.rail.composing":"composing","web.rail.no_plan":"no plan","web.rail.step_of":"step {cur}/{total}","web.rail.last":"last:","web.rail.none":"—","web.rail.tools_one":"{count} tool","web.rail.tools_many":"{count} tools","web.rail.tools_few":"{count} tools","web.rail.events_one":"{count} event","web.rail.events_many":"{count} events","web.rail.events_few":"{count} events","web.action.thinking":"thinking","web.action.hide":"hide","web.action.show":"show","web.action.actions_one":"{count} action","web.action.actions_few":"{count} actions","web.action.actions_many":"{count} actions","web.action.cancel":"cancel","web.cmdk.label":"commands","web.command.help":"list web commands","web.command.status":"model · provider · context · session · verbosity","web.command.config":"read or write a config key","web.command.model":"list or switch model","web.command.provider":"list or switch provider","web.command.reasoning":"reasoning display and level","web.command.verbose":"set UI verbosity","web.command.context":"show or set the context window","web.command.security":"show security toggles or write a security key","web.security.unknown_sub":"unknown subcommand: security {sub}","web.command.session":"list or activate a session","web.command.export":"export the active session to a file","web.command.memory":"inspect or edit global memory","web.command.clear":"clear the feed (browser-side)","web.command.new":"open a new chat tab (browser-side)","web.turn.stopped":"stopped","web.turn.failed":"turn failed","web.turn.end":"turn end · ok · tools {count}","web.plan.none":"no active plan","web.plan.heading_one":"Plan · {count} step","web.plan.heading_few":"Plan · {count} steps","web.plan.heading_many":"Plan · {count} steps","web.history.loading":"loading…","web.history.unavailable":"— history unavailable","web.history.empty":"— empty session —","web.scroll.latest":"latest","web.tool.output_one":"output · {count} char","web.tool.output_few":"output · {count} chars","web.tool.output_many":"output · {count} chars","web.tool.collapse":"collapse","web.code.copy":"copy","web.code.copied":"copied","web.code.copy_failed":"copy failed","web.msg.copy":"copy","web.msg.copy_md":"copy as markdown","web.card.open_title":"Preview in a browser tab","web.card.copy_title":"Copy the workspace path","web.card.drawio_hint":"Draw.io diagram is XML — preview shows code; open it in draw.io / VS Code to see the scheme.","web.card.files_one":"{count} file","web.card.files_few":"{count} files","web.card.files_many":"{count} files","web.card.screenshot":"screenshot","web.card.attached_image":"attached image","web.card.browser_viewport":"browser · viewport","web.question.placeholder":"type your answer…","web.question.send":"send","web.question.answered":"answered","web.question.multi_hint":"select one or more","web.misc.command_unavailable":"command unavailable","web.file.error.missing_path":"No file path was given.","web.file.error.outside_workspace":"This file is outside the agent workspace and cannot be opened.","web.file.error.protected_path":"This file is protected (secrets/VCS) and cannot be opened.","web.file.error.too_large":"File is too large to open in the browser ({limit} bytes max).","web.file.error.binary_file":"This looks like a binary file and cannot be shown as text — download it with the Download button.","web.file.error.not_found":"File not found (it may be a directory or it was deleted).","web.file.error.workspace_unavailable":"No workspace is open.","web.files.empty":"No files.","web.files.loading":"Loading…","web.files.error":"Failed to load the file tree.","web.files.truncated":"Too many entries — the list is truncated.","web.files.attach":"Attach path","web.files.open_failed":"Could not open this file.","web.files.no_workspace":"No workspace is open.","web.files.close":"Close","web.setup.title":"Set up MMA","web.setup.subtitle":"A few quick questions before you start chatting.","web.setup.step.language":"Language","web.setup.step.provider":"Provider","web.setup.step.key":"API key","web.setup.step.model":"Model","web.setup.step.context":"Context","web.setup.step.security":"Security","web.setup.step.review":"Review","web.setup.language.title":"Choose your language","web.setup.language.hint":"Used for the interface.","web.setup.provider.title":"Choose a provider","web.setup.provider.hint":"For a local model pick the OpenAI-compatible option, scan for your server, then test the connection before continuing.","web.setup.provider.base_url":"Base URL","web.setup.provider.scan":"Scan for local servers","web.setup.provider.scan_found_one":"Found {count} server","web.setup.provider.scan_found_few":"Found {count} servers","web.setup.provider.scan_found_many":"Found {count} servers","web.setup.provider.scan_none":"No local servers found — enter the URL manually.","web.setup.provider.scan_failed":"Scan failed. Enter the URL manually.","web.setup.provider.required":"Please enter a base URL.","web.setup.provider.test":"Test connection","web.setup.provider.testing":"Testing…","web.setup.provider.test_ok":"Server reachable.","web.setup.provider.test_fail":"Could not reach the server at this URL.","web.setup.key.title":"API key","web.setup.key.hint":"Leave empty for local servers. Stored only in your config file and never shown again.","web.setup.key.label":"Key","web.setup.key.placeholder":"sk-…","web.setup.model.title":"Choose a model","web.setup.model.hint":"Load the list from the provider or type the model name.","web.setup.model.name":"Model name","web.setup.model.load":"Load models","web.setup.model.load_found_one":"Loaded {count} model","web.setup.model.load_found_few":"Loaded {count} models","web.setup.model.load_found_many":"Loaded {count} models","web.setup.model.load_none":"No models returned — type the model name.","web.setup.model.test":"Test connection","web.setup.model.testing":"Testing…","web.setup.model.test_ok":"Connection OK.","web.setup.model.test_fail":"Could not reach the model.","web.setup.model.required":"Please choose or type a model.","web.setup.context.title":"Context & iterations","web.setup.context.hint":"Must match the context your provider gives this model. Press Detect, or copy the value from LM Studio / Ollama / provider docs.","web.setup.context.contextWindow":"Context window (tokens)","web.setup.context.maxToolIterations":"Max tool iterations","web.setup.context.required":"Enter a positive number.","web.setup.context.detect":"Detect from provider","web.setup.context.detecting":"Detecting…","web.setup.context.detect_ok":"Context set from provider: {count} tokens.","web.setup.context.detect_fail":"Could not detect context — enter it manually.","web.setup.security.title":"Security","web.setup.security.hint":"Safe defaults are on; turn off only what you need. Nothing is blocked silently — each toggle only asks the agent to confirm first.","web.setup.security.paths":"Restrict file access to the workspace","web.setup.security.paths_desc":"The agent reads and writes only inside the workspace, and asks before touching .git, .env, keys and other sensitive paths.","web.setup.security.bash":"Block dangerous shell commands","web.setup.security.bash_desc":"Blocks destructive commands (rm, sudo, ssh, curl, shutdown, …). The agent asks instead of running them.","web.setup.security.flags":"Block dangerous command flags","web.setup.security.flags_desc":"Blocks risky flags (--force, -rf, …) that make safe commands dangerous. Works together with the command block.","web.setup.security.configure":"Configure","web.setup.security.advanced":"Advanced security settings","web.setup.security.popup_hint":"One item per line. Empty list = disabled. Changes apply only to this install; you can edit them later in Settings → Security.","web.setup.security.popup_done":"Done","web.setup.security.reset":"Reset to defaults","web.setup.security.denied":"Always denied paths","web.setup.security.allowed":"Only allowed paths (empty = all except denied)","web.setup.security.blacklist":"Always blocked commands","web.setup.security.whitelist":"Only allowed commands (empty = all except blocked)","web.setup.security.log_commands":"Log every executed command to the audit log","web.setup.security.dangerous_flags":"Blocked command flags","web.setup.security.dangerous_operators":"Blocked shell operators","web.setup.security.network_enabled":"Network protection (block private/internal addresses)","web.setup.security.denied_domains":"Always denied domains","web.setup.security.allowed_domains":"Only allowed domains (empty = all except denied)","web.setup.security.request_timeout":"Network request timeout (ms)","web.setup.security.max_response_size":"Max response size (bytes)","web.setup.security.max_recursion":"Max subagent recursion depth","web.setup.security.max_file_ops":"Max file operations per session","web.setup.security.rate_rpm":"Max LLM requests per minute","web.setup.security.rate_parallel":"Max parallel tasks","web.setup.security.content_scan":"Scan file content for dangerous patterns","web.setup.security.session_encryption":"Encrypt session logs on disk","web.setup.security.audit_enabled":"Send security events to the audit notifier","web.setup.security.audit_severity":"Minimum severity to notify","web.setup.security.audit_events":"Notified event types","web.setup.security.audit_retries":"Webhook max retries","web.setup.security.audit_timeout":"Webhook timeout (ms)","web.setup.security.severity.low":"low","web.setup.security.severity.medium":"medium","web.setup.security.severity.high":"high","web.setup.security.severity.critical":"critical","web.setup.review.title":"Review","web.setup.review.hint":"Check the values, then finish. Settings are saved to your config.","web.setup.review.provider":"Provider","web.setup.review.baseUrl":"Base URL","web.setup.review.apiKey":"API key","web.setup.review.model":"Model","web.setup.review.context":"Context window","web.setup.review.iterations":"Max tool iterations","web.setup.review.locale":"Language","web.setup.review.security":"Security","web.setup.review.security_off":"disabled","web.setup.review.not_needed":"not needed","web.setup.back":"Back","web.setup.next":"Next","web.setup.finish":"Finish setup","web.setup.saving":"Saving…","web.setup.saved_warning":"Saved with warnings: {warning}","web.setup.failed":"Setup failed. Check the values and try again.","config.key.provider.fallback":"fallback providers","config.desc.provider.fallback":"Fall back to the next provider entry when the active one fails.","config.key.provider.maxCompletionTokens":"max completion tokens","config.desc.provider.maxCompletionTokens":"Hard cap on completion tokens per request (512-128000).","config.key.contextBudget.compactionThreshold":"compaction threshold","config.desc.contextBudget.compactionThreshold":"History load share that allows periodic compaction (0.05-0.9).","config.key.contextBudget.compactionMinLoad":"compaction min load","config.desc.contextBudget.compactionMinLoad":"Minimum history load required before compaction may run (0.05-0.9).","config.key.contextBudget.policy":"compaction policy","config.desc.contextBudget.policy":"legacy reproduces 2.18.2; v2 adds a canonical threshold, cooldown and progress guarantees.","config.key.contextBudget.compactionSummary":"compaction summary","config.desc.contextBudget.compactionSummary":"ledger (default) pins a tool ledger across compaction so the model does not re-explore the same sources; off disables it.","config.key.contextBudget.overflowCooldown":"overflow cooldown","config.desc.contextBudget.overflowCooldown":"Minimum iterations between overflow compactions (1-20).","config.key.contextBudget.toolResultKeep":"keep recent tool results","config.desc.contextBudget.toolResultKeep":"How many latest tool results survive deterministic pruning (0-20).","config.key.contextBudget.calibrationWarmup":"calibration warmup","config.desc.contextBudget.calibrationWarmup":"LLM calls observed before the token estimate is trusted (0-20).","config.key.contextBudget.ratioFloor":"calibration ratio floor","config.desc.contextBudget.ratioFloor":"Lowest calibrated estimate as a share of the raw estimate (0.05-0.9).","config.key.instructions.summarize":"summarize instructions","config.desc.instructions.summarize":"Summarize oversized AGENTS.md/project-map blocks instead of truncating.","config.key.contextLog.enabled":"context log","config.desc.contextLog.enabled":"Write the LLM-bound context of every iteration to <session>/context.diff.","config.key.contextLog.redact":"redact context log","config.desc.contextLog.redact":"Redact recognizable secrets (tokens, keys) in the context log.","config.key.indexer.maxFiles":"max indexed files","config.desc.indexer.maxFiles":"Cap on files scanned into the project map (100-100000).","config.key.indexer.respectGitignore":"respect .gitignore","config.desc.indexer.respectGitignore":"Skip files ignored by .gitignore/.mmaignore when building the map.","config.key.indexer.mapTokenBudget":"map token budget","config.desc.indexer.mapTokenBudget":"Token budget for the PageRank-ranked file list in the project map (200-20000).","config.key.lsp.enabled":"LSP","config.desc.lsp.enabled":"Run language servers after file writes and via the lsp_check tool.","config.key.lsp.offline":"LSP offline mode","config.desc.lsp.offline":"Never use npx; only globally installed language servers. Env MMA_LSP_OFFLINE overrides.","config.key.reasoning.min":"min reasoning","config.desc.reasoning.min":"Lower bound of the reasoning effort range.","config.key.reasoning.max":"max reasoning","config.desc.reasoning.max":"Upper bound of the reasoning effort range.","config.key.reasoning.baseline":"baseline reasoning","config.desc.reasoning.baseline":"Default reasoning effort used when the model gives no signal.","config.key.reasoning.overrideCooldown":"reasoning override cooldown","config.desc.reasoning.overrideCooldown":"Turns before a fresh reasoning override is accepted again (1-60).","config.key.autoPlan":"auto-plan","config.desc.autoPlan":"Let the agent draft a plan automatically for multi-step tasks.","config.key.execution.autoAdvance":"auto-advance plan steps","config.desc.execution.autoAdvance":"Mark a plan step done automatically when its deliverables exist. Off: the model closes steps itself.","config.key.tools.enableOnDemand":"on-demand tools","config.desc.tools.enableOnDemand":"Load narrow tool groups on demand instead of exposing all tools.","config.key.tools.grepEngine":"grep engine","config.desc.tools.grepEngine":"auto (rg → grep → built-in JS), or force rg/grep/js.","config.key.session.autoSave":"auto-save session","config.desc.session.autoSave":"Persist the session log after every turn.","config.key.session.maxSessions":"max sessions","config.desc.session.maxSessions":"How many recent sessions are kept on disk (1-500).","config.key.session.isolateMemory":"isolate session memory","config.desc.session.isolateMemory":"Keep session memory separate from the global one.","config.key.session.autoName":"auto-name sessions","config.desc.session.autoName":"Derive a session name from the first message (LLM-refined).","config.key.sessionIsolation.enabled":"session isolation","config.desc.sessionIsolation.enabled":"Master switch for per-session isolation (plugins, temp files).","config.key.sessionIsolation.isolatePlugins":"isolate plugins","config.desc.sessionIsolation.isolatePlugins":"Give each session its own plugin sandbox.","config.key.sessionIsolation.isolateTempFiles":"isolate temp files","config.desc.sessionIsolation.isolateTempFiles":"Give each session its own temp-file directory.","config.key.ui.spinner":"spinner","config.desc.ui.spinner":"Animate a progress spinner while tools run.","config.key.ui.activityRail":"activity rail","config.desc.ui.activityRail":"Indicator above the input line while the agent works.","config.key.ui.showContextStats":"context stats","config.desc.ui.showContextStats":"Show context usage stats after each turn.","config.key.ui.showCompaction":"compaction notice","config.desc.ui.showCompaction":"Notify in chat when history compaction runs.","config.key.ui.fontSize":"font size","config.desc.ui.fontSize":"Web chat font size (web only, the terminal is unaffected).","config.key.retry.maxRetries":"max retries","config.desc.retry.maxRetries":"Max retries for failed LLM requests (0-10).","config.key.retry.baseDelay":"retry base delay","config.desc.retry.baseDelay":"Base backoff delay between retries in ms (0-60000).","config.key.retry.maxDelay":"retry max delay","config.desc.retry.maxDelay":"Backoff delay cap between retries in ms (0-300000).","config.key.retry.maxStreamRetries":"max stream retries","config.desc.retry.maxStreamRetries":"Max retries for stalled or interrupted streams (0-10).","config.key.retry.noDataTimeoutMs":"stream stall timeout (ms)","config.desc.retry.noDataTimeoutMs":"Give up on a stream silent for this long, in ms (1000-600000).","config.key.pricing.enabled":"cost tracking","config.desc.pricing.enabled":"Track token usage and estimated cost per session.","config.key.updater.enabled":"auto-update","config.desc.updater.enabled":"Master switch for background update checks.","config.key.updater.checkOnStart":"check on start","config.desc.updater.checkOnStart":"Check for updates when the agent starts.","config.key.updater.autoInstall":"auto-install updates","config.desc.updater.autoInstall":"Install downloaded updates without asking.","config.key.updater.intervalMs":"update check interval (ms)","config.desc.updater.intervalMs":"Minimum time between update checks, in ms (0-86400000).","config.key.skills.budget":"skills budget share","config.desc.skills.budget":"Share of the system budget reserved for skill definitions (0.05-0.9).","config.key.hallucination.judge.enabled":"hallucination judge","config.desc.hallucination.judge.enabled":"Score answer confidence and flag likely hallucinations.","config.key.subagent.resultMode":"subagent result mode","config.desc.subagent.resultMode":"How subagent results return: inline text or via file.","config.key.subagent.maxSummaryChars":"subagent summary limit","config.desc.subagent.maxSummaryChars":"Max chars kept from a subagent summary (100-50000).","config.key.subagent.maxParallelChunkQueries":"subagent parallel chunks","config.desc.subagent.maxParallelChunkQueries":"Max parallel chunk queries per subagent wave (1-16).","config.key.subagent.timeoutMs":"subagent timeout (ms)","config.desc.subagent.timeoutMs":"Subagent execution timeout in milliseconds (10000-1800000).","config.key.subagent.stableSystemPrompt":"stable subagent prompt","config.desc.subagent.stableSystemPrompt":"Reuse one frozen system prompt for all subagents in a run.","config.key.modelLoad.autoLoad":"auto-load model","config.desc.modelLoad.autoLoad":"Load the model into the backend automatically on start.","config.key.modelLoad.flashAttention":"flash attention","config.desc.modelLoad.flashAttention":"Enable flash-attention kernels when loading the model.","config.key.modelLoad.offloadKvCacheToGpu":"offload KV cache to GPU","config.desc.modelLoad.offloadKvCacheToGpu":"Keep the KV cache in GPU memory when loading the model.","config.key.modelLoad.evalBatchSize":"eval batch size","config.desc.modelLoad.evalBatchSize":"Prompt-eval batch size at load time (1-4096).","config.key.webSearch.enabled":"web search","config.desc.webSearch.enabled":"Allow the agent to search the web.","config.key.errorWebSearch.enabled":"search on error","config.desc.errorWebSearch.enabled":"Search the web automatically when an error looks searchable.","config.key.errorWebSearch.threshold":"error search threshold","config.desc.errorWebSearch.threshold":"How many matching errors trigger a search (1-20).","config.key.errorWebSearch.maxResults":"error search results","config.desc.errorWebSearch.maxResults":"Max search results attached per error lookup (1-20).","config.key.errorWebSearch.maxQueryChars":"error query limit","config.desc.errorWebSearch.maxQueryChars":"Max chars of the error text sent per query (50-2000).","config.key.errorWebSearch.maxSearchesPerSession":"error searches per session","config.desc.errorWebSearch.maxSearchesPerSession":"Max automatic error searches per session (0-20).","config.key.errorWebSearch.requestTimeoutMs":"error search timeout (ms)","config.desc.errorWebSearch.requestTimeoutMs":"Timeout per automatic error-search request, in ms (1000-120000).","config.key.browser.enabled":"browser tool","config.desc.browser.enabled":"Allow the agent to drive a browser.","config.key.browser.headless":"headless browser","config.desc.browser.headless":"Run the browser without a visible window.","config.key.browser.maxElements":"max page elements","config.desc.browser.maxElements":"Max accessibility-tree elements per snapshot (1-200).","config.key.browser.maxContentChars":"max page content","config.desc.browser.maxContentChars":"Max chars of page content kept per snapshot (100-50000).","config.key.browser.maxConsoleEntries":"max console entries","config.desc.browser.maxConsoleEntries":"Max browser console entries collected per snapshot (1-200).","config.key.browser.maxConsoleLineChars":"max console line","config.desc.browser.maxConsoleLineChars":"Max chars per console line (50-5000).","config.key.browser.viewportWidth":"viewport width","config.desc.browser.viewportWidth":"Browser viewport width in px (320-4096).","config.key.browser.viewportHeight":"viewport height","config.desc.browser.viewportHeight":"Browser viewport height in px (200-2160).","config.key.browser.navigationTimeout":"navigation timeout (ms)","config.desc.browser.navigationTimeout":"Timeout per page navigation, in ms (1000-120000).","config.key.security.maxRecursionDepth":"max recursion depth","config.desc.security.maxRecursionDepth":"Max nested tool-call depth before refusal (0-20).","config.key.security.maxFileOperations":"max file operations","config.desc.security.maxFileOperations":"Max file operations per turn before refusal (0-10000).","config.key.security.rateLimits.maxRequestsPerMinute":"max requests per minute","config.desc.security.rateLimits.maxRequestsPerMinute":"LLM request rate cap per minute (1-1000).","config.key.security.rateLimits.maxParallelTasks":"max parallel tasks","config.desc.security.rateLimits.maxParallelTasks":"Cap on parallel subtasks (1-50).","config.key.tools.defaultTags":"default tool tags","config.desc.tools.defaultTags":"Tool groups always loaded without on-demand gating.","config.key.security.bash.enabled":"bash command validation","config.desc.security.bash.enabled":"Master switch for bash tool validation.","config.key.security.bash.blockDangerousFlags":"block dangerous flags","config.desc.security.bash.blockDangerousFlags":"Reject risky shell flags like --force in the bash tool.","config.key.security.network.enabled":"network requests","config.desc.security.network.enabled":"Master switch for outbound network checks (SSRF guard).","config.key.security.bash.blacklist":"bash blacklist","config.desc.security.bash.blacklist":"Commands always blocked in the bash tool (list).","config.key.security.bash.whitelist":"bash whitelist","config.desc.security.bash.whitelist":"Commands always allowed in the bash tool (list).","config.key.security.bash.dangerousFlags":"dangerous flags","config.desc.security.bash.dangerousFlags":"Command flags treated as dangerous (list).","config.key.security.bash.dangerousOperators":"dangerous operators","config.desc.security.bash.dangerousOperators":"Shell operators treated as dangerous (list).","config.key.security.paths.denied":"denied paths","config.desc.security.paths.denied":"Paths always off-limits for file tools (list).","config.key.security.paths.allowed":"allowed paths","config.desc.security.paths.allowed":"Extra paths allowed outside the workspace (list).","config.key.security.network.deniedDomains":"denied domains","config.desc.security.network.deniedDomains":"Domains the agent may never contact (list).","config.key.security.network.allowedDomains":"allowed domains","config.desc.security.network.allowedDomains":"Domains the agent may contact (list; empty means any).","config.key.security.network.requestTimeout":"network timeout (ms)","config.desc.security.network.requestTimeout":"Timeout per outbound tool request, in ms (1000-120000).","config.key.security.network.maxResponseSize":"max response size","config.desc.security.network.maxResponseSize":"Max bytes kept per outbound response (1024-1000000).","config.key.security.contentScan.dangerousPatterns":"dangerous patterns","config.desc.security.contentScan.dangerousPatterns":"Regular expressions searched in file contents before writing.","config.key.security.auditNotifier.enabled":"audit notifier","config.desc.security.auditNotifier.enabled":"Send security-audit events to a file or webhook.","config.key.security.auditNotifier.filePath":"audit log path","config.desc.security.auditNotifier.filePath":"File the audit events are appended to.","config.key.security.auditNotifier.webhookUrl":"audit webhook URL","config.desc.security.auditNotifier.webhookUrl":"Webhook the audit events are posted to.","config.key.security.auditNotifier.webhookTimeout":"audit webhook timeout (ms)","config.desc.security.auditNotifier.webhookTimeout":"Timeout per webhook post, in ms (1000-60000).","config.key.security.auditNotifier.minSeverity":"audit min severity","config.desc.security.auditNotifier.minSeverity":"Lowest severity that still notifies (low/medium/high/critical).","config.key.security.auditNotifier.eventTypes":"audit event types","config.desc.security.auditNotifier.eventTypes":"Which audit event types notify; none selected means all.","config.key.security.auditNotifier.maxRetries":"audit max retries","config.desc.security.auditNotifier.maxRetries":"Retries per failed notification post (0-10).","config.key.security.sessionEncryption.keyPath":"encryption key path","config.desc.security.sessionEncryption.keyPath":"File holding the session-encryption key.","config.key.security.sessionEncryption.encryptHistory":"encrypt chat history","config.desc.security.sessionEncryption.encryptHistory":"Encrypt the saved chat history on disk.","config.key.security.sessionEncryption.encryptSessionLog":"encrypt session log","config.desc.security.sessionEncryption.encryptSessionLog":"Encrypt the saved session.jsonl log on disk.","config.key.pricing.overrides":"pricing overrides","config.desc.pricing.overrides":"Per-model price table overriding built-ins.","config.key.modelCapabilities":"model capabilities","config.desc.modelCapabilities":"Manual vision/tools overrides per model id.","config.key.experts":"MoE experts","config.desc.experts":"Expert roster for the MoE orchestrator.","config.enum.text":"text","config.enum.file":"file","config.enum.critical":"critical"}
|
|
1
|
+
{"file.created":"Created {path}","file.deleted":"Deleted {path}","file.updated":"Updated {path}","file.written":"Written {path}","file.syntax_error":"Syntax error in {path}:\n{error}\n\nFile was NOT written. Fix the syntax error and try again.","file.notfound":"File not found: {path}\nThis does NOT mean the project is missing — the path may be wrong. Run list_dir on the working directory first; create files only after confirming what exists.","file.dir_notfound":"Directory not found: {path}","file.path_not_allowed":"Path not allowed: {path}","file.path_not_allowed_short":"Path not allowed","file.is_directory":"Is a directory, use rmdir: {path}","file.replaced_in":"Replaced in {path}","file.string_not_found":"String not found in file:\n{str}\n\nUse read_file on {path} to see the current content before editing — the target may differ (whitespace, line endings) or was already replaced.","file.edit_args_invalid":"edit_file requires string \"old\" and \"new\" arguments. Received: old={oldType}, new={newType}.","file.read_failed":"Could not read {path}: {error}","file.write_failed":"Could not write {path}: {error}","file.protected_path_ask":"Protected path \"{path}\" (matches {pattern}). Do NOT modify it. Ask the user for explicit confirmation before proceeding and wait for their answer — do not retry around this.","file.moved":"Moved {from} → {to}","file.not_found_short":"Not found: {path}","file.notfound_resolved":"File not found: {path} (resolved to {resolved})\nThe path was joined onto the working directory because it does not exist as given. Run list_dir to find the correct path.","file.empty":"(empty)","file.no_matches":"No matches","file.truncated":"\n... (truncated)","file.read_header":"── {path} ({ext}, {total} lines, lines {from}-{to})","file.read_range":"lines {from}-{to} of {total}","file.read_truncated":"\n\n[Truncated: {remaining} more lines. Use read_file with offset={next} to continue]","file.empty_page":"(empty page)","error.timeout":"Request timed out","error.unknown":"An unknown error occurred","error.notfound":"Not found: {path}","error.prefix":"Error: ","error.command_error":"Command error: {message}","error.llm":"LLM error: {message}","error.response_blocked":"Response blocked: {reason}","error.max_iters":"Max iterations ({max}) reached","error.empty_response":"Model returned an empty response after retries","error.audit_failed":"Task could not be verified as complete: {summary}","error.retry_loop_stopped":"Stopped after {count} consecutive failed tool batches — the agent kept retrying a failing action instead of finishing","error.readonly_loop_stopped":"Stopped after {count} consecutive read-only steps — the agent kept reading/searching instead of answering or making a change","error.grep_failed":"Grep failed: {message}","error.grep_no_engine":"grep engine \"{engine}\" is unavailable: no such binary in PATH. Set tools.grepEngine=auto or js, or use read_file/list_dir.","error.search_failed":"Search failed: {message}","error.fetch_failed":"Fetch failed: {message}","error.fetch_url_failed":"Failed to fetch {url}: {message}","error.http":"HTTP {status}: {statusText}","error.llm_api":"LLM API error {status} ({statusText}): {errorText}","error.llm_retries":"LLM request failed after retries","error.llm_429":"Rate limit exceeded (HTTP 429) for {model} on {baseUrl}. The provider is throttling requests — free models are especially strict. Get an API key or switch to a paid/faster model: {baseUrl}","error.no_response_body":"No response body stream","error.llm_stream_idle":"LLM stream stalled — no data for {timeout}ms. If the provider buffers streaming (e.g. LM Studio) or generates very long tool calls, raise \"retry.noDataTimeoutMs\" in ~/.mma/config.json (restart required)","error.llm_stream_idle_toolcall":"LLM stream stalled after a tool_call started — no data for {timeout}ms. The provider most likely buffers SSE instead of streaming tool-call argument deltas (seen with LM Studio). Raise \"retry.noDataTimeoutMs\" in ~/.mma/config.json (restart required)","error.llm_truncated":"Response hit the completion token limit ({tokens}) and was cut off before any content arrived. Split the task into smaller outputs or raise \"maxCompletionTokens\" in the config","error.llm_truncated_toolcall":"Response hit the completion token limit ({tokens}) in the middle of a tool_call — its arguments were cut off. Write the file in smaller chunks (several write_file/edit_file calls) or raise \"maxCompletionTokens\" in the config","error.llm_output_truncated":"The response hit the completion token limit ({tokens}) and was cut off — this answer is incomplete. Raise \"maxCompletionTokens\" in the config to allow longer replies","error.llm_provider_stream_error":"Provider returned an error mid-stream: {error}","error.llm_timeout":"LLM request timed out ({timeout}ms)","error.context_log_init":"Context log is enabled but could not be initialized: {error}. No context diff will be written.","error.provider_build":"Could not build provider \"{name}\": {error}","env.runtime_node":"Running under Node (v{version}) — clipboard image paste, subagent performance and LSP spawn on Windows degrade. Install Bun (https://bun.sh) for full features.","env.runtime_old":"Runtime version {version} is below the required engines {engine}.","env.tool_missing":"Tool not found on PATH: {tool}","env.playwright_missing":"Playwright package is not installed — the browser tool will fail. Install with: bun add playwright","env.playwright_browsers_missing":"Playwright browsers not downloaded ({dir}). The browser tool will fail. Install with: bunx playwright install chromium","env.crash_stderr":"MMA crashed ({type}): {message} — crash report written to ~/.mma/logs/crash.jsonl","env.model_autoload_failed":"Model auto-load failed: {error}. Continuing with manual load.","env.model_loaded":"Model {model} loaded in {seconds}s","env.reasoning_probe":"Reasoning probe: strategy={strategy} → {result}","env.reasoning_respected":"mechanism respected","env.reasoning_ignored":"mechanism IGNORED","env.indexing":"Indexing project files…","env.indexed":"Indexed {files} file(s) for the project map","env.indexing_failed":"Project indexing failed: {error}","env.index_skip_unreadable":"indexer: skipping unreadable entry \"{path}\"","env.killed_processes":"Killed {count} background process(es) on shutdown","session.started":"Session started: {id}","session.ended":"Session ended: {id}","session.not_found":"Session not found: {id}","session.no_active":"No active session","session.deleted":"Session deleted: {id}","session.pruned":"Pruned {n} empty session(s)","session.prune_dry":"Would prune {n} empty session(s)","session.prune_empty":"No empty sessions to prune","session.renamed":"Session renamed to: {name}","session.created":"Created session: {name}","session.resumed":"Resumed session: {name}","session.chat_cleared":"Chat cleared. Start typing to begin.","session.chat_loaded":"Chat history loaded. Pick up where you left off.","session.chat_history":"Chat history:","session.user_label":"User","session.assistant_label":"Assistant","session.no_history":"Chat history is empty","session.no_sessions":"No sessions found","session.no_sessions_hint":"No sessions found. Create one with /new <name>","session.available":"Available sessions:","session.no_match":"No session matching \"{query}\"","session.default_name":"Session {date}","session.auto_named":"Session auto-named: {name}","session.info_full":"[Session: \"{name}\" ({id}) | model: {model} | context: {contextWindow} tokens]","session.col_active":"","session.col_id":"ID","session.col_name":"Name","session.col_updated":"Updated","session.col_msgs":"Msgs","tool.executed":"Executed {name}","tool.failed":"Tool {name} failed: {error}","tool.unknown":"Unknown tool: {name}","tool.not_allowed":"Tool not allowed in this mode: {name}","tool.blocked":"Blocked by plugin: {plugin}","tool.ui.security_blocked":"Blocked by security policy","tool.ui.protected_path":"Protected path — confirmation needed","tool.blocked_reason":"Blocked by plugin: {plugin}. Reason: {reason}","tool.using":"[{label}]","tool.friendly.write_file":"Writing file","tool.friendly.read_file":"Reading file","tool.friendly.edit_file":"Editing file","tool.friendly.create_dir":"Creating directory","tool.friendly.delete_file":"Deleting file","tool.friendly.move_file":"Moving file","tool.friendly.list_dir":"Listing files","tool.friendly.file_info":"File info","tool.friendly.glob":"Searching files","tool.friendly.grep":"Searching content","tool.friendly.bash":"Running command","bash.echo_write_blocked":"Writing files via echo/printf is unreliable in Windows cmd.exe (quotes and multi-line break). Use the write_file tool instead (target: {path}).","bash.cwd_flag_hint":"--cwd is not a standard flag. Pass the directory via the bash tool's \"workdir\" parameter instead (e.g. workdir=\"{workdir}\").","bash.posix_workdir_hint":"workdir \"{workdir}\" is a POSIX path, but this shell is Windows cmd.exe. Use a Windows path, or omit workdir to use the workspace root ({baseDir}).","tool.friendly.load_skill":"Loading skill","tool.friendly.plan":"Planning","tool.friendly.todo":"Updating tasks","tool.friendly.verify":"Verifying","tool.friendly.web_search":"Web search","tool.friendly.web_fetch":"Fetching page","tool.friendly.web_browse":"Browsing page","tool.friendly.download_file":"Downloading file","tool.friendly.chunk_query":"Querying chunks","tool.web_fetch_result":"Fetched page: {url} — {chars} chars, {lines} lines{truncated}","tool.web_fetch_no_content":"No readable content at {url} — the page needs JavaScript or is a bot wall. Use the \"browser\" tool, or pick a different source.","tool.web_browse_result":"Browsed page: {url} — {chars} chars, {lines} lines{truncated}","tool.web_search_result":"Search results for \"{query}\" — {count} results","tool.downloaded":"Downloaded {url} → {path} ({size} bytes, {type})","tool.download_too_large":"Download blocked: file exceeds the {max} bytes limit","tool.friendly.browser":"Browser","tool.friendly.subagent":"Sub-agent task","tool.friendly.question":"Question to user","tool.friendly.approve":"Approval request","tool.friendly.search_history":"Searching history","tool.friendly.pipeline_run":"Running pipeline","tool.friendly.mcp_call":"MCP call","tool.friendly.lsp_check":"Checking code","tool.friendly.meet_done":"Interview complete","tool.truncated":"[Truncated: {tokens} tokens removed]","critic.repair":"A verifier flagged critical problems; fix them before finishing:\n{issues}\nSummary: {summary}","critic.advice":"A verifier flagged issues worth checking before you finish:\n{issues}","critic.repeat":"The verifier repeats a previously flagged problem — do not produce the same answer again. Change the approach, or finish honestly if the complaint does not apply:\n{issues}","tool.subagent_queued":"Sub-agent task queued: {task}","tool.subagent_artifact":"Sub-agent completed. Full result saved to artifact: {path}\nIterations: {iterations}\nSummary:\n{summary}","tool.pipeline_started":"Pipeline \"{name}\" execution started. Pipeline engine is a stub — run dispatched.","tool.mcp_call":"MCP call: {server}/{tool} with {args}","tool.action_required":"Action is required.","tool.approve_prompt":"Approve? {action}","tool.approve_yes":"Yes","tool.approve_yes_desc":"Approve the action","tool.approve_no":"No","tool.approve_no_desc":"Reject the action","tool.approved":"Approved","tool.rejected":"Rejected by user","tool.user_input.custom_option":"Type your own answer","tool.user_input.choice_single":"> Select [1-{max}]: ","tool.user_input.choice_multiple":"> Select (comma-separated, e.g. 1,3): ","tool.user_input.invalid":"Invalid choice, try again.","tool.user_input.custom_prompt":"Your answer: ","tool.question.progress":"Question {current}/{total}","tool.question.no_questions":"No questions provided","tool.question.unanswered":"Unanswered","tool.question.answered":"User has answered your questions: {formatted}. You can now continue with the user's answers in mind.","tool.question.memory_only":"Memory already answers these questions — they were NOT asked. Do NOT call question for them again: continue with the memory values and briefly tell the user what you took from memory.","tool.question.memory_known":"Memory already answers: {formatted}. These were NOT asked — do not re-ask them. Continue with these values; if the user corrects you, update your answer, but don't call question again.","tool.question.memory_repeat":"Repeat: this topic is already answered by memory above. Do not call question again — continue with the known value.","tool.question.session_only":"Answers live only in this session — persist nothing via remember unless the user explicitly asks.","tool.question.batch_truncated":"Asked the first {shown} of {total} unknown questions — call the tool again for the rest.","tool.name_or_task":"Provide either \"name\" or \"task\" parameter","tool.chunk_query_no_query":"chunk_query: a query string is required.","tool.chunk_query_no_input":"chunk_query: provide input_path or text.","tool.chunk_query_no_provider":"chunk_query: missing LLM provider in context.","tool.chunk_query_path_not_allowed":"[SCOPE] {reason}","tool.chunk_query_read_failed":"Cannot read {path}: {error}","tool.subagent_cannot_run":"Sub-agent cannot run: missing LLM provider or tool executor in context.","tool.subagent_failed":"Sub-agent failed: {error}\nPartial output: {text}","tool.subagent_completed":"Sub-agent completed:\n{text}\n\nIterations: {iterations}","tool.subagent_error":"Sub-agent error: {error}","tool.pipeline_cannot_run":"Pipeline cannot run: missing LLM provider or tool executor in context.","tool.pipeline_failed":"Pipeline \"{name}\" failed. Executed {done}/{total} steps.\n{logs}","tool.pipeline_completed":"Pipeline \"{name}\" completed successfully ({steps} steps).\n{logs}","tool.pipeline_error":"Pipeline error: {error}","tool.mcp_server_not_found":"MCP server \"{server}\" not found. Available: {available}","tool.mcp_call_failed":"MCP call failed: {error}","tool.meet_done":"Interview marked complete.","tool.invalid_params":"Invalid parameters","tool.skill_budget":"Skill \"{name}\" loaded ({tokens} tokens, {remaining} remaining in skills budget). Skill content is now in system prompt — no need to reload after context compaction.","tool.skill_available_hint":"Available skills","tool.skill_did_you_mean":"Did you mean","tool.no_results":"No results found for \"{query}\"","tool.search_results":"Search results for \"{query}\":\n{results}","tool.web_search_disabled":"Web search is disabled (webSearch.enabled: false). Use file/system tools only.","tool.history_results":"History results for \"{query}\":\n{results}","tool.no_history":"No history entries matching \"{query}\"","tool.no_sessions_dir":"No sessions directory found at {dir}","tool.history_error":"Error searching history: {error}","tool.memory_error":"Memory error: {error}","tool.screenshot_unavailable":"[Screenshot captured — image not available for text-only model]","tool.timeout":"Tool {name} timed out after {seconds} seconds","tool.aborted":"Tool {name} was interrupted by user","tool.interactive_disabled":"Interactive tool is disabled in exit-on-complete mode. Proceed without asking the user.","proc.started":"Started background process {id} (PID {pid}).\nCommand: {command}","proc.promoted_hint":"Command still running after {ms} ms — moved to the background","proc.manage_hint":"Check output: process_log id={id}. Wait for completion: process_wait id={id}. Stop it: process_kill id={id}. List all: process_list.","proc.output_preview":"First output:\n{lines}","proc.none":"No background processes running.","proc.not_found":"Process not found: {id}","proc.missing_id":"Provide the process id: process_kill id=proc_xxx (the id is returned by bash when a command goes to the background, or by process_list).","proc.missing_id_list":"No background processes are currently running.","proc.killed":"Process {id} (PID {pid}) killed.","proc.kill_failed":"Failed to kill process {id}","proc.list_header":"Background processes","proc.log_header":"Process {id} ({status}) output:","proc.log_empty":"(no output yet)","proc.hint":"Manage them with {list}, {log}, {kill}.","proc.status_running":"running","proc.status_exited":"exited","proc.status_killed":"killed","proc.wait_exited":"Process {id} {status} after {ms} ms with exit code {code}.","proc.wait_running":"Process {id} still running after {ms} ms.","proc.wait_hint":"Wait again: process_wait id={id}. Check output: process_log id={id}. Stop it: process_kill id={id}.","tool.friendly.process_list":"Listing background processes","tool.friendly.process_log":"Process output","tool.friendly.process_kill":"Stopping process","tool.friendly.process_wait":"Waiting for process","plan.no_steps":"No plan steps specified. Provide concrete steps with files and commands.","plan.created":"Plan created: {title} ({steps} steps)","plan.coverage_blocked":"Plan does not cover files required by the task: {missing}. Add steps naming these files (exact paths) with checks, then call plan create again.","plan.checks_required":"Each step needs a verification contract: pass checks aligned 1:1 with steps — one per step: \"file-exists:<path>\" (auto-verified on done), \"command:<cmd>\" (run it before done), or \"manual:<what to check by eye>\" (UI/visual work only).","plan.checks_not_array":"checks must be an array of check strings, aligned 1:1 with steps","plan.checks_mismatch":"checks must align 1:1 with steps: got {actual} checks for {expected} steps. Example: steps [\"Create src/a.ts\"] + checks [\"file-exists:src/a.ts\"]. Omit checks to let each step self-certify.","plan.checks_invalid":"Invalid check(s): {kinds}. Each check must start with \"file-exists:\", \"command:\", or \"manual:\".","plan.check_failed":"Cannot mark step {step} done: its check failed — {check}. Run the check first (create the file / run the command), then mark done.","plan.check_self_certified":"check self-certified: {check} — confirmed run before done.","plan.step_done":"Step {n}/{total}: {description} ✓","plan.complete":"Task complete: {summary}","plan.title_steps":"Plan \"{title}\" created with {count} steps","plan.step_marked":"Step {step} marked as {status}","plan.aborted":"Plan aborted","plan.completed_archived":"Plan {id} is complete ({done}/{total} steps) — archived. You may create a new plan for new work (plan create), or reply with your final answer.","plan.unknown_action":"Unknown plan action: {action}","plan.updated":"Plan updated: {title} ({steps} steps)","plan.acknowledged":"Plan {action}: acknowledged","plan.step_status":"Step {step}: {status}","plan.no_active":"No active plan","plan.no_active_with_last":"No active plan. Last completed: {id} \"{title}\" ({done}/{total} steps). Continue with a new plan (action=create) or finish your answer.","plan.step_not_found":"Step not found","plan.step_required":"Provide the step number: plan_step step=N status=done|failed|skipped.","plan.bad_status":"Invalid status \"{status}\". Use one of: {allowed}.","plan.step_already_done":"Step {step} is already done — nothing to do. Plan progress:","plan.order_blocked":"Cannot mark step {step} done: step {first} (\"{desc}\") is not finished yet. Complete earlier steps first, or mark step {first} status=skipped if it is not needed.","plan.deliverables_missing":"Cannot mark step {step} done: the files it names do not exist yet: {files}. Create these files first (or mark the step status=skipped if they are not actually needed).","plan.kinds_mismatch":"kinds array length must match steps","plan.kinds_invalid":"Invalid step kind(s): {kinds}. Use \"create\" or \"delete\".","plan.kinds_not_array":"kinds must be an array of \"create\" or \"delete\"","plan.deliverables_remain":"Cannot mark step {step} done: the files it names still exist: {files}. This step is kind=delete — delete these files first (or set status=skipped if they should stay).","plan.typecheck_failed":"Cannot mark step {step} done: the last check still reports a compile error:\n{error}\nFix the error and re-edit the file (a clean write clears the failure), or mark the step status=skipped if it is not needed.","plan.show_header":"Plan status:","plan.show_empty":"(plan has no steps)","plan.list_header":"Plans:","plan.list_empty":"No plans","plan.switch_no_id":"Provide a plan id to switch to","plan.not_found":"Plan not found: {id}","plan.switched":"Switched to plan {id}: {title}","plan.replanned":"Plan re-planned: {kept} completed steps kept, {steps} new steps added","plan.replan_no_steps":"Provide new steps for re-planning","plan.active_in_progress":"Cannot create a new plan: active plan {id} already has progress ({done}/{total} done, current: step {current}). Resume it — use \"plan show\" to view, then continue working. To replace it, call \"plan abort\" first, then \"plan create\" again.","plan.id_ignored":"note: plan ids are auto-generated; use \"plan switch\" to activate an existing plan by id.","plan.existing_fresh":"note: the previous active plan had no progress and was preserved as a draft.","plan.already_active":"Plan {id} is already active — nothing to switch.","plan.already_archived":"Plan {id} is already archived — nothing to abort.","plan.aborted_id":"Plan {id} aborted and archived.","plan.delete_no_id":"Provide a plan id to delete (plan delete id=plan_xxx).","plan.deleted":"Plan {id} deleted permanently.","plan.purged":"Deleted {count} plan(s). Plan storage is empty.","plan.no_deliverables":"note: step {step} names no files — verify the result in a task-appropriate way before your final answer (for code: build/tests/lint; for research/advice tasks: re-check the answer, do NOT create files just to have deliverables).","plan.bulk_update_rejected":"Bulk steps[] rewrite via action=update is not supported: it would discard all step statuses. Use \"re-plan\" (keeps completed steps, replaces the rest) or mark steps individually: plan_step step=N status=done|failed|skipped.","plan.readonly":"Plan {id} is {status} (read-only) — it cannot be updated. Use \"plan switch\" to activate it, or create a new plan for new work.","plan.list_legend":"[*] active · [ ] draft · [-] archived","exec.plan_nudge":"You made {count} file-changing tool call(s) without a plan. For tasks that create or modify files, or span multiple steps, create a plan first (plan create) with concrete steps (exact filenames, commands, deliverables), then continue.","exec.plan_summary_complete":"[{id}] \"{title}\" {done}/{total} done — plan complete. You may create a new plan for new work (plan create), or reply with your final answer.","exec.plan_summary_continue":"[{id}] \"{title}\" {done}/{total} done, current: step {current} — continue it (plan show / re-plan), do NOT create a new plan","exec.test_fail_summary":"{framework} reported {failed} FAILING test(s) ({passed} passing). Do NOT mark the current step as done — fix the failing tests (read the failure output, correct the code) and re-run them until all pass.","exec.test_pass_summary":"{framework}: all {passed} test(s) passed for \"{cmd}\". You may mark the current step as done via plan_step step=N status=done.","exec.skills_hint":"If relevant skills are available, consider loading one with load_skill for expert guidance.","todo.added":"Added {count} todo(s): {items}","todo.marked_done":"Marked {count} item(s) as done","todo.no_active":"No active todos","todo.no_items":"No todo items specified — provide items to mark done","todo.subtask_not_found":"No matching sub-task(s) found for: {items}. Use ids from todo list (todo done ids=[...]) for reliable matching.","todo.subtask_id_not_found":"No sub-task(s) with id(s): {ids}. Check ids with todo list.","todo.unknown_action":"Unknown todo action: {action}","todo.acknowledged":"Todo acknowledged","verify.passed":"Verification passed","verify.failed":"Verification failed: {details}","verify.file_exists":"File exists: {path}","verify.file_not_found":"File not found: {path}","verify.script_passed":"Script '{script}' passed","verify.script_failed":"Script '{script}' failed: {message}","verify.syntax_error":"Syntax error in: {path}","verify.file_still_exists":"File should be deleted but still exists: {path}","verify.no_files":"Step {step} has no named files to verify — run a real check instead (bash: bun run build / bun test / lsp_check) and confirm the result.","verify.typecheck_skipped_no_tsconfig":"No tsconfig.json found — skipping type check","verify.typecheck_skipped_no_tsc":"tsc not installed — skipping type check","verify.typecheck_passed":"TypeScript type check passed","verify.typecheck_failed":"TypeScript type check failed: {error}","verify.tests_skipped_no_package":"No package.json found — skipping tests","verify.tests_skipped_no_script":"No test script defined — skipping tests","lsp.unavailable":"static checks are unavailable (server not found). Verify via the project's own build/test instead.","lsp.check_disabled":"LSP checks are disabled in the config.","lsp.check_no_path":"Provide a path (file or directory) to check.","lsp.check_notfound":"Path not found: {path}","lsp.check_unsupported":"No LSP server configured for: {path}","lsp.check_clean":"No errors or warnings detected ({count} file(s) checked).","lsp.checked_files":"Checked {count} file(s):","lsp.startup_header":"[Existing project errors (baseline, checked at session start) — informational. Do NOT fix them unless the current request is about these errors; otherwise ignore them and work only on what the user asked.]:","lsp.hint_binary_missing":"Hint: install the language server or set lsp.servers.<lang>.command to an existing binary.","lsp.hint_network":"Hint: cannot download the language server (npm registry unavailable) — install it on PATH, set a registry mirror in lsp.servers.<lang>.env, or set MMA_LSP_OFFLINE=1.","lsp.hint_offline":"Hint: offline mode is on and the server binary is not in PATH — install it or unset MMA_LSP_OFFLINE.","lsp.hint_spawn":"Hint: the server command failed to start — check the command and PATH.","lsp.hint_timeout":"Hint: the server did not initialize in time — it may be slow; raise lsp.servers.<lang>.timeout.","cli.description":"Micro Models Agent — AI coding agent for small models","cli.init":"Run the provider setup wizard (deprecated alias of mma setup).","cli.init_deprecated":"mma init is deprecated — use mma setup","cli.setup":"Interactive setup wizard (provider, model, security).","cli.meet":"Get acquainted — record your preferences and usage profile.","cli.agents":"Agent management.","cli.agents_init":"Generate or update AGENTS.md for this workspace.","cli.config_saved":"Configuration saved to ~/.mma/config.json","cli.manage_config":"Manage configuration","cli.config_key":"Config key (e.g., model, provider.baseUrl)","cli.set_value":"Set a config value","cli.config_force":"Bypass validation and write the raw value as-is","cli.set_done":"Set {key}={value}","cli.config_invalid":"Invalid value for '{key}' ({reason}). Config not changed.","cli.show_config":"Show the effective configuration (secrets redacted; use --show-secrets to reveal)","cli.migrate_config":"Migrate legacy config.json to domain format","cli.manage_models":"Manage models","cli.list_models":"List available models","cli.current_model":"Current model:","cli.model_hint":"(Use /model use <name> to change)","cli.model_fetch_failed":"Failed to fetch models: {error}","cli.available_models":"Available models:","cli.cert_label":"supported — certified on this provider","cli.cert_stale_label":"certified on an older MMA version — recommended","cli.no_models_found":"No models found from provider","cli.fetching_models":"Fetching model list...","cli.manage_context":"Manage context window","cli.invalid_context_size":"Invalid context size. Must be a number >= 1024","cli.context_set":"Context window set to: {size} tokens","cli.context_budget_header":"Context budget (window {window} tokens):","cli.context_system_line":" system prompt: {tokens} tokens ({percent}%)","cli.context_reserve_line":" response reserve: {tokens} tokens ({percent}%)","cli.context_history_line":" history: {tokens} tokens ({percent}%)","cli.context_system_fraction":"System-prompt share of the context window (0.05–0.9)","cli.context_reserve_fraction":"Response-reserve share of the context window (0.05–0.9)","cli.context_fraction_set":"{key} share set to {value}","cli.context_invalid_fraction":"Invalid share. Use a number between 0.05 and 0.9 (system + reserve must stay below 0.95).","repl.reload":"Reload agent with current config","repl.reload_usage":"Usage: /reload","repl.reloading":"Reloading agent...","repl.reloaded":"Agent reloaded","cli.set_model":"Set default model","cli.model_name":"Model name","cli.model_set":"Model set to: {name}","cli.certify":"Run certification suite for a model","cli.cert_provider_url":"Provider base URL to certify against (default: current config)","cli.cert_provider_key":"Provider API key (optional)","cli.cert_context_window":"Context window size in tokens","cli.cert_tags":"Comma-separated scenario tags (core, security, image, network, browser, shell, research)","cli.cert_scenarios":"Comma-separated scenario ids to (re-)run (e.g. 3.5-data-pipeline); other results are preserved","cli.cert_scenarios_unknown":"Unknown scenario(s): {ids}. Available: {available}","cli.cert_partial_merge":"Preserved {kept} result(s) from the previous certification","cli.cert_reps":"Default repetitions per scenario (overridden by scenario)","cli.cert_timeout":"Per-rep timeout in ms (default 300000; overridden by scenario)","cli.cert_force":"Re-run an existing certification","cli.cert_clean":"Remove sandbox directories after a successful run","cli.cert_security_required":"Security is disabled. Enable it first (e.g. `mma security set-policy balanced`) to run the security suite.","cli.cert_no_scenarios":"No scenarios match tags: {tags}","cli.cert_exists":"A certification for {model} already exists on this provider.","cli.cert_exists_hint":"Use --force to re-run.","cli.cert_started":"Certifying {model} on {provider}...","cli.cert_done":"Certification complete: {passed} pass, {failed} fail, {skipped} skipped ({total} total)","cli.cert_rep_pass":"pass","cli.cert_rep_fail":"fail","cli.cert_status":"Show certification status for a model","cli.cert_list":"List all certifications","cli.cert_uncertify":"Remove a certification","cli.cert_not_found":"No certification found for {model}","cli.cert_uncertified":"Certification removed for {model}","cli.cert_empty":"No certifications yet. Run `mma model certify <model>` first.","cli.cert_provider_col":"provider","cli.cert_suite_col":"suite","cli.cert_date_col":"date","cli.cert_version_col":"MMA version","cli.cert_stale_hint":"Run `mma model certify --force` to refresh.","cli.cert_fixture_missing":"Fixture missing for {id}: {path}","cli.cert_marks_hint":"Markers: ✔ certified on this provider, ○ certified on an older MMA version, · not certified","cli.manage_providers":"Manage providers","cli.provider_check":"Probe configured providers (free listModels call)","cli.probe_timeout":"Per-provider probe timeout in ms","repl.provider_down":"[WARN] Provider \"{name}\" is unreachable: {error}","repl.meet_start_prompt":"Let's get acquainted. Start the interview now.","repl.meet_unavailable":"Can't start: the provider is not responding ({reason}).","repl.meet_unavailable_hint":"Start the model and try /meet again — nothing was saved.","onboarding.already":"Already running.","onboarding.non_interactive":"This command needs an interactive terminal.","onboarding.write_restricted":"in this mode only AGENTS.md is writable","repl.init_start_prompt":"Generate or improve {dir} for this workspace. Scan first, then write.","repl.init_unavailable":"Can't run init: the provider is not responding ({reason}).","repl.meet_usage":"/meet [stop] — get acquainted","repl.meet_already_hint":"Already in the get-acquainted interview. Run /meet stop to end it.","repl.meet_stop_done":"Interview ended.","repl.meet_stop_none":"No interview is running.","repl.init_usage":"/init — generate/update AGENTS.md","repl.init":"Generate or update AGENTS.md for this workspace.","repl.memory_usage":"/memory [get|set|unset|find|forget]","repl.memory_empty":"Memory is empty.","repl.memory_prefs":"Preferences:","repl.memory_set":"Saved {key}={value}","repl.memory_unset":"Removed {key}","repl.memory_not_found":"No preference \"{key}\"","repl.memory_entry_not_found":"No {category} entry #{n}","repl.memory_forgotten":"Removed {category} entry {n}","repl.meet_offer":"Shall we get acquainted? I'll ask a few questions and remember how you like to work.","repl.meet_offer_hint":"You can skip now and run /meet later.","repl.meet_done":"Done — preferences saved. See /memory.","onboarding.provider_down":"⚠ Provider is not responding — \"{cmd}\" is unavailable for now.","onboarding.provider_down_hint":"↳ Start the model and run /{cmd}. Nothing was saved.","cli.list_providers":"List providers","cli.current_provider":"Current provider:","cli.base_url":"Base URL:","cli.set_provider":"Set active provider","cli.provider_set":"Provider set to: {name}","cli.provider_name":"Provider name","cli.provider_type_label":"Provider type or label","cli.provider_base_url":"Base URL","cli.provider_api_key":"API key","cli.provider_priority":"Fallback priority (lower = tried first)","cli.provider_context_window":"Context window override for this entry","cli.provider_rpm":"Max requests per minute for this entry","cli.provider_parallel":"Max parallel tasks for this entry","cli.manage_sessions":"Manage sessions","cli.list_sessions":"List all sessions","cli.show_details":"Show session details","cli.session_id":"Session id","cli.session_id_or_prefix":"Session id (or name prefix)","cli.session_field_id":"ID:","cli.session_field_name":"Name:","cli.session_field_created":"Created:","cli.session_field_updated":"Updated:","cli.session_field_messages":"Messages:","cli.session_field_model":"Model:","cli.session_field_context":"Context:","cli.session_field_project":"Project:","cli.session_moe_events":"MoE events:","cli.delete_session":"Delete a session","cli.prune_sessions":"Delete sessions without user messages","cli.prune_dry_run":"Show what would be deleted without deleting","cli.export_session":"Export a session to a file (md, json, or jsonl)","cli.export_format":"Output format: md|json|jsonl (default md)","cli.export_out":"Output path ('-' for stdout)","cli.export_no_redact":"Do not redact secrets","cli.export_compact":"Omit tool result bodies (compact readable export)","cli.first_run":"First run detected. Running setup wizard...","cli.first_run_oneshot":"No configuration found — running with defaults. Run `mma` (no arguments) once to set up the wizard.","cli.web_setup_required":"No configuration found — opening the browser setup wizard.","cli.web.description":"Run the agent with a browser UI","cli.web.port":"fixed port (default: random)","cli.web.host":"bind address (default: 127.0.0.1)","cli.web.token":"require this token (mandatory for non-loopback)","cli.web.no_open":"do not open the browser automatically","cli.web_started":"web ui → {url} (directory: {dir})","cli.web_invalid_port":"invalid --port \"{port}\": expected an integer between 1 and 65535","cli.relaunch_failed":"Failed to relaunch the CLI: {message}","cli.prompt_arg":"Prompt to execute","cli.run_prompt":"Run a single prompt","cli.setup_saved_restart":"Settings saved. Restarting with the new configuration...","cli.unknown_cmd":"Unknown command: {name}.","cli.unknown_command":"Unknown command \"{input}\". Did you mean \"{suggestion}\"?","cli.help_hint":"Type /help for available commands.","cli.available_cmds":"\nAvailable commands:","cli.no_output":"The agent finished but produced no output. The task may be incomplete.","cli.no_agents_md":"Disable loading AGENTS.md files into system prompt","cli.dir":"Working directory for the agent (defaults to current directory)","cli.exit_on_complete":"Exit immediately when the task is done; interactive tools (question/approve) fail fast instead of blocking on stdin","cli.reasoning_level":"Set reasoning effort level (auto|none|low|medium|high|max)","cli.json":"Output the result as JSON (single-run mode)","cli.context_log":"Write the full LLM context to <session>/context.diff as a git-style diff (first snapshot full, then +/- changes)","cli.verbose":"Show full chat detail (tool bodies, lists); default is quiet","cli.security.description":"Manage security settings","cli.security.status":"Show current security configuration","cli.security.policies":"List available security policies","cli.security.set_policy":"Apply a security policy preset","cli.security.preset":"Policy preset (strict, balanced, permissive)","cli.security.invalid_preset":"Invalid preset. Available: {presets}","cli.security.policy_applied":"Security policy applied: {name}","cli.security.policy_description":"Description: {description}","cli.security.enable_encryption":"Enable session file encryption","cli.security.disable_encryption":"Disable session file encryption","cli.security.encryption_enabled":"Session file encryption enabled","cli.security.encryption_disabled":"Session file encryption disabled","cli.security.enable_audit":"Enable audit notifications","cli.security.disable_audit":"Disable audit notifications","cli.security.audit_enabled":"Audit notifications enabled","cli.security.audit_disabled":"Audit notifications disabled","cli.security.audit_stats":"Show audit notification statistics","cli.security.audit_stats_title":"Audit Notification Statistics","cli.security.total_notifications":"Total notifications","cli.security.by_severity":"By severity","cli.security.by_type":"By type","cli.security.low":"Low","cli.security.medium":"Medium","cli.security.high":"High","cli.security.critical":"Critical","cli.security.current_policy":"Current Security Configuration","cli.security.bash_enabled":"Bash command validation","cli.security.path_validation":"Path access validation","cli.security.network_validation":"Network request validation","cli.security.content_scanning":"Content scanning","cli.security.max_recursion":"Max recursion depth","cli.security.max_file_ops":"Max file operations","cli.security.rate_limit":"Rate limit","cli.security.session_encryption":"Session encryption","cli.security.audit_notifier":"Audit notifications","cli.security.available_policies":"Available Security Policies","cli.security.recommended_for":"Recommended for","cli.yes":"Yes","cli.no":"No","cli.plugins.description":"Manage plugins","cli.plugins.list":"List loaded plugins (name, version, source)","cli.plugins.all":"Include builtin plugins","cli.plugins.only_external":"(builtin plugins omitted — use --all to show them)","cli.plugins.none":"No plugins loaded","cli.plugins.header":"Plugins: {count} loaded (MMA v{mma})","cli.plugins.builtin_mark":"●","repl.help":"Show available commands","repl.help_usage":"Usage: /help","repl.exit":"Exit the REPL","repl.exit_usage":"Usage: /exit","repl.clear":"Clear the screen","repl.clear_usage":"Usage: /clear","repl.clear_hint":"Screen cleared. To start a fresh session and context: /new","repl.run":"Run a prompt through the agent","repl.run_usage":"Usage: /run <prompt>","repl.config":"Show or change settings (get / set / reset)","repl.config_usage":"Usage: /config [<key> [value]] | /config reset <key> | /config reset --all [--yes] | /config migrate","repl.reasoning":"Show reasoning status, toggle display, or set effort level","repl.reasoning_usage":"Usage: /reasoning [show|hide|level <auto|default|none|low|medium|high|max>]","repl.reasoning_level_set":"Reasoning level set to: {level}","repl.reasoning_invalid_level":"Invalid level '{level}'. Valid: {valid}","repl.verbose":"Chat verbosity (quiet, normal, verbose)","repl.verbose_usage":"Usage: /verbose [quiet|normal|verbose]","repl.verbose_set":"Chat verbosity: {level}","repl.verbose_invalid_level":"Invalid level '{level}'. Valid: {valid}","repl.last_action_none":"No recent action to show.","repl.status":"Show a compact status line","repl.status_usage":"Usage: /status","repl.security":"Show security configuration (on/off per area)","repl.plugins":"List loaded plugins","repl.plugins_usage":"Usage: /plugins [--all]","repl.sessions":"List all sessions (* active)","repl.sessions_usage":"Usage: /sessions","repl.new":"Create a new session","repl.new_usage":"Usage: /new [name]","repl.resume":"Switch to a session by id or name prefix","repl.resume_usage":"Usage: /resume <id|name>","repl.rename":"Rename the current session","repl.rename_usage":"Usage: /rename <new-name>","repl.delete":"Delete a session by id","repl.delete_usage":"Usage: /delete <session-id>","repl.skill":"Manage skills (list, loaded, load, unload, search)","repl.no_skills":"No skills available","repl.available_skills":"Available skills:","repl.no_loaded":"No skills loaded","repl.loaded_skills":"Loaded skills:","repl.budget":"Budget: {used} / {total} tokens ({remaining} remaining)","repl.skill_load_usage":"Usage: /skill load <name>","repl.skill_unload_usage":"Usage: /skill unload <name>","repl.skill_unloaded":"Skill \"{name}\" unloaded","repl.skill_not_loaded":"Skill \"{name}\" is not loaded","repl.skill_search_usage":"Usage: /skill search <query>","repl.no_skill_match":"No skills match \"{query}\"","repl.skills_matching":"Skills matching \"{query}\":","repl.skill_unknown_sub":"Unknown skill subcommand: {subcmd}","repl.skill_usage":"Usage: /skill [list|loaded|load|unload|search]","repl.agent":"Agent: ","repl.you":"You: ","repl.you_reasoning":"You [{level}]: ","repl.you_reasoning_cont":"You [{level}]… ","repl.interrupt":"Interrupted (Esc)","repl.title":"MMA REPL v{version}","repl.model":"Model:","repl.provider":"Provider:","repl.context":"Context:","repl.ctx_part_system":"system","repl.ctx_part_reserve":"reserve","repl.ctx_part_history":"history","repl.sysprompt_label":"System prompt:","repl.sysprompt_size":"{used} / {budget} tokens","repl.sysprompt_desc":"System prompt size and blocks (use --full for the text)","repl.sysprompt_usage":"Usage: /sysprompt [--full]","repl.sysprompt_full_hint":"Full prompt text hidden — run /sysprompt --full to print it.","repl.sysprompt_tokens":"System prompt ({count} tokens):","repl.excluded_blocks":"\nExcluded blocks: {count}","repl.context_usage":"Usage: /context [<size, min 1024> | system <share> | reserve <share>] (share 0.05–0.9 or e.g. 10%; system+reserve ≤ 0.95)","repl.msgs":"msgs","repl.api_line":" API: {prompt} prompt + {completion} completion = {total} total","repl.compacted":"Context compacted ({count})","repl.skills_available":"{count} available, budget: {budget} tokens","repl.plugins_active":"{count} active ({names})","repl.plugins_hidden":"({count} builtin hidden — /plugins --all to show)","repl.loaded":"[loaded]","repl.yes":"yes","repl.no":"no","repl.max_iters":"Max iters:","repl.stuck_thresh":"Stuck thresh:","repl.reasoning_label":"Reasoning:","repl.log_level":"Log level:","repl.locale":"Locale:","repl.session_label":"Session:","repl.skills_label":"Skills:","repl.plugins_label":"Plugins:","repl.mcp_label":"MCP:","repl.lsp_label":"LSP:","repl.lsp_timeout":"timeout","repl.lsp_failed":"did not start","repl.lsp_unknown":"unknown","repl.lsp":"LSP server management (Language Server Protocol) — status, restart, check, doctor","repl.lsp_usage":"Usage: /lsp [status|restart|doctor|check <path>]","repl.lsp_not_available":"LSP module not available","repl.lsp_status_header":"LSP Status:","repl.lsp_enabled":"Enabled:","repl.lsp_disabled_servers":"Disabled servers:","repl.lsp_failure_counts":"Failure counts:","repl.lsp_all_ok":"All servers operational","repl.lsp_restarting":"Resetting LSP server state...","repl.lsp_restarted":"LSP servers reset. Failed servers will be retried on next use.","repl.lsp_check_usage":"Usage: /lsp check <file-or-directory>","repl.lsp_checking":"Running LSP check on {path}...","repl.lsp_check_error":"LSP check failed: {error}","repl.lsp_doctor_header":"LSP doctor","repl.lsp_doctor_enabled":"enabled","repl.lsp_doctor_offline":"offline","repl.lsp_doctor_project":"project","repl.lsp_doctor_yes":"yes","repl.lsp_doctor_no":"no","repl.lsp_doctor_none":"no configured servers","repl.lsp_reason_ok":"ok","repl.lsp_reason_disabled":"disabled","repl.lsp_reason_not_applicable":"no matching files","repl.lsp_reason_binary_missing":"binary not found","repl.lsp_reason_offline":"offline — install the binary","repl.lsp_reason_network":"network — server download failed","repl.lsp_reason_timeout":"timeout (initialize)","repl.lsp_reason_spawn_failed":"spawn failed","repl.lsp_reason_server_error":"server error","repl.lsp_reason_deadline":"skipped (deadline)","repl.lsp_via":"via","repl.lsp_via_global":"global binary","repl.lsp_via_npx":"npx (download)","repl.lsp_doctor_hint":"locked-down network? install servers on PATH, set a registry mirror in lsp.servers.<lang>.env, or set MMA_LSP_OFFLINE=1","repl.lsp_install":"install globally: {command}","repl.work_dir":"Dir:","repl.agents_label":"Instructions:","repl.not_found":"not found","repl.disabled":"disabled (--no-agents-md)","repl.context_probe_small":"Context probe: model \"{model}\" is loaded with {actual} tokens, configured {configured} — overflow risk","repl.context_probe_big":"Context probe: model \"{model}\" supports {actual} tokens — consider \"mma context {actual}\"","repl.show":"show","repl.hide":"hide","repl.resume_hint":"Use /resume <id> or /resume <name> to switch between sessions","repl.reasoning_status":"Reasoning: {status}","repl.wizard":"Run setup wizard","repl.wizard_usage":"Usage: /wizard","repl.wizard_running":"Running setup wizard... (current config will be overwritten)","repl.provider_list":"List configured providers or hot-swap the active one","repl.provider_current":"Current provider","repl.provider_set":"Provider set to: {name}","repl.provider_usage":"Usage: /provider list | /provider use <name> | /provider add <name> [flags]\n --url <url> base API URL (fallback: known presets)\n --key <key> API key\n --priority <n> fallback order; lower = tried first\n --context-window <n> per-provider context window (tokens)\n --rpm <n> max requests/minute (default 60)\n --parallel <n> max parallel tasks (default 1)","repl.provider_add_missing_value":"Missing value for {flag}","repl.provider_add_invalid_number":"Invalid number for {flag}: '{value}'","repl.provider_switch_hint":"Switch to it with: /provider use {name}","repl.provider_flag_url":"Base API URL (fallback: known presets)","repl.provider_flag_key":"API key","repl.provider_flag_priority":"Fallback order; lower = tried first","repl.provider_flag_context_window":"Per-provider context window (tokens)","repl.provider_flag_rpm":"Max requests per minute (default 60)","repl.provider_flag_parallel":"Max parallel tasks (default 1)","repl.model_list":"List models of the active provider or switch the model","repl.model_current":"Current model","repl.model_set":"Model set to: {name}","repl.model_usage":"Usage: /model list | /model use <name>","repl.unknown_sub":"Unknown subcommand '{sub}' for /{cmd}. See usage below.","repl.help_unknown":"Unknown command '/{name}'","repl.help_aliases":"Aliases: {names}","repl.help_examples":"Examples:","repl.export":"Export a session to a file","repl.export_usage":"Usage: /export [<id|name>] [--format md|json|jsonl] [--out <path>] [--no-redact] [--compact]","config.header":"Managed settings","config.col_setting":"Setting","config.col_value":"Value","config.col_domain":"Domain","config.col_change":"Change with","config.session_line":"Session: {name} ({id}) — {count} messages","config.usage_hint":"Get: /config <key> · Set: /config <key> <value> · Reset: /config reset <key>","config.saved":"saved · reset: /config reset {key}","config.read_only_hint":"read-only","config.read_only":"'{key}' is read-only","config.unknown_key":"Unknown key '{key}'. {suggestion}","config.suggest":"Did you mean '{name}'?","config.valid_keys":"Valid keys: {keys}","config.invalid_value":"Invalid value for {key}. {hint}","config.range":"Value out of range for {key}","config.combined":"system + reserve must stay below 0.95","config.hint_string":"Expected a non-empty string","config.hint_enum":"Allowed: {values}","config.hint_bool":"Expected on/off","config.hint_share":"Expected 0.05–0.9 or a percentage (e.g. 10%)","config.hint_int":"Expected an integer ≥ {min}","config.reset_ok":"{key} restored to session-start value: {value} · saved","config.reset_unchanged":"{key} already at session value","config.reset_none":"No settings changed this session","config.reset_all_confirm":"Reset {count} changed setting(s) to session-start values? [y/N] ","config.reset_all_done":"Restored {count} setting(s) · saved","config.reset_all_needs_yes":"Refusing to reset without confirmation in non-interactive mode; pass --yes","config.reset_cancelled":"Reset cancelled","config.reset_usage":"Usage: /config reset <key> | /config reset --all [--yes]","config.alias_label":"alias of","config.group_label":"group","reasoning.status":"Reasoning: display {display} · effort {level} {auto}","reasoning.on":"on","reasoning.off":"off","reasoning.auto_on":"(auto policy)","reasoning.auto_off":"(auto policy off)","reasoning.auto_off_hint":"Auto policy off. Restore with: /config reset reasoning.mode","reasoning.display_set":"Reasoning display: {state}","reasoning.unknown_sub":"Unknown argument '{sub}'.","reasoning.sub_show":"Show reasoning content","reasoning.sub_hide":"Hide reasoning content","reasoning.sub_level":"Set reasoning effort level","verbose.status":"Verbosity: {level}","verbose.sub_quiet":"One line per action","verbose.sub_normal":"Add short result summaries","verbose.sub_verbose":"Full per-action detail","context.unknown_arg":"Unknown argument '{arg}'.","context.sub_system":"System-prompt share","context.sub_reserve":"Response-reserve share","model.not_in_list":"Note: '{name}' is not in the known model list","model.sub_list":"List models of the active provider","model.sub_use":"Switch model","provider.sub_list":"List configured providers","provider.sub_use":"Switch active provider","provider.sub_add":"Add a provider","map.sub_summary":"Show the project map summary","map.sub_refresh":"Rebuild the project index","map.sub_find":"Search the project map","lsp.sub_status":"Show LSP server status","lsp.sub_restart":"Reset disabled servers","lsp.sub_check":"Run an LSP check on a path","lsp.sub_doctor":"Diagnose LSP servers","skill.sub_list":"List available skills","skill.sub_loaded":"List loaded skills","skill.sub_load":"Load a skill","skill.sub_unload":"Unload a skill","skill.sub_search":"Search skills","export.written":"Exported to {path}","export.redacted":"secrets redacted (--no-redact to disable)","export.raw":"secrets NOT redacted","export.empty":"session has no messages — nothing exported","export.invalid_format":"Unknown format '{format}'. Use md|json|jsonl","export.missing_value":"Missing value for {flag}","export.write_failed":"Failed to write export: {error}","repl.group.general":"General","repl.group.agent":"Agent","repl.group.session":"Sessions","repl.group.skill":"Skills","setup.title":"\n MMA Setup Wizard v2\n","setup.select_provider":"\n Select provider type:","setup.select_provider_num":"\n Select provider (1-{max})","setup.select_language_num":"\n Select language (1-{max})","setup.scanning":" Scanning local LLM servers...","setup.found_servers":" Found {count} server(s):","setup.no_servers":" No local servers found. Enter URL manually.","setup.api_base":" API Base URL","setup.provider_type":" Provider type","setup.api_key":" API Key (press Enter to skip)","setup.fetching_models":" Fetching model list...","setup.available_models":" Available models:","setup.select_model":" Select model (1-{max})","setup.model_name":" Model name","setup.testing":"\n Testing chat with model \"{model}\"...","setup.ok":" OK — connection successful","setup.warning":" WARNING: could not connect — check your API endpoint and key","setup.agent_settings":"\n --- Agent settings ---","setup.context_window":" Context window (tokens)","setup.max_iters":" Max tool iterations","setup.language":"\n --- Language ---","setup.ui_lang":" UI language (en/ru)","setup.complete":"\n Setup complete!\n","setup.select_server":"\n Select server (1-{max})","setup.custom_url":"Custom URL","setup.scanning_spinner":"Scanning local LLM servers…","setup.fetching_spinner":"Fetching model list…","setup.testing_spinner":"Testing chat with \"{model}\"…","setup.security_header":"\n --- Security ---","setup.security_status_off":" Security: OFF (default — all commands allowed)","setup.security_status_on":" Security: ON (balanced policy by default)","setup.security_configure":" Configure security? (y/N)","setup.security_bash_block":" Block dangerous commands (rm, sudo, ssh, etc.)? (y/N)","setup.security_flags_block":" Block dangerous flags (--force, -rf, etc.)? (y/N)","setup.security_paths_restrict":" Restrict access to .git/, .env, node_modules/? (Y/n)","skill.already_loaded":"Skill \"{name}\" is already loaded","skill.not_found":"Skill \"{name}\" not found in any source directory","skill.no_match":"No skills match for: {task}","skill.too_large":"Skill \"{name}\" is too large ({tokens} tokens). Budget: {budget} tokens. Continue the task without this skill.","skill.exceeds_budget":"Skill \"{name}\" ({tokens} tokens) exceeds remaining budget ({remaining} tokens). Unload other skills first.","skill.loaded":"Skill \"{name}\" loaded ({tokens} tokens, {remaining} remaining)","skill.auto_loaded":"[Auto-loaded skill: {name}]","skill.prompt_hint":"Do NOT load skills automatically. Only load a skill when the user explicitly asks for it (e.g. 'use skill X' or 'load the Y skill'). Skills are listed below for reference only — do not guess which skill to use based on the task description.","skill.prompt_fallback":"If load_skill fails because a skill is too large, continue the task without it — do not stop.","skill.loaded_content":"[Skill loaded: {name}]\n{content}\n\nUse this knowledge to answer the user's question.","exec.stuck":"No progress on step {stepId} ({description}) for {iterations} iterations.","exec.stuck_recovery":"Step {stepId} — \"{description}\" — has had no progress for {iterations} iterations. Try a different approach: review what this step needs, check if dependencies are installed, or create files directly via write_file instead of shell commands. After completing the step call plan_step step={stepId} status=done.","exec.tool_errors":"Tool {tool} failed {count} times. Consider using a different tool.","exec.tool_errors_recovery":"Tool {tool} has failed {count} times in a row. Try an alternative: create files directly via write_file, use a different command, or if nothing works — skip this step via plan_step step=N status=skipped with a note explaining why.","exec.repetitive_tool":"Called {tool} {count} times with identical arguments and result. Try a different approach — create files directly, change arguments, or check process status via process_log.","exec.repetitive_process_log_hint":"You are polling a background process — call process_wait once instead of polling process_log.","exec.consecutive_failures_recovery":"{count} consecutive tool failures. Create files directly via write_file instead of terminal commands. Check that dependencies are installed (npm install). Do not run build/tests until all files are created.","exec.bash_flailing_recovery":"bash failed in {fails} of the last {window} attempts. Stop using shell commands for file operations on this machine — they do not work. Use the dedicated tools instead: read_file (the header shows line counts), write_file, edit_file, file_info (file size), glob/grep for search","exec.bash_flailing":"bash failed in {fails} of the last {window} attempts.","exec.consecutive_failures":"{count} consecutive tool failures.","exec.honest_stop":"STOP retrying. {count} consecutive tool batches failed or were blocked with no successful call in between — more variants of the same action will not help. Do NOT try another command, flag, or workaround for this. Write your final text answer NOW: state plainly what was done, what could NOT be done or verified, and why. Do NOT paste output you did not actually receive from a tool.","exec.readonly_directive":"You have only been reading, searching, and fetching for {count} steps with no result committed. Stop exploring now: either WRITE your final answer using what you already have, or make the concrete change the task needs. Do not fetch or search the same source again.","exec.read_only_loop":"No write/exec for {count} tool calls — the agent is only reading/exploring.","exec.read_only_loop_recovery":"{count} consecutive read-only tool calls (read_file/glob/grep/browser) with no writes. STOP exploring and make the edit the task requires: read the file, then call write_file or edit_file. If you cannot finish the task, ask the user instead of re-reading the same files.","exec.plan_warning":"Current plan step {step} is \"{description}\", but {tool} is being called for files outside this step. Complete the current step first, then call plan_step step={step} status=done before moving to the next step.","exec.plan_blocked":"{max} consecutive calls outside the current step. Finish step {step} before proceeding — other steps should wait until this one is complete.","exec.off_track":"Step {stepId} — \"{description}\" — but you are using {tool} on a different path. Return to the current step.","exec.step_gate_deps":"[⚠ Step {step} \"{description}\": dependencies are not installed. First run the install command (npm install, pip install, etc.). Verify the lock file or dependency directory exists. If this step is NOT actually needed (no external dependencies), skip it: plan_step step={step} status=skipped note=\"deps not needed\".]","exec.step_gate_deps_force":"[⚠ Step {step}: dependencies still not installed (no lock file) — 2nd warning. If this step is NOT needed, IMMEDIATELY call: plan_step step={step} status=skipped note=\"deps not needed\". If it IS needed, run the install command right now. Do NOT make other tool calls before updating the plan.]","exec.step_gate_empty":"[⚠ Step {step}: files exist but appear empty: {files}. Add real code to these files before advancing to the next step.]","exec.step_gate_ok":"[✓] Step {step} completed and verified. MOVING to step {nextStep}: \"{nextDesc}\". Work ONLY on this step.","exec.step_gate_last":"[✓] Step {step} completed — that was the final step. Verify everything together and provide the final answer.]","exec.step_gate_manual":"[⚠ Step {step}: its deliverables look present, but auto-advance is off. If the step is truly done, mark it yourself: plan_step step={step} status=done. If not, continue working on it.]","exec.audit_pass":"[✓] Task complete: {done}/{total} steps done, {files} files verified","exec.audit_pending":"[✗] Task incomplete: {done}/{total} steps done — remaining steps are not marked done","exec.audit_fail":"[✗] Task incomplete: {done}/{total} steps done, {files} files missing","exec.audit_leftovers":"[✗] Task incomplete: {done}/{total} steps done, {files} files from delete-steps still exist","exec.audit_fail_tests":"[✗] Task incomplete: {done}/{total} steps done, tests FAILING: {failed} failed / {passed} passed — {detail}","exec.audit_fail_typecheck":"[✗] Task incomplete: {done}/{total} steps done, {missing} files missing, typecheck error: {typeError}","exec.audit_incomplete":"❗ Final audit incomplete: {summary}. Task is NOT finished. Remaining steps: {steps}. Resolve them - pick ONE path: (a) if the step's deliverable already exists on disk, mark it done (plan_step step=N status=done); (b) if the step is no longer needed, mark it skipped; (c) if the plan drifted from reality (wrong file names, changed approach), re-plan to align it. Do NOT retry plan_step repeatedly without changing anything.","exec.mass_edit_warning":"⚠️ Plan affects {count} files — review the full list before proceeding.","exec.escalation":"\n\n⚠️ Agent stuck on step {stepId} ({description}). Escalating to user — please provide guidance.","exec.escalation_directive":"You have been stuck for several attempts. Stop repeating the same action and pick ONE of these: (1) switch to a fundamentally different approach, (2) search the exact error text with web_search (or the error-search tool), (3) ask the user a short clarifying question, or (4) if the step cannot be completed, use plan_step step=<n> status=skipped with a note (or re-plan). Explain your choice briefly.","exec.test_churn_nudge":"You have edited the test/spec file \"{file}\" several times in a row without changing any production code. If the tests fail, fix the PRODUCTION code under test (not the test) unless the test itself is genuinely wrong — and if so, explain why. If you intended test-first, now write the implementation.","exec.script_workaround_nudge":"A security restriction already blocked one of your commands. Writing a shell script (.bat/.cmd/.sh/.ps1) to run it another way does NOT lift the restriction and usually just fails. Instead: use write_file for file output, run one plain command per call, pass \"workdir\" instead of \"cd\", or ask the user.","exec.hints":"\n[Hints]\n{hints}","exec.file_rewrite_warning":"⚠️ File {file} has been rewritten {count} times. Consider a different approach — the current fix strategy is not working.","exec.forbidden_cmd":"STOP using \"{cmd}\" via the bash tool — it is not a native Windows cmd.exe command and has failed repeatedly this session. Use the dedicated tool instead: grep → the grep tool, ls/dir → list_dir, find → glob, rm → delete_file, sed → edit_file, touch → write_file, which → `where`, cp/mv → move_file, diff → read_file. Do NOT call bash for this purpose again.","exec.error_search_results":"The error \"{sig}\" has occurred {count} times. Web search found:\n{results}\nApply a matching solution from these results. If none is relevant — do NOT repeat the same approach; change strategy or honestly report being stuck.","exec.error_search_failed":"Web search returned nothing for \"{query}\".","exec.error_search_no_query":"Error output is not meaningful — skipping the web search.","exec.npm_exec_hint":"\"could not determine executable to run\" — no \"bin\" for that package/script. Use \"npm run <script>\" (script must exist in package.json) or \"bunx <pkg>\" for a package that declares a bin.","exec.interactive_hint":"the command needed interactive input but the shell has no TTY (prompt aborted). Re-run it non-interactively — pass every required flag/argument (e.g. `bun create vite <name> --template react-ts` instead of a bare interactive scaffold).","exec.hidden_tool_hint":"\"{tool}\" is not a shell command — it is an MMA tool that is currently hidden. Call the enable_tools tool with tags [\"shell\"] to unlock it; it becomes available on the next iteration.","exec.tool_as_command_hint":"\"{tool}\" is an MMA tool, not a shell command. Call it as a tool (function call), not through bash.","exec.task_reminder":"Task: {task}. Continue making progress — do not repeat failed actions.","hall.max_retries_exhausted":"Model returned empty or insufficient responses after multiple retries","hall.short_response":"Response too short or empty","hall.repetitive":"Response too repetitive ({pct}% overlap)","hall.uncertainty":"Uncertainty markers: {markers}","hall.unknown_paths":"Mentioned file paths not found in known files: {paths}","hall.contradiction_llm":"Contradicts an earlier decision{reason}","hall.claim_contradiction":"The answer claims success, but a recent tool result indicates a problem ({tool}: {snippet}). Either verify and fix, then re-run the check — or soften the claim to match the evidence (e.g. staged, will appear shortly).","hall.claim_artifact":"The answer presents {path} as done, but on disk: {detail}. Either fix the file and re-verify by actually reading it — or soften the claim to what was really checked.","hall.claim_output_unverified":"The answer shows output as if produced by a run ({detail}). Either execute it with an allowed tool and quote the real output — or label it clearly as expected/example output.","hall.claim_web_unverified":"The answer states figures ({detail}) that do not appear in any page actually fetched. Either find and quote a source, or mark those values as unverified/approximate and say the pages could not be read.","hall.claim_file_not_created":"You stated a file was saved ({detail}), but no file was written this turn. Actually create it with write_file (the user asked for a file), or correct the statement and deliver the content.","hall.uncertainty_prefix":"\n\n[⚠️ Uncertainty] ","browser.repeated_action":"You have repeated the same action ({action}) {threshold} times. Try a different approach: use \"snapshot\" to re-read the page, try different element numbers, or navigate to a different URL.","browser.unknown_action":"Unknown action: {action}","browser.error":"Browser error: {message}","browser.no_page":"No page open. Use action \"open\" first.","browser.url_required":"URL is required","browser.create_page_failed":"Failed to create page","browser.nav_failed":"Navigation failed: {message}","browser.invalid_target":"Invalid target. Provide element number from snapshot.","browser.click_failed":"Click failed: {message}. Check element number.","browser.invalid_target_short":"Invalid target.","browser.text_required":"Text is required.","browser.type_failed":"Type failed: {message}","browser.direction_invalid":"Direction must be: up, down, top, bottom","browser.scroll_failed":"Scroll failed: {message}","browser.closed":"Browser closed.","browser.no_page_short":"No page","browser.no_elements":"(no interactive elements on page)","browser.more_elements":"... and more elements not shown. Use scroll or search to find others.","browser.content_header":"Content:","browser.console_header":"Console:","browser.network_errors_header":"Network errors:","browser.truncated":"... (truncated)","pipeline.invalid":"Invalid pipeline: name and steps required","pipeline.step_missing_fields":"Step missing required fields (id, agent, prompt): {step}","pipeline.circular":"Circular dependency: {stepId}","plugin.loaded":"Loaded plugin: {name}","plugin.skipped":"Skipped incompatible plugin: {entry} ({message})","plugin.incompatible":"Skipped plugin {name}: requires MMA v{min}, current is v{current}","plugin.dedup_older":"Plugin {name} v{version} skipped: a newer version is already loaded","migration.detected":"[MMA] Detected old config. {summary}","migration.summary":"[MMA] {summary}","migration.config_bak":"- config → config.json.bak","migration.dir_bak":"- .mma/ → .mma.bak/ ({count} files)","migration.migrated":"Migrated:","migration.not_needed":"No migration needed","ui.error_prefix":"✗ ","ui.success_prefix":"✓ ","ui.warning_prefix":"⚠ ","ui.thinking":"Thinking…","ui.thinking_label":"thinking","ui.thinking_label_1":"thinking","ui.thinking_label_2":"working it out","ui.thinking_label_3":"considering","ui.action_fallback":"Action","ui.actions_summary":"{count} actions","ui.plan_update":"step {step} → {status}","ui.todo_action":"{action} · {count}","ui.tool_running":"{tool}…","ui.step_context":"step {id}: {desc}","ui.draft_retracted":"↳ draft rejected by verification, refining…","indexer.map_header":"Project map","indexer.top_directories":"Top directories","indexer.files":"Files","indexer.empty":"No indexed files","indexer.and_more":"... and {count} more files","indexer.project_map_desc":"Get a map of the project: summary of files, languages, and exports. Use action 'find' to search files by path or exported name, 'symbol' to locate a symbol definition, 'outline' for a file's symbol table of contents, 'refresh' to rebuild the index.","indexer.project_map_action_desc":"Action: summary, refresh, find, symbol, or outline","indexer.project_map_query_desc":"Search query: matches file path/exported names (find), a symbol name (symbol), or a file path (outline)","indexer.summary":"Project map: {summary}","indexer.refreshed":"Project map refreshed: {summary}","indexer.not_indexed":"Project has not been indexed yet","indexer.find_results":"Found {count} matching files:\n{results}","indexer.find_more":"... and {count} more matches","indexer.symbol_results":"Found {count} symbol definitions:\n{results}","indexer.outline_empty":"(no symbols extracted)","indexer.no_matches":"No matching files for \"{query}\"","indexer.truncated":"[!] Index truncated at {max} files (raise indexer.maxFiles to cover the whole tree)","indexer.duplicates":"Duplicate basenames (verify which file is the real source): {names}","indexer.stack_deps":"deps","indexer.stack_dev":"dev","indexer.stack_scripts":"scripts","tool.friendly.project_map":"Project map","config.decryption_warning":"Warning: Failed to decrypt config: {error}","config.encryption_warning":"Warning: Failed to encrypt config: {error}","config.migrate_start":"Migrating config to domain format...","config.migrate_done":"Migration complete. Created {count} domain files. Legacy saved as config.json.bak.","config.migrate_no_legacy":"No legacy config.json found. Already using domain format.","config.migrate_error":"Migration failed: {error}","config.legacy_hint":"Config: using legacy config.json. Run \"mma config migrate\" to switch to domain format.","config.parse_failed":"Warning: failed to parse {path} — falling back to defaults. Fix or delete the file to restore your settings.","image.source_required":"Image source is required. Provide a file path, URL, or \"clipboard\".","image.clipboard_empty":"Clipboard does not contain an image. Copy an image first (e.g. screenshot with Win+Shift+S).","image.not_found":"Image file not found: {path}","image.no_context":"No context manager available. Image can only be attached during an active session.","image.attached":"Image attached from {source} ({size}). It will be included in the next message.","image.error":"Failed to load image: {message}","tool.friendly.attach_image":"Attach image","repl.image":"Attach image","repl.image_usage":"/image <path|url|clipboard> — attach an image to the next message","tool.friendly.remember":"Remember","tool.friendly.recall":"Recall","tool.remember.preference":"Remembered: {key} = {value}","tool.remember.entry":"Remembered: {category} — \"{entry}\"","tool.remember.key_required":"Key is required for preferences","tool.remember.entry_required":"Entry text is required","tool.recall.empty":"Nothing found for \"{query}\"","tool.recall.no_memory":"Memory is empty","tool.recall.search_results":"{category} results:\n{results}","ctx.compactions":"compactions: {count}","ctx.quality":"quality: {percent}%","ctx.delta_pos":"ctx +{tokens}","ctx.delta_neg":"ctx -{tokens} ","ctx.delta_zero":"ctx +0","updater.check_error":"[updater] update check failed: {error}","updater.available":"[updater] Update available: {current} → {latest}. Run `npm install -g micro-models-agent` to upgrade.","updater.installing":"[updater] Installing {latest} globally (current: {current})…","updater.installed":"[updater] Installed {latest}. Restart MMA to use it (was {current}).\n{changelog}","updater.install_failed":"[updater] Failed to install {latest}: {error}. Update manually with `npm install -g micro-models-agent`.","cli.changelog_title":"Changelog (micro-models-agent@{version}):","cli.changelog_not_found":"Changelog not found for this installation.","cli.changelog_range":"Changes since {from}:","tools.enable_no_tags":"enable_tools requires at least one tag in the \"tags\" array.","tools.enable_no_executor":"Tool executor is not available — cannot enumerate enabled tools.","tools.enable_already_active":"Tool tags already active: {tags}.","tools.enable_added":"Enabled tool tags: {tags}. Available tools now: {tools}","tools.hidden_header":"Additional tools (enable on demand via enable_tools or route to subagent tool_tags):","tool.friendly.enable_tools":"Enable tools","tool.friendly.set_thinking":"Set reasoning level","tool.thinking_set":"Reasoning level: {level} ({reason})","tool.thinking_set_clamped":"Reasoning level: {level} (clamped from request, {reason})","tool.thinking_cooldown":"Reasoning override deferred ({remaining} iterations until available). Current: {current}","tool.thinking_invalid_level":"Invalid reasoning level: {level}. Use: none, low, high, max","reasoning.probe_failed":"Reasoning effort mechanism not supported by this backend. Dynamic control disabled.","reasoning.mode_set":"Reasoning mode: {mode}","reasoning.current":"Reasoning: {level} ({mode})","reasoning.invalid_mode":"Invalid reasoning mode: {mode}. Use: auto, default, none, low, medium, high, max","cli.provider_base_hint":"Base URL set to: {baseUrl}","cli.add_provider":"Add a provider to the config","cli.provider_no_url":"No base URL for provider \"{name}\". Pass --url.","cli.provider_name_conflict":"Provider \"{name}\" already exists — choose another name.","cli.provider_added":"Provider added: {name}","cli.provider_switch_hint":"Switch to it with: mma provider use <name>","repl.cost":"Total cost: {cost}","repl.cost_breakdown":"By provider: {breakdown}","repl.tokens":"Tokens used: {tokens}","repl.cache":"Cache: {hit}% hit · saved {saved}","repl.cache_nosave":"Cache: {hit}% hit","repl.prefix":"Prefix stable: {stable}% · broke: {cause}","cache.cause.system":"system prompt","cache.cause.tools":"tool set","cache.cause.history":"history","cache.cause.volatile":"volatile content","cache.cause.unknown":"unknown","cli.session_usage":"API usage: {prompt} prompt + {completion} completion = {total} tokens","cli.session_cache":"Cache: {hit}% hit ({cached} cached / {uncached} uncached)","cli.usage":"Show provider balance/usage (OpenRouter)","cli.usage_unsupported":"Provider \"{provider}\" does not expose an API balance. Only OpenRouter does; OpenCode Zen/Go show it in the web dashboard.","cli.usage_no_key":"No API key configured for the active provider.","cli.usage_error":"Failed to fetch balance: {error}","cli.usage_key_usage":"Key usage: {usage}","cli.usage_key_limit":"Key limit: {limit} · remaining {remaining}","cli.usage_balance":"Balance: {balance}","cli.usage_account":"Account: {credits} purchased · {used} used","cli.usage_empty":"No balance information returned.","repl.ctrl_c_interrupt":"\n[Ctrl+C] Stopping agent... (press again to force)","repl.force_exit":"\nForcing exit — background cleanup may be incomplete.","exec.stop_directive":"STOP. Step {stepId} (\"{description}\") took {iterations} iterations with no progress. DO NOT continue this step. Immediately call: plan_step step={stepId} status=done (if code works despite warnings) OR plan_step step={stepId} status=skipped note=\"reason\". Do NOT make any other tool calls before updating the plan.","exec.test_runner_fail":"[test-runner] {framework}: {failed} test(s) FAILING, {passed} passing — do NOT mark verification steps as done while tests fail. Investigate the failures, fix the code, then re-run the tests.","exec.test_runner_pass":"[test-runner] {framework}: all {passed} test(s) passing.","plan.subtasks_done":"All sub-tasks done — call plan_step step={stepId} status=done to complete this step.","plan.no_subtasks":"(no sub-tasks)","plan.step_label":"Step {stepId}: {description}","exec.hint_deps":"Check if a lock file exists (package-lock.json, poetry.lock). If missing, run the install command first.","exec.hint_test":"Make sure the source files exist and have real code before running tests.","exec.hint_build":"Check that all dependencies are installed and source files are not empty.","exec.hint_deploy":"Verify credentials and network access before deploying.","exec.hint_repetitive":"You are calling the same tool repeatedly with the same arguments. Try a different approach.","exec.hint_consecutive":"Multiple different tools are failing. Check if the environment is set up correctly.","exec.hint_read_only":"You have made many read-only tool calls (read_file/glob/grep/browser) without writing anything. Stop exploring — make the edit/write the task needs, or use the plan tool to decide next steps.","moe.replan_started":"🔄 Re-plan {cycle}/{max}: executing updated plan...","moe.executing":"⚙️ Executing {count} subtasks (cycle {cycle})...","moe.execution_complete":"Execution complete: {succeeded}/{total} succeeded","moe.cycles_exhausted":"Max re-plan cycles ({max}) reached — returning partial results","moe.partial_result":"Partial result","moe.planning":"🤖 Planning with MoE mode...\n","moe.plan_fallback":"⚠️ Plan validation failed. Falling back to single-agent mode.\n","moe.plan_autofixed":"🔧 Auto-fixed {count} plan issues.\n","moe.plan_failed":"MoE plan failed: {error} — falling back to single-agent","moe.no_orchestrator":"MoE enabled but no planner model or provider is available — falling back to single-agent. Configure an active provider (or orchestrator.model).","moe.scope_approved":"🔓 Scope expanded for \"{subtask}\": {files}","moe.scope_rejected":"⛔ Scope request rejected for \"{subtask}\"","prompt.overflow.compressing":"System prompt overflow: compressing {count} block(s) before the first run — this may take a while on a local model.","prompt.overflow.summarizing":"System prompt overflow: summarizing \"{label}\" ({original} tok → {budget} tok budget) with the model…","prompt.overflow.truncating":"System prompt overflow: truncating \"{label}\" ({original} tok) — summarization unavailable.","prompt.overflow.summarize_failed":"System prompt overflow: summarization failed for \"{label}\": {error} — falling back to truncation.","prompt.overflow.hint_needed":"the prompt needs ~{needed} system tokens (current budget: {window} × {fraction} = {budget})","prompt.overflow.hint_window":"raise contextWindow to at least {required} (standard size {recommended}) — {how}","prompt.overflow.hint_fraction":"or keep the window and raise contextBudget.systemPrompt to ~{fraction} (run: mma context --system {fraction})","prompt.overflow.exceeded":"Prompt overflow: the system prompt needs ~{needed} tok (budget {budget} tok); \"{label}\" ({original} tok) was {mode} to {resolved} tok. To fit everything fully, {hint}.","prompt.overflow.failed":"Prompt overflow resolution failed: {error} — oversized blocks will be dropped.","prompt.overflow.startup":"Startup check: the system prompt needs ~{needed} tok (budget: {budget} tok); {block} ({original} tok) will be summarized/truncated before the first run. To include everything fully, {hint}.","tool.session_info.no_active":"No active session","tool.session_info.result":"Session: \"{name}\" ({id})\nModel: {model}\nProvider: {provider}\nContext window: {contextWindow} tokens\nMessages: {messages}\nCreated: {createdAt}\nUpdated: {updatedAt}","tool.session_info.context":"Context used: {used} / {budget} tokens ({percent}%)","tool.friendly.session_info":"Session info","cli.map.description":"Work with the project index / map","cli.map.action":"Action: summary (default), refresh, find","cli.map.query":"Search query for the find action","repl.map":"Show the project map / index (summary, refresh, find)","repl.map_usage":"Usage: /map [summary|refresh|find <query>]","map.refreshed":"Project map refreshed","map.find_usage":"Usage: map find <query>","web.topbar.new_chat":"new chat","web.topbar.settings":"settings","web.topbar.all_sessions":"all sessions","web.topbar.sidebar":"sidebar","web.topbar.close":"close","web.sessbar.prev":"previous session","web.sessbar.next":"next session","web.conn.reconnecting":"reconnecting…","web.i18n.stale":"translations updated — restart the server","web.i18n.reload":"reload page","web.sidebar.plan":"plan","web.sidebar.session":"session","web.sidebar.usage":"usage","web.sidebar.env":"environment","web.sidebar.tab_session":"Session","web.sidebar.tab_map":"Map","web.sidebar.tab_trace":"Trace","web.sidebar.tab_lsp":"LSP","web.sidebar.tab_files":"Files","web.sidebar.lsp_what":"LSP — editor-grade diagnostics","web.sidebar.lsp_status":"status","web.sidebar.lsp_enabled":"enabled","web.sidebar.lsp_offline":"offline","web.sidebar.lsp_check":"Run check","web.sidebar.lsp_checking":"checking…","web.sidebar.lsp_not_checked":"not checked yet","web.sidebar.lsp_none":"no configured servers","web.sidebar.lsp_unavailable":"LSP unavailable","web.sidebar.lsp_via":"via","web.sidebar.lsp_via_global":"global binary","web.sidebar.lsp_via_npx":"npx","web.sidebar.lsp_reason_ok":"ok","web.sidebar.lsp_reason_disabled":"disabled","web.sidebar.lsp_reason_not_applicable":"no matching files","web.sidebar.lsp_reason_binary_missing":"binary not found","web.sidebar.lsp_reason_offline":"offline — install the binary","web.sidebar.lsp_reason_network":"network — server download failed","web.sidebar.lsp_reason_timeout":"timeout (initialize)","web.sidebar.lsp_reason_spawn_failed":"spawn failed","web.sidebar.lsp_reason_server_error":"server error","web.sidebar.lsp_reason_deadline":"skipped (deadline)","web.sidebar.lsp_info":"Info and setup","web.sidebar.lsp_switch_enabled":"LSP enabled","web.sidebar.lsp_switch_offline":"Offline (global binaries only)","web.sidebar.lsp_offline_hint":"Offline mode skips npx entirely — install the servers below globally.","web.sidebar.lsp_install_title":"Manual install","web.sidebar.lsp_copy":"copy","web.sidebar.lsp_copied":"copied","web.sidebar.lsp_busy":"wait for the current turn to finish","web.sidebar.map_status":"status","web.sidebar.map_ready":"ready","web.sidebar.map_indexing":"indexing…","web.sidebar.map_stale":"stale","web.sidebar.map_updated":"updated","web.sidebar.map_never":"never","web.sidebar.map_today":"today, {time}","web.sidebar.map_watcher":"watcher","web.sidebar.map_on":"on","web.sidebar.map_off":"off","web.sidebar.map_files":"files","web.sidebar.map_symbols":"symbols","web.sidebar.map_tokens":"tokens","web.sidebar.map_root":"root","web.sidebar.map_languages":"languages","web.sidebar.map_reindex":"Re-index","web.sidebar.map_reindexing":"re-indexing…","web.sidebar.map_reindex_failed":"re-index failed","web.sidebar.trace_empty":"no events yet","web.sidebar.trace_turn":"turn {n}","web.sidebar.trace_text":"composing… {count} chars","web.sidebar.trace_plan":"plan update","web.sidebar.trace_question":"question","web.sidebar.trace_status":"status","web.sidebar.trace_log":"log · {level}","web.sidebar.trace_retract":"draft retracted","web.sidebar.trace_index":"index · {phase}","web.sidebar.trace_critic":"critic · {status}","web.sidebar.trace_moe":"moe","web.sidebar.trace_compaction":"compaction","web.sidebar.trace_probe":"context probe","web.sidebar.trace_usage":"llm usage","web.sidebar.trace_audit":"audit","web.sidebar.trace_claim":"claim retry · {kind}","web.sidebar.trace_output":"output","web.sidebar.detail_metadata":"metadata","web.sidebar.detail_arguments":"arguments","web.sidebar.detail_output":"output","web.sidebar.detail_error":"error","web.sidebar.detail_text":"text","web.sidebar.detail_plan":"plan","web.sidebar.detail_reasoning":"reasoning","web.sidebar.detail_status":"status","web.sidebar.detail_ok":"ok","web.sidebar.detail_fail":"failed","web.sidebar.detail_duration":"duration","web.sidebar.detail_time":"time","web.sidebar.detail_tool_call":"tool call","web.sidebar.detail_session":"session","web.sidebar.detail_turn":"turn","web.sidebar.detail_iteration":"iteration","web.sidebar.detail_provenance":"session-log provenance","web.sidebar.detail_provenance_count":"{n} assistant messages in log","web.env.dir":"dir","web.env.agents":"AGENTS.md","web.env.map":"map","web.env.agents_disabled":"disabled","web.env.agents_none":"not found","web.env.map_not_indexed":"not indexed","web.env.files_one":"{count} file","web.env.files_few":"{count} files","web.env.files_many":"{count} files","web.env.symbols_one":"{count} symbol","web.env.symbols_few":"{count} symbols","web.env.symbols_many":"{count} symbols","web.env.tokens_one":"~{count} token","web.env.tokens_few":"~{count} tokens","web.env.tokens_many":"~{count} tokens","web.usage.session":"session","web.usage.copy_id":"copy session id","web.usage.model":"model","web.usage.context":"context","web.usage.cache":"cache","web.usage.cost":"cost","web.usage.compactions":"compactions","web.usage.part_system":"instructions","web.usage.part_tools":"tools","web.usage.part_history":"dialogue","web.usage.part_reserve":"response reserve","web.usage.part_free":"free","web.usage.quality":"quality","web.usage.probe":"probe","web.usage.probe_loaded":"{actual} loaded","web.usage.probe_low":"{actual} loaded · configured {configured}","web.start.label":"start:","web.start.session":"session","web.turn.tools":"{count} tools","web.question.custom":"own answer…","web.question.custom_send":"send","config.key.model":"model","config.key.provider.active":"active provider","config.key.contextWindow":"context window","config.key.contextBudget.systemPrompt":"system prompt share","config.key.contextBudget.responseReserve":"response reserve share","config.key.showReasoning":"show reasoning","config.key.reasoning.mode":"reasoning mode","config.key.ui.verbosity":"verbosity","config.key.maxToolIterations":"max tool iterations","config.key.stuckThreshold":"stuck threshold","config.key.moe.enabled":"MoE","config.key.moe.maxReplanCycles":"MoE re-plan cycles","config.key.orchestrator.model":"planner model","config.key.orchestrator.provider":"planner provider","config.key.orchestrator.contextWindow":"planner context window","config.key.critic.enabled":"verifier (critic)","config.key.critic.model":"verifier model","config.key.critic.provider":"verifier provider","config.key.critic.tools":"verifier checks","config.key.critic.maxCalls":"verifier max calls","config.key.critic.maxRepairCycles":"verifier repair cycles","config.key.critic.timeoutMs":"verifier timeout (ms)","config.key.logLevel":"log level","config.key.locale":"language","config.key.version":"version","config.key.security.enabled":"security","config.key.security.paths.enabled":"restrict file paths","config.key.security.contentScan.enabled":"scan file content","config.key.security.sessionEncryption.enabled":"encrypt session files","config.enum.silent":"silent","config.enum.error":"error","config.enum.warn":"warning","config.enum.info":"info","config.enum.debug":"debug","config.enum.quiet":"quiet","config.enum.normal":"normal","config.enum.verbose":"verbose","config.enum.auto":"auto","config.enum.rg":"ripgrep","config.enum.grep":"grep","config.enum.js":"built-in JS","config.enum.default":"default","config.enum.off":"off","config.enum.ledger":"tool ledger","config.enum.line":"line","config.enum.meta":"hints row","config.enum.full":"full width","config.enum.compact":"compact","config.enum.legacy":"legacy","config.enum.v2":"v2","config.enum.comfortable":"comfortable","config.enum.large":"large","config.enum.none":"none","config.enum.low":"low","config.enum.medium":"medium","config.enum.high":"high","config.enum.max":"max","config.enum.en":"English","config.enum.ru":"Russian","config.enum.security_block":"security block","config.enum.bash_command":"bash command","config.enum.file_operation":"file operation","config.enum.network_request":"network request","config.enum.tool_call":"tool call","config.enum.authentication":"authentication","config.enum.configuration_change":"config change","config.enum.session_start":"session start","config.enum.session_end":"session end","config.desc.model":"Model used for the main agent.","config.desc.provider.active":"Which configured provider is used.","config.desc.contextWindow":"Total context size in tokens (system prompt + history + reserve).","config.desc.contextBudget.systemPrompt":"Share of the context reserved for the system prompt (e.g. 10%).","config.desc.contextBudget.responseReserve":"Share of the context reserved for the model's response.","config.desc.showReasoning":"Show the model's reasoning in the chat.","config.desc.reasoning.mode":"When to request/emit reasoning (auto follows the model).","config.desc.ui.verbosity":"How much detail the chat shows for actions and tools.","config.desc.maxToolIterations":"Hard cap on tool-call iterations per turn.","config.desc.stuckThreshold":"Repeated identical actions before the agent is nudged to change approach.","config.desc.moe.enabled":"Agent-level MoE: plan → parallel experts → verify (uses the orchestrator provider).","config.desc.moe.maxReplanCycles":"Max plan→execute→verify cycles before a partial result is accepted.","config.desc.critic.enabled":"In-loop verifier that reviews work on mutations and before finishing.","config.desc.critic.model":"Dedicated verifier model (empty = active model).","config.desc.critic.provider":"Dedicated verifier provider config (empty = active provider).","config.desc.critic.tools":"Let the verifier run bounded read-only file checks before the final verdict.","config.desc.critic.maxCalls":"Hard cap on verifier LLM calls per run.","config.desc.critic.maxRepairCycles":"Bounded repair cycles triggered by a critical verdict.","config.desc.critic.timeoutMs":"Verifier call timeout (fail-open).","config.desc.logLevel":"Diagnostic log verbosity.","config.desc.locale":"Language of the interface and agent messages.","config.desc.version":"Installed MMA version.","config.desc.security.enabled":"Master switch for the security module (path checks, content scans, limits).","config.desc.security.paths.enabled":"Restrict file operations to the workspace and block paths outside it.","config.desc.security.contentScan.enabled":"Scan file contents for dangerous patterns before writing.","config.desc.security.sessionEncryption.enabled":"Encrypt saved session logs on disk.","config.desc.webToken":"Token required for non-localhost access to this web UI (set via --token / MMA_WEBUI_TOKEN).","web.settings.title":"settings","web.settings.general":"General","web.settings.model":"Model & Provider","web.settings.context":"Context","web.settings.reasoning":"Reasoning","web.settings.agent":"Agent","web.settings.network":"Network","web.settings.browser":"Browser","web.settings.sessions":"Sessions","web.settings.ui":"UI & Theme","web.settings.memory":"Memory","web.settings.skills":"Skills","web.settings.plugins":"Plugins · MCP","web.settings.security":"Security","web.settings.advanced":"Advanced","web.settings.search_placeholder":"search settings","web.settings.search_empty":"no matching setting","web.settings.table_invalid":"fill the required fields first ({field})","web.settings.sec.general.interface":"Interface","web.settings.sec.general.agent":"Agent loop","web.settings.sec.general.agent.desc":"How long and how persistently the agent works before it stops.","web.settings.sec.general.provider":"Providers","web.settings.sec.model.tuning":"Performance","web.settings.sec.model.tuning.desc":"Token budget and how the model is loaded into memory.","web.settings.sec.model.capabilities":"Capabilities","web.settings.sec.model.capabilities.desc":"Manual overrides for vision/tools when probing a model gets it wrong.","web.settings.sec.context.window":"Context window","web.settings.sec.context.window.desc":"Total window and how it is split between the system prompt, the reply and history.","web.settings.sec.context.compaction":"Compaction","web.settings.sec.context.compaction.desc":"When old history is summarised to free space.","web.settings.sec.context.instructions":"Instructions","web.settings.sec.context.instructions.desc":"What happens when AGENTS.md or the project map is too large for the prompt.","web.settings.sec.context.indexer":"Project index","web.settings.sec.context.indexer.desc":"How the project map is built: file cap and whether .gitignore is respected.","web.settings.sec.context.log":"Context log","web.settings.sec.context.log.desc":"Write every prompt sent to the model to a diff file next to the session.","web.settings.sec.reasoning.display":"Display","web.settings.sec.reasoning.effort":"Effort","web.settings.sec.reasoning.effort.desc":"Stop overrides the range — auto picks a level per step inside it.","web.settings.sec.agent.moe":"Mixture of experts","web.settings.sec.agent.moe.desc":"Split work into expert subtasks with a planner; slower but stronger on multi-step tasks.","web.settings.sec.agent.critic":"Critic","web.settings.sec.agent.critic.desc":"A second pass that reviews the agent's own work before it answers.","web.settings.sec.agent.tools":"Tools & skills","web.settings.sec.agent.tools.desc":"Which tools are visible up front and how much of the prompt skills may use.","web.settings.sec.agent.subagent":"Sub-agents","web.settings.sec.agent.subagent.desc":"How results from sub-agents come back and how they are parallelised.","web.settings.sec.agent.hallucination":"Hallucination check","web.settings.sec.agent.hallucination.desc":"Run a consistency pass on the reply before showing it.","web.settings.sec.network.web":"Web search","web.settings.sec.network.web.desc":"Master switch for the web_search tool.","web.settings.sec.network.error":"Automatic error search","web.settings.sec.network.error.desc":"Search the web when the same error repeats.","web.settings.sec.browser.main":"Browser","web.settings.sec.browser.limits":"Limits","web.settings.sec.browser.limits.desc":"Caps that keep a page snapshot small enough for the context window.","web.settings.sec.browser.viewport":"Viewport & timeouts","web.settings.sec.sessions.main":"Sessions","web.settings.sec.sessions.main.desc":"Saving, naming and how many past sessions are kept.","web.settings.sec.sessions.isolation":"Isolation","web.settings.sec.sessions.isolation.desc":"Keep plugins and temp files separate per session.","web.settings.sec.ui.chat":"Chat output","web.settings.sec.ui.chat.desc":"Status lines, progress and context meters in the chat feed.","web.settings.sec.ui.images":"Tool images","web.settings.sec.ui.images.desc":"Retention of browser screenshots and attached images stored per session.","web.settings.sec.ui.theme":"Theme","web.settings.sec.ui.theme.desc":"Colour scheme of this web UI. Stored in the browser, not in the config file.","web.settings.sec.memory.add":"Add a note","web.settings.memory_add_title":"new memory","config.field.name":"name","config.field.model":"model","config.field.tool_tags":"tool tags","config.field.max_attempts":"attempts","config.field.description":"description","config.field.input":"input $/1M","config.field.output":"output $/1M","config.field.cachedInput":"cached $/1M","config.field.cacheWrite":"write $/1M","config.field.vision":"vision","config.field.tools":"tools","web.settings.sec.security.switches":"Switches","web.settings.sec.security.switches.desc":"Master switches per protection. Turning one off disables its whole group below.","web.settings.sec.security.limits":"Limits","web.settings.sec.security.limits.desc":"Depth, volume and rate caps for tool activity.","web.settings.sec.security.bash":"Bash rules","web.settings.sec.security.bash.desc":"Commands, flags and operators the bash tool refuses.","web.settings.sec.security.paths":"Path rules","web.settings.sec.security.paths.desc":"Glob patterns for paths that are denied or, if set, exclusively allowed.","web.settings.sec.security.network":"Network rules","web.settings.sec.security.network.desc":"Domains blocked or, if set, exclusively allowed.","web.settings.sec.security.scan":"Content scan","web.settings.sec.security.scan.desc":"Patterns searched in file contents before writing.","web.settings.sec.security.audit":"Audit log","web.settings.sec.security.audit.desc":"Send security events to a file or a webhook.","web.settings.sec.security.encryption":"Session encryption","web.settings.sec.security.encryption.desc":"Encrypt saved chat history and session log on disk.","web.settings.sec.security.access":"Access","web.settings.sec.advanced.diagnostics":"Diagnostics","web.settings.sec.advanced.diagnostics.desc":"Log verbosity and the installed version.","web.settings.sec.advanced.retry":"Retry","web.settings.sec.advanced.retry.desc":"Backoff for failed or stalled provider requests.","web.settings.sec.advanced.service":"Service","web.settings.sec.advanced.service.desc":"Cost tracking, prices and the background update check.","web.settings.sec.plugins.lsp":"LSP","web.settings.sec.plugins.lsp.desc":"Editor-grade diagnostics; offline mode runs installed binaries without npx.","web.settings.add":"add","web.settings.forget":"forget","web.settings.search":"search","web.settings.saved":"saved","web.settings.save_failed":"save failed","web.settings.use":"use","web.settings.active":"active","web.settings.active_check":"active ✓","web.settings.search_models":"search models…","web.settings.no_models":"no models reported by provider","web.settings.no_matches":"no matches","web.settings.active_provider":"active provider","web.settings.add_provider":"add provider","web.settings.section_models":"Model","web.settings.section_providers":"Providers","web.settings.provider_add_title":"add provider","web.settings.provider_preset":"preset","web.settings.provider_custom":"custom / local","web.settings.provider_name_conflict":"a provider with this name already exists — pick another name","web.settings.provider_edit_title":"edit provider","web.settings.provider_advanced":"advanced","web.settings.provider_make_active":"make active","web.settings.providers_empty":"no providers configured","web.settings.edit":"edit","web.settings.delete":"delete","web.settings.cancel":"cancel","web.settings.save":"save","web.settings.delete_failed":"delete failed","web.settings.provider_type":"type","web.settings.provider_label_field":"label","web.settings.provider_baseurl":"base URL","web.settings.provider_baseurl_custom":"custom URL…","web.settings.provider_apikey":"API key","web.settings.provider_key_keep":"leave blank to keep","web.settings.provider_context":"context window","web.settings.provider_priority":"priority","web.settings.provider_rpm":"requests / min","web.settings.provider_parallel":"max parallel","web.settings.provider_max_tokens":"max completion tokens","web.settings.provider_cache_mechanism":"cache mechanism","web.settings.provider_cache_report":"cache report format","web.settings.provider_cache_flags":"cache flags","web.settings.provider_retry":"retry","web.settings.provider_retry_max":"max retries","web.settings.provider_retry_base":"retry base delay (ms)","web.settings.provider_retry_maxdelay":"retry max delay (ms)","web.settings.provider_flag.sessionHeader":"x-opencode-session header","web.settings.provider_flag.requestCachePrompt":"cache_prompt (llama.cpp)","web.settings.provider_flag.requestPromptCacheKey":"prompt_cache_key (OpenAI)","web.settings.provider_flag.requestSessionId":"session_id (OpenRouter)","web.settings.provider_flag.requestCacheControl":"cache_control (Anthropic)","web.settings.provider_flag.requestStreamUsage":"stream usage chunk","web.settings.provider_required":"type and base URL are required","web.settings.provider_invalid":"invalid numeric value","web.settings.provider_active_guard":"cannot delete the active provider — switch first","web.settings.builtin":"builtin","web.settings.plugins_note":"plugins are loaded from ~/.mma/plugins and <project>/.mma/plugins; enable or disable them by adding or removing the plugin file there (takes effect on the next run).","web.settings.mcp_enable":"enable","web.settings.mcp_disable":"disable","web.settings.mcp_saved":"saved · takes effect on the next run","web.settings.mcp_note":"MCP server changes are saved to config and take effect on the next run.","web.settings.theme":"theme","web.settings.security_note":"protected paths, restricted mode and web token are managed by the terminal wizard.","web.settings.web_token":"web token","web.settings.web_token_none":"not set","web.settings.terminal_tag":"terminal","web.settings.memory_unavailable":"memory unavailable","web.settings.new_memory":"new memory…","web.settings.memory_category":"memory category","web.settings.add_failed":"add failed","web.settings.search_memory":"search memory…","web.settings.forget_failed":"forget failed","web.settings.preferences":"preferences","web.settings.no_memory":"no memory entries","web.settings.skills_unavailable":"skills unavailable","web.settings.no_skills":"no skills found","web.settings.enabled":"enabled","web.settings.available":"available","web.settings.plugins_unavailable":"plugins unavailable","web.settings.plugins_header":"plugins","web.settings.no_plugins":"no plugins registered","web.settings.disabled":"disabled","web.settings.mcp_servers":"mcp servers","web.settings.no_mcp":"no MCP servers configured","web.settings.mcp_add":"add MCP server","web.settings.mcp_edit_title":"edit MCP server","web.settings.mcp_required":"name plus command (stdio) or URL (sse/http) is required","web.settings.mcp_invalid":"invalid value: timeout 1000–300000 ms, args/env/headers as JSON","web.settings.lsp_servers":"LSP servers","web.settings.no_lsp":"no LSP servers configured","web.settings.lsp_note":"LSP changes are saved to config and take effect on the next run.","web.settings.lsp_unavailable":"LSP unavailable","web.settings.loading":"loading…","web.input.placeholder":"message… (/ for commands)","web.input.enter":"Enter — send","web.input.shift_enter":"Shift+Enter — newline","web.input.esc":"Esc — stop","web.input.attach":"Ctrl+V — attach","web.input.send":"send","web.input.stop":"stop","web.input.queued":"queued · position {n}","web.input.queue_full":"message queue is full — wait for the turn to end","web.tab.working":"working","web.tab.waiting":"waiting for you","web.tab.queued":"queued","web.tab.failed":"failed","web.tab.gone":"gone","web.session.gone":"session deleted or unavailable — close the tab","web.empty.title":"new chat","web.message_empty":"Type a message first.","web.empty.hint":"type a message below · / — commands · model and context are chosen above the input","web.attach.title":"attach image","web.attach.remove":"remove","web.attach.only_images":"only images can be attached","web.attach.too_many":"too many images (max {max})","web.attach.too_large":"image too large (max 50 MB)","web.attach.invalid":"invalid image","web.attach.read_failed":"could not read image","web.sessions.active":"active","web.sessions.recent":"recent","web.sessions.new":"+ new session","web.sessions.refresh":"↻ refresh","web.sessions.none_active":"— no active session —","web.sessions.none":"— none —","web.sessions.delete":"delete","web.sessions.search":"search sessions…","web.sessions.create_failed":"session create failed","web.sessions.delete_failed":"delete failed","web.sessions.confirm_title":"Delete session?","web.sessions.confirm_body":"“{name}” will be permanently deleted. This cannot be undone.","web.sessions.active_guard":"cannot delete the active session — switch to another first","web.selectors.model":"model","web.selectors.provider":"provider","web.selectors.context":"context","web.selectors.reasoning":"reasoning","web.selectors.switch_busy":"switch in progress, please wait","web.selectors.reasoning_off":"off (backend ignores it)","web.selectors.no_models":"no models","web.selectors.search_models":"search models…","web.selectors.refresh_list":"↻ refresh list","web.selectors.custom":"custom…","web.selectors.current":"current","web.selectors.context_prompt":"context window (tokens)","web.rail.working":"working","web.rail.composing":"composing","web.rail.no_plan":"no plan","web.rail.step_of":"step {cur}/{total}","web.rail.last":"last:","web.rail.none":"—","web.rail.tools_one":"{count} tool","web.rail.tools_many":"{count} tools","web.rail.tools_few":"{count} tools","web.rail.events_one":"{count} event","web.rail.events_many":"{count} events","web.rail.events_few":"{count} events","web.action.thinking":"thinking","web.action.hide":"hide","web.action.show":"show","web.action.actions_one":"{count} action","web.action.actions_few":"{count} actions","web.action.actions_many":"{count} actions","web.action.cancel":"cancel","web.cmdk.label":"commands","web.command.help":"list web commands","web.command.status":"model · provider · context · session · verbosity","web.command.config":"read or write a config key","web.command.model":"list or switch model","web.command.provider":"list or switch provider","web.command.reasoning":"reasoning display and level","web.command.verbose":"set UI verbosity","web.command.context":"show or set the context window","web.command.security":"show security toggles or write a security key","web.security.unknown_sub":"unknown subcommand: security {sub}","web.command.session":"list or activate a session","web.command.export":"export the active session to a file","web.command.memory":"inspect or edit global memory","web.command.clear":"clear the feed (browser-side)","web.command.new":"open a new chat tab (browser-side)","web.turn.stopped":"stopped","web.turn.failed":"turn failed","web.turn.end":"turn end · ok · tools {count}","web.plan.none":"no active plan","web.plan.heading_one":"Plan · {count} step","web.plan.heading_few":"Plan · {count} steps","web.plan.heading_many":"Plan · {count} steps","web.history.loading":"loading…","web.history.unavailable":"— history unavailable","web.history.empty":"— empty session —","web.scroll.latest":"latest","web.tool.output_one":"output · {count} char","web.tool.output_few":"output · {count} chars","web.tool.output_many":"output · {count} chars","web.tool.collapse":"collapse","web.code.copy":"copy","web.code.copied":"copied","web.code.copy_failed":"copy failed","web.msg.copy":"copy","web.msg.copy_md":"copy as markdown","web.card.open_title":"Preview in a browser tab","web.card.copy_title":"Copy the workspace path","web.card.drawio_hint":"Draw.io diagram is XML — preview shows code; open it in draw.io / VS Code to see the scheme.","web.card.files_one":"{count} file","web.card.files_few":"{count} files","web.card.files_many":"{count} files","web.card.screenshot":"screenshot","web.card.attached_image":"attached image","web.card.browser_viewport":"browser · viewport","web.card.image_removed":"image removed (rotation)","web.lightbox.close":"Close","web.lightbox.open_tab":"Open in a new tab","web.lightbox.copy":"Copy link","web.lightbox.copied":"Link copied","web.question.placeholder":"type your answer…","web.question.send":"send","web.question.answered":"answered","web.question.multi_hint":"select one or more","web.misc.command_unavailable":"command unavailable","web.file.error.missing_path":"No file path was given.","web.file.error.outside_workspace":"This file is outside the agent workspace and cannot be opened.","web.file.error.protected_path":"This file is protected (secrets/VCS) and cannot be opened.","web.file.error.too_large":"File is too large to open in the browser ({limit} bytes max).","web.file.error.binary_file":"This looks like a binary file and cannot be shown as text — download it with the Download button.","web.file.error.not_found":"File not found (it may be a directory or it was deleted).","web.file.error.workspace_unavailable":"No workspace is open.","web.files.empty":"No files.","web.files.loading":"Loading…","web.files.error":"Failed to load the file tree.","web.files.truncated":"Too many entries — the list is truncated.","web.files.attach":"Attach path","web.files.open_failed":"Could not open this file.","web.files.no_workspace":"No workspace is open.","web.files.close":"Close","web.setup.title":"Set up MMA","web.setup.subtitle":"A few quick questions before you start chatting.","web.setup.step.language":"Language","web.setup.step.provider":"Provider","web.setup.step.key":"API key","web.setup.step.model":"Model","web.setup.step.context":"Context","web.setup.step.security":"Security","web.setup.step.review":"Review","web.setup.language.title":"Choose your language","web.setup.language.hint":"Used for the interface.","web.setup.provider.title":"Choose a provider","web.setup.provider.hint":"For a local model pick the OpenAI-compatible option, scan for your server, then test the connection before continuing.","web.setup.provider.base_url":"Base URL","web.setup.provider.scan":"Scan for local servers","web.setup.provider.scan_found_one":"Found {count} server","web.setup.provider.scan_found_few":"Found {count} servers","web.setup.provider.scan_found_many":"Found {count} servers","web.setup.provider.scan_none":"No local servers found — enter the URL manually.","web.setup.provider.scan_failed":"Scan failed. Enter the URL manually.","web.setup.provider.required":"Please enter a base URL.","web.setup.provider.test":"Test connection","web.setup.provider.testing":"Testing…","web.setup.provider.test_ok":"Server reachable.","web.setup.provider.test_fail":"Could not reach the server at this URL.","web.setup.key.title":"API key","web.setup.key.hint":"Leave empty for local servers. Stored only in your config file and never shown again.","web.setup.key.label":"Key","web.setup.key.placeholder":"sk-…","web.setup.model.title":"Choose a model","web.setup.model.hint":"Load the list from the provider or type the model name.","web.setup.model.name":"Model name","web.setup.model.load":"Load models","web.setup.model.load_found_one":"Loaded {count} model","web.setup.model.load_found_few":"Loaded {count} models","web.setup.model.load_found_many":"Loaded {count} models","web.setup.model.load_none":"No models returned — type the model name.","web.setup.model.test":"Test connection","web.setup.model.testing":"Testing…","web.setup.model.test_ok":"Connection OK.","web.setup.model.test_fail":"Could not reach the model.","web.setup.model.required":"Please choose or type a model.","web.setup.context.title":"Context & iterations","web.setup.context.hint":"Must match the context your provider gives this model. Press Detect, or copy the value from LM Studio / Ollama / provider docs.","web.setup.context.contextWindow":"Context window (tokens)","web.setup.context.maxToolIterations":"Max tool iterations","web.setup.context.required":"Enter a positive number.","web.setup.context.detect":"Detect from provider","web.setup.context.detecting":"Detecting…","web.setup.context.detect_ok":"Context set from provider: {count} tokens.","web.setup.context.detect_fail":"Could not detect context — enter it manually.","web.setup.security.title":"Security","web.setup.security.hint":"Safe defaults are on; turn off only what you need. Nothing is blocked silently — each toggle only asks the agent to confirm first.","web.setup.security.paths":"Restrict file access to the workspace","web.setup.security.paths_desc":"The agent reads and writes only inside the workspace, and asks before touching .git, .env, keys and other sensitive paths.","web.setup.security.bash":"Block dangerous shell commands","web.setup.security.bash_desc":"Blocks destructive commands (rm, sudo, ssh, curl, shutdown, …). The agent asks instead of running them.","web.setup.security.flags":"Block dangerous command flags","web.setup.security.flags_desc":"Blocks risky flags (--force, -rf, …) that make safe commands dangerous. Works together with the command block.","web.setup.security.configure":"Configure","web.setup.security.advanced":"Advanced security settings","web.setup.security.popup_hint":"One item per line. Empty list = disabled. Changes apply only to this install; you can edit them later in Settings → Security.","web.setup.security.popup_done":"Done","web.setup.security.reset":"Reset to defaults","web.setup.security.denied":"Always denied paths","web.setup.security.allowed":"Only allowed paths (empty = all except denied)","web.setup.security.blacklist":"Always blocked commands","web.setup.security.whitelist":"Only allowed commands (empty = all except blocked)","web.setup.security.log_commands":"Log every executed command to the audit log","web.setup.security.dangerous_flags":"Blocked command flags","web.setup.security.dangerous_operators":"Blocked shell operators","web.setup.security.network_enabled":"Network protection (block private/internal addresses)","web.setup.security.denied_domains":"Always denied domains","web.setup.security.allowed_domains":"Only allowed domains (empty = all except denied)","web.setup.security.request_timeout":"Network request timeout (ms)","web.setup.security.max_response_size":"Max response size (bytes)","web.setup.security.max_recursion":"Max subagent recursion depth","web.setup.security.max_file_ops":"Max file operations per session","web.setup.security.rate_rpm":"Max LLM requests per minute","web.setup.security.rate_parallel":"Max parallel tasks","web.setup.security.content_scan":"Scan file content for dangerous patterns","web.setup.security.session_encryption":"Encrypt session logs on disk","web.setup.security.audit_enabled":"Send security events to the audit notifier","web.setup.security.audit_severity":"Minimum severity to notify","web.setup.security.audit_events":"Notified event types","web.setup.security.audit_retries":"Webhook max retries","web.setup.security.audit_timeout":"Webhook timeout (ms)","web.setup.security.severity.low":"low","web.setup.security.severity.medium":"medium","web.setup.security.severity.high":"high","web.setup.security.severity.critical":"critical","web.setup.review.title":"Review","web.setup.review.hint":"Check the values, then finish. Settings are saved to your config.","web.setup.review.provider":"Provider","web.setup.review.baseUrl":"Base URL","web.setup.review.apiKey":"API key","web.setup.review.model":"Model","web.setup.review.context":"Context window","web.setup.review.iterations":"Max tool iterations","web.setup.review.locale":"Language","web.setup.review.security":"Security","web.setup.review.security_off":"disabled","web.setup.review.not_needed":"not needed","web.setup.back":"Back","web.setup.next":"Next","web.setup.finish":"Finish setup","web.setup.saving":"Saving…","web.setup.saved_warning":"Saved with warnings: {warning}","web.setup.failed":"Setup failed. Check the values and try again.","config.key.provider.fallback":"fallback providers","config.desc.provider.fallback":"Fall back to the next provider entry when the active one fails.","config.key.provider.maxCompletionTokens":"max completion tokens","config.desc.provider.maxCompletionTokens":"Hard cap on completion tokens per request (512-128000).","config.key.contextBudget.compactionThreshold":"compaction threshold","config.desc.contextBudget.compactionThreshold":"History load share that allows periodic compaction (0.05-0.9).","config.key.contextBudget.compactionMinLoad":"compaction min load","config.desc.contextBudget.compactionMinLoad":"Minimum history load required before compaction may run (0.05-0.9).","config.key.contextBudget.policy":"compaction policy","config.desc.contextBudget.policy":"legacy reproduces 2.18.2; v2 adds a canonical threshold, cooldown and progress guarantees.","config.key.contextBudget.compactionSummary":"compaction summary","config.desc.contextBudget.compactionSummary":"ledger (default) pins a tool ledger across compaction so the model does not re-explore the same sources; off disables it.","config.key.contextBudget.overflowCooldown":"overflow cooldown","config.desc.contextBudget.overflowCooldown":"Minimum iterations between overflow compactions (1-20).","config.key.contextBudget.toolResultKeep":"keep recent tool results","config.desc.contextBudget.toolResultKeep":"How many latest tool results survive deterministic pruning (0-20).","config.key.contextBudget.calibrationWarmup":"calibration warmup","config.desc.contextBudget.calibrationWarmup":"LLM calls observed before the token estimate is trusted (0-20).","config.key.contextBudget.ratioFloor":"calibration ratio floor","config.desc.contextBudget.ratioFloor":"Lowest calibrated estimate as a share of the raw estimate (0.05-0.9).","config.key.instructions.summarize":"summarize instructions","config.desc.instructions.summarize":"Summarize oversized AGENTS.md/project-map blocks instead of truncating.","config.key.contextLog.enabled":"context log","config.desc.contextLog.enabled":"Write the LLM-bound context of every iteration to <session>/context.diff.","config.key.contextLog.redact":"redact context log","config.desc.contextLog.redact":"Redact recognizable secrets (tokens, keys) in the context log.","config.key.indexer.maxFiles":"max indexed files","config.desc.indexer.maxFiles":"Cap on files scanned into the project map (100-100000).","config.key.indexer.respectGitignore":"respect .gitignore","config.desc.indexer.respectGitignore":"Skip files ignored by .gitignore/.mmaignore when building the map.","config.key.indexer.mapTokenBudget":"map token budget","config.desc.indexer.mapTokenBudget":"Token budget for the PageRank-ranked file list in the project map (200-20000).","config.key.lsp.enabled":"LSP","config.desc.lsp.enabled":"Run language servers after file writes and via the lsp_check tool.","config.key.lsp.offline":"LSP offline mode","config.desc.lsp.offline":"Never use npx; only globally installed language servers. Env MMA_LSP_OFFLINE overrides.","config.key.images.maxCount":"tool images kept","config.desc.images.maxCount":"Max screenshots/attached images stored per session; oldest are evicted first.","config.key.images.maxBytes":"tool images size cap","config.desc.images.maxBytes":"Max total bytes of stored tool images per session.","config.key.reasoning.min":"min reasoning","config.desc.reasoning.min":"Lower bound of the reasoning effort range.","config.key.reasoning.max":"max reasoning","config.desc.reasoning.max":"Upper bound of the reasoning effort range.","config.key.reasoning.baseline":"baseline reasoning","config.desc.reasoning.baseline":"Default reasoning effort used when the model gives no signal.","config.key.reasoning.overrideCooldown":"reasoning override cooldown","config.desc.reasoning.overrideCooldown":"Turns before a fresh reasoning override is accepted again (1-60).","config.key.autoPlan":"auto-plan","config.desc.autoPlan":"Let the agent draft a plan automatically for multi-step tasks.","config.key.execution.autoAdvance":"auto-advance plan steps","config.desc.execution.autoAdvance":"Mark a plan step done automatically when its deliverables exist. Off: the model closes steps itself.","config.key.tools.enableOnDemand":"on-demand tools","config.desc.tools.enableOnDemand":"Load narrow tool groups on demand instead of exposing all tools.","config.key.tools.grepEngine":"grep engine","config.desc.tools.grepEngine":"auto (rg → grep → built-in JS), or force rg/grep/js.","config.key.session.autoSave":"auto-save session","config.desc.session.autoSave":"Persist the session log after every turn.","config.key.session.maxSessions":"max sessions","config.desc.session.maxSessions":"How many recent sessions are kept on disk (1-500).","config.key.session.isolateMemory":"isolate session memory","config.desc.session.isolateMemory":"Keep session memory separate from the global one.","config.key.session.autoName":"auto-name sessions","config.desc.session.autoName":"Derive a session name from the first message (LLM-refined).","config.key.sessionIsolation.enabled":"session isolation","config.desc.sessionIsolation.enabled":"Master switch for per-session isolation (plugins, temp files).","config.key.sessionIsolation.isolatePlugins":"isolate plugins","config.desc.sessionIsolation.isolatePlugins":"Give each session its own plugin sandbox.","config.key.sessionIsolation.isolateTempFiles":"isolate temp files","config.desc.sessionIsolation.isolateTempFiles":"Give each session its own temp-file directory.","config.key.ui.spinner":"spinner","config.desc.ui.spinner":"Animate a progress spinner while tools run.","config.key.ui.activityRail":"activity rail","config.desc.ui.activityRail":"Indicator above the input line while the agent works.","config.key.ui.showContextStats":"context stats","config.desc.ui.showContextStats":"Show context usage stats after each turn.","config.key.ui.showCompaction":"compaction notice","config.desc.ui.showCompaction":"Notify in chat when history compaction runs.","config.key.ui.fontSize":"font size","config.desc.ui.fontSize":"Web chat font size (web only, the terminal is unaffected).","config.key.retry.maxRetries":"max retries","config.desc.retry.maxRetries":"Max retries for failed LLM requests (0-10).","config.key.retry.baseDelay":"retry base delay","config.desc.retry.baseDelay":"Base backoff delay between retries in ms (0-60000).","config.key.retry.maxDelay":"retry max delay","config.desc.retry.maxDelay":"Backoff delay cap between retries in ms (0-300000).","config.key.retry.maxStreamRetries":"max stream retries","config.desc.retry.maxStreamRetries":"Max retries for stalled or interrupted streams (0-10).","config.key.retry.noDataTimeoutMs":"stream stall timeout (ms)","config.desc.retry.noDataTimeoutMs":"Give up on a stream silent for this long, in ms (1000-600000).","config.key.pricing.enabled":"cost tracking","config.desc.pricing.enabled":"Track token usage and estimated cost per session.","config.key.updater.enabled":"auto-update","config.desc.updater.enabled":"Master switch for background update checks.","config.key.updater.checkOnStart":"check on start","config.desc.updater.checkOnStart":"Check for updates when the agent starts.","config.key.updater.autoInstall":"auto-install updates","config.desc.updater.autoInstall":"Install downloaded updates without asking.","config.key.updater.intervalMs":"update check interval (ms)","config.desc.updater.intervalMs":"Minimum time between update checks, in ms (0-86400000).","config.key.skills.budget":"skills budget share","config.desc.skills.budget":"Share of the system budget reserved for skill definitions (0.05-0.9).","config.key.hallucination.judge.enabled":"hallucination judge","config.desc.hallucination.judge.enabled":"Score answer confidence and flag likely hallucinations.","config.key.subagent.resultMode":"subagent result mode","config.desc.subagent.resultMode":"How subagent results return: inline text or via file.","config.key.subagent.maxSummaryChars":"subagent summary limit","config.desc.subagent.maxSummaryChars":"Max chars kept from a subagent summary (100-50000).","config.key.subagent.maxParallelChunkQueries":"subagent parallel chunks","config.desc.subagent.maxParallelChunkQueries":"Max parallel chunk queries per subagent wave (1-16).","config.key.subagent.timeoutMs":"subagent timeout (ms)","config.desc.subagent.timeoutMs":"Subagent execution timeout in milliseconds (10000-1800000).","config.key.subagent.stableSystemPrompt":"stable subagent prompt","config.desc.subagent.stableSystemPrompt":"Reuse one frozen system prompt for all subagents in a run.","config.key.modelLoad.autoLoad":"auto-load model","config.desc.modelLoad.autoLoad":"Load the model into the backend automatically on start.","config.key.modelLoad.flashAttention":"flash attention","config.desc.modelLoad.flashAttention":"Enable flash-attention kernels when loading the model.","config.key.modelLoad.offloadKvCacheToGpu":"offload KV cache to GPU","config.desc.modelLoad.offloadKvCacheToGpu":"Keep the KV cache in GPU memory when loading the model.","config.key.modelLoad.evalBatchSize":"eval batch size","config.desc.modelLoad.evalBatchSize":"Prompt-eval batch size at load time (1-4096).","config.key.webSearch.enabled":"web search","config.desc.webSearch.enabled":"Allow the agent to search the web.","config.key.errorWebSearch.enabled":"search on error","config.desc.errorWebSearch.enabled":"Search the web automatically when an error looks searchable.","config.key.errorWebSearch.threshold":"error search threshold","config.desc.errorWebSearch.threshold":"How many matching errors trigger a search (1-20).","config.key.errorWebSearch.maxResults":"error search results","config.desc.errorWebSearch.maxResults":"Max search results attached per error lookup (1-20).","config.key.errorWebSearch.maxQueryChars":"error query limit","config.desc.errorWebSearch.maxQueryChars":"Max chars of the error text sent per query (50-2000).","config.key.errorWebSearch.maxSearchesPerSession":"error searches per session","config.desc.errorWebSearch.maxSearchesPerSession":"Max automatic error searches per session (0-20).","config.key.errorWebSearch.requestTimeoutMs":"error search timeout (ms)","config.desc.errorWebSearch.requestTimeoutMs":"Timeout per automatic error-search request, in ms (1000-120000).","config.key.browser.enabled":"browser tool","config.desc.browser.enabled":"Allow the agent to drive a browser.","config.key.browser.headless":"headless browser","config.desc.browser.headless":"Run the browser without a visible window.","config.key.browser.maxElements":"max page elements","config.desc.browser.maxElements":"Max accessibility-tree elements per snapshot (1-200).","config.key.browser.maxContentChars":"max page content","config.desc.browser.maxContentChars":"Max chars of page content kept per snapshot (100-50000).","config.key.browser.maxConsoleEntries":"max console entries","config.desc.browser.maxConsoleEntries":"Max browser console entries collected per snapshot (1-200).","config.key.browser.maxConsoleLineChars":"max console line","config.desc.browser.maxConsoleLineChars":"Max chars per console line (50-5000).","config.key.browser.viewportWidth":"viewport width","config.desc.browser.viewportWidth":"Browser viewport width in px (320-4096).","config.key.browser.viewportHeight":"viewport height","config.desc.browser.viewportHeight":"Browser viewport height in px (200-2160).","config.key.browser.navigationTimeout":"navigation timeout (ms)","config.desc.browser.navigationTimeout":"Timeout per page navigation, in ms (1000-120000).","config.key.security.maxRecursionDepth":"max recursion depth","config.desc.security.maxRecursionDepth":"Max nested tool-call depth before refusal (0-20).","config.key.security.maxFileOperations":"max file operations","config.desc.security.maxFileOperations":"Max file operations per turn before refusal (0-10000).","config.key.security.rateLimits.maxRequestsPerMinute":"max requests per minute","config.desc.security.rateLimits.maxRequestsPerMinute":"LLM request rate cap per minute (1-1000).","config.key.security.rateLimits.maxParallelTasks":"max parallel tasks","config.desc.security.rateLimits.maxParallelTasks":"Cap on parallel subtasks (1-50).","config.key.tools.defaultTags":"default tool tags","config.desc.tools.defaultTags":"Tool groups always loaded without on-demand gating.","config.key.security.bash.enabled":"bash command validation","config.desc.security.bash.enabled":"Master switch for bash tool validation.","config.key.security.bash.blockDangerousFlags":"block dangerous flags","config.desc.security.bash.blockDangerousFlags":"Reject risky shell flags like --force in the bash tool.","config.key.security.network.enabled":"network requests","config.desc.security.network.enabled":"Master switch for outbound network checks (SSRF guard).","config.key.security.bash.blacklist":"bash blacklist","config.desc.security.bash.blacklist":"Commands always blocked in the bash tool (list).","config.key.security.bash.whitelist":"bash whitelist","config.desc.security.bash.whitelist":"Commands always allowed in the bash tool (list).","config.key.security.bash.dangerousFlags":"dangerous flags","config.desc.security.bash.dangerousFlags":"Command flags treated as dangerous (list).","config.key.security.bash.dangerousOperators":"dangerous operators","config.desc.security.bash.dangerousOperators":"Shell operators treated as dangerous (list).","config.key.security.paths.denied":"denied paths","config.desc.security.paths.denied":"Paths always off-limits for file tools (list).","config.key.security.paths.allowed":"allowed paths","config.desc.security.paths.allowed":"Extra paths allowed outside the workspace (list).","config.key.security.network.deniedDomains":"denied domains","config.desc.security.network.deniedDomains":"Domains the agent may never contact (list).","config.key.security.network.allowedDomains":"allowed domains","config.desc.security.network.allowedDomains":"Domains the agent may contact (list; empty means any).","config.key.security.network.requestTimeout":"network timeout (ms)","config.desc.security.network.requestTimeout":"Timeout per outbound tool request, in ms (1000-120000).","config.key.security.network.maxResponseSize":"max response size","config.desc.security.network.maxResponseSize":"Max bytes kept per outbound response (1024-1000000).","config.key.security.contentScan.dangerousPatterns":"dangerous patterns","config.desc.security.contentScan.dangerousPatterns":"Regular expressions searched in file contents before writing.","config.key.security.auditNotifier.enabled":"audit notifier","config.desc.security.auditNotifier.enabled":"Send security-audit events to a file or webhook.","config.key.security.auditNotifier.filePath":"audit log path","config.desc.security.auditNotifier.filePath":"File the audit events are appended to.","config.key.security.auditNotifier.webhookUrl":"audit webhook URL","config.desc.security.auditNotifier.webhookUrl":"Webhook the audit events are posted to.","config.key.security.auditNotifier.webhookTimeout":"audit webhook timeout (ms)","config.desc.security.auditNotifier.webhookTimeout":"Timeout per webhook post, in ms (1000-60000).","config.key.security.auditNotifier.minSeverity":"audit min severity","config.desc.security.auditNotifier.minSeverity":"Lowest severity that still notifies (low/medium/high/critical).","config.key.security.auditNotifier.eventTypes":"audit event types","config.desc.security.auditNotifier.eventTypes":"Which audit event types notify; none selected means all.","config.key.security.auditNotifier.maxRetries":"audit max retries","config.desc.security.auditNotifier.maxRetries":"Retries per failed notification post (0-10).","config.key.security.sessionEncryption.keyPath":"encryption key path","config.desc.security.sessionEncryption.keyPath":"File holding the session-encryption key.","config.key.security.sessionEncryption.encryptHistory":"encrypt chat history","config.desc.security.sessionEncryption.encryptHistory":"Encrypt the saved chat history on disk.","config.key.security.sessionEncryption.encryptSessionLog":"encrypt session log","config.desc.security.sessionEncryption.encryptSessionLog":"Encrypt the saved session.jsonl log on disk.","config.key.pricing.overrides":"pricing overrides","config.desc.pricing.overrides":"Per-model price table overriding built-ins.","config.key.modelCapabilities":"model capabilities","config.desc.modelCapabilities":"Manual vision/tools overrides per model id.","config.key.experts":"MoE experts","config.desc.experts":"Expert roster for the MoE orchestrator.","config.desc.orchestrator.model":"Model that plans and verifies MoE subtasks (empty = active model).","config.desc.orchestrator.provider":"Provider for the planner model (empty = active provider).","config.desc.orchestrator.contextWindow":"Context window for the planner model (default 32768).","config.enum.text":"text","config.enum.file":"file","config.enum.critical":"critical"}
|