@iseoane/agent-depot 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.es.md +120 -53
  3. package/README.md +101 -41
  4. package/dist/src/app-flow.js +56 -24
  5. package/dist/src/cli.js +55 -0
  6. package/dist/src/package-cli.js +2 -1
  7. package/dist/src/package-flow.js +1 -1
  8. package/dist/src/package-host-state.js +10 -6
  9. package/dist/src/profile-export.js +72 -9
  10. package/dist/src/profile-import.js +3 -2
  11. package/dist/src/profile.js +71 -7
  12. package/dist/src/self-update.js +141 -0
  13. package/dist/src/tui/app-actions.js +82 -33
  14. package/dist/src/tui/app.js +19 -14
  15. package/dist/src/tui/catalog-browse.js +6 -1
  16. package/dist/src/tui/catalog-panel.js +11 -11
  17. package/dist/src/tui/catalog-state.js +28 -0
  18. package/dist/src/tui/catalog-tree.js +22 -5
  19. package/dist/src/tui/catalog-view.js +59 -16
  20. package/dist/src/tui/header-layout.js +33 -0
  21. package/dist/src/tui/installations-panel.js +3 -3
  22. package/dist/src/tui/installations-rows.js +20 -5
  23. package/dist/src/tui/installations-tree.js +4 -7
  24. package/dist/src/tui/installations-view.js +15 -6
  25. package/dist/src/tui/installations.js +9 -7
  26. package/dist/src/tui/manage-panel.js +7 -6
  27. package/dist/src/tui/mode-keys.js +9 -0
  28. package/dist/src/tui/package-rows.js +21 -7
  29. package/dist/src/tui/panel-parts.js +38 -6
  30. package/dist/src/tui/preview-window.js +48 -0
  31. package/dist/src/tui/profile-view.js +261 -42
  32. package/dist/src/tui/sources-mode.js +3 -1
  33. package/dist/src/tui/sources-recipes.js +50 -19
  34. package/dist/src/tui/sources-view.js +50 -14
  35. package/dist/src/tui/theme.js +14 -7
  36. package/dist/src/tui/updates-flow.js +2 -2
  37. package/dist/src/tui/updates-keys.js +34 -5
  38. package/dist/src/tui/updates-model.js +2 -0
  39. package/dist/src/tui/updates-panel.js +40 -15
  40. package/dist/src/tui/updates-preview.js +65 -0
  41. package/dist/src/tui/updates-view.js +17 -2
  42. package/dist/src/tui/updates.js +14 -5
  43. package/dist/src/tui/window.js +6 -4
  44. package/package.json +35 -14
  45. package/resources/pi/agents-panel/contract.ts +62 -0
  46. package/resources/pi/agents-panel/index.ts +471 -0
  47. package/skills/doctor-md-agents/SKILL.md +2 -1
  48. package/skills/doctor-md-agents/scripts/scan_corrections.py +141 -13
  49. package/skills/doctor-md-skill/references/supported-harnesses.md +2 -0
  50. package/skills/doctor-md-skill/scripts/collect_sessions.py +26 -2
package/CHANGELOG.md CHANGED
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.6.0] - 2026-10-12
11
+
12
+ ### Added
13
+
14
+ - The TUI fills the terminal and shows five numbered views. Switch with `1` through `5` or Tab/Shift+Tab. Resizing updates the layout. Xeo colors distinguish resource roles and status; `y` confirmations use bold green.
15
+ - Sources lists Git Sources and App recipes together. Approve recipes there; Catalog offers installation only for approved recipes verified absent. Installations retains installed Apps when approval expires and separates installation status from version evidence.
16
+ - Profile v2 can include identity-only replica intent for installed Skills, Apps and Packages. Export carries individual Skill selections and complete Package origin declarations, not installed state or approvals. The parser accepts Profile v1; v1-only readers reject v2. Import does not transfer approval or automatically install Apps or Packages.
17
+
18
+ ### Changed
19
+
20
+ - App recipe, refresh and update previews require review of every physical row before confirmation. After a resize, review any rows not yet displayed. Arrow keys and PageUp/PageDown move by visible pages.
21
+ - `u` in Updates opens the selected batch preview. It does not apply updates until the user reviews the preview and confirms.
22
+ - The Import/Export view groups Source choices, Skills, Apps and Packages under a collapsed Sources parent. Installed replicas and export notes have separate groups. Replica entries carry identity only and do not claim that the destination has installed those resources.
23
+
24
+ ### Fixed
25
+
26
+ - The TUI fills the terminal from startup and recalculates its layout on resize. Unmanaged Skill symlinks are marked distinctly in Installations.
27
+ - The real-terminal test harness waits for fully rendered frames and isolates test state from inherited user paths. Cleanup waits for views to unmount before removing temporary state.
28
+
29
+ ## [0.5.2] - 2026-10-11
30
+
31
+ ### Added
32
+
33
+ - `agent-depot self update [--yes]` checks npm and updates only a verified npm global installation after explicit confirmation. Other installation methods receive manual guidance; downgrades are refused.
34
+ - A Pi Package containing the `/agents` panel, with a versioned snapshot-provider contract, measured telemetry, active-first newest-first ordering and stable selection. Migrating from the former pstack panel requires the coordinated adapter described in `docs/pi-agents-panel.md`.
35
+ - Manual npm trusted publishing through GitHub Actions OIDC, with version, source commit and tarball integrity checks, without stored npm tokens.
36
+
37
+ ### Changed
38
+
39
+ - Agent instructions use focused context pointers and a disclosed workflow guide. English and Spanish usage docs describe current Package ownership, TUI controls and delegated-command safety limits.
40
+
41
+ ### Fixed
42
+
43
+ - `doctor-md-agents` analyzes Pi correction history and reports missing or unsupported sources explicitly. `doctor-md-skill` follows the active Pi session branch rather than scoring abandoned branches.
44
+ - Installed Pi Packages with local changes display the version declared at verified Git HEAD, qualified as HEAD-only evidence. Local modifications still prevent update assessment and never become persisted verified installation evidence.
45
+ - TUI tests wait for a complete resized frame and unmount views before deleting their temporary state, avoiding CI teardown races.
46
+
10
47
  ## [0.5.1] - 2026-10-07
11
48
 
12
49
  ### Changed
package/README.es.md CHANGED
@@ -20,11 +20,12 @@ Qué hace:
20
20
  - **Instalaciones existentes**: informa de los Skills no gestionados que ya hay en
21
21
  disco, adopta los que coinciden exactamente con una Source o los elimina mediante
22
22
  una ruta explícita.
23
- - **Apps**: instala, actualiza y desinstala aplicaciones globales de usuario mediante
24
- App recipes escritas por el usuario que deben aprobarse antes de ejecutarse.
23
+ - **Apps**: gestiona aplicaciones globales de usuario mediante App recipes escritas
24
+ por el usuario. Aprobar una receta autoriza sus comandos, pero no instala la App;
25
+ la instalación tiene su propia previsualización y confirmación.
25
26
  - **Packages**: instala, actualiza y desinstala bundles nativos del Host (paquetes de
26
27
  Pi y plugins de Claude Code) delegando el ciclo de vida en la CLI de cada Host y
