micro-models-agent 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -239,6 +239,8 @@ body {
239
239
  .ans { color: var(--ans); white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; }
240
240
  .think-h { color: var(--think); cursor: pointer; user-select: none; display: flex; gap: 8px; align-items: baseline; font-size: 12.5px; }
241
241
  .think-h .dur, .think-h .tog { color: var(--dim-b); }
242
+ .think-h .tog { display: inline-flex; align-items: center; gap: 4px; }
243
+ .think-h .tog .svg-icon { width: 12px; height: 12px; }
242
244
  .think-h .tog:hover { color: var(--dim-a); }
243
245
  .think-body { color: var(--dim-c); padding-left: 18px; white-space: pre-wrap; font-size: 12.5px; overflow-wrap: anywhere; }
244
246
  .think-body.hidden { display: none; }
@@ -410,6 +412,9 @@ body.light .imgcard .ph { background: var(--ph-light); }
410
412
  .startbanner b { font-weight: 400; color: var(--dim-a); }
411
413
  .errline { color: var(--err); padding-left: 26px; overflow-wrap: anywhere; }
412
414
  .errline .hint { color: var(--dim-a); display: block; }
415
+ /* settings JSON validation hint — own class so global `.errline` queries
416
+ (chat turn errors, e2e) never match hidden settings rows. */
417
+ .json-err { color: var(--err); overflow-wrap: anywhere; }
413
418
  .grouped { color: var(--dim-a); padding-left: 8px; overflow-wrap: anywhere; }
414
419
  .grouped .pipe { color: var(--pipe); }
415
420
  .msgs .busy { color: var(--think); display: flex; gap: 8px; align-items: baseline; font-size: 12.5px; }
@@ -667,20 +672,22 @@ body.light .kv .wn { color: var(--yellow); }
667
672
  .confirm-actions .linkbtn.danger { border-color: var(--red-strong); color: var(--red-strong); }
668
673
  .confirm-actions .linkbtn.danger:hover { background: var(--x-hover-bg); }
669
674
 
670
- /* nested provider add/edit dialog (opens above the settings modal) */
675
+ /* nested sub-dialog (provider / MCP / LSP edit; opens above settings) */
671
676
  .overlay.overlay-nested { z-index: 60; }
672
- .modal.modal-provider {
673
- width: min(520px, 92vw); height: auto; max-height: 88vh; border-radius: 8px;
677
+ .modal.modal-sub {
678
+ width: min(560px, 92vw); height: auto; max-height: 88vh; border-radius: 8px;
674
679
  }
675
680
  .provider-body { display: block; padding: 20px 22px 22px; overflow-y: auto; }
676
681
  .provider-body .pform {
677
682
  margin: 0; padding: 0; border: 0; background: none;
678
683
  }
684
+ #subHost .pform-title { display: none; }
679
685
  .menu-col {
680
- width: 200px; min-width: 200px; padding: 12px 8px;
681
- border-right: 1px solid var(--border); overflow-y: auto;
682
- min-height: 0; flex: 0 0 auto;
686
+ width: 210px; min-width: 210px; padding: 12px 8px 8px;
687
+ border-right: 1px solid var(--border);
688
+ display: flex; flex-direction: column; min-height: 0; flex: 0 0 auto;
683
689
  }
690
+ .menu-col #setMenu { overflow-y: auto; min-height: 0; flex: 1 1 auto; }
684
691
  .menu-col .mi {
685
692
  padding: 7px 12px; border-radius: 4px; cursor: pointer;
686
693
  color: var(--muted); margin-bottom: 2px; font-size: 13px;
@@ -877,6 +884,93 @@ body.light .toggle { background: var(--toggle-off); }
877
884
  .pform-adv { margin-top: 18px; }
878
885
  .pform-adv summary { cursor: pointer; font-size: 11.5px; color: var(--dim-a); text-transform: uppercase; letter-spacing: .04em; }
879
886
  .pform-adv .pform-grid { margin-top: 12px; }
887
+
888
+ .sec-desc { color: var(--dim-a); font-size: 11.5px; line-height: 1.4; padding: 6px 0 0; max-width: 70ch; }
889
+
890
+ /* structured editors (tags / checkboxes / table) own the full row width */
891
+ .row > .ctl-block { flex-basis: 100%; min-width: 0; }
892
+
893
+ .tagsctl, .checksctl, .tablectl { display: flex; flex-direction: column; gap: 8px; padding-top: 4px; }
894
+ .tags-list { display: flex; flex-wrap: wrap; gap: 6px; }
895
+ .tags-empty { color: var(--dim-b); font-size: 12px; }
896
+ .tag-chip {
897
+ display: inline-flex; align-items: center; gap: 4px; max-width: 100%;
898
+ background: var(--surface); border: 1px solid var(--border-2); border-radius: 999px;
899
+ padding: 2px 6px 2px 10px; font-size: 12px; color: var(--fg);
900
+ }
901
+ .tag-chip .tag-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 320px; }
902
+ .tag-chip .tag-rm { color: var(--dim-a); padding: 0 2px; }
903
+ .tag-chip .tag-rm:hover { color: var(--red-strong); }
904
+ .tags-add, .table-add { display: flex; gap: 6px; align-items: center; }
905
+ .tags-add input, .table-add input {
906
+ flex: 1 1 160px; min-width: 0; max-width: 320px;
907
+ background: var(--input-surface); border: 1px solid var(--border-2); border-radius: 4px;
908
+ color: var(--fg); font: inherit; font-size: 12.5px; padding: 5px 8px; text-align: left;
909
+ }
910
+ .tags-plus, .table-plus { color: var(--accent); font-size: 14px; }
911
+
912
+ /* `.row input` is a right-aligned 120px field — checkboxes must not inherit it. */
913
+ .checksctl { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 6px 18px; }
914
+ .check-line { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--muted); cursor: pointer; min-width: 0; }
915
+ .check-line input[type="checkbox"] { width: auto; flex: 0 0 auto; margin: 0; text-align: left; accent-color: var(--accent); }
916
+ .check-line span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
917
+
918
+ .tablectl { gap: 4px; overflow-x: auto; }
919
+ .table-head, .table-row {
920
+ display: grid; grid-template-columns: minmax(120px, 1.4fr) repeat(auto-fit, minmax(84px, 1fr)) 28px;
921
+ gap: 6px; align-items: center; min-width: 0;
922
+ }
923
+ .table-head .table-th { font-size: 10.5px; text-transform: uppercase; letter-spacing: .04em; color: var(--dim-a); }
924
+ .table-row { padding: 3px 0; }
925
+ .table-row input {
926
+ width: 100%; min-width: 0;
927
+ background: var(--input-surface); border: 1px solid var(--border-2); border-radius: 4px;
928
+ color: var(--fg); font: inherit; font-size: 12px; padding: 4px 6px; text-align: left;
929
+ }
930
+ .table-row input[type="checkbox"] { width: auto; justify-self: start; accent-color: var(--accent); }
931
+ .table-row .table-rm { color: var(--dim-a); }
932
+ .table-row .table-rm:hover { color: var(--red-strong); }
933
+ .table-body:empty::after { content: "—"; color: var(--dim-b); font-size: 12px; }
934
+
935
+ /* settings search */
936
+ .set-search {
937
+ position: relative; display: flex; align-items: center; gap: 6px;
938
+ margin: 0 4px 10px; padding: 0 8px;
939
+ background: var(--input-surface); border: 1px solid var(--border-2); border-radius: 5px;
940
+ }
941
+ .set-search .set-search-icon { display: inline-flex; color: var(--dim-a); flex: 0 0 auto; }
942
+ .set-search .set-search-icon .svg-icon { width: 13px; height: 13px; }
943
+ .set-search input {
944
+ flex: 1 1 auto; min-width: 0; background: none; border: 0; outline: none;
945
+ color: var(--fg); font: inherit; font-size: 12.5px; padding: 7px 0;
946
+ }
947
+ .set-search input::-webkit-search-cancel-button { display: none; }
948
+ .set-search .set-search-clear { color: var(--dim-a); flex: 0 0 auto; }
949
+ .set-search:focus-within { border-color: var(--inp-focus); box-shadow: 0 0 0 2px var(--input-shadow); }
950
+ .set-results { display: flex; flex-direction: column; gap: 1px; }
951
+ .set-result {
952
+ display: grid; grid-template-columns: 1fr auto; gap: 2px 8px;
953
+ padding: 6px 8px; border-radius: 4px; cursor: pointer;
954
+ }
955
+ .set-result:hover, .set-result.on { background: var(--accent-bg); }
956
+ .set-result .sr-label { color: var(--fg); font-size: 12.5px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
957
+ .set-result .sr-panel { grid-column: 2; grid-row: 1; color: var(--dim-a); font-size: 11px; white-space: nowrap; }
958
+ .set-result .sr-key {
959
+ grid-column: 1 / -1; color: var(--dim-b); font-size: 10.5px;
960
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
961
+ }
962
+ .set-results-empty { color: var(--dim-b); font-size: 12px; padding: 8px; }
963
+
964
+ /* a searched setting blinks so the eye lands on it after navigation */
965
+ .row-flash { animation: rowflash 1.2s ease-out; }
966
+ @keyframes rowflash {
967
+ 0%, 40% { background: var(--accent-bg); }
968
+ 100% { background: transparent; }
969
+ }
970
+
971
+ /* sub-dialog (nested edit: provider / MCP / LSP) */
972
+ #subHost .pform { margin: 0; padding: 0; border: 0; background: none; }
973
+ #subHost .pform-title { display: none; }
880
974
  .pform-actions { display: flex; gap: 14px; align-items: center; padding-top: 22px; }
881
975
  .pform-actions .linkbtn.dim { color: var(--dim-a); }
882
976
  .settings-note { color: var(--dim-b); font-size: 11.5px; line-height: 1.7; padding: 8px 0 4px; }
@@ -1010,12 +1104,14 @@ button.toggle:disabled { opacity: .5; cursor: default; }
1010
1104
  }
1011
1105
  .modal-body { flex-direction: column; min-width: 0; }
1012
1106
  .menu-col {
1013
- width: 100%; min-width: 0; display: flex; flex-direction: row;
1014
- gap: 6px; overflow-x: auto; overflow-y: hidden;
1015
- border-right: none; border-bottom: 1px solid var(--border);
1107
+ width: 100%; min-width: 0; display: flex; flex-direction: column;
1108
+ gap: 6px; border-right: none; border-bottom: 1px solid var(--border);
1016
1109
  padding: 8px 10px; flex: 0 0 auto;
1017
1110
  }
1111
+ .menu-col #setMenu { display: flex; flex-direction: row; gap: 6px; overflow-x: auto; overflow-y: hidden; }
1018
1112
  .menu-col .mi { white-space: nowrap; margin-bottom: 0; flex: 0 0 auto; width: auto; }
1113
+ .set-search { margin: 0 0 2px; }
1114
+ .set-results { max-height: 40vh; overflow-y: auto; }
1019
1115
  .content-col { padding: 14px; }
1020
1116
  .row { font-size: 12.5px; }
1021
1117
  .input-area { margin: 8px 10px 10px; }
package/dist/i18n/en.json CHANGED
@@ -200,7 +200,7 @@
200
200
  "tool.interactive_disabled": "Interactive tool is disabled in exit-on-complete mode. Proceed without asking the user.",
201
201
  "proc.started": "Started background process {id} (PID {pid}).\nCommand: {command}",
202
202
  "proc.promoted_hint": "Command still running after {ms} ms — moved to the background",
203
- "proc.manage_hint": "Check output: process_log id={id}. Stop it: process_kill id={id}. List all: process_list.",
203
+ "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.",
204
204
  "proc.output_preview": "First output:\n{lines}",
205
205
  "proc.none": "No background processes running.",
206
206
  "proc.not_found": "Process not found: {id}",
@@ -215,9 +215,13 @@
215
215
  "proc.status_running": "running",
216
216
  "proc.status_exited": "exited",
217
217
  "proc.status_killed": "killed",
218
+ "proc.wait_exited": "Process {id} {status} after {ms} ms with exit code {code}.",
219
+ "proc.wait_running": "Process {id} still running after {ms} ms.",
220
+ "proc.wait_hint": "Wait again: process_wait id={id}. Check output: process_log id={id}. Stop it: process_kill id={id}.",
218
221
  "tool.friendly.process_list": "Listing background processes",
219
222
  "tool.friendly.process_log": "Process output",
220
223
  "tool.friendly.process_kill": "Stopping process",
224
+ "tool.friendly.process_wait": "Waiting for process",
221
225
  "plan.no_steps": "No plan steps specified. Provide concrete steps with files and commands.",
222
226
  "plan.created": "Plan created: {title} ({steps} steps)",
223
227
  "plan.coverage_warning": "Plan may be missing required files from the task: {missing}. Add steps covering them.",
@@ -311,7 +315,9 @@
311
315
  "cli.manage_config": "Manage configuration",
312
316
  "cli.config_key": "Config key (e.g., model, provider.baseUrl)",
313
317
  "cli.set_value": "Set a config value",
318
+ "cli.config_force": "Bypass validation and write the raw value as-is",
314
319
  "cli.set_done": "Set {key}={value}",
320
+ "cli.config_invalid": "Invalid value for '{key}' ({reason}). Config not changed.",
315
321
  "cli.show_config": "Show the effective configuration (secrets redacted; use --show-secrets to reveal)",
316
322
  "cli.migrate_config": "Migrate legacy config.json to domain format",
317
323
  "cli.manage_models": "Manage models",
@@ -419,6 +425,7 @@
419
425
  "cli.export_format": "Output format: md|json|jsonl (default md)",
420
426
  "cli.export_out": "Output path ('-' for stdout)",
421
427
  "cli.export_no_redact": "Do not redact secrets",
428
+ "cli.export_compact": "Omit tool result bodies (compact readable export)",
422
429
  "cli.first_run": "First run detected. Running setup wizard...",
423
430
  "cli.first_run_oneshot": "No configuration found — running with defaults. Run `mma` (no arguments) once to set up the wizard.",
424
431
  "cli.web_setup_required": "No configuration found — opening the browser setup wizard.",
@@ -509,6 +516,7 @@
509
516
  "repl.last_action_none": "No recent action to show.",
510
517
  "repl.status": "Show a compact status line",
511
518
  "repl.status_usage": "Usage: /status",
519
+ "repl.security": "Show security configuration (on/off per area)",
512
520
  "repl.plugins": "List loaded plugins",
513
521
  "repl.plugins_usage": "Usage: /plugins [--all]",
514
522
  "repl.sessions": "List all sessions (* active)",
@@ -623,7 +631,7 @@
623
631
  "repl.help_aliases": "Aliases: {names}",
624
632
  "repl.help_examples": "Examples:",
625
633
  "repl.export": "Export a session to a file",
626
- "repl.export_usage": "Usage: /export [<id|name>] [--format md|json|jsonl] [--out <path>] [--no-redact]",
634
+ "repl.export_usage": "Usage: /export [<id|name>] [--format md|json|jsonl] [--out <path>] [--no-redact] [--compact]",
627
635
  "config.header": "Managed settings",
628
636
  "config.col_setting": "Setting",
629
637
  "config.col_value": "Value",
@@ -751,6 +759,7 @@
751
759
  "exec.tool_errors": "Tool {tool} failed {count} times. Consider using a different tool.",
752
760
  "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 update step=N status=skipped with a note explaining why.",
753
761
  "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.",
762
+ "exec.repetitive_process_log_hint": "You are polling a background process — call process_wait once instead of polling process_log.",
754
763
  "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.",
755
764
  "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",
756
765
  "exec.bash_flailing": "bash failed in {fails} of the last {window} attempts.",
@@ -793,6 +802,7 @@
793
802
  "hall.uncertainty": "Uncertainty markers: {markers}",
794
803
  "hall.unknown_paths": "Mentioned file paths not found in known files: {paths}",
795
804
  "hall.contradiction_llm": "Contradicts an earlier decision{reason}",
805
+ "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).",
796
806
  "hall.uncertainty_prefix": "\n\n[⚠️ Uncertainty] ",
797
807
  "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.",
798
808
  "browser.unknown_action": "Unknown action: {action}",
@@ -1074,6 +1084,15 @@
1074
1084
  "config.enum.max": "max",
1075
1085
  "config.enum.en": "English",
1076
1086
  "config.enum.ru": "Russian",
1087
+ "config.enum.security_block": "security block",
1088
+ "config.enum.bash_command": "bash command",
1089
+ "config.enum.file_operation": "file operation",
1090
+ "config.enum.network_request": "network request",
1091
+ "config.enum.tool_call": "tool call",
1092
+ "config.enum.authentication": "authentication",
1093
+ "config.enum.configuration_change": "config change",
1094
+ "config.enum.session_start": "session start",
1095
+ "config.enum.session_end": "session end",
1077
1096
  "config.desc.model": "Model used for the main agent.",
1078
1097
  "config.desc.provider.active": "Which configured provider is used.",
1079
1098
  "config.desc.contextWindow": "Total context size in tokens (system prompt + history + reserve).",
@@ -1092,7 +1111,7 @@
1092
1111
  "config.desc.critic.timeoutMs": "Verifier call timeout (fail-open).",
1093
1112
  "config.desc.logLevel": "Diagnostic log verbosity.",
1094
1113
  "config.desc.locale": "Language of the interface and agent messages.",
1095
- "config.desc.version": "Installed MMA version (read-only).",
1114
+ "config.desc.version": "Installed MMA version.",
1096
1115
  "config.desc.security.enabled": "Master switch for the security module (path checks, content scans, limits).",
1097
1116
  "config.desc.security.paths.enabled": "Restrict file operations to the workspace and block paths outside it.",
1098
1117
  "config.desc.security.contentScan.enabled": "Scan file contents for dangerous patterns before writing.",
@@ -1104,12 +1123,99 @@
1104
1123
  "web.settings.context": "Context",
1105
1124
  "web.settings.reasoning": "Reasoning",
1106
1125
  "web.settings.agent": "Agent",
1126
+ "web.settings.network": "Network",
1127
+ "web.settings.browser": "Browser",
1128
+ "web.settings.sessions": "Sessions",
1107
1129
  "web.settings.ui": "UI & Theme",
1108
1130
  "web.settings.memory": "Memory",
1109
1131
  "web.settings.skills": "Skills",
1110
1132
  "web.settings.plugins": "Plugins · MCP",
1111
1133
  "web.settings.security": "Security",
1112
1134
  "web.settings.advanced": "Advanced",
1135
+ "web.settings.search_placeholder": "search settings",
1136
+ "web.settings.search_empty": "no matching setting",
1137
+ "web.settings.table_invalid": "fill the required fields first ({field})",
1138
+ "web.settings.sec.general.interface": "Interface",
1139
+ "web.settings.sec.general.agent": "Agent loop",
1140
+ "web.settings.sec.general.agent.desc": "How long and how persistently the agent works before it stops.",
1141
+ "web.settings.sec.general.provider": "Providers",
1142
+ "web.settings.sec.model.tuning": "Performance",
1143
+ "web.settings.sec.model.tuning.desc": "Token budget and how the model is loaded into memory.",
1144
+ "web.settings.sec.model.capabilities": "Capabilities",
1145
+ "web.settings.sec.model.capabilities.desc": "Manual overrides for vision/tools when probing a model gets it wrong.",
1146
+ "web.settings.sec.context.window": "Context window",
1147
+ "web.settings.sec.context.window.desc": "Total window and how it is split between the system prompt, the reply and history.",
1148
+ "web.settings.sec.context.compaction": "Compaction",
1149
+ "web.settings.sec.context.compaction.desc": "When old history is summarised to free space.",
1150
+ "web.settings.sec.context.instructions": "Instructions",
1151
+ "web.settings.sec.context.instructions.desc": "What happens when AGENTS.md or the project map is too large for the prompt.",
1152
+ "web.settings.sec.context.log": "Context log",
1153
+ "web.settings.sec.context.log.desc": "Write every prompt sent to the model to a diff file next to the session.",
1154
+ "web.settings.sec.reasoning.display": "Display",
1155
+ "web.settings.sec.reasoning.effort": "Effort",
1156
+ "web.settings.sec.reasoning.effort.desc": "Stop overrides the range — auto picks a level per step inside it.",
1157
+ "web.settings.sec.agent.moe": "Mixture of experts",
1158
+ "web.settings.sec.agent.moe.desc": "Split work into expert subtasks with a planner; slower but stronger on multi-step tasks.",
1159
+ "web.settings.sec.agent.critic": "Critic",
1160
+ "web.settings.sec.agent.critic.desc": "A second pass that reviews the agent's own work before it answers.",
1161
+ "web.settings.sec.agent.tools": "Tools & skills",
1162
+ "web.settings.sec.agent.tools.desc": "Which tools are visible up front and how much of the prompt skills may use.",
1163
+ "web.settings.sec.agent.subagent": "Sub-agents",
1164
+ "web.settings.sec.agent.subagent.desc": "How results from sub-agents come back and how they are parallelised.",
1165
+ "web.settings.sec.agent.hallucination": "Hallucination check",
1166
+ "web.settings.sec.agent.hallucination.desc": "Run a consistency pass on the reply before showing it.",
1167
+ "web.settings.sec.network.web": "Web search",
1168
+ "web.settings.sec.network.web.desc": "Master switch for the web_search tool.",
1169
+ "web.settings.sec.network.error": "Automatic error search",
1170
+ "web.settings.sec.network.error.desc": "Search the web when the same error repeats.",
1171
+ "web.settings.sec.browser.main": "Browser",
1172
+ "web.settings.sec.browser.limits": "Limits",
1173
+ "web.settings.sec.browser.limits.desc": "Caps that keep a page snapshot small enough for the context window.",
1174
+ "web.settings.sec.browser.viewport": "Viewport & timeouts",
1175
+ "web.settings.sec.sessions.main": "Sessions",
1176
+ "web.settings.sec.sessions.main.desc": "Saving, naming and how many past sessions are kept.",
1177
+ "web.settings.sec.sessions.isolation": "Isolation",
1178
+ "web.settings.sec.sessions.isolation.desc": "Keep plugins and temp files separate per session.",
1179
+ "web.settings.sec.ui.chat": "Chat output",
1180
+ "web.settings.sec.ui.chat.desc": "Status lines, progress and context meters in the chat feed.",
1181
+ "web.settings.sec.ui.theme": "Theme",
1182
+ "web.settings.sec.ui.theme.desc": "Colour scheme of this web UI. Stored in the browser, not in the config file.",
1183
+ "web.settings.sec.memory.add": "Add a note",
1184
+ "web.settings.memory_add_title": "new memory",
1185
+ "config.field.name": "name",
1186
+ "config.field.model": "model",
1187
+ "config.field.tool_tags": "tool tags",
1188
+ "config.field.max_attempts": "attempts",
1189
+ "config.field.description": "description",
1190
+ "config.field.input": "input $/1M",
1191
+ "config.field.output": "output $/1M",
1192
+ "config.field.cachedInput": "cached $/1M",
1193
+ "config.field.cacheWrite": "write $/1M",
1194
+ "config.field.vision": "vision",
1195
+ "config.field.tools": "tools",
1196
+ "web.settings.sec.security.switches": "Switches",
1197
+ "web.settings.sec.security.switches.desc": "Master switches per protection. Turning one off disables its whole group below.",
1198
+ "web.settings.sec.security.limits": "Limits",
1199
+ "web.settings.sec.security.limits.desc": "Depth, volume and rate caps for tool activity.",
1200
+ "web.settings.sec.security.bash": "Bash rules",
1201
+ "web.settings.sec.security.bash.desc": "Commands, flags and operators the bash tool refuses.",
1202
+ "web.settings.sec.security.paths": "Path rules",
1203
+ "web.settings.sec.security.paths.desc": "Glob patterns for paths that are denied or, if set, exclusively allowed.",
1204
+ "web.settings.sec.security.network": "Network rules",
1205
+ "web.settings.sec.security.network.desc": "Domains blocked or, if set, exclusively allowed.",
1206
+ "web.settings.sec.security.scan": "Content scan",
1207
+ "web.settings.sec.security.scan.desc": "Patterns searched in file contents before writing.",
1208
+ "web.settings.sec.security.audit": "Audit log",
1209
+ "web.settings.sec.security.audit.desc": "Send security events to a file or a webhook.",
1210
+ "web.settings.sec.security.encryption": "Session encryption",
1211
+ "web.settings.sec.security.encryption.desc": "Encrypt saved chat history and session log on disk.",
1212
+ "web.settings.sec.security.access": "Access",
1213
+ "web.settings.sec.advanced.diagnostics": "Diagnostics",
1214
+ "web.settings.sec.advanced.diagnostics.desc": "Log verbosity and the installed version.",
1215
+ "web.settings.sec.advanced.retry": "Retry",
1216
+ "web.settings.sec.advanced.retry.desc": "Backoff for failed or stalled provider requests.",
1217
+ "web.settings.sec.advanced.service": "Service",
1218
+ "web.settings.sec.advanced.service.desc": "Cost tracking, prices and the background update check.",
1113
1219
  "web.settings.add": "add",
1114
1220
  "web.settings.forget": "forget",
1115
1221
  "web.settings.search": "search",
@@ -1147,6 +1253,11 @@
1147
1253
  "web.settings.provider_priority": "priority",
1148
1254
  "web.settings.provider_rpm": "requests / min",
1149
1255
  "web.settings.provider_parallel": "max parallel",
1256
+ "web.settings.provider_max_tokens": "max completion tokens",
1257
+ "web.settings.provider_cache_mechanism": "cache mechanism",
1258
+ "web.settings.provider_cache_report": "cache report format",
1259
+ "web.settings.provider_cache_flags": "cache flags",
1260
+ "web.settings.provider_retry": "retry",
1150
1261
  "web.settings.provider_required": "type and base URL are required",
1151
1262
  "web.settings.provider_invalid": "invalid numeric value",
1152
1263
  "web.settings.provider_active_guard": "cannot delete the active provider — switch first",
@@ -1179,6 +1290,14 @@
1179
1290
  "web.settings.disabled": "disabled",
1180
1291
  "web.settings.mcp_servers": "mcp servers",
1181
1292
  "web.settings.no_mcp": "no MCP servers configured",
1293
+ "web.settings.mcp_add": "add MCP server",
1294
+ "web.settings.mcp_edit_title": "edit MCP server",
1295
+ "web.settings.mcp_required": "name plus command (stdio) or URL (sse/http) is required",
1296
+ "web.settings.mcp_invalid": "invalid value: timeout 1000–300000 ms, args/env/headers as JSON",
1297
+ "web.settings.lsp_servers": "LSP servers",
1298
+ "web.settings.no_lsp": "no LSP servers configured",
1299
+ "web.settings.lsp_note": "LSP changes are saved to config and take effect on the next run.",
1300
+ "web.settings.lsp_unavailable": "LSP unavailable",
1182
1301
  "web.settings.loading": "loading…",
1183
1302
  "web.input.placeholder": "message… (/ for commands)",
1184
1303
  "web.input.enter": "Enter — send",
@@ -1218,8 +1337,8 @@
1218
1337
  "web.selectors.current": "current",
1219
1338
  "web.selectors.context_prompt": "context window (tokens)",
1220
1339
  "web.action.thinking": "thinking",
1221
- "web.action.hide": "▾ hide",
1222
- "web.action.show": "▸ show",
1340
+ "web.action.hide": "hide",
1341
+ "web.action.show": "show",
1223
1342
  "web.action.actions_one": "{count} action",
1224
1343
  "web.action.actions_few": "{count} actions",
1225
1344
  "web.action.actions_many": "{count} actions",
@@ -1237,6 +1356,8 @@
1237
1356
  "web.command.reasoning": "reasoning display and level",
1238
1357
  "web.command.verbose": "set UI verbosity",
1239
1358
  "web.command.context": "show or set the context window",
1359
+ "web.command.security": "show security toggles or write a security key",
1360
+ "web.security.unknown_sub": "unknown subcommand: security {sub}",
1240
1361
  "web.command.session": "list or activate a session",
1241
1362
  "web.command.export": "export the active session to a file",
1242
1363
  "web.command.memory": "inspect or edit global memory",
@@ -1342,5 +1463,190 @@
1342
1463
  "web.setup.finish": "Finish setup",
1343
1464
  "web.setup.saving": "Saving…",
1344
1465
  "web.setup.saved_warning": "Saved with warnings: {warning}",
1345
- "web.setup.failed": "Setup failed. Check the values and try again."
1466
+ "web.setup.failed": "Setup failed. Check the values and try again.",
1467
+ "config.key.provider.fallback": "fallback providers",
1468
+ "config.desc.provider.fallback": "Fall back to the next provider entry when the active one fails.",
1469
+ "config.key.provider.maxCompletionTokens": "max completion tokens",
1470
+ "config.desc.provider.maxCompletionTokens": "Hard cap on completion tokens per request (512-128000).",
1471
+ "config.key.contextBudget.compactionThreshold": "compaction threshold",
1472
+ "config.desc.contextBudget.compactionThreshold": "History load share that allows periodic compaction (0.05-0.9).",
1473
+ "config.key.contextBudget.compactionMinLoad": "compaction min load",
1474
+ "config.desc.contextBudget.compactionMinLoad": "Minimum history load required before compaction may run (0.05-0.9).",
1475
+ "config.key.instructions.summarize": "summarize instructions",
1476
+ "config.desc.instructions.summarize": "Summarize oversized AGENTS.md/project-map blocks instead of truncating.",
1477
+ "config.key.contextLog.enabled": "context log",
1478
+ "config.desc.contextLog.enabled": "Write the LLM-bound context of every iteration to <session>/context.diff.",
1479
+ "config.key.contextLog.redact": "redact context log",
1480
+ "config.desc.contextLog.redact": "Redact recognizable secrets (tokens, keys) in the context log.",
1481
+ "config.key.reasoning.min": "min reasoning",
1482
+ "config.desc.reasoning.min": "Lower bound of the reasoning effort range.",
1483
+ "config.key.reasoning.max": "max reasoning",
1484
+ "config.desc.reasoning.max": "Upper bound of the reasoning effort range.",
1485
+ "config.key.reasoning.baseline": "baseline reasoning",
1486
+ "config.desc.reasoning.baseline": "Default reasoning effort used when the model gives no signal.",
1487
+ "config.key.reasoning.overrideCooldown": "reasoning override cooldown",
1488
+ "config.desc.reasoning.overrideCooldown": "Turns before a fresh reasoning override is accepted again (1-60).",
1489
+ "config.key.autoPlan": "auto-plan",
1490
+ "config.desc.autoPlan": "Let the agent draft a plan automatically for multi-step tasks.",
1491
+ "config.key.tools.enableOnDemand": "on-demand tools",
1492
+ "config.desc.tools.enableOnDemand": "Load narrow tool groups on demand instead of exposing all tools.",
1493
+ "config.key.session.autoSave": "auto-save session",
1494
+ "config.desc.session.autoSave": "Persist the session log after every turn.",
1495
+ "config.key.session.maxSessions": "max sessions",
1496
+ "config.desc.session.maxSessions": "How many recent sessions are kept on disk (1-500).",
1497
+ "config.key.session.isolateMemory": "isolate session memory",
1498
+ "config.desc.session.isolateMemory": "Keep session memory separate from the global one.",
1499
+ "config.key.session.autoName": "auto-name sessions",
1500
+ "config.desc.session.autoName": "Derive a session name from the first message (LLM-refined).",
1501
+ "config.key.sessionIsolation.enabled": "session isolation",
1502
+ "config.desc.sessionIsolation.enabled": "Master switch for per-session isolation (plugins, temp files).",
1503
+ "config.key.sessionIsolation.isolatePlugins": "isolate plugins",
1504
+ "config.desc.sessionIsolation.isolatePlugins": "Give each session its own plugin sandbox.",
1505
+ "config.key.sessionIsolation.isolateTempFiles": "isolate temp files",
1506
+ "config.desc.sessionIsolation.isolateTempFiles": "Give each session its own temp-file directory.",
1507
+ "config.key.ui.spinner": "spinner",
1508
+ "config.desc.ui.spinner": "Animate a progress spinner while tools run.",
1509
+ "config.key.ui.showContextStats": "context stats",
1510
+ "config.desc.ui.showContextStats": "Show context usage stats after each turn.",
1511
+ "config.key.ui.showCompaction": "compaction notice",
1512
+ "config.desc.ui.showCompaction": "Notify in chat when history compaction runs.",
1513
+ "config.key.retry.maxRetries": "max retries",
1514
+ "config.desc.retry.maxRetries": "Max retries for failed LLM requests (0-10).",
1515
+ "config.key.retry.baseDelay": "retry base delay",
1516
+ "config.desc.retry.baseDelay": "Base backoff delay between retries in ms (0-60000).",
1517
+ "config.key.retry.maxDelay": "retry max delay",
1518
+ "config.desc.retry.maxDelay": "Backoff delay cap between retries in ms (0-300000).",
1519
+ "config.key.retry.maxStreamRetries": "max stream retries",
1520
+ "config.desc.retry.maxStreamRetries": "Max retries for stalled or interrupted streams (0-10).",
1521
+ "config.key.retry.noDataTimeoutMs": "stream stall timeout (ms)",
1522
+ "config.desc.retry.noDataTimeoutMs": "Give up on a stream silent for this long, in ms (1000-600000).",
1523
+ "config.key.pricing.enabled": "cost tracking",
1524
+ "config.desc.pricing.enabled": "Track token usage and estimated cost per session.",
1525
+ "config.key.updater.enabled": "auto-update",
1526
+ "config.desc.updater.enabled": "Master switch for background update checks.",
1527
+ "config.key.updater.checkOnStart": "check on start",
1528
+ "config.desc.updater.checkOnStart": "Check for updates when the agent starts.",
1529
+ "config.key.updater.autoInstall": "auto-install updates",
1530
+ "config.desc.updater.autoInstall": "Install downloaded updates without asking.",
1531
+ "config.key.updater.intervalMs": "update check interval (ms)",
1532
+ "config.desc.updater.intervalMs": "Minimum time between update checks, in ms (0-86400000).",
1533
+ "config.key.skills.budget": "skills budget share",
1534
+ "config.desc.skills.budget": "Share of the system budget reserved for skill definitions (0.05-0.9).",
1535
+ "config.key.hallucination.judge.enabled": "hallucination judge",
1536
+ "config.desc.hallucination.judge.enabled": "Score answer confidence and flag likely hallucinations.",
1537
+ "config.key.subagent.resultMode": "subagent result mode",
1538
+ "config.desc.subagent.resultMode": "How subagent results return: inline text or via file.",
1539
+ "config.key.subagent.maxSummaryChars": "subagent summary limit",
1540
+ "config.desc.subagent.maxSummaryChars": "Max chars kept from a subagent summary (100-50000).",
1541
+ "config.key.subagent.maxParallelChunkQueries": "subagent parallel chunks",
1542
+ "config.desc.subagent.maxParallelChunkQueries": "Max parallel chunk queries per subagent wave (1-16).",
1543
+ "config.key.subagent.stableSystemPrompt": "stable subagent prompt",
1544
+ "config.desc.subagent.stableSystemPrompt": "Reuse one frozen system prompt for all subagents in a run.",
1545
+ "config.key.modelLoad.autoLoad": "auto-load model",
1546
+ "config.desc.modelLoad.autoLoad": "Load the model into the backend automatically on start.",
1547
+ "config.key.modelLoad.flashAttention": "flash attention",
1548
+ "config.desc.modelLoad.flashAttention": "Enable flash-attention kernels when loading the model.",
1549
+ "config.key.modelLoad.offloadKvCacheToGpu": "offload KV cache to GPU",
1550
+ "config.desc.modelLoad.offloadKvCacheToGpu": "Keep the KV cache in GPU memory when loading the model.",
1551
+ "config.key.modelLoad.evalBatchSize": "eval batch size",
1552
+ "config.desc.modelLoad.evalBatchSize": "Prompt-eval batch size at load time (1-4096).",
1553
+ "config.key.webSearch.enabled": "web search",
1554
+ "config.desc.webSearch.enabled": "Allow the agent to search the web.",
1555
+ "config.key.errorWebSearch.enabled": "search on error",
1556
+ "config.desc.errorWebSearch.enabled": "Search the web automatically when an error looks searchable.",
1557
+ "config.key.errorWebSearch.threshold": "error search threshold",
1558
+ "config.desc.errorWebSearch.threshold": "How many matching errors trigger a search (1-20).",
1559
+ "config.key.errorWebSearch.maxResults": "error search results",
1560
+ "config.desc.errorWebSearch.maxResults": "Max search results attached per error lookup (1-20).",
1561
+ "config.key.errorWebSearch.maxQueryChars": "error query limit",
1562
+ "config.desc.errorWebSearch.maxQueryChars": "Max chars of the error text sent per query (50-2000).",
1563
+ "config.key.errorWebSearch.maxSearchesPerSession": "error searches per session",
1564
+ "config.desc.errorWebSearch.maxSearchesPerSession": "Max automatic error searches per session (0-20).",
1565
+ "config.key.errorWebSearch.requestTimeoutMs": "error search timeout (ms)",
1566
+ "config.desc.errorWebSearch.requestTimeoutMs": "Timeout per automatic error-search request, in ms (1000-120000).",
1567
+ "config.key.browser.enabled": "browser tool",
1568
+ "config.desc.browser.enabled": "Allow the agent to drive a browser.",
1569
+ "config.key.browser.headless": "headless browser",
1570
+ "config.desc.browser.headless": "Run the browser without a visible window.",
1571
+ "config.key.browser.maxElements": "max page elements",
1572
+ "config.desc.browser.maxElements": "Max accessibility-tree elements per snapshot (1-200).",
1573
+ "config.key.browser.maxContentChars": "max page content",
1574
+ "config.desc.browser.maxContentChars": "Max chars of page content kept per snapshot (100-50000).",
1575
+ "config.key.browser.maxConsoleEntries": "max console entries",
1576
+ "config.desc.browser.maxConsoleEntries": "Max browser console entries collected per snapshot (1-200).",
1577
+ "config.key.browser.maxConsoleLineChars": "max console line",
1578
+ "config.desc.browser.maxConsoleLineChars": "Max chars per console line (50-5000).",
1579
+ "config.key.browser.viewportWidth": "viewport width",
1580
+ "config.desc.browser.viewportWidth": "Browser viewport width in px (320-4096).",
1581
+ "config.key.browser.viewportHeight": "viewport height",
1582
+ "config.desc.browser.viewportHeight": "Browser viewport height in px (200-2160).",
1583
+ "config.key.browser.navigationTimeout": "navigation timeout (ms)",
1584
+ "config.desc.browser.navigationTimeout": "Timeout per page navigation, in ms (1000-120000).",
1585
+ "config.key.security.maxRecursionDepth": "max recursion depth",
1586
+ "config.desc.security.maxRecursionDepth": "Max nested tool-call depth before refusal (0-20).",
1587
+ "config.key.security.maxFileOperations": "max file operations",
1588
+ "config.desc.security.maxFileOperations": "Max file operations per turn before refusal (0-10000).",
1589
+ "config.key.security.rateLimits.maxRequestsPerMinute": "max requests per minute",
1590
+ "config.desc.security.rateLimits.maxRequestsPerMinute": "LLM request rate cap per minute (1-1000).",
1591
+ "config.key.security.rateLimits.maxParallelTasks": "max parallel tasks",
1592
+ "config.desc.security.rateLimits.maxParallelTasks": "Cap on parallel subtasks (1-50).",
1593
+ "config.key.tools.defaultTags": "default tool tags",
1594
+ "config.desc.tools.defaultTags": "Tool groups always loaded without on-demand gating.",
1595
+ "config.key.security.bash.enabled": "bash command validation",
1596
+ "config.desc.security.bash.enabled": "Master switch for bash tool validation.",
1597
+ "config.key.security.bash.blockDangerousFlags": "block dangerous flags",
1598
+ "config.desc.security.bash.blockDangerousFlags": "Reject risky shell flags like --force in the bash tool.",
1599
+ "config.key.security.network.enabled": "network requests",
1600
+ "config.desc.security.network.enabled": "Master switch for outbound network checks (SSRF guard).",
1601
+ "config.key.security.bash.blacklist": "bash blacklist",
1602
+ "config.desc.security.bash.blacklist": "Commands always blocked in the bash tool (list).",
1603
+ "config.key.security.bash.whitelist": "bash whitelist",
1604
+ "config.desc.security.bash.whitelist": "Commands always allowed in the bash tool (list).",
1605
+ "config.key.security.bash.dangerousFlags": "dangerous flags",
1606
+ "config.desc.security.bash.dangerousFlags": "Command flags treated as dangerous (list).",
1607
+ "config.key.security.bash.dangerousOperators": "dangerous operators",
1608
+ "config.desc.security.bash.dangerousOperators": "Shell operators treated as dangerous (list).",
1609
+ "config.key.security.paths.denied": "denied paths",
1610
+ "config.desc.security.paths.denied": "Paths always off-limits for file tools (list).",
1611
+ "config.key.security.paths.allowed": "allowed paths",
1612
+ "config.desc.security.paths.allowed": "Extra paths allowed outside the workspace (list).",
1613
+ "config.key.security.network.deniedDomains": "denied domains",
1614
+ "config.desc.security.network.deniedDomains": "Domains the agent may never contact (list).",
1615
+ "config.key.security.network.allowedDomains": "allowed domains",
1616
+ "config.desc.security.network.allowedDomains": "Domains the agent may contact (list; empty means any).",
1617
+ "config.key.security.network.requestTimeout": "network timeout (ms)",
1618
+ "config.desc.security.network.requestTimeout": "Timeout per outbound tool request, in ms (1000-120000).",
1619
+ "config.key.security.network.maxResponseSize": "max response size",
1620
+ "config.desc.security.network.maxResponseSize": "Max bytes kept per outbound response (1024-1000000).",
1621
+ "config.key.security.contentScan.dangerousPatterns": "dangerous patterns",
1622
+ "config.desc.security.contentScan.dangerousPatterns": "Regular expressions searched in file contents before writing.",
1623
+ "config.key.security.auditNotifier.enabled": "audit notifier",
1624
+ "config.desc.security.auditNotifier.enabled": "Send security-audit events to a file or webhook.",
1625
+ "config.key.security.auditNotifier.filePath": "audit log path",
1626
+ "config.desc.security.auditNotifier.filePath": "File the audit events are appended to.",
1627
+ "config.key.security.auditNotifier.webhookUrl": "audit webhook URL",
1628
+ "config.desc.security.auditNotifier.webhookUrl": "Webhook the audit events are posted to.",
1629
+ "config.key.security.auditNotifier.webhookTimeout": "audit webhook timeout (ms)",
1630
+ "config.desc.security.auditNotifier.webhookTimeout": "Timeout per webhook post, in ms (1000-60000).",
1631
+ "config.key.security.auditNotifier.minSeverity": "audit min severity",
1632
+ "config.desc.security.auditNotifier.minSeverity": "Lowest severity that still notifies (low/medium/high/critical).",
1633
+ "config.key.security.auditNotifier.eventTypes": "audit event types",
1634
+ "config.desc.security.auditNotifier.eventTypes": "Which audit event types notify; none selected means all.",
1635
+ "config.key.security.auditNotifier.maxRetries": "audit max retries",
1636
+ "config.desc.security.auditNotifier.maxRetries": "Retries per failed notification post (0-10).",
1637
+ "config.key.security.sessionEncryption.keyPath": "encryption key path",
1638
+ "config.desc.security.sessionEncryption.keyPath": "File holding the session-encryption key.",
1639
+ "config.key.security.sessionEncryption.encryptHistory": "encrypt chat history",
1640
+ "config.desc.security.sessionEncryption.encryptHistory": "Encrypt the saved chat history on disk.",
1641
+ "config.key.security.sessionEncryption.encryptSessionLog": "encrypt session log",
1642
+ "config.desc.security.sessionEncryption.encryptSessionLog": "Encrypt the saved session.jsonl log on disk.",
1643
+ "config.key.pricing.overrides": "pricing overrides",
1644
+ "config.desc.pricing.overrides": "Per-model price table overriding built-ins.",
1645
+ "config.key.modelCapabilities": "model capabilities",
1646
+ "config.desc.modelCapabilities": "Manual vision/tools overrides per model id.",
1647
+ "config.key.experts": "MoE experts",
1648
+ "config.desc.experts": "Expert roster for the MoE orchestrator.",
1649
+ "config.enum.text": "text",
1650
+ "config.enum.file": "file",
1651
+ "config.enum.critical": "critical"
1346
1652
  }