{
  "commands": {
    "init": {
      "aliases": [],
      "args": {},
      "description": "\nCreates a .polypot directory in the target project with commit-ready\nconfig.yaml defaults and an optional local .env file for project secrets.\n\nProject config overrides global setup values at runtime. Project .env files\nare added to .gitignore by default.\n",
      "examples": [
        "<%= config.bin %> <%= command.id %>",
        "<%= config.bin %> <%= command.id %> --yes",
        "<%= config.bin %> <%= command.id %> --yes --source-language en_US --target-languages fr_FR,es_ES",
        "<%= config.bin %> <%= command.id %> --no-gitignore",
        "<%= config.bin %> <%= command.id %> --cwd /path/to/project"
      ],
      "flags": {
        "json": {
          "description": "Format output as json.",
          "helpGroup": "GLOBAL",
          "name": "json",
          "allowNo": false,
          "type": "boolean"
        },
        "force": {
          "char": "f",
          "env": "POLYPOT_FORCE",
          "name": "force",
          "summary": "Overwrite existing .polypot/ files.",
          "allowNo": false,
          "type": "boolean"
        },
        "cwd": {
          "env": "POLYPOT_CWD",
          "name": "cwd",
          "summary": "Target project directory (defaults to the current working directory).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "gitignore": {
          "env": "POLYPOT_GITIGNORE",
          "helpLabel": "--[no-]gitignore",
          "name": "gitignore",
          "summary": "Append .polypot/.env to the project .gitignore (default).",
          "allowNo": true,
          "type": "boolean"
        },
        "api-key": {
          "char": "k",
          "env": "POLYPOT_API_KEY",
          "name": "api-key",
          "summary": "Project OpenAI API key to store in .polypot/.env.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "output-dir": {
          "char": "o",
          "env": "POLYPOT_OUTPUT_DIR",
          "name": "output-dir",
          "summary": "Default output directory for this project.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "pot-file-path": {
          "char": "p",
          "env": "POLYPOT_POT_FILE_PATH",
          "name": "pot-file-path",
          "summary": "Default .pot file path for this project.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "source-language": {
          "char": "s",
          "env": "POLYPOT_SOURCE_LANGUAGE",
          "name": "source-language",
          "summary": "Default source language code for this project.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "target-languages": {
          "char": "l",
          "env": "POLYPOT_TARGET_LANGUAGES",
          "name": "target-languages",
          "summary": "Default target language codes for this project.",
          "delimiter": ",",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "yes": {
          "char": "y",
          "env": "POLYPOT_YES",
          "name": "yes",
          "summary": "Accept defaults non-interactively.",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "init",
      "pluginAlias": "@sematico/polypot",
      "pluginName": "@sematico/polypot",
      "pluginType": "core",
      "strict": true,
      "summary": "Initialise polypot configuration in the current project",
      "enableJsonFlag": true,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "init.js"
      ]
    },
    "setup": {
      "aliases": [],
      "args": {},
      "description": "\nManages the global polypot configuration stored in the OS-standard config\ndirectory (XDG_CONFIG_HOME on Linux/macOS, %APPDATA% on Windows).\n\nThe wizard stores OpenAI credentials in the global .env file and writes\nnon-secret defaults to the global YAML config.\n",
      "examples": [
        "<%= config.bin %> <%= command.id %>",
        "<%= config.bin %> <%= command.id %> --show",
        "<%= config.bin %> <%= command.id %> --force"
      ],
      "flags": {
        "force": {
          "char": "f",
          "env": "POLYPOT_FORCE",
          "name": "force",
          "summary": "Overwrite existing global config without prompting.",
          "allowNo": false,
          "type": "boolean"
        },
        "show": {
          "env": "POLYPOT_SHOW",
          "name": "show",
          "summary": "Print the resolved global config paths, non-secret config, and secret presence.",
          "allowNo": false,
          "type": "boolean"
        },
        "non-interactive": {
          "env": "POLYPOT_NON_INTERACTIVE",
          "name": "non-interactive",
          "summary": "Skip prompts; useful for scripted setup. Errors out on prompt-only flows.",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "setup",
      "pluginAlias": "@sematico/polypot",
      "pluginName": "@sematico/polypot",
      "pluginType": "core",
      "strict": true,
      "summary": "Configure polypot defaults shared across all projects",
      "enableJsonFlag": false,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "setup.js"
      ]
    },
    "translate": {
      "aliases": [],
      "args": {},
      "description": "\nReads source strings from a .pot file and writes translated .po files for\neach target language.\n",
      "examples": [
        "<%= config.bin %> <%= command.id %> -l fr_FR,es_ES -p translations.pot",
        "<%= config.bin %> <%= command.id %> -l fr_FR -p translations.pot --dry-run",
        "<%= config.bin %> <%= command.id %> -l fr_FR -p translations.pot -b 30 -j 3"
      ],
      "flags": {
        "json": {
          "description": "Format output as json.",
          "helpGroup": "GLOBAL",
          "name": "json",
          "allowNo": false,
          "type": "boolean"
        },
        "provider": {
          "env": "POLYPOT_PROVIDER",
          "helpGroup": "PROVIDER",
          "name": "provider",
          "summary": "AI provider (e.g. openai, gemini, anthropic).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "api-key": {
          "char": "k",
          "helpGroup": "PROVIDER",
          "name": "api-key",
          "summary": "Provider API key.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "model": {
          "char": "m",
          "env": "POLYPOT_MODEL",
          "helpGroup": "PROVIDER",
          "name": "model",
          "summary": "AI model name (e.g. gpt-5.4-mini).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "temperature": {
          "env": "POLYPOT_TEMPERATURE",
          "helpGroup": "PROVIDER",
          "name": "temperature",
          "summary": "Sampling temperature (0.0–2.0). Lower = more deterministic.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "max-tokens": {
          "env": "POLYPOT_MAX_TOKENS",
          "helpGroup": "PROVIDER",
          "name": "max-tokens",
          "summary": "Max completion tokens (1–32768).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "source-language": {
          "char": "s",
          "env": "POLYPOT_SOURCE_LANGUAGE",
          "helpGroup": "PROVIDER",
          "name": "source-language",
          "summary": "Source language code.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "target-languages": {
          "char": "l",
          "env": "POLYPOT_TARGET_LANGUAGES",
          "helpGroup": "SOURCE",
          "name": "target-languages",
          "summary": "Target language codes, comma-separated (e.g. fr_FR,es_ES,de_DE).",
          "delimiter": ",",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "pot-file-path": {
          "char": "p",
          "env": "POLYPOT_POT_FILE_PATH",
          "helpGroup": "SOURCE",
          "name": "pot-file-path",
          "summary": "Path to the input .pot file containing source strings.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "input-po-path": {
          "env": "POLYPOT_INPUT_PO_PATH",
          "helpGroup": "SOURCE",
          "name": "input-po-path",
          "summary": "Path to an existing .po file to use as a base for merging.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "output-dir": {
          "char": "o",
          "env": "POLYPOT_OUTPUT_DIR",
          "helpGroup": "OUTPUT",
          "name": "output-dir",
          "summary": "Directory to save generated .po files for each language.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "output-format": {
          "env": "POLYPOT_OUTPUT_FORMAT",
          "helpGroup": "OUTPUT",
          "name": "output-format",
          "summary": "Output format.",
          "hasDynamicHelp": false,
          "multiple": false,
          "options": [
            "console",
            "json"
          ],
          "type": "option"
        },
        "output-file": {
          "env": "POLYPOT_OUTPUT_FILE",
          "helpGroup": "OUTPUT",
          "name": "output-file",
          "summary": "Path to save JSON output (stdout when omitted).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "po-file-prefix": {
          "env": "POLYPOT_PO_FILE_PREFIX",
          "helpGroup": "OUTPUT",
          "name": "po-file-prefix",
          "summary": "Prefix for each output .po file (e.g. \"app-\" → \"app-fr_FR.po\").",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "locale-format": {
          "env": "POLYPOT_LOCALE_FORMAT",
          "helpGroup": "OUTPUT",
          "name": "locale-format",
          "summary": "Filename locale format (controls output filename only, not input).",
          "hasDynamicHelp": false,
          "multiple": false,
          "options": [
            "wp_locale",
            "iso_639_1",
            "iso_639_2",
            "target_lang"
          ],
          "type": "option"
        },
        "force-translate": {
          "char": "F",
          "env": "POLYPOT_FORCE_TRANSLATE",
          "helpGroup": "BEHAVIOR",
          "name": "force-translate",
          "summary": "Re-translate all strings, ignoring any existing translations.",
          "allowNo": false,
          "type": "boolean"
        },
        "use-dictionary": {
          "env": "POLYPOT_USE_DICTIONARY",
          "helpGroup": "BEHAVIOR",
          "name": "use-dictionary",
          "summary": "Use the dictionary system for consistent translations.",
          "allowNo": false,
          "type": "boolean"
        },
        "dictionary-path": {
          "env": "POLYPOT_DICTIONARY_PATH",
          "helpGroup": "BEHAVIOR",
          "name": "dictionary-path",
          "summary": "Directory containing dictionary files.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "prompt-file-path": {
          "env": "POLYPOT_PROMPT_FILE_PATH",
          "helpGroup": "BEHAVIOR",
          "name": "prompt-file-path",
          "summary": "Path to the prompt.md file containing translation instructions.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "batch-size": {
          "char": "b",
          "env": "POLYPOT_BATCH_SIZE",
          "helpGroup": "PERFORMANCE",
          "name": "batch-size",
          "summary": "Strings per translation batch (1–100).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "jobs": {
          "char": "j",
          "env": "POLYPOT_JOBS",
          "helpGroup": "PERFORMANCE",
          "name": "jobs",
          "summary": "Max languages translated in parallel (1–10).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "timeout": {
          "env": "POLYPOT_TIMEOUT",
          "helpGroup": "PERFORMANCE",
          "name": "timeout",
          "summary": "API request timeout in seconds (10–300).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "max-strings-per-job": {
          "env": "POLYPOT_MAX_STRINGS_PER_JOB",
          "helpGroup": "LIMITS",
          "name": "max-strings-per-job",
          "summary": "Limit the number of strings translated per language (testing aid).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "max-total-strings": {
          "env": "POLYPOT_MAX_TOTAL_STRINGS",
          "helpGroup": "LIMITS",
          "name": "max-total-strings",
          "summary": "Limit total strings translated across all languages.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "max-retries": {
          "env": "POLYPOT_MAX_RETRIES",
          "helpGroup": "RETRIES",
          "name": "max-retries",
          "summary": "Retry attempts per batch (0–10).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "retry-delay": {
          "env": "POLYPOT_RETRY_DELAY",
          "helpGroup": "RETRIES",
          "name": "retry-delay",
          "summary": "Delay between retries in milliseconds (500–30000).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "abort-on-failure": {
          "env": "POLYPOT_ABORT_ON_FAILURE",
          "helpGroup": "RETRIES",
          "name": "abort-on-failure",
          "summary": "Abort the entire run if any batch fails all retry attempts.",
          "allowNo": false,
          "type": "boolean"
        },
        "skip-language-on-failure": {
          "env": "POLYPOT_SKIP_LANGUAGE_ON_FAILURE",
          "helpGroup": "RETRIES",
          "name": "skip-language-on-failure",
          "summary": "Skip current language on failure and continue with remaining languages.",
          "allowNo": false,
          "type": "boolean"
        },
        "verbose-level": {
          "char": "v",
          "env": "POLYPOT_VERBOSE_LEVEL",
          "helpGroup": "DEBUG",
          "name": "verbose-level",
          "summary": "Verbosity level: 0=errors, 1=normal, 2=verbose, 3=debug.",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "dry-run": {
          "env": "POLYPOT_DRY_RUN",
          "helpGroup": "DEBUG",
          "name": "dry-run",
          "summary": "Simulate translation without making actual API calls.",
          "allowNo": false,
          "type": "boolean"
        },
        "save-debug-info": {
          "env": "POLYPOT_SAVE_DEBUG_INFO",
          "helpGroup": "DEBUG",
          "name": "save-debug-info",
          "summary": "Save detailed request/response logs to timestamped files.",
          "allowNo": false,
          "type": "boolean"
        },
        "config": {
          "env": "POLYPOT_CONFIG",
          "helpGroup": "CONFIG",
          "name": "config",
          "summary": "Use this YAML file as the only config source (bypasses discovery).",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "no-config": {
          "env": "POLYPOT_NO_CONFIG",
          "helpGroup": "CONFIG",
          "name": "no-config",
          "summary": "Ignore both YAML config files entirely; flags + .env only.",
          "allowNo": false,
          "type": "boolean"
        },
        "no-env": {
          "env": "POLYPOT_NO_ENV",
          "helpGroup": "CONFIG",
          "name": "no-env",
          "summary": "Ignore both .env files; flags + YAML only.",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "translate",
      "pluginAlias": "@sematico/polypot",
      "pluginName": "@sematico/polypot",
      "pluginType": "core",
      "strict": true,
      "summary": "Translate a .pot file into one or more languages using AI",
      "enableJsonFlag": true,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "translate.js"
      ]
    }
  },
  "version": "0.1.1"
}