27
- leyendo la versión instalada de los propios archivos de estado del Host. Un bundle
28
+ leyendo evidencia de instalación y versión propiedad del Host. Un bundle
28
29
  reserva sus Skills solo mientras lo hayas seleccionado o un Host demuestre que está
29
30
  instalado, así que los Skills de un bundle no seleccionado siguen siendo instalables
30
31
  por separado.
@@ -32,8 +33,13 @@ Qué hace:
32
33
  de Packages globales de usuario a un archivo portable e impórtalos, solo añadiendo,
33
34
  en otra máquina.
34
35
 
35
- Agent Depot nunca sobrescribe ni elimina contenido sin una previsualización y una
36
- confirmación, y rechaza rutas y enlaces inseguros.
36
+ Agent Depot previsualiza y confirma los cambios del sistema de archivos que
37
+ gestiona. Esta garantía no cubre los efectos de comandos delegados. Los métodos de
38
+ Skill proporcionados por el usuario, las App recipes aprobadas y los comandos de
39
+ Host aprobados para Packages se ejecutan como procesos hijos. Agent Depot no puede
40
+ previsualizar por completo ni revertir los efectos que queden fuera de sus propios
41
+ cambios gestionados. Agent Depot rechaza rutas y enlaces inseguros en sus
42
+ operaciones gestionadas del sistema de archivos.
37
43
 
