{
  "title": "npm releases - choose packages and a tag",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "packages": {
      "title": "Public npm package names",
      "type": "array",
      "description": "Up to 100 exact names, including @scope/package. Empty uses apify, cheerio and lodash. No URLs, private registry or auth token.",
      "editor": "stringList",
      "default": [],
      "prefill": [
        "apify",
        "cheerio",
        "lodash"
      ],
      "sectionCaption": "1 · Packages and release tag",
      "sectionDescription": "Choose exact public package names and the distribution tag to observe."
    },
    "distTag": {
      "title": "Release distribution tag",
      "type": "string",
      "description": "Follow this registry tag for every package. Defaults to latest. Missing tags are reported as failed sources; versions are not guessed.",
      "editor": "textfield",
      "default": "latest"
    },
    "maxResults": {
      "title": "Maximum saved observations",
      "type": "integer",
      "description": "Stops after this many confirmed saved package observations. Unchanged rows skipped by onlyChanges do not consume this limit. Selected cap is not a full watchlist scan.",
      "default": 25,
      "minimum": 1,
      "maximum": 100,
      "sectionCaption": "2 · Saved result limit",
      "sectionDescription": "Bound the number of package observations written."
    },
    "comparePrevious": {
      "title": "Compare with saved observations",
      "type": "boolean",
      "description": "Use a named history store. First observation is new; saved rows advance history. Run the same snapshotName sequentially.",
      "default": false,
      "sectionCaption": "3 · Saved comparisons",
      "sectionDescription": "The first comparison establishes history. Reuse the same scope for later observations and avoid concurrent writers."
    },
    "onlyChanges": {
      "title": "Save only new or changed packages",
      "type": "boolean",
      "description": "Implies comparePrevious. The first run saves initial observations; an unchanged repeat saves zero rows. Do not enable for a guaranteed nonempty sample.",
      "default": false
    },
    "snapshotName": {
      "title": "Saved comparison namespace",
      "type": "string",
      "description": "Separate history namespaces for different workflows. 1-40 letters, digits, hyphens or underscores. Concurrent use of the same namespace is unsupported.",
      "editor": "textfield",
      "default": "default"
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "description": "Own deadline, also bounded by the platform deadline minus 25 seconds. Includes source requests and history operations.",
      "default": 240,
      "minimum": 30,
      "maximum": 3600,
      "sectionCaption": "4 · Advanced run settings",
      "sectionDescription": "Adjust the time budget only when a larger collection needs it."
    }
  },
  "description": "Choose public npm package names and a distribution tag, then optionally compare saved metadata. The Actor does not install packages, execute code or certify package safety."
}
