export const en = {
  'common.notIndexed': 'No indexed repositories found.',
  'common.runAnalyze': 'Run `gitnexus analyze` in a git repo to index it.',
  'common.runAnalyzeShort': 'Run: gitnexus analyze',
  'common.runForceConfirm': 'Run with --force to confirm deletion.',
  'common.path': 'Path',
  'common.storage': 'Storage',
  'common.deleted': 'Deleted: {{target}}',
  'common.error': 'Error: {{message}}',
  'list.title': 'Indexed Repositories ({{count}})',
  'list.indexed': 'Indexed',
  'list.commit': 'Commit',
  'list.stats': 'Stats',
  'list.statsValue': '{{files}} files, {{symbols}} symbols, {{edges}} edges',
  'list.clusters': 'Clusters',
  'list.processes': 'Processes',
  'list.unknown': 'unknown',
  'status.notGitRepo': 'Not a git repository.',
  'status.staleKuzu': 'Repository has a stale KuzuDB index from a previous version.',
  'status.rebuildLadybug': 'Run: gitnexus analyze   (rebuilds the index with LadybugDB)',
  'status.repoNotIndexed': 'Repository not indexed.',
  'status.repository': 'Repository',
  'status.indexed': 'Indexed',
  'status.indexedCommit': 'Indexed commit',
  'status.currentCommit': 'Current commit',
  'status.status': 'Status',
  'status.upToDate': '✅ up-to-date',
  'status.stale': '⚠️ stale (re-run gitnexus analyze)',
  'clean.deleteAll': 'This will delete GitNexus indexes for {{count}} repo(s):',
  'clean.deletedRepo': 'Deleted: {{name}} ({{storagePath}})',
  'clean.notFoundHere': 'No indexed repository found in this directory.',
  'clean.deleteCurrent': 'This will delete the GitNexus index for: {{repoName}}',
  'clean.lbugSidecars.state': 'LadybugDB sidecar state: {{state}}',
  'clean.lbugSidecars.none': 'No quarantined LadybugDB missing-shadow WAL sidecars found.',
  'clean.lbugSidecars.preview':
    'This will delete {{count}} quarantined LadybugDB missing-shadow WAL sidecar(s):',
  'clean.lbugSidecars.deleted':
    'Deleted {{count}} quarantined LadybugDB missing-shadow WAL sidecar(s).',
  'remove.nothingToRemove': 'Nothing to remove: {{message}}',
  'remove.deleteTarget': 'This will delete the GitNexus index for: {{name}}',
  'remove.removed': 'Removed: {{name}}',
  'remove.failed': 'Failed to remove {{name}}: {{message}}',
  'tool.noIndexed': 'GitNexus: No indexed repositories found. Run: gitnexus analyze',
  'tool.usage.query': 'Usage: gitnexus query <search_query>',
  'tool.usage.context': 'Usage: gitnexus context <symbol_name> [--uid <uid>] [--file <path>]',
  'tool.usage.impact':
    'Usage: gitnexus impact <symbol_name> [--uid <uid>] [--file <path>] [--kind <kind>] [--direction upstream|downstream]',
  'tool.usage.cypher': 'Usage: gitnexus cypher <cypher_query>',
  'tool.warn.unknownKind':
    "--kind '{{kind}}' is not a known symbol kind (e.g. Function, Class, Method); it will not narrow the result.",
  'tool.detectChanges.noChanges': 'No changes detected.',
  'tool.detectChanges.changesSummary': 'Changes: {{files}} files, {{symbols}} symbols',
  'tool.detectChanges.affectedProcesses': 'Affected processes: {{count}}',
  'tool.detectChanges.riskLevel': 'Risk level: {{risk}}',
  'tool.detectChanges.unknownRisk': 'unknown',
  'tool.detectChanges.changedSymbols': 'Changed symbols:',
  'tool.detectChanges.overflowMore': '... and {{count}} more',
  'tool.detectChanges.affectedExecutionFlows': 'Affected execution flows:',
  'tool.detectChanges.steps': '{{count}} steps',
  'tool.detectChanges.steps_one': '{{count}} step',
  'tool.detectChanges.steps_other': '{{count}} steps',
  'tool.detectChanges.changedSteps': 'changed: {{steps}}',
  'serve.walCorruption':
    '\nGitNexus server could not start: the index has a corrupted WAL file.\n  {{suggestion}}\n',
  'serve.portInUse':
    '\nFailed to start GitNexus server:\n  {{message}}\n\n  Port {{port}} is already in use. Either:\n    1. Stop the other process using port {{port}}\n    2. Use a different port: gitnexus serve --port 4748\n',
  'serve.startFailed': '\nFailed to start GitNexus server:\n  {{message}}\n',
  'doctor.title': 'GitNexus Doctor',
  'doctor.runtime': 'Runtime',
  'doctor.capabilities': 'Capabilities',
  'doctor.embeddings': 'Embeddings',
  'doctor.labels.os': 'OS:',
  'doctor.labels.node': 'Node:',
  'doctor.labels.gitnexus': 'GitNexus:',
  'doctor.labels.ladybugdb': 'LadybugDB:',
  'doctor.labels.onnx': 'ONNX:',
  'doctor.labels.graphStore': 'Graph store:',
  'doctor.labels.fullTextSearch': 'Full-text search:',
  'doctor.labels.vectorIndex': 'VECTOR index:',
  'doctor.labels.semanticMode': 'Semantic mode:',
  'doctor.labels.exactScanLimit': 'Exact scan limit:',
  'doctor.labels.note': 'Note:',
  'doctor.labels.backend': 'Backend:',
  'doctor.labels.device': 'Device:',
  'doctor.labels.threads': 'Threads:',
  'doctor.labels.batch': 'Batch:',
  'doctor.labels.subBatch': 'Sub-batch:',
  'doctor.nodes': '{{count}} nodes',
  'doctor.nodes_one': '{{count}} node',
  'doctor.nodes_other': '{{count}} nodes',
  'doctor.chunks': '{{count}} chunks',
  'doctor.chunks_one': '{{count}} chunk',
  'doctor.chunks_other': '{{count}} chunks',
  'help.title.usage': 'Usage:',
  'help.title.arguments': 'Arguments:',
  'help.title.options': 'Options:',
  'help.title.globalOptions': 'Global Options:',
  'help.title.commands': 'Commands:',
  'help.optionMeta.choices': 'choices',
  'help.optionMeta.default': 'default',
  'help.optionMeta.preset': 'preset',
  'help.optionMeta.env': 'env',
  'help.description.root': 'GitNexus local CLI and MCP server',
  'help.command.help.description': 'display help for command',
  'help.option.help': 'display help for command',
  'help.option.version': 'output the version number',
  'help.command.setup.description':
    'One-time setup: configure MCP for Cursor, Claude Code, OpenCode, Codex',
  'help.command.analyze.description': 'Index a repository (full analysis)',
  'help.command.index.description':
    'Register an existing .gitnexus/ folder into the global registry (no re-analysis needed)',
  'help.command.serve.description': 'Start local HTTP server for web UI connection',
  'help.command.mcp.description': 'Start MCP server (stdio) — serves all indexed repos',
  'help.command.list.description': 'List all indexed repositories',
  'help.command.status.description': 'Show index status for current repo',
  'help.command.doctor.description':
    'Show runtime platform capabilities and embedding configuration',
  'help.command.clean.description': 'Delete GitNexus index for current repo',
  'help.command.remove.description':
    'Delete the GitNexus index for a registered repo (by alias, name, or absolute path). Unlike `clean`, does not require being inside the repo. Idempotent on unknown targets.',
  'help.command.wiki.description': 'Generate repository wiki from knowledge graph',
  'help.command.augment.description':
    'Augment a search pattern with knowledge graph context (used by hooks)',
  'help.command.publish.description':
    'Notify the understand-quickly registry that this repo has a fresh GitNexus index. Opt-in: requires UNDERSTAND_QUICKLY_TOKEN (fine-grained PAT with `Repository dispatches: write` on looptech-ai/understand-quickly). No-op without the token. See https://github.com/looptech-ai/understand-quickly.',
  'help.command.query.description':
    'Search the knowledge graph for execution flows related to a concept',
  'help.command.context.description':
    '360-degree view of a code symbol: callers, callees, processes',
  'help.command.impact.description': 'Blast radius analysis: what breaks if you change a symbol',
  'help.command.cypher.description': 'Execute raw Cypher query against the knowledge graph',
  'help.command.detectChanges.description':
    'Map git diff hunks to indexed symbols and affected execution flows',
  'help.command.evalServer.description':
    'Start lightweight HTTP server for fast tool calls during evaluation',
  'help.command.group.description': 'Manage repository groups for cross-index impact analysis',
  'help.command.group.create.description': 'Create a new group with template group.yaml',
  'help.command.group.add.description':
    'Add a repo to a group. <groupPath> = hierarchy path (e.g. hr/hiring/backend), <registryName> = name from registry',
  'help.command.group.remove.description': 'Remove a repo from a group',
  'help.command.group.list.description': 'List all groups or details of one',
  'help.command.group.status.description': 'Check staleness of group and repos',
  'help.command.group.sync.description':
    'Sync Contract Registry — extract contracts and build cross-links',
  'help.command.group.impact.description':
    'Cross-repo impact for a symbol in one member repo of a group',
  'help.command.group.query.description': 'Search execution flows across all repos in a group',
  'help.command.group.contracts.description': 'Inspect Contract Registry',
  'help.option.analyze.force': 'Force full re-index even if up to date',
  'help.option.analyze.repairFts': 'Repair/rebuild search FTS indexes without full re-analysis',
  'help.option.analyze.embeddings':
    'Enable embedding generation for semantic search (off by default). Optional [limit] overrides the 50,000-node safety cap; pass 0 to disable the cap entirely.',
  'help.option.analyze.dropEmbeddings':
    'Drop existing embeddings on rebuild. By default, an `analyze` without `--embeddings` preserves any embeddings already present in the index.',
  'help.option.analyze.skills':
    'Generate repo-specific skill files from detected communities (no-op when --index-only is also set).',
  'help.option.analyze.skipAgentsMd':
    'Skip updating the gitnexus section in AGENTS.md and CLAUDE.md',
  'help.option.analyze.noStats': 'Omit volatile file/symbol counts from AGENTS.md and CLAUDE.md',
  'help.option.analyze.skipSkills':
    'Skip installing standard GitNexus skill files under .claude/skills/gitnexus/. Does not suppress community skills from --skills (those use .claude/skills/generated/). Use --index-only to skip all AI-context file injection.',
  'help.option.analyze.indexOnly':
    'Pure index mode: skip all file injection (AGENTS.md, CLAUDE.md, skills)',
  'help.option.skipGit':
    'Treat the provided path/cwd as the index root and skip parent git-root discovery',
  'help.option.analyze.name':
    'Register this repo under a custom name in ~/.gitnexus/registry.json (disambiguates repos whose paths share a basename, e.g. two different .../app folders)',
  'help.option.analyze.allowDuplicateName':
    'Register this repo even if another path already uses the same --name alias. Leaves `-r <name>` ambiguous for the two paths; use -r <path> to disambiguate.',
  'help.option.verbose': 'Enable verbose output',
  'help.option.analyze.maxFileSize':
    'Skip files larger than this (KB). Default: 512. Hard cap: 32768 (tree-sitter limit).',
  'help.option.analyze.workerTimeout':
    'Worker sub-batch idle timeout before retry/fallback. Default: 30.',
  'help.option.analyze.walCheckpointThreshold':
    'LadybugDB WAL auto-checkpoint threshold in bytes during analyze (integer >= -1; default: 67108864 = 64 MiB; -1 keeps Ladybug stock ~16 MiB).',
  'help.option.analyze.workers':
    'Parse worker pool size (>=1). Default: cores-1 capped at 16, auto-sized to the repo.',
  'help.option.analyze.embeddingThreads': 'Limit local ONNX embedding CPU threads',
  'help.option.analyze.embeddingBatchSize': 'Number of nodes per embedding batch',
  'help.option.analyze.embeddingSubBatchSize': 'Number of chunks per embedding model call',
  'help.option.analyze.embeddingDevice': 'Embedding device: auto, cpu, dml, cuda, or wasm',
  'help.option.index.force': 'Register even if meta.json is missing (stats will be empty)',
  'help.option.index.allowNonGit': 'Allow registering folders that are not Git repositories',
  'help.option.port': 'Port number',
  'help.option.serve.host': 'Bind address (default: 127.0.0.1, use 0.0.0.0 for remote access)',
  'help.option.force.confirmation': 'Skip confirmation prompt',
  'help.option.clean.all': 'Clean all indexed repos',
  'help.option.clean.lbugSidecars': 'Clean quarantined LadybugDB missing-shadow WAL sidecars',
  'help.option.wiki.force': 'Force full regeneration even if up to date',
  'help.option.wiki.provider':
    'LLM provider: openai, openrouter, azure, custom, cursor, claude, codex, or opencode (default: openai)',
  'help.option.wiki.model': 'LLM model or Azure deployment name (default: minimax/minimax-m2.5)',
  'help.option.wiki.baseUrl':
    'LLM API base URL. Azure v1: https://{resource}.openai.azure.com/openai/v1',
  'help.option.wiki.apiKey': 'LLM API key or Azure api-key (saved to ~/.gitnexus/config.json)',
  'help.option.wiki.apiVersion':
    'Azure api-version query param, e.g. 2024-10-21 (legacy Azure API only)',
  'help.option.wiki.reasoningModel':
    'Mark deployment as reasoning model (o1/o3/o4-mini) — strips temperature, uses max_completion_tokens',
  'help.option.wiki.noReasoningModel': 'Disable reasoning model mode (overrides saved config)',
  'help.option.wiki.concurrency': 'Parallel LLM calls (default: 3)',
  'help.option.wiki.timeout': 'LLM request timeout in seconds (default: disabled)',
  'help.option.wiki.retries': 'Max LLM retry attempts per request (default: 3)',
  'help.option.wiki.gist': 'Publish wiki as a public GitHub Gist after generation',
  'help.option.wiki.review':
    'Stop after grouping to review module structure before generating pages',
  'help.option.wiki.lang':
    'Output language for generated documentation (e.g. english, chinese, spanish, japanese)',
  'help.option.publish.id': 'Override the registry id (defaults to the origin remote)',
  'help.option.repo.targetOmitOne': 'Target repository (omit if only one indexed)',
  'help.option.query.context': 'Task context to improve ranking',
  'help.option.query.goal': 'What you want to find',
  'help.option.query.limit': 'Max processes to return (default: 5)',
  'help.option.content': 'Include full symbol source code',
  'help.option.repo.target': 'Target repository',
  'help.option.context.uid': 'Direct symbol UID (zero-ambiguity lookup)',
  'help.option.context.file': 'File path to disambiguate common names',
  'help.option.impact.kind':
    'Kind filter to disambiguate common names (e.g. Function, Class, Method)',
  'help.option.impact.direction': 'upstream (dependants) or downstream (dependencies)',
  'help.option.impact.depth': 'Max relationship depth (default: 3)',
  'help.option.impact.includeTests': 'Include test files in results',
  'help.option.impact.limit': 'Max symbols per depth level (default: 100)',
  'help.option.impact.offset': 'Skip N symbols per depth level for pagination',
  'help.option.impact.summaryOnly': 'Return counts and risk only, omit symbol list',
  'help.option.detectChanges.scope': 'What to analyze: unstaged, staged, all, or compare',
  'help.option.detectChanges.baseRef': 'Branch/commit for compare scope (e.g. main)',
  'help.option.evalServer.host':
    'Bind address (default: 127.0.0.1, use 0.0.0.0 to expose to all interfaces)',
  'help.option.evalServer.idleTimeout': 'Auto-shutdown after N seconds idle (0 = disabled)',
  'help.option.group.create.force': 'Overwrite existing group',
  'help.option.group.sync.skipEmbeddings': 'Exact + BM25 only (no embedding fallback)',
  'help.option.group.sync.exactOnly': 'Exact match only',
  'help.option.group.sync.allowStale': 'Skip stale index warnings',
  'help.option.group.sync.verbose': 'Show each cross-link detail',
  'help.option.json': 'JSON output',
  'help.option.group.impact.target': 'Symbol or file name to analyze',
  'help.option.group.impact.repo':
    'Member path from group.yaml (e.g. app/backend), not the indexed repo name',
  'help.option.group.impact.service': 'Optional monorepo service directory prefix (path filter)',
  'help.option.group.impact.subgroup':
    'Optional prefix limiting which group repos participate in cross fan-out',
  'help.option.group.impact.crossDepth': 'Cross-repository hop depth',
  'help.option.group.impact.minConfidence': 'Minimum relation confidence (0–1)',
  'help.option.group.impact.timeoutMs': 'Phase-1 local impact wall time in milliseconds',
  'help.option.group.query.subgroup': 'Limit search scope',
  'help.option.group.query.limit': 'Max merged results',
  'help.option.group.contracts.type': 'Filter by contract type',
  'help.option.group.contracts.repo': 'Filter by repo',
  'help.option.group.contracts.unmatched': 'Show only unmatched contracts',
  'help.analyze.environment':
    '\nEnvironment variables:\n  GITNEXUS_NO_GITIGNORE=1   Skip .gitignore parsing (still reads .gitnexusignore)\n  GITNEXUS_MAX_FILE_SIZE=N  Override large-file skip threshold (KB). Default 512, max 32768.\n  GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS=N  Worker idle timeout in milliseconds. Default 30000.\n  GITNEXUS_WAL_CHECKPOINT_THRESHOLD=N  LadybugDB WAL auto-checkpoint threshold in bytes (default 67108864 = 64 MiB; -1 keeps Ladybug stock ~16 MiB).\n  GITNEXUS_WORKER_SUB_BATCH_MAX_BYTES=N  Worker job byte budget. Default 8388608.\n  GITNEXUS_WORKER_POOL_SIZE=N  Parse worker count override. Default cores-1 capped at 16.\n  GITNEXUS_PARSE_CHUNK_CONCURRENCY=N  Concurrent in-flight parse chunks. Default 2.\n  GITNEXUS_WORKER_MAX_RESPAWNS_PER_SLOT=N  Max replacement spawns per slot before drop. Default 3.\n  GITNEXUS_WORKER_MAX_CUMULATIVE_TIMEOUT_MS=N  Total retry wall-time per job. Default 5x sub-batch timeout.\n  GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLD=N  Per-slot deaths to trip circuit breaker. Default max(3, poolSize).\n  GITNEXUS_EMBEDDING_THREADS=N  Limit local ONNX CPU threads for --embeddings.\n  GITNEXUS_SEMANTIC_EXACT_SCAN_LIMIT=N  Max embedding chunks for exact-scan fallback. Default 10000.\n\nFlags override the corresponding env vars when both are provided.\n\nTip: `.gitnexusignore` supports `.gitignore`-style negation. Add e.g.\n     `!__tests__/` to index a directory that is auto-filtered by default (#771).',
} as const;
