lingo.dev 0.111.8 → 0.111.9

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.
package/build/cli.cjs CHANGED
@@ -442,12 +442,12 @@ function createAuthenticator(params) {
442
442
  }
443
443
 
444
444
  // src/cli/cmd/auth.ts
445
- var auth_default = new (0, _interactivecommander.Command)().command("auth").description("Show current authentication status").helpOption("-h, --help", "Show help").option(
445
+ var auth_default = new (0, _interactivecommander.Command)().command("auth").description("Show current authentication status and user email").helpOption("-h, --help", "Show help").option(
446
446
  "--login",
447
- "Login to your account (deprecated: use 'lingo.dev login' instead)"
447
+ "DEPRECATED: Shows deprecation warning and exits. Use `lingo.dev login` instead"
448
448
  ).option(
449
449
  "--logout",
450
- "Logout from your account (deprecated: use 'lingo.dev logout' instead)"
450
+ "DEPRECATED: Shows deprecation warning and exits. Use `lingo.dev logout` instead"
451
451
  ).action(async (options) => {
452
452
  try {
453
453
  if (options.login) {
@@ -595,7 +595,9 @@ async function renderSummary(results) {
595
595
  }
596
596
 
597
597
  // src/cli/cmd/login.ts
598
- var login_default = new (0, _interactivecommander.Command)().command("login").description("Authenticate with Lingo.dev API").helpOption("-h, --help", "Show help").action(async () => {
598
+ var login_default = new (0, _interactivecommander.Command)().command("login").description(
599
+ "Open browser to authenticate with lingo.dev and save your API key"
600
+ ).helpOption("-h, --help", "Show help").action(async () => {
599
601
  try {
600
602
  await renderClear();
601
603
  await renderSpacer();
@@ -654,7 +656,7 @@ async function waitForApiKey(cb) {
654
656
  // src/cli/cmd/logout.ts
655
657
 
656
658
 
657
- var logout_default = new (0, _interactivecommander.Command)().command("logout").description("Log out from Lingo.dev API").helpOption("-h, --help", "Show help").action(async () => {
659
+ var logout_default = new (0, _interactivecommander.Command)().command("logout").description("Log out by removing saved authentication credentials").helpOption("-h, --help", "Show help").action(async () => {
658
660
  try {
659
661
  await renderClear();
660
662
  await renderSpacer();
@@ -1072,10 +1074,16 @@ var throwHelpError = (option, value) => {
1072
1074
  Do you need support for ${value} ${option}? Type "help" and we will.`
1073
1075
  );
1074
1076
  };
1075
- var init_default = new (0, _interactivecommander.InteractiveCommand)().command("init").description("Initialize Lingo.dev project").helpOption("-h, --help", "Show help").addOption(
1076
- new (0, _interactivecommander.InteractiveOption)("-f --force", "Overwrite existing config").prompt(void 0).default(false)
1077
+ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("init").description("Create i18n.json configuration file for a new project").helpOption("-h, --help", "Show help").addOption(
1078
+ new (0, _interactivecommander.InteractiveOption)(
1079
+ "-f --force",
1080
+ "Overwrite existing Lingo.dev configuration instead of aborting initialization (destructive operation)"
1081
+ ).prompt(void 0).default(false)
1077
1082
  ).addOption(
1078
- new (0, _interactivecommander.InteractiveOption)("-s --source <locale>", "Source locale").argParser((value) => {
1083
+ new (0, _interactivecommander.InteractiveOption)(
1084
+ "-s --source <locale>",
1085
+ "Primary language of your application that content will be translated from. Defaults to 'en'"
1086
+ ).argParser((value) => {
1079
1087
  try {
1080
1088
  __spec.resolveLocaleCode.call(void 0, value);
1081
1089
  } catch (e) {
@@ -1084,7 +1092,10 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
1084
1092
  return value;
1085
1093
  }).default("en")
1086
1094
  ).addOption(
1087
- new (0, _interactivecommander.InteractiveOption)("-t --targets <locale...>", "List of target locales").argParser((value) => {
1095
+ new (0, _interactivecommander.InteractiveOption)(
1096
+ "-t --targets <locale...>",
1097
+ "Target languages to translate to. Accepts locale codes like 'es', 'fr', 'de-AT' separated by commas or spaces. Defaults to 'es'"
1098
+ ).argParser((value) => {
1088
1099
  const values = value.includes(",") ? value.split(",") : value.split(" ");
1089
1100
  values.forEach((value2) => {
1090
1101
  try {
@@ -1096,7 +1107,10 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
1096
1107
  return values;
1097
1108
  }).default("es")
1098
1109
  ).addOption(
1099
- new (0, _interactivecommander.InteractiveOption)("-b, --bucket <type>", "Type of bucket").argParser((value) => {
1110
+ new (0, _interactivecommander.InteractiveOption)(
1111
+ "-b, --bucket <type>",
1112
+ "File format for your translation files. Must match a supported type such as json, yaml, or android"
1113
+ ).argParser((value) => {
1100
1114
  if (!__spec.bucketTypes.includes(value)) {
1101
1115
  throwHelpError("bucket format", value);
1102
1116
  }
@@ -1105,7 +1119,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
1105
1119
  ).addOption(
1106
1120
  new (0, _interactivecommander.InteractiveOption)(
1107
1121
  "-p, --paths [path...]",
1108
- "List of paths for the bucket"
1122
+ "File paths containing translations when using --no-interactive mode. Specify paths with [locale] placeholder, separated by commas or spaces"
1109
1123
  ).argParser((value) => {
1110
1124
  if (!value || value.length === 0) return [];
1111
1125
  const values = value.includes(",") ? value.split(",") : value.split(" ");
@@ -1248,7 +1262,7 @@ var init_default = new (0, _interactivecommander.InteractiveCommand)().command("
1248
1262
 
1249
1263
 
1250
1264
 
1251
- var config_default = new (0, _interactivecommander.Command)().command("config").description("Print out the current configuration").helpOption("-h, --help", "Show help").action(async (options) => {
1265
+ var config_default = new (0, _interactivecommander.Command)().command("config").description("Print effective i18n.json after merging with defaults").helpOption("-h, --help", "Show help").action(async (options) => {
1252
1266
  const fileConfig = loadReplexicaFileConfig();
1253
1267
  const config = _lodash2.default.merge({}, __spec.defaultConfig, fileConfig);
1254
1268
  console.log(JSON.stringify(config, null, 2));
@@ -1268,7 +1282,10 @@ function loadReplexicaFileConfig() {
1268
1282
 
1269
1283
 
1270
1284
 
1271
- var locale_default = new (0, _interactivecommander.Command)().command("locale").description("Print out the list of locales").helpOption("-h, --help", "Show help").argument("<type>", 'Type of locales to show, either "sources" or "targets"').action(async (type) => {
1285
+ var locale_default = new (0, _interactivecommander.Command)().command("locale").description("List supported locale codes").helpOption("-h, --help", "Show help").argument(
1286
+ "<type>",
1287
+ 'Type of locales to show: "sources" or "targets" - both show the full supported locale list'
1288
+ ).action(async (type) => {
1272
1289
  const ora = _ora2.default.call(void 0, );
1273
1290
  try {
1274
1291
  switch (type) {
@@ -1432,12 +1449,14 @@ function resolveBucketItem(bucketItem) {
1432
1449
 
1433
1450
  // src/cli/cmd/show/files.ts
1434
1451
 
1435
- var files_default = new (0, _interactivecommander.Command)().command("files").description("Print out the list of files managed by Lingo.dev").option(
1452
+ var files_default = new (0, _interactivecommander.Command)().command("files").description(
1453
+ "Expand each bucket's path pattern into concrete source and target file paths"
1454
+ ).option(
1436
1455
  "--source",
1437
- "Only show source files, files containing the original translations"
1456
+ "Only list the source locale variant for each path pattern"
1438
1457
  ).option(
1439
1458
  "--target",
1440
- "Only show target files, files containing translated content"
1459
+ "Only list the target locale variants for each configured locale"
1441
1460
  ).helpOption("-h, --help", "Show help").action(async (type) => {
1442
1461
  const ora = _ora2.default.call(void 0, );
1443
1462
  try {
@@ -1498,7 +1517,7 @@ var files_default = new (0, _interactivecommander.Command)().command("files").de
1498
1517
  });
1499
1518
 
1500
1519
  // src/cli/cmd/show/index.ts
1501
- var show_default = new (0, _interactivecommander.Command)().command("show").description("Prints out the current configuration").helpOption("-h, --help", "Show help").addCommand(config_default).addCommand(locale_default).addCommand(files_default);
1520
+ var show_default = new (0, _interactivecommander.Command)().command("show").description("Display configuration, locales, and file paths").helpOption("-h, --help", "Show help").addCommand(config_default).addCommand(locale_default).addCommand(files_default);
1502
1521
 
1503
1522
  // src/cli/cmd/config/index.ts
1504
1523
 
@@ -1508,9 +1527,12 @@ var show_default = new (0, _interactivecommander.Command)().command("show").desc
1508
1527
 
1509
1528
  var _dedent = require('dedent'); var _dedent2 = _interopRequireDefault(_dedent);
1510
1529
 
1511
- var set_default = new (0, _interactivecommander.Command)().name("set").description("Set a configuration key to a value").addHelpText("afterAll", `
1530
+ var set_default = new (0, _interactivecommander.Command)().name("set").description("Set or update a CLI setting in ~/.lingodotdevrc").addHelpText("afterAll", `
1512
1531
  Available keys:
1513
- ${SETTINGS_KEYS.join("\n ")}`).argument("<key>", "Configuration key to set").argument("<value>", "New value").helpOption("-h, --help", "Show help").action(async (key, value) => {
1532
+ ${SETTINGS_KEYS.join("\n ")}`).argument(
1533
+ "<key>",
1534
+ "Configuration key to set (dot notation, e.g., auth.apiKey)"
1535
+ ).argument("<value>", "The configuration value to set").helpOption("-h, --help", "Show help").action(async (key, value) => {
1514
1536
  if (!SETTINGS_KEYS.includes(key)) {
1515
1537
  console.error(
1516
1538
  _dedent2.default`
@@ -1544,9 +1566,12 @@ Available keys:
1544
1566
 
1545
1567
 
1546
1568
 
1547
- var unset_default = new (0, _interactivecommander.Command)().name("unset").description("Remove a configuration key").addHelpText("afterAll", `
1569
+ var unset_default = new (0, _interactivecommander.Command)().name("unset").description("Remove a CLI setting from ~/.lingodotdevrc").addHelpText("afterAll", `
1548
1570
  Available keys:
1549
- ${SETTINGS_KEYS.join("\n ")}`).argument("<key>", "Configuration key to remove").helpOption("-h, --help", "Show help").action(async (key) => {
1571
+ ${SETTINGS_KEYS.join("\n ")}`).argument(
1572
+ "<key>",
1573
+ "Configuration key to remove (must match one of the available keys listed below)"
1574
+ ).helpOption("-h, --help", "Show help").action(async (key) => {
1550
1575
  if (!SETTINGS_KEYS.includes(key)) {
1551
1576
  console.error(
1552
1577
  _dedent2.default`
@@ -1590,9 +1615,12 @@ Available keys:
1590
1615
 
1591
1616
 
1592
1617
 
1593
- var get_default = new (0, _interactivecommander.Command)().name("get").description("Get the value of a configuration key").addHelpText("afterAll", `
1618
+ var get_default = new (0, _interactivecommander.Command)().name("get").description("Display the value of a CLI setting from ~/.lingodotdevrc").addHelpText("afterAll", `
1594
1619
  Available keys:
1595
- ${SETTINGS_KEYS.join("\n ")}`).argument("<key>", "Configuration key").helpOption("-h, --help", "Show help").action(async (key) => {
1620
+ ${SETTINGS_KEYS.join("\n ")}`).argument(
1621
+ "<key>",
1622
+ "Configuration key to read (choose from the available keys listed below)"
1623
+ ).helpOption("-h, --help", "Show help").action(async (key) => {
1596
1624
  if (!SETTINGS_KEYS.includes(key)) {
1597
1625
  console.error(
1598
1626
  _dedent2.default`
@@ -1617,7 +1645,9 @@ Available keys:
1617
1645
  });
1618
1646
 
1619
1647
  // src/cli/cmd/config/index.ts
1620
- var config_default2 = new (0, _interactivecommander.Command)().command("config").description("Manage Lingo.dev CLI configuration").helpOption("-h, --help", "Show help").addCommand(set_default).addCommand(unset_default).addCommand(get_default);
1648
+ var config_default2 = new (0, _interactivecommander.Command)().command("config").description(
1649
+ "Manage CLI settings (authentication, API keys) stored in ~/.lingodotdevrc"
1650
+ ).helpOption("-h, --help", "Show help").addCommand(set_default).addCommand(unset_default).addCommand(get_default);
1621
1651
 
1622
1652
  // src/cli/cmd/i18n.ts
1623
1653
 
@@ -7201,6 +7231,7 @@ function createBucketLoader(bucketType, bucketPathPattern, options, lockedKeys,
7201
7231
  createXcodeXcstringsLoader(options.defaultLocale),
7202
7232
  createFlatLoader(),
7203
7233
  createEnsureKeyOrderLoader(),
7234
+ createLockedKeysLoader(lockedKeys || []),
7204
7235
  createSyncLoader(),
7205
7236
  createVariableLoader({ type: "ieee" }),
7206
7237
  createUnlocalizableLoader(options.returnUnlocalizedKeys)
@@ -7781,41 +7812,43 @@ function createDeltaProcessor(fileKey) {
7781
7812
  }
7782
7813
 
7783
7814
  // src/cli/cmd/i18n.ts
7784
- var i18n_default = new (0, _interactivecommander.Command)().command("i18n").description("Run Localization engine").helpOption("-h, --help", "Show help").option(
7815
+ var i18n_default = new (0, _interactivecommander.Command)().command("i18n").description(
7816
+ "DEPRECATED: Run localization pipeline (prefer `run` command instead)"
7817
+ ).helpOption("-h, --help", "Show help").option(
7785
7818
  "--locale <locale>",
7786
- "Locale to process",
7819
+ "Limit processing to the listed target locale codes from i18n.json. Repeat the flag to include multiple locales. Defaults to all configured target locales",
7787
7820
  (val, prev) => prev ? [...prev, val] : [val]
7788
7821
  ).option(
7789
7822
  "--bucket <bucket>",
7790
- "Bucket to process",
7823
+ "Limit processing to specific bucket types defined in i18n.json (e.g., json, yaml, android). Repeat the flag to include multiple bucket types. Defaults to all buckets",
7791
7824
  (val, prev) => prev ? [...prev, val] : [val]
7792
7825
  ).option(
7793
7826
  "--key <key>",
7794
- "Key to process. Process only a specific translation key, useful for debugging or updating a single entry"
7827
+ "Limit processing to a single translation key by exact match. Filters all buckets and locales to process only this key, useful for testing or debugging specific translations. Example: auth.login.title"
7795
7828
  ).option(
7796
7829
  "--file [files...]",
7797
- "File to process. Process only a specific path, may contain asterisk * to match multiple files. Useful if you have a lot of files and want to focus on a specific one. Specify more files separated by commas or spaces."
7830
+ "Filter processing to only buckets whose file paths contain these substrings. Example: 'components' to process only files in components directories"
7798
7831
  ).option(
7799
7832
  "--frozen",
7800
- `Run in read-only mode - fails if any translations need updating, useful for CI/CD pipelines to detect missing translations`
7833
+ "Validate translations are up-to-date without making changes - fails if source files, target files, or lockfile are out of sync. Ideal for CI/CD to ensure translation consistency before deployment"
7801
7834
  ).option(
7802
7835
  "--force",
7803
- "Ignore lockfile and process all keys, useful for full re-translation"
7836
+ "Force re-translation of all keys, bypassing change detection. Useful when you want to regenerate translations with updated AI models or translation settings"
7804
7837
  ).option(
7805
7838
  "--verbose",
7806
- "Show detailed output including intermediate processing data and API communication details"
7839
+ "Print the translation data being processed as formatted JSON for each bucket and locale"
7807
7840
  ).option(
7808
7841
  "--interactive",
7809
- "Enable interactive mode for reviewing and editing translations before they are applied"
7842
+ "Review and edit AI-generated translations interactively before applying changes to files"
7810
7843
  ).option(
7811
7844
  "--api-key <api-key>",
7812
- "Explicitly set the API key to use, override the default API key from settings"
7845
+ "Override API key from settings or environment variables"
7813
7846
  ).option(
7814
7847
  "--debug",
7815
- "Pause execution at start for debugging purposes, waits for user confirmation before proceeding"
7848
+ "Pause before processing localization so you can attach a debugger"
7816
7849
  ).option(
7817
7850
  "--strict",
7818
- "Stop processing on first error instead of continuing with other locales/buckets"
7851
+ "Stop immediately on first error instead of continuing to process remaining buckets and locales (fail-fast mode)"
7819
7852
  ).action(async function(options) {
7820
7853
  updateGitignore();
7821
7854
  const ora = _ora2.default.call(void 0, );
@@ -8514,7 +8547,12 @@ var LockfileSchema = _zod2.default.object({
8514
8547
 
8515
8548
  // src/cli/cmd/lockfile.ts
8516
8549
 
8517
- var lockfile_default = new (0, _interactivecommander.Command)().command("lockfile").description("Create a lockfile if it does not exist").helpOption("-h, --help", "Show help").option("-f, --force", "Force create a lockfile").action(async (options) => {
8550
+ var lockfile_default = new (0, _interactivecommander.Command)().command("lockfile").description(
8551
+ "Generate or refresh i18n.lock based on the current source locale content"
8552
+ ).helpOption("-h, --help", "Show help").option(
8553
+ "-f, --force",
8554
+ "Overwrite existing lockfile to reset translation tracking"
8555
+ ).action(async (options) => {
8518
8556
  const flags = flagsSchema.parse(options);
8519
8557
  const ora = _ora2.default.call(void 0, );
8520
8558
  const lockfileHelper = createLockfileHelper();
@@ -8559,10 +8597,19 @@ var flagsSchema = _zod2.default.object({
8559
8597
 
8560
8598
 
8561
8599
  var cleanup_default = new (0, _interactivecommander.Command)().command("cleanup").description(
8562
- "Remove keys from target files that do not exist in the source file"
8563
- ).helpOption("-h, --help", "Show help").option("--locale <locale>", "Specific locale to cleanup").option("--bucket <bucket>", "Specific bucket to cleanup").option("--dry-run", "Show what would be removed without making changes").option(
8600
+ "Remove translation keys from target locales that no longer exist in the source locale"
8601
+ ).helpOption("-h, --help", "Show help").option(
8602
+ "--locale <locale>",
8603
+ "Limit cleanup to a specific target locale from i18n.json. Defaults to all configured target locales"
8604
+ ).option(
8605
+ "--bucket <bucket>",
8606
+ "Limit cleanup to a specific bucket type defined under `buckets` in i18n.json"
8607
+ ).option(
8608
+ "--dry-run",
8609
+ "Preview which keys would be deleted without making any changes"
8610
+ ).option(
8564
8611
  "--verbose",
8565
- "Show detailed output including:\n - List of keys that would be removed.\n - Processing steps."
8612
+ "Print detailed output showing the specific keys to be removed for each locale"
8566
8613
  ).action(async function(options) {
8567
8614
  const ora = _ora2.default.call(void 0, );
8568
8615
  const results = [];
@@ -8683,7 +8730,9 @@ var _stdiojs = require('@modelcontextprotocol/sdk/server/stdio.js');
8683
8730
  var _mcpjs = require('@modelcontextprotocol/sdk/server/mcp.js');
8684
8731
 
8685
8732
 
8686
- var mcp_default = new (0, _interactivecommander.Command)().command("mcp").description("Use Lingo.dev model context provider with your AI agent").helpOption("-h, --help", "Show help").action(async (_35, program) => {
8733
+ var mcp_default = new (0, _interactivecommander.Command)().command("mcp").description(
8734
+ "Start a Model Context Protocol (MCP) server for AI assistant integration"
8735
+ ).helpOption("-h, --help", "Show help").action(async (_35, program) => {
8687
8736
  const apiKey = program.args[0];
8688
8737
  const settings = getSettings(apiKey);
8689
8738
  if (!settings.auth.apiKey) {
@@ -9671,48 +9720,45 @@ function playSound(type) {
9671
9720
  setTimeout(resolve, 3e3);
9672
9721
  });
9673
9722
  }
9674
- var run_default = new (0, _interactivecommander.Command)().command("run").description("Run Lingo.dev localization engine").helpOption("-h, --help", "Show help").option(
9723
+ var run_default = new (0, _interactivecommander.Command)().command("run").description("Run localization pipeline").helpOption("-h, --help", "Show help").option(
9675
9724
  "--source-locale <source-locale>",
9676
- "Locale to use as source locale. Defaults to i18n.json locale.source"
9725
+ "Override the source locale from i18n.json for this run"
9677
9726
  ).option(
9678
9727
  "--target-locale <target-locale>",
9679
- "Locale to use as target locale. Defaults to i18n.json locale.targets",
9728
+ "Limit processing to the listed target locale codes from i18n.json. Repeat the flag to include multiple locales. Defaults to all configured target locales",
9680
9729
  (val, prev) => prev ? [...prev, val] : [val]
9681
9730
  ).option(
9682
9731
  "--bucket <bucket>",
9683
- "Bucket to process",
9732
+ "Limit processing to specific bucket types defined in i18n.json (e.g., json, yaml, android). Repeat the flag to include multiple bucket types. Defaults to all configured buckets",
9684
9733
  (val, prev) => prev ? [...prev, val] : [val]
9685
9734
  ).option(
9686
9735
  "--file <file>",
9687
- "File to process. Process only files that match this glob pattern in their path. Use quotes around patterns to prevent shell expansion (e.g., --file '**/*.json'). Useful if you have a lot of files and want to focus on a specific one. Specify more files separated by commas or spaces. Accepts glob patterns.",
9736
+ "Filter bucket path pattern values by substring match. Examples: messages.json or locale/. Repeat to add multiple filters",
9688
9737
  (val, prev) => prev ? [...prev, val] : [val]
9689
9738
  ).option(
9690
9739
  "--key <key>",
9691
- "Key to process. Process only a specific translation key, useful for updating a single entry. Accepts glob patterns.",
9740
+ "Filter keys by prefix matching on dot-separated paths. Example: auth.login to match all keys starting with auth.login. Repeat for multiple patterns",
9692
9741
  (val, prev) => prev ? [...prev, val] : [val]
9693
9742
  ).option(
9694
9743
  "--force",
9695
- "Ignore lockfile and process all keys, useful for full re-translation"
9744
+ "Force re-translation of all keys, bypassing change detection. Useful when you want to regenerate translations with updated AI models or translation settings"
9696
9745
  ).option(
9697
9746
  "--api-key <api-key>",
9698
- "Explicitly set the API key to use, override the default API key from settings"
9699
- ).option(
9700
- "--debug",
9701
- "Pause execution at start for debugging purposes, waits for user confirmation before proceeding"
9702
- ).option(
9747
+ "Override API key from settings or environment variables"
9748
+ ).option("--debug", "Pause before processing to allow attaching a debugger.").option(
9703
9749
  "--concurrency <concurrency>",
9704
- "Number of concurrent tasks to run",
9750
+ "Number of translation jobs to run concurrently. Higher values can speed up large translation batches but may increase memory usage. Defaults to 10 (maximum 10)",
9705
9751
  (val) => parseInt(val)
9706
9752
  ).option(
9707
9753
  "--watch",
9708
- "Watch source files for changes and automatically retranslate"
9754
+ "Watch source locale files continuously and retranslate automatically when files change"
9709
9755
  ).option(
9710
9756
  "--debounce <milliseconds>",
9711
- "Debounce delay in milliseconds for watch mode (default: 5000ms)",
9757
+ "Delay in milliseconds after file changes before retranslating in watch mode. Defaults to 5000",
9712
9758
  (val) => parseInt(val)
9713
9759
  ).option(
9714
9760
  "--sound",
9715
- "Play sound on completion, partially completion and failed of the task"
9761
+ "Play audio feedback when translations complete (success or failure sounds)"
9716
9762
  ).action(async (args) => {
9717
9763
  let authId = null;
9718
9764
  try {
@@ -10417,13 +10463,29 @@ var getPlatformKit = () => {
10417
10463
  };
10418
10464
 
10419
10465
  // src/cli/cmd/ci/index.ts
10420
- var ci_default = new (0, _interactivecommander.Command)().command("ci").description("Run Lingo.dev CI/CD action").helpOption("-h, --help", "Show help").option("--parallel [boolean]", "Run in parallel mode", parseBooleanArg).option("--api-key <key>", "API key").option(
10466
+ var ci_default = new (0, _interactivecommander.Command)().command("ci").description("Run localization pipeline in CI/CD environment").helpOption("-h, --help", "Show help").option(
10467
+ "--parallel [boolean]",
10468
+ "Process translations concurrently for faster execution. Defaults to false",
10469
+ parseBooleanArg
10470
+ ).option(
10471
+ "--api-key <key>",
10472
+ "Override API key from settings or environment variables"
10473
+ ).option(
10421
10474
  "--pull-request [boolean]",
10422
- "Create a pull request with the changes",
10475
+ "Create or update translations on a dedicated branch and manage pull requests automatically. When false, commits directly to current branch. Defaults to false",
10423
10476
  parseBooleanArg
10424
- ).option("--commit-message <message>", "Commit message").option("--pull-request-title <title>", "Pull request title").option("--working-directory <dir>", "Working directory").option(
10477
+ ).option(
10478
+ "--commit-message <message>",
10479
+ "Commit message for localization changes. Defaults to 'feat: update translations via @lingodotdev'"
10480
+ ).option(
10481
+ "--pull-request-title <title>",
10482
+ "Title for the pull request when using --pull-request mode. Defaults to 'feat: update translations via @lingodotdev'"
10483
+ ).option(
10484
+ "--working-directory <dir>",
10485
+ "Directory to run localization from (useful for monorepos where localization files are in a subdirectory)"
10486
+ ).option(
10425
10487
  "--process-own-commits [boolean]",
10426
- "Process commits made by this action",
10488
+ "Allow processing commits made by this CI user (bypasses infinite loop prevention)",
10427
10489
  parseBooleanArg
10428
10490
  ).action(async (options) => {
10429
10491
  const settings = getSettings(options.apiKey);
@@ -10531,21 +10593,24 @@ function checkForPendingOperations() {
10531
10593
  // src/cli/cmd/status.ts
10532
10594
  var status_default = new (0, _interactivecommander.Command)().command("status").description("Show the status of the localization process").helpOption("-h, --help", "Show help").option(
10533
10595
  "--locale <locale>",
10534
- "Locale to process",
10596
+ "Limit the report to specific target locales from i18n.json. Repeat the flag to include multiple locales. Defaults to all configured target locales",
10535
10597
  (val, prev) => prev ? [...prev, val] : [val]
10536
10598
  ).option(
10537
10599
  "--bucket <bucket>",
10538
- "Bucket to process",
10600
+ "Limit the report to specific bucket types defined in i18n.json (e.g., json, yaml, android). Repeat the flag to include multiple bucket types. Defaults to all buckets",
10539
10601
  (val, prev) => prev ? [...prev, val] : [val]
10540
10602
  ).option(
10541
10603
  "--file [files...]",
10542
- "File to process. Process only files that include this string in their path. Useful if you have a lot of files and want to focus on a specific one. Specify more files separated by commas or spaces."
10604
+ "Filter the status report to only include files whose paths contain these substrings. Example: 'components' to match any file path containing 'components'"
10543
10605
  ).option(
10544
10606
  "--force",
10545
- "Ignore lockfile and process all keys, useful for estimating full re-translation"
10546
- ).option("--verbose", "Show detailed output including key-level word counts").option(
10607
+ "Force all keys to be counted as needing translation, bypassing change detection. Shows word estimates for a complete retranslation regardless of current translation status"
10608
+ ).option(
10609
+ "--verbose",
10610
+ "Print detailed output showing missing and updated key counts with example key names for each file and locale"
10611
+ ).option(
10547
10612
  "--api-key <api-key>",
10548
- "Explicitly set the API key to use, override the default API key from settings"
10613
+ "Override the API key from settings or environment variables for this run"
10549
10614
  ).action(async function(options) {
10550
10615
  const ora = _ora2.default.call(void 0, );
10551
10616
  const flags = parseFlags2(options);
@@ -11109,7 +11174,7 @@ async function renderHero2() {
11109
11174
  // package.json
11110
11175
  var package_default = {
11111
11176
  name: "lingo.dev",
11112
- version: "0.111.8",
11177
+ version: "0.111.9",
11113
11178
  description: "Lingo.dev CLI",
11114
11179
  private: false,
11115
11180
  publishConfig: {
@@ -11360,24 +11425,24 @@ var package_default = {
11360
11425
 
11361
11426
 
11362
11427
  var purge_default = new (0, _interactivecommander.Command)().command("purge").description(
11363
- "Remove translations for given --bucket, --file, --key, --locale"
11428
+ "WARNING: Permanently delete translation entries from bucket path patterns defined in i18n.json. This is a destructive operation that cannot be undone. Without any filters, ALL managed keys will be removed from EVERY target locale."
11364
11429
  ).helpOption("-h, --help", "Show help").option(
11365
11430
  "--bucket <bucket>",
11366
- "Bucket to process",
11431
+ "Limit the purge to specific bucket types defined under `buckets` in i18n.json. Repeat the flag to include multiple bucket types. Defaults to all buckets",
11367
11432
  (val, prev) => prev ? [...prev, val] : [val]
11368
11433
  ).option(
11369
11434
  "--file [files...]",
11370
- "File(s) to process. Only process files that match the given glob pattern(s)."
11435
+ "Filter which file paths to purge by matching against path patterns. Only paths containing any of these values will be processed. Examples: --file messages.json --file admin/"
11371
11436
  ).option(
11372
11437
  "--key <key>",
11373
- "Key to remove. Remove all translation keys matching the given glob pattern."
11438
+ "Filter which keys to delete using prefix matching on dot-separated key paths. Example: 'auth.login' matches all keys starting with auth.login. Omit this option to delete ALL keys. Keys marked as locked or ignored in i18n.json are automatically skipped"
11374
11439
  ).option(
11375
11440
  "--locale <locale>",
11376
- "Locale to process",
11441
+ "Limit purging to specific target locale codes from i18n.json. Repeat the flag to include multiple locales. Defaults to all configured target locales. Warning: Including the source locale will delete content from it as well.",
11377
11442
  (val, prev) => prev ? [...prev, val] : [val]
11378
11443
  ).option(
11379
11444
  "--yes-really",
11380
- "Skip interactive confirmation and delete without asking."
11445
+ "Bypass safety confirmations for destructive operations. Use with extreme caution - this will delete translation keys without asking for confirmation. Intended for automated scripts and CI environments only."
11381
11446
  ).action(async function(options) {
11382
11447
  const ora = _ora2.default.call(void 0, );
11383
11448
  try {
@@ -11532,7 +11597,10 @@ ${_gradientstring.vice.call(void 0,
11532
11597
 
11533
11598
  Star the the repo :) https://github.com/LingoDotDev/lingo.dev
11534
11599
  `
11535
- ).version(`v${package_default.version}`, "-v, --version", "Show version").addCommand(init_default).interactive("-y, --no-interactive", "Disable interactive mode").addCommand(i18n_default).addCommand(auth_default).addCommand(login_default).addCommand(logout_default).addCommand(show_default).addCommand(config_default2).addCommand(lockfile_default).addCommand(cleanup_default).addCommand(mcp_default).addCommand(ci_default).addCommand(status_default).addCommand(may_the_fourth_default, { hidden: true }).addCommand(run_default).addCommand(purge_default).exitOverride((err) => {
11600
+ ).version(`v${package_default.version}`, "-v, --version", "Show version").addCommand(init_default).interactive(
11601
+ "-y, --no-interactive",
11602
+ "Run every command in non-interactive mode (no prompts); required when scripting"
11603
+ ).addCommand(i18n_default).addCommand(auth_default).addCommand(login_default).addCommand(logout_default).addCommand(show_default).addCommand(config_default2).addCommand(lockfile_default).addCommand(cleanup_default).addCommand(mcp_default).addCommand(ci_default).addCommand(status_default).addCommand(may_the_fourth_default, { hidden: true }).addCommand(run_default).addCommand(purge_default).exitOverride((err) => {
11536
11604
  if (err.code === "commander.helpDisplayed" || err.code === "commander.version" || err.code === "commander.help") {
11537
11605
  process.exit(0);
11538
11606
  }