38
44
  Requiere Node.js >= 24 (Active LTS). La [TUI interactiva](#tui-interactiva)
39
45
  necesita un terminal interactivo.
@@ -68,13 +74,23 @@ npx @iseoane/agent-depot@latest tui
68
74
  pnpm dlx @iseoane/agent-depot@latest tui
69
75
  ```
70
76
 
71
- Una instalación global se actualiza con el gestor de paquetes que la instaló:
77
+ Comprueba y actualiza una instalación global de npm con Agent Depot:
72
78
 
73
79
  ```sh
74
- npm install --global @iseoane/agent-depot@latest
75
- pnpm add --global @iseoane/agent-depot@latest
80
+ agent-depot self update
81
+ agent-depot self update --yes
76
82
  ```
77
83
 
84
+ El primer comando consulta el registro público de npm y previsualiza una versión más
85
+ reciente sin actualizar. El segundo repite la comprobación, previsualiza el destino
86
+ exacto y lo instala. Agent Depot solo admite este flujo si la ruta del paquete cargado
87
+ coincide con el directorio global que informa npm. Para las demás instalaciones,
88
+ incluidas las de pnpm, npx, locales de proyecto, mediante enlace o de procedencia
89
+ desconocida, muestra instrucciones manuales. La actualización invoca npm sin shell,
90
+ desactiva los scripts del paquete y no solicita privilegios elevados ni cambia la
91
+ configuración de npm. Si npm falla durante la instalación, el paquete global puede
92
+ quedar actualizado solo en parte; Agent Depot no puede revertir los cambios de npm.
93
+
78
94
  Un Agent Depot en ejecución nunca degrada los Skills integrados: un Skill instalado
79
95
  por un Agent Depot más reciente se notifica como no actualizable (actualiza primero
80
96
  Agent Depot).
@@ -94,10 +110,10 @@ agent-depot source remove git:<source-id> --yes
94
110
  agent-depot source remove git:<source-id> --skill <id|path> --yes
95
111
  agent-depot source migrate git:<old-source-id> git:<new-source-id> --skill <path> --yes
96
112
  agent-depot discover builtin:agent-depot git:<source-id>
97
- agent-depot install --scope project --source builtin:agent-depot --skill architecture --host pi --version latest --portable-v1 --yes
98
- agent-depot install --scope user-global --source builtin:agent-depot --skill architecture --host pi --version latest --portable-v1 --yes
113
+ agent-depot install --scope project --source builtin:agent-depot --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --yes
114
+ agent-depot install --scope user-global --source builtin:agent-depot --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --yes
99
115
  # Only for an explicitly reviewed, untracked real-directory conflict:
100
- agent-depot install --scope project --source builtin:agent-depot --skill architecture --host pi --version latest --portable-v1 --overwrite --yes
116
+ agent-depot install --scope project --source builtin:agent-depot --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --overwrite --yes
101
117
  agent-depot install --scope project --manifest --portable-v1 --yes
102
118
  agent-depot update check --scope project
103
119
  agent-depot update apply --scope project --all --yes
@@ -251,7 +267,7 @@ actualizable. Solo para `--scope user-global`, la comprobación también informa
251
267
  directorios de Skill reales `Unmanaged` encontrados en ubicaciones absolutas exactas
252
268
  bajo las raíces globales de usuario admitidas. Estos no son candidatos a
253
269
  actualización, no se incluyen en los recuentos de estado de los gestionados y nunca
254
- se buscan a través de una Source. Las comprobaciones de proyecto no inventarían ni
270
+ se buscan a través de una Source. Las comprobaciones de proyecto no examinan ni
255
271
  informan de directorios no gestionados.
256
272
 
257
273
  Las entradas globales omitidas o inseguras se muestran por separado con
@@ -328,7 +344,7 @@ un único objeto de método JSON estricto, por ejemplo:
328
344
 
329
345
  ```sh
330
346
  agent-depot install --scope user-global --source builtin:agent-depot \
331
- --skill architecture --host pi --version latest \
347
+ --skill agent-depot-apprecipe --host pi --version latest \
332
348
  --method '{"kind":"command","argv":["node","scripts/install.mjs"],"cwd":"tools"}' \
333
349
  --portable-v1 --yes
334
350
  ```
@@ -391,7 +407,7 @@ directorio real sin registrar cuyo contenido difiere, el reemplazo requiere tant
391
407
 
392
408
  ```sh
393
409
  agent-depot install --scope project --source builtin:agent-depot \
394
- --skill architecture --host pi --version latest --portable-v1 --overwrite --yes
410
+ --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --overwrite --yes
395
411
  ```
396
412
 
397
413
  La previsualización es explícita sobre esta distinción: sin `--yes` no se modifica
@@ -491,29 +507,38 @@ agent-depot tui
491
507
 
492
508
  La TUI es un front end de [Ink](https://github.com/vadimdemedes/ink) (React para
493
509
  terminales) sobre las mismas operaciones que la CLI. Necesita Node.js >= 24 y un
494
- terminal interactivo; en caso contrario, `tui` falla con un error. Cambia de vista
495
- con `1`-`5` y sal con `q` (no mientras haya un aviso abierto). Toda lista se
496
- desplaza cuando es más alta que el terminal. `j`/`k` o las flechas mueven la
497
- selección.
510
+ terminal interactivo; en caso contrario, `tui` falla con un error. Usa la pantalla
511
+ alternativa del terminal y vuelve a la pantalla anterior al salir. Se adapta al
512
+ redimensionado del terminal. El encabezado con bordes muestra la versión activa del
513
+ paquete en ejecución y las cinco vistas numeradas. Cambia de vista con `1`-`5` o Tab/Shift+Tab,
514
+ y sal con `q` (no mientras haya un aviso abierto). La paleta Xeo distingue roles y
515
+ estados; las confirmaciones con `y` se muestran en negrita y verde. Las listas se
516
+ desplazan cuando superan la altura del terminal. En Sources, Catalog, Installations y Updates,
517
+ `j`/`k` o las flechas mueven
518
+ una fila; `PageUp` y `PageDown` avanzan una página visible. Usa un terminal de al
519
+ menos 40 columnas para revisar las notas de exportación de Profile; con 24 columnas,
520
+ se recortan la pestaña del encabezado y el título de la nota.
498
521
 
499
522
  | Vista | Propósito |
500
523
  | --- | --- |
501
524
  | 1 Sources | Sources de Git (sus skills y Packages) y recetas App del usuario en una sola lista, con tipos `skills`/`app` y acciones contextuales. |
502
- | 2 Catalog | Skills que se pueden instalar: los que aún no están instalados, como Source y luego Skills. Cada Source muestra además un grupo Packages, y los Skills que posee un bundle se marcan y se atenúan. |
503
- | 3 Installations | Lo que hay en disco: instalaciones gestionadas (globales de usuario y de proyecto), selecciones de Packages y skills globales de usuario no gestionados. |
504
- | 4 Updates | Skills y Packages gestionados con una versión más reciente disponible, para el ámbito global de usuario y de proyecto. |
505
- | 5 Import/Export | Transferir las elecciones portables de Sources globales de usuario, las selecciones de Skills, las App recipes y las selecciones de Packages. |
525
+ | 2 Catalog | Skills y Packages disponibles, además de App recipes aplicables y aprobadas cuya ausencia se ha verificado. La instalación de una App tiene una previsualización y confirmación separadas. Las recetas inválidas o sin aprobar permanecen en Sources; un estado desconocido nunca se trata como ausencia. Los Packages que el Host confirma como instalados se ocultan; los seleccionados o con estado desconocido siguen visibles. Los Skills propiedad de Packages conservan su comportamiento actual. |
526
+ | 3 Installations | Apps cuya instalación está confirmada, instalaciones de Skills gestionadas (globales de usuario y de proyecto), selecciones de Packages con pertenencia al Host y evidencia de versión mostradas por separado, y Skills globales de usuario no gestionados. Un registro de instalación de App permanece visible aunque caduque la aprobación de la receta, pero sus acciones siguen exigiendo aprobación vigente. |
527
+ | 4 Updates | Skills gestionados en el ámbito global de usuario y de proyecto, además de Apps y Packages instalados globales de usuario con una versión más reciente disponible. Las Apps desconocidas o no verificadas no se tratan como instaladas. |
528
+ | 5 Profile | Exportar o importar elecciones portables de Sources globales de usuario, selecciones individuales de Skills, App recipes y selecciones de Packages. Las réplicas solo identifican recursos cuya instalación se confirmó en el origen. |
506
529
 
507
530
  Teclas por vista (los avisos también aceptan `Esc` para cancelar y `y`/`n` para
508
531
  confirmar):
509
532
 
510
533
  | Vista | Teclas |
511
534
  | --- | --- |
512
- | Sources | `j`/`k` recorren Sources de Git y recetas App, sin cambiar de sección con Tab. `Enter` abre el Catálogo de una Source de Git (sus skills y Packages) o previsualiza/aprueba una receta. `n` añade una Source de Git reutilizable o guía la creación de recetas; `r` refresca Sources o recarga el estado de recetas; `d` elimina. `space`/`a` solo marcan Sources de Git. |
513
- | Catalog | `Enter`/flechas expandir y contraer, `space` marcar, `a` marcar todos los listados, `i` instalar las Skills marcadas (o el skill resaltado) o previsualizar el bundle de Package resaltado, `/` filtrar, `s` alternar entre una Source o todas (cuando se abre desde una Source) |
514
- | Installations | `Enter`/flechas expandir y contraer, `u` desinstalar (todos los Hosts o los Hosts elegidos) o eliminar un skill no gestionado, `h` o `i` añadir Hosts a una instalación, `A` o `Enter` adoptar un skill no gestionado, `space` marca una hoja y `a` marca todas las hojas visibles: con marcas, `u` y `h` actúan sobre todas ellas con una única previsualización combinada y una única confirmación (las instalaciones de proyecto se omiten con un motivo). En una fila de Package: `i` previsualiza el plan de instalación congelado y lo ejecuta, aprobando antes el recibo si falta; `Enter` solo aprueba la declaración de instalación; `U` actualiza, `u` desinstala, `f` olvida el registro de selección. Las filas de Package no se pueden marcar para acciones por lotes. |
515
- | Updates | `space` marcar, `a` marcar todo, `t`/`p`/`g` mostrar todo, proyecto o global de usuario, `Enter` previsualizar las marcas, `r` comprobar de nuevo, las flechas pliegan la línea "cannot assess". Un Package marcado se une al lote y se aprueba antes de ejecutar su actualización. |
516
- | Import/Export | `e` exportar, `i` importar; introduce una ruta de archivo, `space` alterna opciones, `a` alterna todas, `Enter` previsualiza, `y` aplica; `j`/`k` desplazan las previsualizaciones y los resultados |
535
+ | Sources | `j`/`k` recorren Sources de Git y recetas App. `Enter` abre el Catálogo de una Source de Git o previsualiza/aprueba una receta App. Aprobarla no instala la App. `n` añade una Source reutilizable o guía la creación de recetas; `r` refresca Sources o recarga el estado de recetas; `d` elimina. `space`/`a` solo marcan Sources de Git. La previsualización de refresco muestra todas las Sources seleccionadas; usa `j`/`k` o PgUp/PgDn para revisarlas antes de `y`; `n` cancela. |
536
+ | Catalog | `Enter`/flechas expanden y contraen; `space` marca el Skill disponible resaltado; `a` marca o desmarca los Skills disponibles visibles de su Source; `i` inicia la instalación de los Skills marcados o del Skill, Package o App aprobada cuya ausencia se verificó y que está resaltada. Confirma la instalación de una App por separado con `y`. `/` filtra y `s` amplía la vista de una Source a todas. Las marcas de otras Sources se conservan y no se instalan Skills ocultos por el filtro. |
537
+ | Installations | `Enter`/flechas expanden y contraen. En filas globales de usuario, `u` inicia la desinstalación de una App o Skill gestionada, o elimina un Skill no gestionado; los Skills de proyecto no se pueden eliminar. `h` o `i` añade Hosts a una instalación global de usuario, y `A` o `Enter` adopta un Skill no gestionado. `space` marca una hoja y `a` marca todas las hojas visibles; las acciones por lotes omiten instalaciones de proyecto con un motivo. En una fila de App, `u` previsualiza la desinstalación y `h` selecciona setup/teardown; las recetas modificadas requieren una nueva aprobación. En una fila de Package, `i` previsualiza el plan de instalación congelado y lo ejecuta, aprobando antes el recibo si falta; `Enter` solo aprueba la declaración de instalación; `U` actualiza, `u` desinstala y `f` olvida el registro de selección. Las filas de Package no se pueden marcar para acciones por lotes. |
538
+ | Updates | `space` marca una actualización, `a` marca todas las actualizaciones disponibles y `t`/`p`/`g` selecciona todo, el ámbito de proyecto o el global de usuario. `Enter` previsualiza las filas marcadas; `u` previsualiza el lote seleccionado; ninguna aplica actualizaciones. `r` vuelve a comprobar y las flechas izquierda/derecha pliegan o despliegan el grupo "cannot be checked". En una previsualización, las flechas o PageUp/PageDown avanzan una página visible y `j`/`k` una fila. Revisa todas las filas antes de `y`; `n` cancela. Las filas desconocidas son informativas. Packages y Apps solo se gestionan en el ámbito global de usuario; Packages requieren aprobación de acción antes de ejecutar una actualización. |
539
+ | Profile | `e` exportar, `i` importar; introduce una ruta de archivo, `space` alterna opciones, `a` alterna todas, `Enter` previsualiza, `y` aplica; `j`/`k` desplazan las previsualizaciones y los resultados |
540
+
541
+ Las previsualizaciones desplazables muestran todas las declaraciones y los términos de ejecución. Usa `j`/`k` para avanzar una fila, o las flechas y `PageUp`/`PageDown` para avanzar una página visible. Confirma solo después de mostrar cada fila física. Si cambias el tamaño del terminal, revisa las filas que aún no se han mostrado.
517
542
 
518
543
  Al eliminar una receta App se comprueban su comando de versión aprobado y su
519
544
  seguimiento. Si la App está instalada o sigue registrada, la TUI ofrece el flujo
@@ -659,8 +684,8 @@ agent-depot app teardown example --host pi --yes
659
684
  ```
660
685
 
661
686
  Cada paso previsualiza su texto argv/manual, el ejecutable resuelto, el directorio de
662
- trabajo (el personal del usuario) y el entorno. El recurso manual solo se produce
663
- cuando un proceso no puede lanzarse, nunca tras una salida con código distinto de
687
+ trabajo (el directorio personal del usuario) y el entorno. Las instrucciones
688
+ manuales solo se ofrecen cuando un proceso no puede iniciarse, nunca tras una salida con código distinto de
664
689
  cero (que se notifica con stdout/stderr). Ejecuta tú mismo las instrucciones manuales
665
690
  mostradas y después certifica la finalización sin volver a ejecutar el argv:
666
691
 
@@ -738,10 +763,12 @@ nunca cambian el seguimiento de Apps instaladas.
738
763
  ## Packages
739
764
 
740
765
  Un Package es un bundle nativo del Host descubierto dentro de una Source registrada:
741
- un paquete de Pi (un `package.json` con una clave `pi`, o los directorios
742
- convencionales `extensions/`, `skills/`, `prompts/` y `themes/`) o un plugin de Claude
743
- Code (un `.claude-plugin/plugin.json` vinculado por un
744
- `.claude-plugin/marketplace.json` dentro del repositorio). Un mismo repositorio puede
766
+ un paquete de Pi (un `package.json` con una clave `pi`, la palabra clave
767
+ `pi-package` o un directorio convencional específico de Pi, como `extensions/` o
768
+ `prompts/`) o un plugin de Claude Code (un `.claude-plugin/plugin.json` vinculado
769
+ por un `.claude-plugin/marketplace.json` dentro del repositorio). Los directorios
770
+ `skills/` y `themes/` también son convencionales en Claude Code, por lo que un
771
+ repositorio que solo contiene Skills compartidos no se identifica como paquete de Pi. Un mismo repositorio puede
745
772
  ser ambas cosas, como `pstack-claude`. V1 solo admite los Hosts Pi y Claude Code; el
746
773
  empaquetado de Codex y OpenCode, los paquetes de Pi procedentes de npm y los Packages
747
774
  de ámbito de proyecto quedan aplazados.
@@ -749,10 +776,28 @@ de ámbito de proyecto quedan aplazados.
749
776
  Agent Depot no copia el contenido de un bundle. Lee el manifiesto del bundle en un
750
777
  inventario de componentes tipado, deriva los comandos propios del Host a partir de esa
751
778
  declaración, los ejecuta mediante el ejecutor de comandos sin shell tras la aprobación
752
- y lee la versión instalada de los archivos de estado del Host. El Host posee lo que
753
- está instalado. Agent Depot posee el registro de selección y el recibo de lo que
754
- delegó. Los Skills propios de un bundle nunca se ofrecen para adopción ni se instalan
755
- por segunda vez, porque el Host posee sus archivos y ubicaciones.
779
+ y lee el estado instalado de archivos propiedad del Host. Agent Depot lee esos
780
+ archivos y nunca los escribe. Para Pi, el ajuste `packages` de
781
+ `~/.pi/agent/settings.json` identifica un paquete configurado. Agent Depot verifica
782
+ después el checkout bajo `$PI_CODING_AGENT_DIR/git` (o `~/.pi/agent/git` si la
783
+ variable no está definida): la raíz del checkout, `origin`, el commit `HEAD` y el
784
+ `package.json` de ese commit. Si no puede verificar la raíz, el origen o `HEAD`, el
785
+ paquete sigue instalado, pero su versión no está disponible. Si los cambios locales
786
+ hacen que el checkout esté modificado, Agent Depot muestra la versión de `HEAD`, pero
787
+ no usa el commit para evaluar actualizaciones. Installations y `package inspect`
788
+ indican `(HEAD; local changes)` en la etiqueta. La fila de Installations muestra
789
+ `update not checked · local changes`; Updates sigue indicando `cannot assess` y no
790
+ ofrece el Package para actualizar. Tanto los cambios en archivos controlados como
791
+ los archivos sin seguimiento cuentan; Agent Depot no ignora archivos
792
+ de bloqueo ni otros archivos locales. La versión del manifiesto sirve para mostrar
793
+ información, pero no demuestra que el checkout coincida con la Source seleccionada.
794
+ La evaluación de actualizaciones compara el commit de un checkout limpio con el
795
+ commit disponible de la Source mediante la ascendencia en el historial en caché.
796
+ Para Claude, Agent Depot lee los archivos de estado de plugins y marketplaces. El
797
+ Host posee lo que está instalado. Agent Depot posee el registro de selección y el
798
+ recibo de lo que delegó. Mientras un Package está seleccionado o confirmado como instalado, sus
799
+ Skills declarados no pueden adoptarse ni instalarse por separado. Un descriptor
800
+ descubierto, por sí solo, no reserva sus Skills.
756
801
 
757
802
  ### Añadir una Source y descubrir sus bundles
758
803
 
@@ -834,8 +879,12 @@ evidencia de versión que Agent Depot registró. La evidencia en vivo procede de
834
879
  `~/.pi/agent/settings.json` y `~/.claude/plugins/installed_plugins.json`, que Agent
835
880
  Depot lee y nunca escribe. Un archivo de Host ausente es una vista vacía. Un archivo
836
881
  desviado o ilegible deja la búsqueda afectada en `unknown` y nunca lanza una
837
- excepción. Un paquete git de Pi sin versión se informa como `unknown`, nunca como
838
- `current`.
882
+ excepción. Un paquete Git de Pi cuyo manifiesto no declara versión aún puede tener evidencia
883
+ de commit verificada. Si Agent Depot verifica la identidad del checkout, pero detecta
884
+ cambios locales, puede mostrar la versión del manifiesto de `HEAD`, pero no comparar
885
+ el checkout para buscar actualizaciones. Si no puede verificar la raíz, el origen o
886
+ `HEAD`, la versión instalada no está disponible. En ambos casos, el estado de
887
+ actualización es `cannot assess`, no `current`.
839
888
 
840
889
  Una actualización registra una versión nueva solo cuando el estado del Host cambió de
841
890
  una forma que Agent Depot puede verificar, es decir, cuando las dos observaciones
@@ -863,8 +912,14 @@ comando del Host y deja la instalación del Host tal cual.
863
912
  de pin admitida por Claude.
864
913
  - Un plugin de Claude sin vinculación a un marketplace dentro del repositorio se
865
914
  informa pero no es instalable.
866
- - Agent Depot no lee la salida en prosa de la CLI del Host, incluido `pi list`. La
867
- evidencia instalada procede solo de los archivos de estado del Host.
915
+ - Agent Depot no usa la salida en prosa de la CLI del Host, incluido `pi list`, como
916
+ evidencia del estado instalado. Para Pi, combina el ajuste de solo lectura con
917
+ evidencia del checkout verificado. Para Claude, lee los archivos de estado del Host.
918
+ Nunca escribe esos archivos.
919
+
920
+ ## Panel de agentes de Pi
921
+
922
+ Agent Depot también incluye una extensión de Pi con el panel `/agents`. Muestra estado, actividad y consumo medido desde un proveedor conectado, con los agentes en ejecución primero y los más nuevos antes que los antiguos. Es un Package, no un Skill ni una App. Instalarlo junto a pstack requiere el adaptador coordinado de snapshots para evitar dos comandos `/agents`; sin proveedor, informa de que no hay datos disponibles. Consulta los [detalles de instalación y del proveedor](docs/pi-agents-panel.md).
868
923
 
869
924
  ## Exportar un Profile global de usuario
870
925
 
@@ -886,16 +941,22 @@ combinar el filtro de inclusión de un bloque con su indicador `--no-*` son erro
886
941
 
887
942
  La salida estándar contiene solo JSON; stderr muestra la previsualización y los
888
943
  motivos de exclusión. `--out` requiere un archivo nuevo (los archivos existentes y
889
- los enlaces simbólicos no se reemplazan). Los Profiles contienen URL de Git
890
- canónicas con su inclusión en el descubrimiento, las políticas de versión/Hosts/
891
- métodos de usuario registrados de los Skills, recipes de App completas, incluidas
892
- las recipes de otras plataformas, y selecciones de Package solo como declaraciones:
893
- su Source, coordenadas de Host y política de versión. La exportación por CLI siempre
894
- escribe
895
- `included: true`; las elecciones de descubrimiento son transitorias, mientras que la
944
+ los enlaces simbólicos no se reemplazan). Los Profiles contienen URL de Git canónicas con su inclusión en el descubrimiento,
945
+ selecciones individuales de Skills con sus políticas de versión, Hosts y métodos de
946
+ usuario registrados, recipes de App completas (incluidas las de otras plataformas) y
947
+ selecciones de Package como declaraciones, con su origen Source completo,
948
+ coordenadas de Host y política de versión. Un Profile v2 también puede incluir
949
+ intención de réplica, solo con la identidad de Skills, Apps y Packages cuya
950
+ instalación se confirmó en la máquina de origen. No incluye estado de instalación,
951
+ recibos, aprobaciones ni rutas locales. El parser actual lee los
952
+ Profiles v1 anteriores; los lectores antiguos que solo admiten v1 rechazan los v2.
953
+ La exportación por CLI siempre escribe `included: true`; las elecciones de descubrimiento son transitorias, mientras que la
896
954
  TUI puede pasar elecciones de inclusión explícitas al núcleo de exportación
