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> [--direction upstream|downstream]',
    'tool.usage.cypher': 'Usage: gitnexus cypher <cypher_query>',
    '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. Default: cores-1 capped at 16. Pass 0 to disable workers (sequential).',
    '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, or codex (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.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).',
};
