{
  "commands": {
    "inspect": {
      "aliases": [],
      "args": {},
      "description": "Inspect one Salesforce object's dependency neighborhood: transitive parents + 1-level children. Read-only — no SOQL (unless --include-counts), no writes.",
      "examples": [
        "<%= config.bin %> <%= command.id %> --object Case",
        "<%= config.bin %> <%= command.id %> --object Case --target-org dev-sandbox --format mermaid",
        "<%= config.bin %> <%= command.id %> --object Account --record-type Partner --include-counts",
        "<%= config.bin %> <%= command.id %> --object Opportunity --no-children --parent-depth 3"
      ],
      "flags": {
        "target-org": {
          "char": "o",
          "description": "Org alias (from `sf org login`). Defaults to `sf` CLI's target-org.",
          "name": "target-org",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "object": {
          "char": "s",
          "description": "Single root sObject API name to focus on (required).",
          "name": "object",
          "required": true,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "record-type": {
          "description": "Record-type developer name; scopes required-field analysis on the root.",
          "name": "record-type",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "parent-depth": {
          "description": "Max transitive parent walk depth. Stops at standard root objects regardless. Use 1 for the tightest view.",
          "name": "parent-depth",
          "default": 2,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "children": {
          "description": "Walk 1 level of children from the root via childRelationships.",
          "name": "children",
          "allowNo": true,
          "type": "boolean"
        },
        "include-counts": {
          "description": "Run `SELECT COUNT()` per walked object (aggregate metadata only — no record data touched).",
          "name": "include-counts",
          "allowNo": false,
          "type": "boolean"
        },
        "include-formula": {
          "description": "Include formula/calculated/auto-number fields (excluded by default).",
          "name": "include-formula",
          "allowNo": false,
          "type": "boolean"
        },
        "include-audit": {
          "description": "Include audit fields (CreatedById/Date, LastModified, SystemModstamp, …).",
          "name": "include-audit",
          "allowNo": false,
          "type": "boolean"
        },
        "include-non-createable": {
          "description": "Include non-createable fields (read-only / system-managed).",
          "name": "include-non-createable",
          "allowNo": false,
          "type": "boolean"
        },
        "format": {
          "description": "Output format.",
          "name": "format",
          "default": "tree",
          "hasDynamicHelp": false,
          "multiple": false,
          "options": [
            "tree",
            "mermaid",
            "dot",
            "json"
          ],
          "type": "option"
        },
        "output": {
          "char": "f",
          "description": "Write to file instead of stdout.",
          "name": "output",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "no-cache": {
          "description": "Bypass describe cache; fetch everything fresh.",
          "name": "no-cache",
          "allowNo": false,
          "type": "boolean"
        },
        "cache-ttl": {
          "description": "Describe cache TTL in seconds.",
          "name": "cache-ttl",
          "default": 86400,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "api-version": {
          "description": "Salesforce API version.",
          "name": "api-version",
          "default": "60.0",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "max-nodes": {
          "description": "Maximum nodes to render. 0 = no cap.",
          "name": "max-nodes",
          "default": 100,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "focus": {
          "description": "Focus rendering on this object and its neighbors (subgraph view).",
          "name": "focus",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "depth": {
          "description": "With --focus: neighborhood depth (default 2).",
          "name": "depth",
          "default": 2,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "verbose": {
          "description": "Verbose logging: cache hits, API calls, timings.",
          "name": "verbose",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "inspect",
      "pluginAlias": "sandbox-seed",
      "pluginName": "sandbox-seed",
      "pluginType": "core",
      "strict": true,
      "enableJsonFlag": false,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "inspect.js"
      ]
    },
    "seed": {
      "aliases": [],
      "args": {},
      "description": "Seed a sandbox from another org: SOQL-scoped root records + their dependency graph, with cross-org FK remapping. Same engine and safety gates as the MCP `seed` tool — target must be a sandbox, a dry run always precedes the run, and the run only executes after explicit confirmation (interactive prompt, or --yes for CI).",
      "examples": [
        "<%= config.bin %> <%= command.id %> --source-org prod --target-org dev-full --object Case --where \"IsClosed = false AND CreatedDate = THIS_YEAR\" --sample-size 100",
        "<%= config.bin %> <%= command.id %> --source-org prod --target-org dev-full --object Account --where \"Industry = 'Education'\" --include-parents Campaign --include-children Contact,Opportunity",
        "<%= config.bin %> <%= command.id %> --source-org full --target-org dev-sandbox --object Contact --where \"CreatedDate = THIS_MONTH\" --mask --dry-run-only",
        "<%= config.bin %> <%= command.id %> --source-org prod --target-org qa --object Case --where \"Id IN ('500…','500…')\" --disable-validation-rules --yes"
      ],
      "flags": {
        "json": {
          "description": "Format output as json.",
          "helpGroup": "GLOBAL",
          "name": "json",
          "allowNo": false,
          "type": "boolean"
        },
        "source-org": {
          "description": "Source org alias (from `sf org login`).",
          "name": "source-org",
          "required": true,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "target-org": {
          "description": "Target SANDBOX org alias. Production targets are refused.",
          "name": "target-org",
          "required": true,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "object": {
          "description": "Root sObject API name to seed.",
          "name": "object",
          "required": true,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "where": {
          "description": "SOQL WHERE clause (predicate only, no SELECT/LIMIT) scoping the root records.",
          "name": "where",
          "required": true,
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "limit": {
          "description": "Safety cap on the root-scope count — refuses if WHERE matches more.",
          "name": "limit",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "sample-size": {
          "description": "Take the first N matching root records (ORDER BY Id) instead of refusing.",
          "name": "sample-size",
          "hasDynamicHelp": false,
          "multiple": false,
          "type": "option"
        },
        "include-parents": {
          "description": "Optional parent objects to include (comma-separated, repeatable).",
          "name": "include-parents",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "include-children": {
          "description": "Optional child objects to include (comma-separated, repeatable).",
          "name": "include-children",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "include-managed-packages": {
          "description": "Surface managed-package objects in the optional lists.",
          "name": "include-managed-packages",
          "allowNo": false,
          "type": "boolean"
        },
        "include-system-children": {
          "description": "Surface system-automation children (Feed*, *History, …) in the optional list.",
          "name": "include-system-children",
          "allowNo": false,
          "type": "boolean"
        },
        "child-lookup": {
          "description": "Walk lookup fields on a direct child one hop: ChildObject:Field1[,Field2]. Repeatable.",
          "name": "child-lookup",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "disable-validation-rules": {
          "description": "Snapshot + deactivate target-org validation rules on seeded objects around the insert, then restore.",
          "name": "disable-validation-rules",
          "allowNo": false,
          "type": "boolean"
        },
        "isolate-id-map": {
          "description": "Ignore the persistent project id-map for this run (re-insert, no cross-run stitching).",
          "name": "isolate-id-map",
          "allowNo": false,
          "type": "boolean"
        },
        "upsert-key": {
          "description": "Force an upsert key: Object=ExternalIdField. Repeatable.",
          "name": "upsert-key",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "mask": {
          "description": "Mask detected sensitive fields with deterministic, format-preserving fakes before insert.",
          "name": "mask",
          "allowNo": false,
          "type": "boolean"
        },
        "mask-field": {
          "description": "Masking override: Object.Field[:strategy] (strategy: email|phone|person-name|street-address|generic-text|auto|copy). Implies --mask. Repeatable.",
          "name": "mask-field",
          "hasDynamicHelp": false,
          "multiple": true,
          "type": "option"
        },
        "dry-run-only": {
          "description": "Stop after the dry run. Execute later with `seed resume <sessionId>`.",
          "name": "dry-run-only",
          "allowNo": false,
          "type": "boolean"
        },
        "yes": {
          "char": "y",
          "description": "Skip the interactive confirmation (for CI). Ignored with --dry-run-only.",
          "name": "yes",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "seed",
      "pluginAlias": "sandbox-seed",
      "pluginName": "sandbox-seed",
      "pluginType": "core",
      "strict": true,
      "enableJsonFlag": true,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "seed",
        "index.js"
      ]
    },
    "seed:recover": {
      "aliases": [],
      "args": {
        "sessionId": {
          "description": "The session whose validation-rule snapshot should be restored.",
          "name": "sessionId",
          "required": true
        }
      },
      "description": "Reactivate target-org validation rules a crashed seed run left deactivated. The seed engine refuses all new work while a recovery is pending — this clears it.",
      "examples": [
        "<%= config.bin %> <%= command.id %> 8f2c1a-…"
      ],
      "flags": {
        "json": {
          "description": "Format output as json.",
          "helpGroup": "GLOBAL",
          "name": "json",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "seed:recover",
      "pluginAlias": "sandbox-seed",
      "pluginName": "sandbox-seed",
      "pluginType": "core",
      "strict": true,
      "enableJsonFlag": true,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "seed",
        "recover.js"
      ]
    },
    "seed:resume": {
      "aliases": [],
      "args": {
        "sessionId": {
          "description": "Session id printed by `seed` (also the directory name under ~/.sandbox-seed/sessions/).",
          "name": "sessionId",
          "required": true
        }
      },
      "description": "Execute a session that already has a dry run (e.g. one created with `seed --dry-run-only`). The engine enforces dry-run freshness and the plan hash — if the plan drifted since the report you reviewed, the run refuses and tells you to refresh.",
      "examples": [
        "<%= config.bin %> <%= command.id %> 8f2c1a-…",
        "<%= config.bin %> <%= command.id %> 8f2c1a-… --refresh-dry-run",
        "<%= config.bin %> <%= command.id %> 8f2c1a-… --yes"
      ],
      "flags": {
        "json": {
          "description": "Format output as json.",
          "helpGroup": "GLOBAL",
          "name": "json",
          "allowNo": false,
          "type": "boolean"
        },
        "refresh-dry-run": {
          "description": "Re-run the dry run first (required when the previous one expired or the plan drifted).",
          "name": "refresh-dry-run",
          "allowNo": false,
          "type": "boolean"
        },
        "yes": {
          "char": "y",
          "description": "Skip the interactive confirmation (for CI).",
          "name": "yes",
          "allowNo": false,
          "type": "boolean"
        }
      },
      "hasDynamicHelp": false,
      "hiddenAliases": [],
      "id": "seed:resume",
      "pluginAlias": "sandbox-seed",
      "pluginName": "sandbox-seed",
      "pluginType": "core",
      "strict": true,
      "enableJsonFlag": true,
      "isESM": true,
      "relativePath": [
        "dist",
        "commands",
        "seed",
        "resume.js"
      ]
    }
  },
  "version": "0.2.9"
}