897
- compartido. La exportación no refresca Sources ni ejecuta comandos de Apps, y un
898
- recibo de Package nunca viaja en un Profile.
955
+ compartido. La exportación no refresca Sources ni ejecuta comandos del ciclo de vida.
956
+ Puede ejecutar la sonda existente de versión de App aprobada e inspeccionar Packages
957
+ sin escritura para determinar la intención de réplica actual; un estado desconocido no
958
+ se considera instalado y la inspección no reconcilia registros. Los recibos de Package
959
+ nunca viajan en un Profile.
899
960
 
900
961
  Las rutas locales y las credenciales evidentes no son portables. Los elementos no
901
962
  portables o inválidos se excluyen con sus motivos, al igual que los Skills no
@@ -959,9 +1020,15 @@ registro; la previsualización nombra las Sources no registradas que se obtendr
959
1020
  registrarse. Las filas de Sources existentes explican cuándo la inclusión en el
960
1021
  descubrimiento difiere pero no se importa.
961
1022
 
962
- La pestaña **5 Import/Export** de la TUI ofrece listas de verificación agrupadas y
963
- las mismas previsualizaciones del núcleo compartido que la CLI. Las exclusiones y los
964
- conflictos no pueden seleccionarse. La exportación solo crea un archivo nuevo; las
1023
+ La pestaña **5 Import/Export** de la TUI empieza con el grupo padre **Sources**
1024
+ contraído. Dentro contiene grupos anidados para elecciones de Source, Skills, Apps y
1025
+ Packages; cada recurso muestra la identidad de su Source. **Installed replicas** y las
1026
+ notas de exportación son grupos separados. Usa las mismas previsualizaciones del núcleo
1027
+ compartido que la CLI. Las réplicas identifican recursos cuya instalación se confirmó
1028
+ en la máquina de origen; no incluyen el estado de instalación, las aprobaciones ni el
1029
+ contenido completo de la máquina. La importación solo añade; nunca transfiere
1030
+ aprobaciones ni instala automáticamente Apps o Packages. Las exclusiones y los conflictos
1031
+ no pueden seleccionarse. La exportación solo crea un archivo nuevo; las
965
1032
  exportaciones vacías no escriben nada (la CLI informa de un error). La importación
