{
"$defs": {
"BackendKind": {
"description": "Typed installation backend selected by a component definition.",
"oneOf": [
{
"const": "apt",
"description": "Debian-family APT package manager.",
"type": "string"
},
{
"const": "brew",
"description": "Homebrew package manager.",
"type": "string"
},
{
"const": "cargo",
"description": "Cargo package installer.",
"type": "string"
},
{
"const": "rustup",
"description": "Rustup toolchain manager.",
"type": "string"
},
{
"const": "npm",
"description": "npm package installer.",
"type": "string"
},
{
"const": "pip",
"description": "Python pip package installer.",
"type": "string"
},
{
"const": "uv-tool",
"description": "uv isolated tool installer.",
"type": "string"
},
{
"const": "winget",
"description": "Windows Package Manager.",
"type": "string"
},
{
"const": "archive",
"description": "Verified downloadable archive or file.",
"type": "string"
},
{
"const": "git",
"description": "Pinned Git source build.",
"type": "string"
},
{
"const": "shell",
"description": "Policy-gated shell operation.",
"type": "string"
}
]
},
"InstallKind": {
"description": "Whether a registry entry represents a tool or a skill.",
"oneOf": [
{
"const": "tool",
"description": "Executable or development tool.",
"type": "string"
},
{
"const": "skill",
"description": "Agent skill payload.",
"type": "string"
}
]
},
"RegistryEntry": {
"additionalProperties": false,
"description": "Persisted record of a managed installation and its activation targets.",
"properties": {
"artifact_id": {
"description": "Immutable artifact currently activated for the entry, when applicable.",
"type": [
"string",
"null"
]
},
"backend": {
"anyOf": [
{
"$ref": "#/$defs/BackendKind"
},
{
"type": "null"
}
],
"description": "Typed backend responsible for the managed tool lifecycle."
},
"config_hash": {
"description": "Canonical configuration hash associated with the installation run.",
"type": [
"string",
"null"
]
},
"installed_at": {
"description": "Unix timestamp at which the entry was committed.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"kind": {
"$ref": "#/$defs/InstallKind",
"description": "Whether the entry represents a tool or a skill."
},
"name": {
"description": "Canonical component or skill name.",
"type": "string"
},
"plan_hash": {
"description": "Immutable execution-plan hash associated with the installation run.",
"type": [
"string",
"null"
]
},
"previous_artifact_id": {
"description": "Artifact that can be restored when the current activation is removed.",
"type": [
"string",
"null"
]
},
"profile": {
"description": "Profile that requested the installation.",
"type": "string"
},
"source": {
"description": "Canonical source identity recorded for status and recovery.",
"type": "string"
},
"source_revision": {
"description": "Resolved upstream revision, when the backend has one.",
"type": [
"string",
"null"
]
},
"targets": {
"description": "Managed filesystem targets owned by this entry.",
"items": {
"$ref": "#/$defs/RegistryTarget"
},
"type": "array"
}
},
"required": [
"name",
"kind",
"source",
"profile",
"targets",
"installed_at",
"artifact_id",
"previous_artifact_id",
"config_hash",
"plan_hash",
"source_revision",
"backend"
],
"type": "object"
},
"RegistryTarget": {
"additionalProperties": false,
"description": "One filesystem target associated with a registry entry.",
"properties": {
"binary": {
"description": "Logical executable name for activation restoration, when this target is a binary.",
"type": [
"string",
"null"
]
},
"path": {
"description": "Managed filesystem path owned by the registry entry.",
"type": "string"
}
},
"required": [
"path",
"binary"
],
"type": "object"
}
},
"$id": "https://bot-forge.local/schema/registry.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"description": "Versioned persistent record of managed installations.",
"properties": {
"entries": {
"description": "Managed installation entries.",
"items": {
"$ref": "#/$defs/RegistryEntry"
},
"type": "array"
},
"revision": {
"description": "Monotonically increasing revision used for optimistic concurrency checks.",
"format": "uint64",
"minimum": 0,
"type": "integer"
},
"updated_at": {
"description": "Unix timestamp of the last committed update.",
"format": "uint64",
"minimum": 0,
"type": "integer"
}
},
"required": [
"revision",
"updated_at",
"entries"
],
"title": "bot-forge registry",
"type": "object"
}