{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://jellylabs.ai/schemas/lock.schema.json",
  "title": "Tentacle Lock File",
  "description": "Schema for jelly.lock dependency lock files - ensures reproducible installs",
  "type": "object",
  "required": ["lockfile_version", "packages"],
  "properties": {
    "lockfile_version": {
      "type": "integer",
      "const": 1,
      "description": "Lock file format version"
    },
    "generated": {
      "type": "string",
      "format": "date-time",
      "description": "When this lock file was generated"
    },
    "packages": {
      "type": "object",
      "additionalProperties": {
        "type": "object",
        "required": ["version", "resolved", "integrity"],
        "properties": {
          "version": {
            "type": "string",
            "description": "Exact resolved version"
          },
          "resolved": {
            "type": "string",
            "format": "uri",
            "description": "URL where package was fetched from"
          },
          "integrity": {
            "type": "string",
            "pattern": "^sha(256|384|512)-[A-Za-z0-9+/=]+$",
            "description": "Subresource integrity hash"
          },
          "dependencies": {
            "type": "object",
            "additionalProperties": { "type": "string" },
            "description": "Transitive dependencies with resolved versions"
          }
        }
      },
      "description": "Locked package versions keyed by package name"
    }
  }
}