966
1033
  añade las elecciones que faltan sin reemplazar las existentes. Las recipes importadas
967
1034
  permanecen sin aprobar y la importación nunca instala Apps. Las selecciones de Package
package/README.md CHANGED
@@ -19,19 +19,24 @@ What it does:
19
19
  needs explicit confirmation.
20
20
  - **Existing installations**: report unmanaged Skills already on disk, adopt the
21
21
  ones that exactly match a Source, or remove them by explicit path.
22
- - **Apps**: install, update and uninstall user-global applications through
23
- user-written App recipes that must be approved before they run.
22
+ - **Apps**: manage user-global applications through user-written App recipes.
23
+ Approval authorizes recipe commands but does not install an App; installation
24
+ has its own preview and confirmation.
24
25
  - **Packages**: install, update and uninstall host-native bundles (Pi packages and
25
26
  Claude Code plugins) by delegating the lifecycle to each Host's own CLI and
26
- reading the installed version from the Host's own state files. A bundle reserves
27
+ reading Host-owned installation and version evidence. A bundle reserves
27
28
  its Skills only while you have selected it or a Host proves it installed, so an
28
29
  unselected bundle's Skills stay installable on their own.
29
30
  - **Profiles**: export your user-global Sources, Skill selections, App recipes and
30
31
  Package selections to a portable file and import them, add-only, on another
