/** * The English message catalog: every user-visible UI string the terminal * renders, keyed for {@link t}. The catalog is a plain record so missing * keys fail typecheck against the shared key union, not at runtime. * * @module @deepseek-ai/dsh-tui/locales/en */ export declare const en: { readonly 'panel.close': "esc/q close"; readonly 'panel.moveEnterSelect': "↑↓ move · enter select · esc close"; readonly 'panel.moveEnterSelectBack': "↑↓ move · enter select · esc back · q close"; readonly 'panel.scrollEnds': "↑↓ scroll · pgup/pgdn page · g/G ends · esc/q close"; readonly 'panel.loading': "loading…"; readonly 'panel.loadFailed': "load failed"; readonly 'panel.noMatch': "no matching entries"; readonly 'panel.emptyClose': "esc close"; readonly 'panel.searchIdle': "search: type to filter"; readonly 'panel.searchIdleStop': "search: type to filter · esc stops"; readonly 'panel.searchPrefix': "search: "; readonly 'language.title': "/language — interface language"; readonly 'language.hint': "↑↓ move · enter apply · esc/q close"; readonly 'theme.title': "/theme — color palette"; readonly 'theme.compact': "/theme · esc close"; readonly 'theme.current': "current"; readonly 'theme.dark.label': "dark"; readonly 'theme.dark.description': "DeepSeek dark palette (default)"; readonly 'theme.light.label': "light"; readonly 'theme.light.description': "light palette for bright terminals"; readonly 'theme.prismatic.label': "prismatic"; readonly 'theme.prismatic.description': "neon synthwave palette (violet/magenta/cyan)"; readonly 'theme.rainbow.label': "rainbow"; readonly 'theme.rainbow.description': "randomized carnival palette (/rainbow to reroll)"; readonly 'theme.auto.label': "auto"; readonly 'theme.auto.description': "follow the terminal; dark until detection lands"; readonly 'history.title.prompts': "/history · {count} prompts · type to filter"; readonly 'history.title.match': "/history · {matches} of {count} match '{query}'"; readonly 'history.filterHint': "filter {state}, enter fills the composer"; readonly 'history.filterEmpty': "· type to search prompts"; readonly 'history.filterQuery': "· {query}"; readonly 'history.empty': "no matching prompts"; readonly 'history.compact.none': "no matching prompts"; readonly 'history.footer': "↑↓ move · g/G ends · enter fill · esc close"; readonly 'search.title.type': "/search · type a query and press enter"; readonly 'search.title.hits': "/search · {count} hit for '{query}'"; readonly 'search.title.hitsPlural': "/search · {count} hits for '{query}'"; readonly 'search.hint': "{state} · enter searches or resumes"; readonly 'search.hintEmpty': "type to search sessions"; readonly 'search.empty.idle': "full-text search across every persisted session"; readonly 'search.empty.noHits': "no matching sessions{loading}"; readonly 'search.compact.noResults': "no results yet"; readonly 'search.compact.searching': "searching…"; readonly 'search.compact.error': "error: {message}"; readonly 'search.footer': "↑↓ move · enter search/resume · esc close"; readonly 'header.hint': "/help · Esc interrupt · Ctrl+C quit"; readonly 'header.hintResumed': "resumed · /help · Esc interrupt"; readonly 'statusline.title': "/statusline · items apply to the live status line below"; readonly 'statusline.item.model': "model"; readonly 'statusline.item.model.desc': "provider/model serving this session"; readonly 'statusline.item.cwd': "cwd"; readonly 'statusline.item.cwd.desc': "working-directory basename"; readonly 'statusline.item.mode': "mode"; readonly 'statusline.item.mode.desc': "agent preset composing the session"; readonly 'statusline.item.branch': "branch"; readonly 'statusline.item.branch.desc': "git branch inside a repository"; readonly 'statusline.item.context': "context"; readonly 'statusline.item.context.desc': "context-window occupancy meter"; readonly 'statusline.item.permission': "permission"; readonly 'statusline.item.permission.desc': "permission preset badge with cycle hint"; readonly 'statusline.item.plan': "plan"; readonly 'statusline.item.plan.desc': "plan-mode state mark"; readonly 'statusline.item.turns': "turns"; readonly 'statusline.item.turns.desc': "turn and step counters"; readonly 'statusline.item.durations': "durations"; readonly 'statusline.item.durations.desc': "llm/ttft/decode/tool wall time"; readonly 'statusline.item.cache': "cache"; readonly 'statusline.item.cache.desc': "cache-hit share of billed input"; readonly 'statusline.item.tokens': "tokens"; readonly 'statusline.item.tokens.desc': "cumulative input/output tokens"; readonly 'statusline.item.title': "title"; readonly 'statusline.item.title.desc': "session title or short id"; readonly 'statusline.item.goal': "goal"; readonly 'statusline.item.goal.desc': "live goal phase and round progress"; readonly 'statusline.item.sandbox': "sandbox"; readonly 'statusline.item.sandbox.desc': "divergent sandbox-mode override"; readonly 'schedule.title': "/schedule · {count} active reminder"; readonly 'schedule.titlePlural': "/schedule · {count} active reminders"; readonly 'schedule.empty': "no active reminders — the model creates them with schedule_create"; readonly 'document.loading': "loading transcript…"; readonly 'attach.bar': "observing · {label} · r reload · esc/ctrl+d back"; readonly 'attach.loading': "loading {label}'s conversation…"; readonly 'attach.status': "subagent {label} · {id} · {turns} turns"; readonly 'notice.attachUnavailable': "subagent attachment is unavailable in this profile"; readonly 'document.compact': "transcript · esc close"; readonly 'document.expanded': "expanded"; readonly 'document.refreshHint': "r refresh"; readonly 'document.footerExpanded': "lines {from}-{to}/{total} · ↑↓/pg/g/G{refresh} · esc/ctrl+d back"; readonly 'document.footer': "lines {from}-{to}/{total} · ↑↓/pg/g/G · enter/f expand · t/esc close"; readonly 'review.picker.title': "/review · choose a target"; readonly 'review.picker.uncommitted': "Review uncommitted changes (staged / unstaged / new files)"; readonly 'review.picker.branch': "Compare against a base branch (lists local branches)"; readonly 'review.picker.commit': "Review a commit on the current branch (lists recent commits)"; readonly 'review.picker.custom': "Custom review focus (type it)"; readonly 'review.picker.customHint': "type your focus, then enter to start the review"; readonly 'review.picker.branches': "{filtered} of {total} branches"; readonly 'review.picker.commits': "{filtered} of {total} commits"; readonly 'review.picker.loadingBranches': "loading branches…"; readonly 'review.picker.loadingCommits': "loading commits…"; readonly 'review.picker.empty': "no candidates"; readonly 'review.picker.noMatch': "no matches"; readonly 'review.picker.loading': "loading…"; readonly 'review.picker.loadFailed': "load failed"; readonly 'review.picker.compact': "pick a review target"; readonly 'review.picker.footer': "↑↓ move · enter select · esc back · q close"; readonly 'review.summary.untagged': "untagged×{n}"; readonly 'review.summary.incorrect': "patch incorrect"; readonly 'review.summary.correctClean': "no issues found"; readonly 'review.summary.correct': "patch correct"; readonly 'review.summary.noConclusion': "review finished: no structured conclusion"; readonly 'review.summary.zero': "review finished: 0 findings · {verdict}"; readonly 'review.summary.count': "review finished: {count} findings ({parts})"; readonly 'review.summary.countVerdict': "review finished: {count} findings ({parts}) · {verdict}"; readonly 'review.notice.started': "review started under read-only permissions"; readonly 'review.notice.failed': "review failed: {message}"; readonly 'review.notice.unavailable': "review unavailable: {message}"; readonly 'cmd.help': "show this overlay"; readonly 'cmd.model': "switch the model and manage providers"; readonly 'cmd.effort': "adjust reasoning effort for the current model"; readonly 'cmd.mode': "inspect or select the agent preset (/mode [preset])"; readonly 'cmd.permission': "inspect or select the permission preset (/permission [preset])"; readonly 'cmd.new': "create and switch to a fresh session (/new [preset])"; readonly 'cmd.fork': "fork at the latest completed turn (/fork [event-seq])"; readonly 'cmd.resume': "browse or switch root sessions (/resume [id|prefix])"; readonly 'cmd.search': "full-text search across persisted sessions (/search [query])"; readonly 'cmd.plugin': "inspect the live plugin composition"; readonly 'cmd.update': "update dsh-code, the harness host, and profile plugins in one aligned step"; readonly 'cmd.jobs': "inspect background jobs"; readonly 'cmd.schedule': "inspect active reminders (created through schedule tools)"; readonly 'cmd.statusline': "customize the status line items"; readonly 'cmd.theme': "switch the color theme"; readonly 'cmd.language': "switch the interface language (/language [en|zh])"; readonly 'cmd.rainbow': "reroll or pin the rainbow palette (/rainbow [seed])"; readonly 'cmd.animation': "toggle decorative animations; shimmer and activity stay live (/animation [on|off])"; readonly 'cmd.history': "search and recall past prompts"; readonly 'cmd.queue': "manage messages queued for the next turn"; readonly 'cmd.usage': "show this session token usage"; readonly 'cmd.agents': "inspect subagent sessions of this conversation"; readonly 'cmd.todos': "inspect the full todo list"; readonly 'cmd.subagent': "choose the model delegated subagents run on"; readonly 'cmd.vscode-keys': "pass ctrl+r through the vs code terminal"; readonly 'cmd.delete': "delete a session and its subagent threads"; readonly 'cmd.clear': "clear the screen"; readonly 'cmd.export': "export the transcript to markdown (/export [path])"; readonly 'cmd.title': "rename this session (/title )"; readonly 'cmd.copy': "copy the latest assistant response"; readonly 'cmd.diff': "inspect Git changes (/diff [--staged|ref])"; readonly 'cmd.review': "review Git changes with the diff pasted in this session (/review [note])"; readonly 'cmd.quit': "exit"; readonly 'help.keysTitle': " keys"; readonly 'help.key.submit': "enter submit · ctrl+j / alt+enter newline · up/down history · tab complete"; readonly 'help.key.mentions': "@ mentions workspace files and sessions"; readonly 'help.key.inspector': "ctrl+o history details · ctrl/alt+r thinking · shift+tab permission preset"; readonly 'help.key.cancel': "esc interrupt the running turn · ctrl+c cancel / clear / quit · ctrl+d exit"; readonly 'help.key.queue': "empty tab picks queue or steer · /queue manages queued messages · delete cancels the newest one"; readonly 'help.key.edit': "ctrl+k cut to end of line · ctrl+u clear line · ctrl+a / ctrl+e line ends"; readonly 'help.commandsTitle': " commands"; readonly 'help.skillsTitle': " skills"; readonly 'help.footer': "↑↓ scroll · pgup/pgdn page · g/G ends · esc/q close"; readonly 'help.compact': "/help · esc/q close"; readonly 'panel.queue.title': "/queue — {count} queued · rows {from}-{to}"; readonly 'panel.queue.empty': " no messages queued for the next turn"; readonly 'panel.queue.attachments': "[attachments: read-only]"; readonly 'panel.queue.footerBusy': "↑↓ select · enter steer · e edit text · d remove · esc/q close"; readonly 'panel.queue.footerIdle': "↑↓ select · e edit text · d remove · esc/q close"; readonly 'panel.queue.editFooter': "type · ←→ move · enter save · esc cancel"; readonly 'panel.queue.compact': "/queue · esc/q close"; readonly 'panel.usage.title': "/usage — usage of this session"; readonly 'panel.usage.compact': "/usage · esc/q close"; readonly 'panel.usage.footer': "↑↓ scroll · pgup/pgdn page · g/G ends · esc/q close"; readonly 'panel.usage.totals': "Totals (whole session)"; readonly 'panel.usage.uncached': "uncached in"; readonly 'panel.usage.cacheWrite': "cache write"; readonly 'panel.usage.cacheRead': "cache read"; readonly 'panel.usage.output': "out"; readonly 'panel.usage.total': "total"; readonly 'panel.usage.cacheHit': "cache hit"; readonly 'panel.usage.turns': "Per turn"; readonly 'panel.usage.byModel': "By model"; readonly 'panel.usage.colTurns': "turns"; readonly 'panel.usage.unknownModel': "unattributed"; readonly 'panel.usage.colTurn': "turn"; readonly 'panel.usage.colTotal': "total"; readonly 'panel.usage.colUncached': "uncached"; readonly 'panel.usage.colCacheRead': "cache R"; readonly 'panel.usage.colCacheHit': "hit"; readonly 'panel.usage.colCacheWrite': "cache W"; readonly 'panel.usage.colOut': "out"; readonly 'panel.usage.colThink': "think"; readonly 'panel.usage.colModel': "model"; readonly 'panel.usage.partialNote': "+ marks a group where some turns did not report that bucket; only reported turns are counted"; readonly 'panel.usage.unavailable': "token projections are not mounted in this deployment (dsh-token-meter is missing)"; readonly 'panel.usage.noTurns': "no completed turn yet"; readonly 'status.cycleHint': "(shift+tab to cycle)"; readonly 'approval.compact': "approval{queued} · enter/y allow · esc/n reject"; readonly 'approval.overflow': "… +{count} more lines · ctrl+o shows the full call in the transcript"; readonly 'question.compact.plan': "plan review · esc cancel"; readonly 'question.compact.normal': "question · esc cancel"; readonly 'approval.submitted': "submitted…"; readonly 'approval.footer': "↑↓ choose · enter confirm · y/n/d quick · esc reject"; readonly 'question.footer': "↑↓ choose · 1-9 select · space toggle · enter submit · esc cancel"; readonly 'question.custom': "type a custom answer"; readonly 'question.submitted': "submitted…"; readonly 'question.customNoOptions': "↑↓/pgup/pgdn scroll · type answer · enter submit · esc interrupt"; readonly 'question.customOptions': "↑↓/pgup/pgdn scroll · type answer · enter submit · tab/esc or empty backspace: options"; readonly 'question.multiOptions': "↑↓ choose · pgup/pgdn scroll · space/1-9 toggle · enter submit · c custom · esc interrupt"; readonly 'question.singleOptions': "↑↓ choose · pgup/pgdn scroll · 1-9 pick · enter submit · c custom · esc interrupt"; readonly 'question.switch': " · ←→/ctrl+p/n switch question"; readonly 'question.title.plan': "📋 plan review"; readonly 'question.title.normal': "❓ question"; readonly 'composer.placeholder': "type a message · / commands · @ mentions · tab steers"; readonly 'composer.placeholderSteer': "steer into this turn · tab queues for the next one"; readonly 'notice.submitMode.queue': "send → queue for the next turn"; readonly 'notice.submitMode.steer': "send → steer into this turn (only while one runs; idle it sends normally)"; readonly 'entry.delivery.queued': "queued"; readonly 'entry.delivery.steered': "steered"; readonly 'status.shiftTabHint': "(shift+tab to cycle)"; readonly 'status.label.turns': "turns"; readonly 'status.label.steps': "steps"; readonly 'status.label.modelTime': "model"; readonly 'status.label.latency': "latency"; readonly 'status.label.tokensPerSec': " tokens/s"; readonly 'status.label.tool': "tool"; readonly 'status.label.cache': "cache"; readonly 'status.label.in': "in"; readonly 'status.label.out': "out"; readonly 'status.label.mode': "/mode"; readonly 'status.label.context': "context"; readonly 'status.label.sandbox': "sandbox"; readonly 'status.plan.on': "plan on"; readonly 'status.plan.mark': "⧉ plan"; readonly 'status.goal.round': "◎ round {current}/{max}"; readonly 'status.goal.phase': "◎ {phase}"; readonly 'frozen.keysGoTo': "keys go to {owner} · esc {action}"; readonly 'frozen.action.rejects': "rejects"; readonly 'frozen.action.cancels': "cancels"; readonly 'frozen.action.closes': "closes"; readonly 'frozen.action.waits': "waits"; readonly 'time.justNow': "now"; readonly 'time.minutesAgo': "{n}m ago"; readonly 'time.hoursAgo': "{n}h ago"; readonly 'time.daysAgo': "{n}d ago"; readonly 'notice.themeSaved': "theme → {name}"; readonly 'notice.themeRainbow': "theme → rainbow · seed {seed} · /rainbow to reroll"; readonly 'notice.rainbowRolled': "rainbow · seed {seed} · /rainbow to reroll · /rainbow {seed} to pin"; readonly 'notice.languageSaved': "language → {name}"; readonly 'notice.themeSaveFailed': "theme save failed: {message}"; readonly 'notice.languageSaveFailed': "language save failed: {message}"; readonly 'notice.alreadyActive': "that session is already active"; readonly 'notice.permissionPresetsUnmounted': "permission presets are not mounted in this composition"; readonly 'notice.queueCancelled': "queued message cancelled"; readonly 'notice.queueActionFailed': "queue action failed: {message}"; readonly 'notice.queueUnavailable': "queued message is no longer pending"; readonly 'notice.queueSteerUnavailable': "steering is available only while the turn is running"; readonly 'notice.queueEditEmpty': "queued message cannot be empty"; readonly 'notice.queueEdited': "queued message edited"; readonly 'notice.queueSteered': "queued message moved into this turn"; readonly 'notice.historySaveFailed': "history save failed: {message}"; readonly 'notice.turnCancelled': "turn cancelled — Ctrl+C or /quit to exit"; readonly 'notice.turnCancelledKeepQueue': "turn cancelled — pending messages are preserved · Ctrl+C or /quit to exit"; readonly 'notice.noSessionYet': "no session yet — submit a message to start"; readonly 'notice.usage.animation': "usage: /animation [on|off]"; readonly 'notice.usage.language': "usage: /language [en|zh]"; readonly 'notice.usage.rainbow': "usage: /rainbow [seed]"; readonly 'notice.usage.bareCommand': "usage: /{name}"; readonly 'notice.switchInProgress': "switching sessions — send again once the new session is up, or /resume cancel"; readonly 'notice.imageCancelled': "image submission cancelled"; readonly 'notice.themeConfigUnreadable': "theme config unreadable, using dark: {message}"; readonly 'notice.languageConfigUnreadable': "language config unreadable, using english: {message}"; readonly 'notice.animationsConfigUnreadable': "decorative animation config unreadable, effects stay on: {message}"; readonly 'notice.statuslineConfigUnreadable': "statusline config unreadable, using defaults: {message}"; readonly 'notice.sessionSearchUnavailable': "session search is unavailable in this deployment"; readonly 'notice.subagentsReadOnly': "subagent conversations are read-only"; readonly 'notice.statuslineSaveFailed': "statusline save failed: {message}"; readonly 'notice.animationsSaveFailed': "decorative animation save failed: {message}"; readonly 'notice.commandRegistryMissing': "no command registry is mounted in this composition"; readonly 'notice.commandFallbackFailed': "command fallback failed: {message}"; readonly 'notice.commandFailed': "command failed: {message}"; readonly 'notice.invalidReference': "invalid session reference: {message}"; readonly 'notice.messageFailed': "{kind} failed: {message}"; readonly 'notice.referenceFailed': "session reference failed: {message}"; readonly 'notice.activationFailed': "session activation failed: {message}"; readonly 'notice.creationFailed': "session creation failed: {message}"; readonly 'notice.modeChanged': "mode → {value}"; readonly 'notice.modeSwitchFailed': "mode switch failed: {message}"; readonly 'notice.permissionChanged': "permission → {value}"; readonly 'notice.permissionChangeFailed': "permission change failed: {message}"; readonly 'notice.cancelFailed': "cancel failed: {message}"; readonly 'notice.modeChangeFailed': "mode change failed: {message}"; readonly 'notice.modelNotDefault': "model switch applies to this session but was not saved as the default: {message}"; readonly 'notice.modelSelectionRejected': "model selection rejected: {message} — reopen /model to pick again"; readonly 'notice.exported': "exported to {path}"; readonly 'notice.exportFailed': "export failed: {message}"; readonly 'notice.resumeFailed': "resume failed: {message}"; readonly 'notice.forkFailed': "fork failed: {message}"; readonly 'notice.sessionSwitchFailed': "session switch failed: {message}"; readonly 'notice.sessionCreated': "created {id} · mode {mode}"; readonly 'notice.sessionResumed': "resumed {id} · mode {mode}"; readonly 'notice.sessionSwitchedDirty': "switched to {id}, but {detail}"; readonly 'notice.flushFailed': "previous session flush failed: {message}"; readonly 'notice.agentReleaseFailed': "previous agent release failed: {message}"; readonly 'notice.copyEmpty': "nothing to copy yet"; readonly 'notice.copied': "copied latest response"; readonly 'notice.switchQueued': "will switch to {label} when the current turn finishes · /resume cancel to abort"; readonly 'notice.reviewStarted': "review started under read-only permissions"; readonly 'notice.reviewFailed': "review failed: {message}"; readonly 'notice.reviewUnavailable': "review unavailable: {message}"; readonly 'notice.startupImages': "processing {count} startup image{plural}…"; readonly 'notice.startupImagesAttached': "{count} startup image{plural} attached"; readonly 'notice.initialPromptFailed': "initial prompt failed: {message}"; readonly 'notice.rejected': "rejected — type below what it should do differently (it steers the next step)"; readonly 'notice.attachmentAlready': "{name} is already attached"; readonly 'notice.attachmentsChecking': "checking {count} attachment{plural}…"; readonly 'notice.attachmentsAlready': "those attachments are already attached"; readonly 'notice.attachmentDraftChanged': "draft changed at the attachment drop point; drop the files again"; readonly 'notice.attachmentsReady': "{count} attachment{plural} ready for the next message"; readonly 'notice.attachmentFailed': "attachment failed: {message}"; readonly 'notice.imageChecking': "checking image {name}…"; readonly 'notice.imageDraftChanged': "draft changed around the image mention; select it again"; readonly 'notice.imageReady': "{name} ready for the next message"; readonly 'notice.imageFailed': "image attachment failed: {message}"; readonly 'notice.cancelBeforeExit': "cancel the running turn before exiting (Esc or Ctrl+C)"; readonly 'notice.commandAttachments': "commands cannot carry attachments; the line will be sent to the model as a prompt"; readonly 'notice.copyFailed': "copy failed: {message}"; readonly 'notice.vscodeKeysFailed': "vscode-keys failed: {message}"; readonly 'notice.animationState': "decorative animations {state}; activity indicators stay live"; readonly 'notice.deleteFailed': "delete failed: {message}"; readonly 'notice.modelChangedPlaceholder': "model → {model} · image history will be sent as text placeholders"; readonly 'notice.modelNextStep': "model → next step uses {model}"; readonly 'notice.modelSwitchFailed': "model switch failed: {message}"; readonly 'notice.loggedIn': "logged in to {provider}; select a model"; readonly 'notice.loggedOut': "logged out from {provider}"; readonly 'notice.providerSaved': "provider configuration saved: {provider}{suffix}"; readonly 'notice.apiKeyRemoved': "API key removed for {provider}"; readonly 'notice.providerRemoved': "provider removed: {provider}"; readonly 'notice.providerUnavailable': "provider configuration is unavailable in this profile"; readonly 'notice.apiKeyUnavailable': "API key removal is unavailable in this profile"; readonly 'notice.providerRemovalUnavailable': "provider removal is unavailable in this profile"; readonly 'notice.loginIdleOnly': "provider login is available only while the agent is idle"; readonly 'notice.loginUnavailable': "provider login is unavailable in this profile"; readonly 'notice.logoutUnavailable': "provider logout is unavailable in this profile"; readonly 'notice.modeChangedSimple': "mode → {value}"; readonly 'notice.permissionChangedSimple': "permission → {value}"; readonly 'notice.subagentsChanged': "subagents → {value}"; readonly 'notice.subagentsInherited': "subagents → inherit current model"; readonly 'notice.subagentChangeFailed': "subagent model change failed: {message}"; readonly 'notice.modelMissing': "current model is not in the catalog"; readonly 'notice.effortUnavailable': "reasoning levels temporarily unavailable (capability lookup failed) — try again"; readonly 'notice.modelLookupFailed': "model lookup failed: {message}"; readonly 'notice.diffFailed': "diff failed: {message}"; readonly 'panel.footer.chooseSwitch': "↑↓ choose · enter switch · r refresh · esc close"; readonly 'panel.footer.chooseSelect': "↑↓ choose · enter select · r refresh · esc close"; readonly 'panel.footer.inspectDetails': "↑↓ inspect · enter details · r refresh · esc close"; readonly 'panel.footer.inspectRefresh': "↑↓ inspect · r refresh · esc close"; readonly 'panel.footer.resume': "tab/←→ filters · ↑↓/pg navigate · ctrl+f search · e details · t transcript · enter resume"; readonly 'panel.footer.delete': "tab/←→ filters · ↑↓/pg navigate · ctrl+f search · e details · t transcript · enter delete · esc close"; readonly 'panel.footer.transcript': "lines {from}-{to}/{total} · ↑↓/pg/g/G · t/esc close"; readonly 'panel.footer.history': "↑↓ move · g/G ends · enter fill · esc close"; readonly 'panel.footer.review': "↑↓ move · enter select · esc back · q close"; readonly 'panel.footer.statusline': "↑↓ move · space toggle · ←→ reorder · d default · esc close"; readonly 'panel.footer.schedule': "esc/q close{more} · the model schedules via schedule_create"; readonly 'panel.mode.title': "/mode · current {current}"; readonly 'panel.permission.title': "/permission · current {current}"; readonly 'panel.plugin.title': "/plugin · loader inspector"; readonly 'panel.jobs.title': "/jobs · background tasks · {count}"; readonly 'panel.resume.deleteTitle': "permanently delete {target}? this cannot be undone · subagent threads go too"; readonly 'panel.resume.title': "/resume{mode}{search} · {toolbar}"; readonly 'panel.delete.title': "/delete{search} · {toolbar}"; readonly 'panel.noActiveReminders': "no active reminders — the model schedules via schedule_create"; readonly 'panel.notMounted': "not mounted"; readonly 'panel.broken': "broken: {message}"; readonly 'panel.live': "live"; readonly 'panel.parent': "parent {id}"; readonly 'panel.deleteMode': "delete mode"; readonly 'panel.searching': "searching"; readonly 'panel.noPresets': "no presets"; readonly 'panel.noPermissions': "no permission presets"; readonly 'panel.noJobs': "no background jobs"; readonly 'panel.diff.compact': "{title} · {files} files · esc/q close"; readonly 'panel.diff.noFiles': "no files"; readonly 'panel.diff.footer': "↑/↓ scroll · g/G ends · esc/q close"; readonly 'panel.todos.compact': "todos · esc/q close"; readonly 'panel.todos.title': "todos · {done}/{total} done · {active} active · {pending} pending · rows {from}-{to}/{rows}"; readonly 'panel.todos.empty': "no todos yet"; readonly 'panel.todos.footer': "↑↓ scroll · pgup/pgdn page · g/G ends · esc/q close"; readonly 'panel.verbose.compact': "history details · ctrl+o / esc / q close"; readonly 'panel.verbose.footer': "←→ entry · ↑↓ scroll · pgup/pgdn page · g/G ends · ctrl+o/esc/q close"; readonly 'panel.model.compact': "/model · {state}{providers} · {tail}"; readonly 'panel.model.noMatch': "no models match '{query}'"; readonly 'panel.model.compactNoMatch': "no match for '{query}'"; readonly 'panel.model.loading': "loading…"; readonly 'panel.model.error': "error"; readonly 'panel.model.noModels': "no models available"; readonly 'panel.model.selectTitle': "/model — select model"; readonly 'panel.model.matches': "{filtered} of {total} match '{query}'"; readonly 'panel.model.footer.filter': "type to filter · r retry · esc/q close"; readonly 'panel.model.footer.filtered': "backspace edits · esc close"; readonly 'panel.model.title': "/model — select model"; readonly 'panel.model.titleCount': "/model — select model · {index}/{total}"; readonly 'panel.model.titleMatches': "/model — select model · {filtered} of {total} match '{query}'"; readonly 'panel.model.footer.select': "type to filter · ↑↓ move · pgup/pgdn page · enter select{providers} · r retry · esc/q close"; readonly 'panel.model.footer.filteredSelect': "↑↓ move · pgup/pgdn page · enter select · backspace edits · esc close"; readonly 'panel.model.providers': "tab providers"; readonly 'panel.provider.failure': "unavailable providers: {providers}"; readonly 'panel.provider.loading': "loading providers…"; readonly 'panel.provider.empty': "no configurable providers"; readonly 'panel.provider.notConfigured': "not configured"; readonly 'panel.provider.configured': "configured"; readonly 'panel.provider.keyMissing': "key missing"; readonly 'panel.provider.keyStatusUnavailable': "key status unavailable"; readonly 'panel.provider.auth': "provider auth"; readonly 'panel.provider.active': "active"; readonly 'panel.provider.dormant': "dormant"; readonly 'panel.provider.readOnly': "read-only"; readonly 'panel.provider.custom': "custom"; readonly 'panel.provider.notConfiguredDivider': "── not configured ──"; readonly 'panel.provider.title': "/model — providers"; readonly 'panel.provider.titleCount': "/model — providers · {index}/{total}"; readonly 'panel.provider.key': "key {value}"; readonly 'panel.provider.authConfigured': "provider auth"; readonly 'panel.provider.noKey': "key missing"; readonly 'panel.provider.noLogin': "not configured"; readonly 'panel.provider.loginStatusUnavailable': "login status unavailable: {message}"; readonly 'panel.provider.noConfiguredKey': "this provider has no configured API key to remove"; readonly 'panel.provider.readOnlyKey': "this API key is supplied read-only by the environment"; readonly 'panel.provider.notRemovable': "this provider profile is not removable"; readonly 'panel.provider.noLoginFlow': "this provider offers no interactive login flow"; readonly 'panel.provider.loginRunning': "a login attempt is already running for this provider"; readonly 'panel.provider.noLoginRecord': "this provider has no login record to remove"; readonly 'panel.provider.readOnlyLogin': "this login record is read-only"; readonly 'panel.provider.notManaged': "this provider is not managed by Harness settings"; readonly 'panel.providers.compact': "/model providers · enter configure · d remove key · esc back"; readonly 'panel.providers.footer': "↑↓ move · enter configure · d remove key · x remove provider · r retry · esc back"; readonly 'panel.update.compact': "/update · {summary}"; readonly 'panel.update.checking': "checking…"; readonly 'panel.update.probeFailed': "probe failed"; readonly 'panel.update.updating': "updating…"; readonly 'panel.update.installed': "installed — restart to activate"; readonly 'panel.update.failed': "failed"; readonly 'panel.update.upToDate': "up to date"; readonly 'panel.update.aheadOfNpm': "newer than npm"; readonly 'panel.update.enter': "enter updates"; readonly 'panel.update.blocked': "blocked"; readonly 'panel.update.title': "/update · aligned upgrade"; readonly 'panel.auth.methodsFooter': "↑↓ choose · enter continue · esc/q back"; readonly 'panel.auth.answerFooter': "enter answer · c copy URL/code · esc cancel login"; readonly 'panel.auth.title': "/model · login {provider}"; readonly 'panel.auth.waiting': "waiting for provider…"; readonly 'panel.auth.compact': "provider login · esc cancel"; readonly 'panel.auth.logoutCompact': "y logout · n/esc back"; readonly 'panel.auth.logoutTitle': "/model · logout provider"; readonly 'panel.auth.removeRecord': "remove {provider} login record"; readonly 'panel.auth.unchanged': "provider endpoint and model configuration stay unchanged"; readonly 'panel.auth.working': "working…"; readonly 'panel.auth.logoutFooter': "y confirm · n/esc back"; readonly 'panel.setup.compact': "provider setup · terminal too small · esc back"; readonly 'panel.setup.noDonors': "no model with declared efforts yet; declare one with e, or hand-write settings"; readonly 'panel.setup.copyInto': "copy verbatim into {id}"; readonly 'panel.setup.copyTitle': "/model — copy efforts"; readonly 'panel.setup.copyFooter': "↑↓ move · enter copy · esc back"; readonly 'panel.setup.mode.subscribe': "Subscription"; readonly 'panel.setup.mode.key': "Key"; readonly 'panel.setup.mode.login.plan': "signed in · plan"; readonly 'panel.setup.mode.login.none': "not signed in"; readonly 'panel.setup.mode.login.running': "signing in…"; readonly 'panel.setup.mode.overridden': "⚠ the settings key overrides the plan sign-in"; readonly 'panel.setup.title': "/model — configure {provider}"; readonly 'panel.setup.footer': "↑↓ move · ←→ in/out · space remove · e efforts · c copy efforts · tab per channel (subscription = web sign-in, key = discover) · enter save · esc back"; readonly 'panel.discovery.compact': "model discovery · terminal too small · esc back"; readonly 'panel.discovery.loading': "discovering models…"; readonly 'panel.discovery.empty': "the endpoint advertised no models; add ids by hand on the setup page"; readonly 'panel.discovery.summary': "{advertised} advertised · {newCount} new · {checked} checked"; readonly 'panel.discovery.title': "/model — discover {provider}"; readonly 'panel.discovery.footer': "↑↓ move · space check · enter adopt · f refetch · esc back"; readonly 'panel.update.footer.probe': "checking… · esc close"; readonly 'panel.update.footer.error': "r recheck · esc close"; readonly 'panel.update.footer.apply': "updating… · ↑↓ scroll · esc waits"; readonly 'panel.update.footer.current': "up to date · r recheck · esc close"; readonly 'panel.update.footer.ahead': "newer than npm — not downgrading · r recheck · esc close"; readonly 'panel.update.footer.update': "enter update · r recheck · esc close"; readonly 'panel.update.footer.blocked': "blocked · r recheck · esc close"; readonly 'panel.footer.effortEmpty': "esc back"; readonly 'panel.footer.effort': "↑↓ choose · enter apply · esc/q back"; readonly 'panel.effort.title': "/model — effort for {provider} · {model}"; readonly 'panel.effort.empty': "this model advertises no reasoning effort levels — the provider default applies"; readonly 'panel.default': "default"; readonly 'panel.footer.agents': "↑↓ choose · enter/t transcript · r refresh · esc close"; readonly 'panel.agents.title': "/agents · {live} live · {total} total"; readonly 'panel.document.title': "transcript · {id}"; readonly 'panel.subagent.transcriptTitle': "subagent · {id}"; readonly 'panel.footer.subagent': "↑↓ choose · enter apply · r refresh · esc close"; readonly 'panel.subagent.title': "/subagent — model for delegated agents"; readonly 'panel.subagent.override': " · override {value}"; readonly 'panel.subagent.inherit': "inherit — follow the current model (/model switches apply)"; readonly 'panel.statusline.compact': "/statusline · esc close"; readonly 'panel.schedule.compact': "/schedule · {summary}"; readonly 'panel.schedule.none': "no active reminders"; readonly 'panel.schedule.more': " · +{count} more"; readonly 'panel.schedule.footer': "esc/q close{more} · the model schedules via schedule_create"; }; export type MessageKey = keyof typeof en; export type MessageCatalog = Record;