Pins de proyecto
Archivo HubBound
Qué es
El archivo HubBound (hubbound.json en disco) vive en la raíz del proyecto y pinnea qué artifacts y kits pertenecen a ese repo, en qué versiones exactas (o latest).
Es la contraparte de scope local frente a los installs globales. Los manifiestos de perfil reusan la misma forma JSON, pero viven bajo profiles/ en la config de usuario — no en el repo.
Para qué sirve
Declarar el tooling que el proyecto espera. hubbound install sin argumentos (si hay manifesto) instala todos los pins — como npm install leyendo package.json.
install y upgrade en scope local también escriben las versiones resueltas de vuelta al archivo para mantener los pins al día.
Estructura del archivo
Lo crea hubbound init. Tres campos top-level — nombre del proyecto más dos mapas de pins.
{
"name": "my-app",
"artifacts": {
"jane-a1b2c3/my-hook": "1.2.0"
},
"kits": {
"jane-a1b2c3/ai-tools-bundle": "latest"
}
} | name | Label del proyecto. Por defecto es el basename del directorio al correr hubbound init. Informativo — no se usa como clave de install. |
| artifacts | Mapa de pins de artifacts. Cada key es un tag author/name (ej. jane-a1b2c3/my-hook); cada value es la versión pineada ("1.2.0") o el literal "latest". |
| kits | Mapa de pins de kits — misma forma que artifacts. Un kit es un bundle que trae varios artifacts/tools de una. |
- Los pins son versiones exactas (o el literal latest) — no rangos semver.
- latest se resuelve en install/upgrade; la versión resuelta se escribe al registrar entradas.
- HubBound encuentra el archivo caminando hacia arriba desde el directorio actual.
Comandos compatibles
Estos comandos leen y/o escriben el hubbound.json del proyecto.
$ hubbound init
$ hubbound install artifact jane-a1b2c3/my-hook
$ hubbound install
$ hubbound upgrade all
| hubbound init | Crea hubbound.json en el directorio actual (falla si ya existe). |
| hubbound install | Sin args + manifesto → instala todos los pins. Con args + scope local → instala y registra el pin. |
| hubbound upgrade | En scope local, refresca los pins en hubbound.json después de actualizar (una entidad o all). |
| --scope local|global | Scope por defecto: local si hay hubbound.json arriba del cwd; si no, global. |
vs manifiestos de perfil
Mismo schema JSON. Distinta ubicación y propósito.
- hubbound.json de proyecto → scope local/proyecto; suele ir al repo.
- profiles/<name>/hubbound.json → pins del perfil global; bajo la config de usuario.
- --profile en install siempre apunta a un archivo de perfil y fuerza scope global.
- hubbound install pelado requiere un hubbound.json de proyecto (o corré hubbound init antes).