31
32
  machine.
32
33
 
33
- Agent Depot never overwrites or deletes content without a preview and confirmation,
34
- and refuses unsafe paths and links.
34
+ Agent Depot previews and confirms the filesystem changes it manages. This
35
+ guarantee does not cover side effects from delegated commands. User-provided Skill
36
+ methods, approved App recipes, and approved Package Host commands run as child
37
+ processes. Agent Depot cannot fully preview or roll back their effects outside its
38
+ managed changes. Agent Depot rejects unsafe paths and links in its managed
39
+ filesystem operations.
35
40
 
36
41
  Requires Node.js >= 24 (Active LTS). The [interactive TUI](#interactive-tui)
37
42
  needs an interactive terminal.
@@ -66,13 +71,22 @@ npx @iseoane/agent-depot@latest tui
66
71
  pnpm dlx @iseoane/agent-depot@latest tui
67
72
  ```
68
73
 
69
- A global install is updated with the package manager that installed it:
74
+ Check and update an npm global installation with Agent Depot:
70
75
 
71
76
  ```sh
72
- npm install --global @iseoane/agent-depot@latest
73
- pnpm add --global @iseoane/agent-depot@latest
77
+ agent-depot self update
78
+ agent-depot self update --yes
74
79
  ```
75
80
 
81
+ The first command checks the public npm registry and previews a newer version without
82
+ updating. The second repeats the check, previews its exact target, and applies it.
83
+ Agent Depot supports this flow only when its loaded package directory matches the
84
+ global directory reported by npm. It prints manual guidance for other installations,
85
+ including pnpm, npx, project-local, linked, and unknown installations. The update uses
86
+ npm without a shell, disables package lifecycle scripts, and never requests elevated
87
+ privileges or changes npm configuration. If npm fails during installation, the global
88
+ package may be left partially updated; Agent Depot cannot roll back npm's changes.
89
+
76
90
  A running Agent Depot never downgrades built-in Skills: a Skill installed by a newer
77
91
  Agent Depot is reported as not updatable (update Agent Depot first).
78
92
 
@@ -91,10 +105,10 @@ agent-depot source remove git:<source-id> --yes
91
105
  agent-depot source remove git:<source-id> --skill <id|path> --yes
92
106
  agent-depot source migrate git:<old-source-id> git:<new-source-id> --skill <path> --yes
93
107
  agent-depot discover builtin:agent-depot git:<source-id>
94
- agent-depot install --scope project --source builtin:agent-depot --skill architecture --host pi --version latest --portable-v1 --yes
95
- agent-depot install --scope user-global --source builtin:agent-depot --skill architecture --host pi --version latest --portable-v1 --yes
108
+ agent-depot install --scope project --source builtin:agent-depot --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --yes
109
+ agent-depot install --scope user-global --source builtin:agent-depot --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --yes
96
110
  # Only for an explicitly reviewed, untracked real-directory conflict:
97
- agent-depot install --scope project --source builtin:agent-depot --skill architecture --host pi --version latest --portable-v1 --overwrite --yes
111
+ agent-depot install --scope project --source builtin:agent-depot --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --overwrite --yes
98
112
  agent-depot install --scope project --manifest --portable-v1 --yes
99
113
  agent-depot update check --scope project
100
114
  agent-depot update apply --scope project --all --yes
@@ -299,7 +313,7 @@ method object, for example:
299
313
 
300
314
  ```sh
301
315
  agent-depot install --scope user-global --source builtin:agent-depot \
302
- --skill architecture --host pi --version latest \
316
+ --skill agent-depot-apprecipe --host pi --version latest \
303
317
  --method '{"kind":"command","argv":["node","scripts/install.mjs"],"cwd":"tools"}' \
304
318
  --portable-v1 --yes
305
319
  ```
@@ -358,7 +372,7 @@ requires both `--overwrite` and `--yes`:
358
372
 
359
373
  ```sh
360
374
  agent-depot install --scope project --source builtin:agent-depot \
361
- --skill architecture --host pi --version latest --portable-v1 --overwrite --yes
375
+ --skill agent-depot-apprecipe --host pi --version latest --portable-v1 --overwrite --yes
362
376
  ```
363
377
 
364
378
  The preview is explicit about this distinction: without `--yes`, zero files or
@@ -446,27 +460,35 @@ agent-depot tui
446
460
 
447
461
  The TUI is an [Ink](https://github.com/vadimdemedes/ink) (React for terminals)
448
462
  front end over the same operations as the CLI. It needs Node.js >= 24 and an
449
- interactive terminal; otherwise `tui` fails with an error. Switch views with
450
- `1`-`5`, quit with `q` (not while a prompt is open). Every list scrolls when it is
451
- taller than the terminal. `j`/`k` or the arrow keys move.
463
+ interactive terminal; otherwise `tui` fails with an error. It uses the terminal's
464
+ alternate screen and returns to the previous screen when you quit. It adjusts to
465
+ terminal resizing. The bordered header shows the running package version and all five numbered views.
466
+ Switch views with `1`-`5` or Tab/Shift+Tab, and quit with `q` (not while a prompt
467
+ is open). The Xeo palette distinguishes resource roles and status; `y` confirmations
468
+ are bold green. Lists scroll when they are taller than the terminal. In Sources, Catalog,
469
+ Installations, and Updates, `j`/`k` or the arrows move one row; `PageUp` and
470
+ `PageDown` move by one visible page. Use a terminal at least 40 columns wide to
471
+ review Profile export notes; at 24 columns, the app header tab and note title clip.
452
472
 
453
473
  | View | Purpose |
454
474
  | --- | --- |
455
475
  | 1 Sources | Git Sources (their skills and Packages) and user-owned App recipes in one list, with `skills`/`app` kinds and contextual actions. |
456
- | 2 Catalog | Skills that can be installed: those not installed yet, as Source, then Skills. Each Source also shows a Packages group, and the Skills a bundle owns are marked and dimmed. |
457
- | 3 Installations | What is on disk: managed installations (user-global and project), Package selections and unmanaged user-global skills. |
458
- | 4 Updates | Managed skills and Packages with a newer version available, for user-global and project scope. |
459
- | 5 Import/Export | Transfer portable user-global Source choices, Skill selections, App recipes and Package selections. |
476
+ | 2 Catalog | Available Skills and Packages, plus applicable approved App recipes verified as not installed. App installation has a separate preview and confirmation. Invalid or unapproved recipes remain in Sources; unknown App state is never treated as absence. Host-confirmed installed Packages are hidden; selected-only or unknown-state Packages remain visible. Package-owned Skills keep their existing behavior. |
477
+ | 3 Installations | Confirmed installed Apps, managed Skill installations (user-global and project), Package selections with Host membership and version evidence shown separately, and unmanaged user-global Skills. App installation records remain visible if recipe approval later expires, but recipe actions still require current approval. |
478
+ | 4 Updates | Managed Skills in project and user-global scope, plus user-global installed Apps and Packages with a newer version available. Unknown or unverified Apps are not treated as installed. |
479
+ | 5 Profile | Export or import portable user-global Source choices, individual Skill selections, App recipes and Package selections. Replica entries report confirmed origin-machine identities only. |
460
480
 
461
481
  Keys per view (prompts also accept `Esc` to cancel and `y`/`n` to confirm):
462
482
 
463
483
  | View | Keys |
464
484
  | --- | --- |
465
- | Sources | `j`/`k` move through Git Sources and App recipes (no Tab section switch). `Enter` opens the Catalog for a Git Source (its skills and Packages) or previews/approves an App recipe. `n` adds a reusable Git Source or guides recipe authoring; `r` refreshes Sources or reloads recipe status; `d` removes. `space`/`a` mark Git Sources only. |
466
- | Catalog | `Enter`/arrows expand and collapse, `space` mark, `a` mark all listed, `i` install the marked Skills (or the highlighted skill) or preview the highlighted Package bundle, `/` filter, `s` toggle one Source or all (when opened from a Source) |
467
- | Installations | `Enter`/arrows expand and collapse, `u` uninstall (all Hosts or chosen Hosts) or remove an unmanaged skill, `h` or `i` add Hosts to an installation, `A` or `Enter` adopt an unmanaged skill, `space` marks a leaf and `a` marks all visible leaves: with marks, `u` and `h` act on all of them with one combined preview and one confirmation (project installations are skipped with a reason). On a Package row: `i` previews the frozen install plan and runs it, approving the receipt first when it is missing, `Enter` approves the install declaration only, `U` update, `u` uninstall, `f` forget the selection record. Package rows are not markable for bulk actions. |
468
- | Updates | `space` mark, `a` mark all, `t`/`p`/`g` show all, project or user-global, `Enter` preview the marks, `r` check again, arrows fold the "cannot assess" line. A marked Package joins the batch and is approved before its update runs. |
469
- | Import/Export | `e` export, `i` import; enter a file path, `space` toggle choices, `a` toggle all, `Enter` preview, `y` apply; `j`/`k` scroll previews and results |
485
+ | Sources | `j`/`k` move through Git Sources and App recipes. `Enter` opens the Catalog for a Git Source or previews/approves an App recipe. Approval does not install the App. `n` adds a Git Source or guides recipe authoring; `r` refreshes Sources or reloads recipe status; `d` removes. `space`/`a` mark Git Sources only. Refresh previews show every selected Source; review every physical row before `y`. `n` cancels. |
486
+ | Catalog | `Enter`/arrows expand and collapse, `space` marks the highlighted loose Skill, `a` marks or clears the visible loose Skills in its Source, and `i` starts installation for marked Skills or the highlighted Skill, Package, or verified-absent approved App. Confirm an App install separately with `y`. `/` filters and `s` widens a Source view to all Sources. Marks in other Sources remain unchanged; Skills hidden by the filter are not installed. |
487
+ | Installations | `Enter`/arrows expand and collapse. On user-global rows, `u` starts an App or managed Skill uninstall, or removes an unmanaged Skill; project Skills cannot be removed. `h` or `i` adds Hosts to a user-global Skill installation, and `A` or `Enter` adopts an unmanaged Skill. `space` marks a leaf and `a` marks all visible leaves; bulk actions skip project installations with a reason. On an App row, `u` previews uninstall and `h` selects setup/teardown; changed recipes must be approved again before commands run. On a Package row, `i` previews the frozen install plan and runs it, approving the receipt first when it is missing; `Enter` approves the install declaration only, `U` updates, `u` uninstalls, and `f` forgets the selection record. Package rows are not markable for bulk actions. |
488
+ | Updates | `space` marks an update, `a` marks all available updates, and `t`/`p`/`g` selects all, project, or user-global scope. `Enter` previews the marked rows; `u` previews the selected batch; neither applies updates. `r` checks again, and left/right arrows fold or unfold the "cannot be checked" group. In a preview, arrows or PageUp/PageDown move by a visible page and `j`/`k` move one row. Review every row before `y`; `n` cancels. Unknown rows are informational. Packages and Apps are user-global only; Packages need action approval before update execution. |
489
+ | Profile | `e` export, `i` import; enter a file path, `space` toggle choices, `a` toggle all, `Enter` preview, `y` apply; `j`/`k` scroll previews and results |
490
+
491
+ Scrollable previews show every declaration and execution term. Use `j`/`k` to move one row, or the arrows and `PageUp`/`PageDown` to move by a visible page. Confirm only after every physical row has been displayed. Resizing a preview requires reviewing any rows that have not yet been displayed.
470
492
 
471
493
  Removing an App recipe checks its approved version command and tracked state.
472
494
  If the App is installed or tracked, the TUI offers the existing uninstall flow;
@@ -682,11 +704,26 @@ deferred.
682
704
 
683
705
  Agent Depot does not copy a bundle's contents. It reads the bundle manifest into a
684
706
  typed component inventory, derives the Host's own commands from that declaration,
685
- runs them through the no-shell command runner after approval, and reads the
686
- installed version back from the Host's state files. The Host owns what is
687
- installed. Agent Depot owns the selection record and the receipt for what it
688
- delegated. A bundle's own Skills are never offered for adoption or installed a
689
- second time, because the Host owns their files and locations.
707
+ runs them through the no-shell command runner after approval, and reads installed
708
+ state from Host-owned files. Agent Depot reads those files and never writes them.
709
+ For Pi, the `packages` setting in `~/.pi/agent/settings.json` identifies a
710
+ configured package. Agent Depot then verifies the checkout under
711
+ `$PI_CODING_AGENT_DIR/git` (or `~/.pi/agent/git` when unset): the checkout root,
712
+ `origin`, `HEAD` commit, and `package.json` at that commit. If the root, origin, or
713
+ `HEAD` cannot be verified, the package remains installed but its version is
714
+ unavailable. If local changes make the checkout dirty, Agent Depot still displays
715
+ the version from `HEAD` but withholds the commit, so Updates reports `cannot assess`.
716
+ Installations and `package inspect` mark that label as `(HEAD; local changes)`. The
717
+ Installations row says `update not checked · local changes`; Updates still reports
718
+ `cannot assess` and does not offer the Package for update. Tracked and untracked
719
+ changes both count; Agent Depot does not ignore lockfiles or other local files. A manifest version is display evidence, not proof that the
720
+ checkout matches the selected Source. Update assessment compares a clean checkout's
721
+ commit with the available Source commit using ancestry in the cached Source history.
722
+ For Claude, Agent Depot reads the plugin and marketplace state files. The Host owns
723
+ what is installed. Agent Depot owns the selection record and the receipt for what it
724
+ delegated. While a Package is selected or confirmed
725
+ installed, its declared Skills cannot be adopted or installed separately. A
726
+ discovered descriptor alone does not reserve its Skills.
690
727
 
691
728
  ### Add a Source and discover its bundles
692
729
 
@@ -767,7 +804,12 @@ evidence Agent Depot recorded. Live evidence comes from
767
804
  `~/.pi/agent/settings.json` and `~/.claude/plugins/installed_plugins.json`, which
768
805
  Agent Depot reads and never writes. A missing Host file is an empty view. A
769
806
  drifted or undecodable file leaves the affected lookup `unknown` and never throws.
770
- An unversioned Pi git package is reported as `unknown`, never as `current`.
807
+ A Pi git package with no version in its manifest can still have verified commit
808
+ evidence. If Agent Depot verifies the checkout identity but finds local changes, it
809
+ can display the manifest version from `HEAD` but cannot use that checkout for update
810
+ comparison. If it cannot verify the checkout root, origin, or `HEAD`, the installed
811
+ version is unavailable. In either case, the update status is `cannot assess`, not
812
+ `current`.
771
813
 
772
814
  An update records a new version only when the Host state changed in a way Agent
773
815
  Depot can verify, meaning the two observations agree on a version or a
@@ -793,8 +835,14 @@ and leaves the Host install as it is.
793
835
  fixed pin for a Pi selection, until a supported Claude pin form is verified.
794
836
  - A Claude plugin with no in-repo marketplace binding is reported but not
795
837
  installable.
796
- - Agent Depot does not read Host CLI prose output, including `pi list`. Installed
797
- evidence comes from the Host state files only.
838
+ - Agent Depot does not use Host CLI prose output, including `pi list`, as
839
+ installed-state evidence. For Pi, it combines the read-only settings entry with
840
+ verified checkout evidence. For Claude, it reads Host state files. Agent Depot
841
+ never writes those Host files.
842
+
843
+ ## Pi agents panel
844
+
845
+ Agent Depot also contains a Pi extension with an `/agents` panel. It displays agent status, activity and measured usage from a connected provider, placing running agents first and newer agents before older ones. This is a Package, not a Skill or App. Installing it alongside pstack requires the coordinated snapshot adapter to avoid duplicate `/agents` commands; without a provider, it reports unavailable data. See [installation and provider details](docs/pi-agents-panel.md).
798
846
 
799
847
  ## Export a user-global Profile
800
848
 
@@ -816,13 +864,20 @@ independently. Unknown selections and combining a block's inclusion filter with
816
864
 
817
865
  Stdout contains JSON only; stderr shows the preview and exclusion reasons.
818
866
  `--out` requires a new file (existing files and symlinks are not replaced).
819
- Profiles contain canonical Git URLs with discovery inclusion, recorded Skill
820
- version policies/Hosts/user methods, complete App recipes, including recipes for
821
- other platforms, and Package selections as declarations only: their Source, host
822
- coordinates and version policy. CLI export always writes `included: true`; discovery choices are transient, while
867
+ Profiles contain canonical Git URLs with discovery inclusion, individual Skill
868
+ selections with recorded version policies, Hosts and user methods, complete App
869
+ recipes (including recipes for other platforms), and Package selections as
870
+ declarations only, with their full Source origin, Host coordinates and version
871
+ policy. A v2 Profile may also contain identity-only replica intent for Skills, Apps
872
+ and Packages confirmed installed on the exporting machine. These entries do not
873
+ carry installed state, receipts, approvals or local paths.
874
+ The current parser reads legacy v1 files; v1-only older readers reject v2 files.
875
+ CLI export always writes `included: true`; discovery choices are transient, while
823
876
  the TUI may pass explicit inclusion choices to the shared export core.
824
- Export neither refreshes Sources nor runs App commands, and a Package receipt never
825
- travels in a Profile.
877
+ Export neither refreshes Sources nor runs lifecycle commands. It may run the existing
878
+ approved App version probe and read-only Package inspection to determine current
879
+ replica intent; unknown state is not treated as installed, and inspection does not
880
+ reconcile records. Package receipts never travel in a Profile.
826
881
 
827
882
  Local paths and obvious credentials are not portable. Nonportable/invalid items
828
883
  are excluded with reasons, as are unmanaged/App-owned and project Skills,
@@ -876,8 +931,13 @@ so omitting their Source block does not force registration; the preview names
876
931
  unregistered Sources that will be fetched without registering. Existing Source
877
932
  rows explain when discovery inclusion differs but is not imported.
878
933
 
879
- The **5 Import/Export** TUI tab offers grouped checklists and the same shared-core
880
- previews as the CLI. Exclusions and conflicts cannot be selected. Export creates
934
+ The **5 Import/Export** TUI tab starts with a collapsed **Sources** parent. It
935
+ contains nested Source choices, Skills, Apps, and Packages groups; resource rows show
936
+ their Source identities. **Installed replicas** and export notes are separate groups.
937
+ Replica entries identify resources confirmed installed on the exporting machine.
938
+ They do not contain installed state, approvals, or full machine contents. Import is
939
+ add-only; it never transfers approval or automatically installs Apps or Packages.
940
+ Exclusions and conflicts cannot be selected. Export creates
881
941
  a new file only; empty exports write nothing (CLI reports an error). Import adds missing choices without replacing existing ones.
882
942
  Imported recipes remain unapproved and Apps are never installed by import.
883
943
  Imported Package selections are recorded without installing a bundle and without