@iseoane/agent-depot 0.5.2 → 0.6.1
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.
- package/CHANGELOG.md +47 -0
- package/README.es.md +137 -34
- package/README.md +120 -29
- package/dist/src/app-flow.js +56 -24
- package/dist/src/profile-export.js +72 -9
- package/dist/src/profile-import.js +3 -2
- package/dist/src/profile.js +71 -7
- package/dist/src/tui/app-actions.js +82 -33
- package/dist/src/tui/app.js +19 -14
- package/dist/src/tui/catalog-browse.js +6 -1
- package/dist/src/tui/catalog-panel.js +11 -11
- package/dist/src/tui/catalog-state.js +28 -0
- package/dist/src/tui/catalog-tree.js +22 -5
- package/dist/src/tui/catalog-view.js +59 -16
- package/dist/src/tui/file-picker-model.js +87 -0
- package/dist/src/tui/file-picker.js +142 -0
- package/dist/src/tui/header-layout.js +33 -0
- package/dist/src/tui/installations-panel.js +3 -3
- package/dist/src/tui/installations-rows.js +20 -5
- package/dist/src/tui/installations-tree.js +4 -7
- package/dist/src/tui/installations-view.js +15 -6
- package/dist/src/tui/installations.js +9 -7
- package/dist/src/tui/manage-panel.js +7 -6
- package/dist/src/tui/mode-keys.js +9 -0
- package/dist/src/tui/package-rows.js +17 -5
- package/dist/src/tui/panel-parts.js +119 -6
- package/dist/src/tui/preview-window.js +51 -0
- package/dist/src/tui/profile-view.js +394 -136
- package/dist/src/tui/sources-mode.js +3 -1
- package/dist/src/tui/sources-recipes.js +50 -19
- package/dist/src/tui/sources-view.js +50 -14
- package/dist/src/tui/text-wrap.js +53 -0
- package/dist/src/tui/theme.js +14 -7
- package/dist/src/tui/updates-flow.js +2 -2
- package/dist/src/tui/updates-keys.js +34 -5
- package/dist/src/tui/updates-model.js +2 -0
- package/dist/src/tui/updates-panel.js +40 -15
- package/dist/src/tui/updates-preview.js +65 -0
- package/dist/src/tui/updates-view.js +17 -2
- package/dist/src/tui/updates.js +14 -5
- package/dist/src/tui/window.js +8 -6
- package/package.json +6 -6
- package/skills/doctor-md-agents/README.md +3 -1
- package/skills/doctor-md-skill/README.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,53 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.6.1] - 2026-10-13
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- The Profile TUI guides export through a folder picker and editable filename,
|
|
15
|
+
then shows the full destination and a confirmation preview. Import filters for
|
|
16
|
+
JSON files, can show all files, and keeps the picker open with inline read or
|
|
17
|
+
parse errors.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- `e` exports the complete Profile selection from any checklist row. `Enter`
|
|
22
|
+
expands groups or previews notes without starting export.
|
|
23
|
+
- Profile export and import previews use semantic colors for resource names,
|
|
24
|
+
Hosts, version policies, and fields, including wrapped continuation rows.
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
- Profile import applies the exact previewed subset, including selections after
|
|
29
|
+
unselected entries.
|
|
30
|
+
- Export ignores stale filename checks after edits and refuses existing files
|
|
31
|
+
or symlinks without overwriting them. Folder navigation follows symlinked
|
|
32
|
+
directories and keeps the guidance visible in narrow terminals.
|
|
33
|
+
- Moved bundled-skill tests to `tests/skills/`. `pnpm test:skills` runs each
|
|
34
|
+
suite in its own Python process with bytecode writes disabled, so tests no
|
|
35
|
+
longer alter skill trees and cause source-versus-packed hash checks to report
|
|
36
|
+
false updates.
|
|
37
|
+
|
|
38
|
+
## [0.6.0] - 2026-10-12
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- 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.
|
|
43
|
+
- 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.
|
|
44
|
+
- 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.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
|
|
48
|
+
- 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.
|
|
49
|
+
- `u` in Updates opens the selected batch preview. It does not apply updates until the user reviews the preview and confirms.
|
|
50
|
+
- 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.
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- The TUI fills the terminal from startup and recalculates its layout on resize. Unmanaged Skill symlinks are marked distinctly in Installations.
|
|
55
|
+
- 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.
|
|
56
|
+
|
|
10
57
|
## [0.5.2] - 2026-10-11
|
|
11
58
|
|
|
12
59
|
### Added
|
package/README.es.md
CHANGED
|
@@ -20,8 +20,9 @@ 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**:
|
|
24
|
-
|
|
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
28
|
leyendo evidencia de instalación y versión propiedad del Host. Un bundle
|
|
@@ -508,29 +509,100 @@ La TUI es un front end de [Ink](https://github.com/vadimdemedes/ink) (React para
|
|
|
508
509
|
terminales) sobre las mismas operaciones que la CLI. Necesita Node.js >= 24 y un
|
|
509
510
|
terminal interactivo; en caso contrario, `tui` falla con un error. Usa la pantalla
|
|
510
511
|
alternativa del terminal y vuelve a la pantalla anterior al salir. Se adapta al
|
|
511
|
-
redimensionado del terminal.
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
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.
|
|
515
521
|
|
|
516
522
|
| Vista | Propósito |
|
|
517
523
|
| --- | --- |
|
|
518
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. |
|
|
519
|
-
| 2 Catalog | Skills y Packages disponibles,
|
|
520
|
-
| 3 Installations |
|
|
521
|
-
| 4 Updates | Skills y Packages
|
|
522
|
-
| 5
|
|
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 | Exporta o importa elecciones globales de usuario. Consulta el [flujo de Profile](#flujo-de-profile) para ver la lista y los pasos del selector de archivos. |
|
|
523
529
|
|
|
524
530
|
Teclas por vista (los avisos también aceptan `Esc` para cancelar y `y`/`n` para
|
|
525
531
|
confirmar):
|
|
526
532
|
|
|
527
533
|
| Vista | Teclas |
|
|
528
534
|
| --- | --- |
|
|
529
|
-
| Sources | `j`/`k` recorren Sources de Git y recetas App
|
|
530
|
-
| Catalog | `Enter`/flechas
|
|
531
|
-
| Installations | `Enter`/flechas
|
|
532
|
-
| Updates | `space`
|
|
533
|
-
|
|
|
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 | Pulsa `e` para exportar o `i` para importar. Consulta el [flujo de Profile](#flujo-de-profile) para ver la navegación, la selección, las previsualizaciones y las cancelaciones. |
|
|
540
|
+
|
|
541
|
+
### Flujo de Profile
|
|
542
|
+
|
|
543
|
+
La vista Profile transfiere elecciones portables globales de usuario. No
|
|
544
|
+
transfiere instalaciones ni aprobaciones. Exportación e importación empiezan en
|
|
545
|
+
la raíz del proyecto, salvo que la aplicación indique otro directorio inicial.
|
|
546
|
+
|
|
547
|
+
#### Exportar
|
|
548
|
+
|
|
549
|
+
1. Pulsa `e` en la vista Profile para crear y abrir la lista de exportación.
|
|
550
|
+
El grupo **Sources**, contraído al inicio, contiene grupos anidados para
|
|
551
|
+
Sources, Skills, Apps y Packages. **Installed replicas** y **Export notes**
|
|
552
|
+
son grupos separados. Pulsa `Enter` o las flechas para expandir o contraer un
|
|
553
|
+
grupo. `Enter` sobre una nota de exportación muestra sus detalles; nunca
|
|
554
|
+
inicia la exportación.
|
|
555
|
+
2. Usa `j`/`k` o las flechas para moverte, `space` para alternar una fila
|
|
556
|
+
seleccionable y `a` para seleccionar todo o borrar la selección. Los
|
|
557
|
+
elementos excluidos y las filas informativas no se pueden seleccionar.
|
|
558
|
+
Pulsa `e` para exportar las filas seleccionadas. Si no hay ningún recurso
|
|
559
|
+
portable seleccionado, no se escribe nada. Pulsa `Esc` para salir de la
|
|
560
|
+
lista.
|
|
561
|
+
3. Elige una carpeta de destino. Muévete con `j`/`k` o las flechas; pulsa
|
|
562
|
+
`Enter` para abrir una carpeta o selecciona **Use this folder** para elegir
|
|
563
|
+
la carpeta actual. Usa Izquierda o Retroceso para subir a la carpeta
|
|
564
|
+
superior. Pulsa `p` para mostrar la ruta completa y otra vez `p` para volver
|
|
565
|
+
al listado. `Esc` vuelve a la lista de exportación.
|
|
566
|
+
4. Edita el nombre del archivo. El valor predeterminado es
|
|
567
|
+
`agent-depot-profile.json`. `Ctrl+U` borra el nombre y se añade `.json` si
|
|
568
|
+
falta una extensión. El editor muestra la ruta completa de destino. Pulsa
|
|
569
|
+
`Enter` para revisarla. Si la ruta ya existe, incluido un enlace simbólico,
|
|
570
|
+
aparece un error en línea y puedes elegir otro nombre; la exportación nunca
|
|
571
|
+
sobrescribe. `Esc` vuelve al selector de carpetas.
|
|
572
|
+
5. Revisa la previsualización de exportación, incluidas las exclusiones y
|
|
573
|
+
advertencias. Usa `j`/`k` para avanzar una fila y las flechas o
|
|
574
|
+
`PageUp`/`PageDown` para avanzar una página visible. Pulsa `y` para escribir
|
|
575
|
+
el archivo nuevo. Pulsa `n` o `Esc` para cancelar y volver al editor del
|
|
576
|
+
nombre. Los resultados muestran la ruta final.
|
|
577
|
+
|
|
578
|
+
#### Importar
|
|
579
|
+
|
|
580
|
+
1. Pulsa `i` en la vista Profile para abrir el selector de archivos. Al
|
|
581
|
+
principio muestra archivos `.json` y carpetas. Pulsa `f` para mostrar todos
|
|
582
|
+
los archivos y otra vez `f` para filtrar de nuevo por `.json`. Navega con
|
|
583
|
+
`j`/`k` o las flechas; pulsa `Enter` para abrir una carpeta o seleccionar un
|
|
584
|
+
archivo, e Izquierda o Retroceso para subir a la carpeta superior. Pulsa `p`
|
|
585
|
+
para mostrar la ruta completa y otra vez `p` para volver. `Esc` vuelve a la
|
|
586
|
+
vista Profile.
|
|
587
|
+
2. El archivo seleccionado se analiza y previsualiza. Si no se puede leer o
|
|
588
|
+
no es válido, aparece un error en línea y el selector permanece abierto para
|
|
589
|
+
elegir otro archivo. La lista de importación marca cada elemento como
|
|
590
|
+
**add**, **same** (omitido) o **conflict** (omitido, con las diferencias).
|
|
591
|
+
Solo se pueden seleccionar las adiciones. Usa `space` para alternar una
|
|
592
|
+
fila, `a` para seleccionar todas las adiciones o borrar la selección, y
|
|
593
|
+
`Enter` para previsualizar las adiciones seleccionadas. `Esc` vuelve a la
|
|
594
|
+
vista Profile.
|
|
595
|
+
3. Revisa la previsualización exacta de importación. Usa `j`/`k` para avanzar
|
|
596
|
+
una fila y las flechas o `PageUp`/`PageDown` para una página visible. Pulsa
|
|
597
|
+
`y` para aplicar las adiciones seleccionadas, o `n`/`Esc` para cancelar y
|
|
598
|
+
volver a la lista de importación. Se informa del resultado de cada elemento;
|
|
599
|
+
un fallo no detiene las demás adiciones.
|
|
600
|
+
|
|
601
|
+
Las recetas importadas siguen sin aprobarse. La importación no instala Apps ni
|
|
602
|
+
Packages ni ejecuta comandos del Host. Las réplicas solo describen identidades
|
|
603
|
+
en la máquina de origen; no transfieren aprobaciones ni estado de instalación.
|
|
604
|
+
|
|
605
|
+
Las demás previsualizaciones desplazables de la TUI 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.
|
|
534
606
|
|
|
535
607
|
Al eliminar una receta App se comprueban su comando de versión aprobado y su
|
|
536
608
|
seguimiento. Si la App está instalada o sigue registrada, la TUI ofrece el flujo
|
|
@@ -604,8 +676,14 @@ Desde un checkout de código fuente, compila y ejecuta la CLI directamente:
|
|
|
604
676
|
pnpm install
|
|
605
677
|
pnpm build
|
|
606
678
|
node dist/src/cli.js --version
|
|
679
|
+
pnpm test:skills
|
|
607
680
|
```
|
|
608
681
|
|
|
682
|
+
`pnpm test:skills` ejecuta los tests de la biblioteca estándar de Python
|
|
683
|
+
ubicados en `tests/skills/`. Inicia un proceso Python separado para cada skill
|
|
684
|
+
incluida y define `PYTHONDONTWRITEBYTECODE=1`, por lo que los tests no crean
|
|
685
|
+
archivos de bytecode en los directorios de las skills.
|
|
686
|
+
|
|
609
687
|
## Análisis estático
|
|
610
688
|
|
|
611
689
|
[Fallow](https://docs.fallow.tools) 3.30.0 se ejecuta mediante `npx --yes fallow@3.30.0`
|
|
@@ -777,8 +855,10 @@ variable no está definida): la raíz del checkout, `origin`, el commit `HEAD` y
|
|
|
777
855
|
paquete sigue instalado, pero su versión no está disponible. Si los cambios locales
|
|
778
856
|
hacen que el checkout esté modificado, Agent Depot muestra la versión de `HEAD`, pero
|
|
779
857
|
no usa el commit para evaluar actualizaciones. Installations y `package inspect`
|
|
780
|
-
indican `(HEAD; local changes)` en la etiqueta.
|
|
781
|
-
|
|
858
|
+
indican `(HEAD; local changes)` en la etiqueta. La fila de Installations muestra
|
|
859
|
+
`update not checked · local changes`; Updates sigue indicando `cannot assess` y no
|
|
860
|
+
ofrece el Package para actualizar. Tanto los cambios en archivos controlados como
|
|
861
|
+
los archivos sin seguimiento cuentan; Agent Depot no ignora archivos
|
|
782
862
|
de bloqueo ni otros archivos locales. La versión del manifiesto sirve para mostrar
|
|
783
863
|
información, pero no demuestra que el checkout coincida con la Source seleccionada.
|
|
784
864
|
La evaluación de actualizaciones compara el commit de un checkout limpio con el
|
|
@@ -931,16 +1011,22 @@ combinar el filtro de inclusión de un bloque con su indicador `--no-*` son erro
|
|
|
931
1011
|
|
|
932
1012
|
La salida estándar contiene solo JSON; stderr muestra la previsualización y los
|
|
933
1013
|
motivos de exclusión. `--out` requiere un archivo nuevo (los archivos existentes y
|
|
934
|
-
los enlaces simbólicos no se reemplazan). Los Profiles contienen URL de Git
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
1014
|
+
los enlaces simbólicos no se reemplazan). Los Profiles contienen URL de Git canónicas con su inclusión en el descubrimiento,
|
|
1015
|
+
selecciones individuales de Skills con sus políticas de versión, Hosts y métodos de
|
|
1016
|
+
usuario registrados, recipes de App completas (incluidas las de otras plataformas) y
|
|
1017
|
+
selecciones de Package como declaraciones, con su origen Source completo,
|
|
1018
|
+
coordenadas de Host y política de versión. Un Profile v2 también puede incluir
|
|
1019
|
+
intención de réplica, solo con la identidad de Skills, Apps y Packages cuya
|
|
1020
|
+
instalación se confirmó en la máquina de origen. No incluye estado de instalación,
|
|
1021
|
+
recibos, aprobaciones ni rutas locales. El parser actual lee los
|
|
1022
|
+
Profiles v1 anteriores; los lectores antiguos que solo admiten v1 rechazan los v2.
|
|
1023
|
+
La exportación por CLI siempre escribe `included: true`; las elecciones de descubrimiento son transitorias, mientras que la
|
|
941
1024
|
TUI puede pasar elecciones de inclusión explícitas al núcleo de exportación
|
|
942
|
-
compartido. La exportación no refresca Sources ni ejecuta comandos
|
|
943
|
-
|
|
1025
|
+
compartido. La exportación no refresca Sources ni ejecuta comandos del ciclo de vida.
|
|
1026
|
+
Puede ejecutar la sonda existente de versión de App aprobada e inspeccionar Packages
|
|
1027
|
+
sin escritura para determinar la intención de réplica actual; un estado desconocido no
|
|
1028
|
+
se considera instalado y la inspección no reconcilia registros. Los recibos de Package
|
|
1029
|
+
nunca viajan en un Profile.
|
|
944
1030
|
|
|
945
1031
|
Las rutas locales y las credenciales evidentes no son portables. Los elementos no
|
|
946
1032
|
portables o inválidos se excluyen con sus motivos, al igual que los Skills no
|
|
@@ -1004,11 +1090,28 @@ registro; la previsualización nombra las Sources no registradas que se obtendr
|
|
|
1004
1090
|
registrarse. Las filas de Sources existentes explican cuándo la inclusión en el
|
|
1005
1091
|
descubrimiento difiere pero no se importa.
|
|
1006
1092
|
|
|
1007
|
-
La pestaña **5 Import/Export** de la TUI
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1093
|
+
La pestaña **5 Import/Export** de la TUI empieza con el grupo padre **Sources**
|
|
1094
|
+
contraído. Dentro contiene grupos anidados para elecciones de Source, Skills, Apps y
|
|
1095
|
+
Packages; cada recurso muestra la identidad de su Source. **Installed replicas** y las
|
|
1096
|
+
notas de exportación son grupos separados. Usa las mismas previsualizaciones del núcleo
|
|
1097
|
+
compartido que la CLI.
|
|
1098
|
+
`e` exporta toda la selección marcada desde cualquier fila; `Enter` solo expande un grupo
|
|
1099
|
+
o previsualiza una nota, así que navegar nunca inicia una escritura. Las réplicas
|
|
1100
|
+
identifican recursos cuya instalación se confirmó en la máquina de origen; no incluyen el
|
|
1101
|
+
estado de instalación, las aprobaciones ni el contenido completo de la máquina. La
|
|
1102
|
+
importación solo añade; nunca transfiere aprobaciones ni instala automáticamente Apps o
|
|
1103
|
+
Packages. Las exclusiones y los conflictos no pueden seleccionarse.
|
|
1104
|
+
|
|
1105
|
+
La exportación y la importación comparten un navegador de directorios que empieza en la
|
|
1106
|
+
raíz del proyecto, lista carpetas (y, al importar, archivos `.json`) y se mueve con
|
|
1107
|
+
`j`/`k` o las flechas. La exportación elige una carpeta y luego rellena
|
|
1108
|
+
`agent-depot-profile.json` en un campo editable que muestra el destino completo;
|
|
1109
|
+
`Ctrl+U` lo borra, un nombre sin extensión recibe `.json`, y un archivo o enlace
|
|
1110
|
+
simbólico existente se rechaza en ese paso para volver a escribirlo. La importación
|
|
1111
|
+
navega hasta un archivo existente; `f` alterna entre archivos `.json` y todos los
|
|
1112
|
+
archivos, y un archivo mal formado informa en línea mientras el navegador sigue abierto.
|
|
1113
|
+
La exportación solo crea un archivo nuevo; las exportaciones vacías no escriben nada (la
|
|
1114
|
+
CLI informa de un error). La importación añade las elecciones que faltan sin reemplazar
|
|
1115
|
+
las existentes. Las recipes importadas permanecen sin aprobar y la importación nunca
|
|
1116
|
+
instala Apps. Las selecciones de Package importadas se registran sin instalar ningún
|
|
1117
|
+
bundle y sin ejecutar ningún comando del Host.
|
package/README.md
CHANGED
|
@@ -19,8 +19,9 @@ 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**:
|
|
23
|
-
|
|
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
27
|
reading Host-owned installation and version evidence. A bundle reserves
|
|
@@ -461,28 +462,90 @@ The TUI is an [Ink](https://github.com/vadimdemedes/ink) (React for terminals)
|
|
|
461
462
|
front end over the same operations as the CLI. It needs Node.js >= 24 and an
|
|
462
463
|
interactive terminal; otherwise `tui` fails with an error. It uses the terminal's
|
|
463
464
|
alternate screen and returns to the previous screen when you quit. It adjusts to
|
|
464
|
-
terminal resizing.
|
|
465
|
-
|
|
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,
|
|
466
469
|
Installations, and Updates, `j`/`k` or the arrows move one row; `PageUp` and
|
|
467
|
-
`PageDown` move by one visible page.
|
|
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.
|
|
468
472
|
|
|
469
473
|
| View | Purpose |
|
|
470
474
|
| --- | --- |
|
|
471
475
|
| 1 Sources | Git Sources (their skills and Packages) and user-owned App recipes in one list, with `skills`/`app` kinds and contextual actions. |
|
|
472
|
-
| 2 Catalog | Available Skills and Packages,
|
|
473
|
-
| 3 Installations |
|
|
474
|
-
| 4 Updates | Managed
|
|
475
|
-
| 5
|
|
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 choices. See [Profile workflow](#profile-workflow) for the complete checklist and file-picker steps. |
|
|
476
480
|
|
|
477
481
|
Keys per view (prompts also accept `Esc` to cancel and `y`/`n` to confirm):
|
|
478
482
|
|
|
479
483
|
| View | Keys |
|
|
480
484
|
| --- | --- |
|
|
481
|
-
| Sources | `j`/`k` move through Git Sources and App recipes
|
|
482
|
-
| Catalog | `Enter`/arrows expand and collapse, `space`
|
|
483
|
-
| Installations | `Enter`/arrows expand and collapse, `u`
|
|
484
|
-
| Updates | `space`
|
|
485
|
-
|
|
|
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 | Press `e` to export or `i` to import. See [Profile workflow](#profile-workflow) for navigation, selection, previews, and cancellation. |
|
|
490
|
+
|
|
491
|
+
### Profile workflow
|
|
492
|
+
|
|
493
|
+
The Profile view transfers portable user-global choices. It does not transfer
|
|
494
|
+
installed state or approvals. Export and import begin in the project root, unless
|
|
495
|
+
the application supplies another start directory.
|
|
496
|
+
|
|
497
|
+
#### Export
|
|
498
|
+
|
|
499
|
+
1. Press `e` in the Profile view to build and open the export checklist. Its
|
|
500
|
+
collapsed **Sources** group contains nested Source, Skill, App, and Package
|
|
501
|
+
choices. **Installed replicas** and **Export notes** are separate groups.
|
|
502
|
+
Expand or collapse a group with `Enter` or the arrow keys. `Enter` on an
|
|
503
|
+
export note opens its details; it never starts an export.
|
|
504
|
+
2. Use `j`/`k` or the arrows to navigate, `space` to toggle a selectable row,
|
|
505
|
+
and `a` to select all or clear all. Excluded items and informational rows
|
|
506
|
+
cannot be selected. Press `e` to export the selected rows. If no portable
|
|
507
|
+
resource is selected, nothing is written. Press `Esc` to leave the checklist.
|
|
508
|
+
3. Choose a destination folder. Move with `j`/`k` or the arrows, press `Enter`
|
|
509
|
+
to open a folder, or select **Use this folder** to choose the current one.
|
|
510
|
+
Use Left or Backspace to go to the parent. Press `p` to show the full
|
|
511
|
+
directory path; press `p` again to return to the listing. `Esc` returns to
|
|
512
|
+
the checklist.
|
|
513
|
+
4. Edit the file name. The default is `agent-depot-profile.json`. `Ctrl+U`
|
|
514
|
+
clears the name, and a name without an extension gets `.json`. The editor
|
|
515
|
+
shows the complete destination path. Press `Enter` to review it. If the path
|
|
516
|
+
already exists, including a symlink, the view reports an inline error and
|
|
517
|
+
lets you choose another name; export never overwrites. `Esc` returns to the
|
|
518
|
+
folder picker.
|
|
519
|
+
5. Review the export preview, including exclusions and warnings. Use `j`/`k`
|
|
520
|
+
to move one row and the arrows or `PageUp`/`PageDown` to move by a visible
|
|
521
|
+
page. Press `y` to write the new file, `n` or `Esc` to cancel and return to
|
|
522
|
+
the name editor. Results show the final path.
|
|
523
|
+
|
|
524
|
+
#### Import
|
|
525
|
+
|
|
526
|
+
1. Press `i` in the Profile view to open the file picker. It initially lists
|
|
527
|
+
`.json` files and folders. Press `f` to show every file, `f` again to filter
|
|
528
|
+
back to `.json`. Navigate with `j`/`k` or the arrows, use `Enter` to open a
|
|
529
|
+
folder or select a file, and Left or Backspace to go to the parent. Press
|
|
530
|
+
`p` to show the full directory path and `p` again to return. `Esc` returns
|
|
531
|
+
to the Profile view.
|
|
532
|
+
2. The selected file is parsed and previewed. If it is invalid or cannot be
|
|
533
|
+
read, an inline error appears and the picker stays open so you can choose
|
|
534
|
+
another file. The import list marks entries as **add**, **same** (skipped), or
|
|
535
|
+
**conflict** (skipped with differences). Only additions can be selected. Use
|
|
536
|
+
`space` to toggle a row, `a` to select all additions or clear them, and
|
|
537
|
+
`Enter` to preview the selected additions. Press `Esc` to return to the
|
|
538
|
+
Profile view.
|
|
539
|
+
3. Review the exact import preview. Use `j`/`k` for one row and the arrows or
|
|
540
|
+
`PageUp`/`PageDown` for a visible page. Press `y` to apply the selected
|
|
541
|
+
additions, or `n`/`Esc` to cancel and return to the import list. Each result
|
|
542
|
+
is reported; an item failure does not stop the remaining additions.
|
|
543
|
+
|
|
544
|
+
Imported recipes remain unapproved. Import does not install Apps or Packages or
|
|
545
|
+
run Host commands. Replica entries describe identity on the exporting machine
|
|
546
|
+
only. They do not confer approval or installed state.
|
|
547
|
+
|
|
548
|
+
Scrollable previews elsewhere in the TUI 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.
|
|
486
549
|
|
|
487
550
|
Removing an App recipe checks its approved version command and tracked state.
|
|
488
551
|
If the App is installed or tracked, the TUI offers the existing uninstall flow;
|
|
@@ -552,8 +615,14 @@ From a source checkout, build and run the CLI directly:
|
|
|
552
615
|
pnpm install
|
|
553
616
|
pnpm build
|
|
554
617
|
node dist/src/cli.js --version
|
|
618
|
+
pnpm test:skills
|
|
555
619
|
```
|
|
556
620
|
|
|
621
|
+
`pnpm test:skills` runs the Python standard-library tests from `tests/skills/`.
|
|
622
|
+
It starts a separate Python process for each bundled skill and sets
|
|
623
|
+
`PYTHONDONTWRITEBYTECODE=1`, so the tests do not create bytecode files in the
|
|
624
|
+
skill directories.
|
|
625
|
+
|
|
557
626
|
## Static analysis
|
|
558
627
|
|
|
559
628
|
[Fallow](https://docs.fallow.tools) 3.30.0 runs through `npx --yes fallow@3.30.0`
|
|
@@ -707,9 +776,10 @@ configured package. Agent Depot then verifies the checkout under
|
|
|
707
776
|
`HEAD` cannot be verified, the package remains installed but its version is
|
|
708
777
|
unavailable. If local changes make the checkout dirty, Agent Depot still displays
|
|
709
778
|
the version from `HEAD` but withholds the commit, so Updates reports `cannot assess`.
|
|
710
|
-
Installations and `package inspect` mark that label as `(HEAD; local changes)`.
|
|
711
|
-
|
|
712
|
-
|
|
779
|
+
Installations and `package inspect` mark that label as `(HEAD; local changes)`. The
|
|
780
|
+
Installations row says `update not checked · local changes`; Updates still reports
|
|
781
|
+
`cannot assess` and does not offer the Package for update. Tracked and untracked
|
|
782
|
+
changes both count; Agent Depot does not ignore lockfiles or other local files. A manifest version is display evidence, not proof that the
|
|
713
783
|
checkout matches the selected Source. Update assessment compares a clean checkout's
|
|
714
784
|
commit with the available Source commit using ancestry in the cached Source history.
|
|
715
785
|
For Claude, Agent Depot reads the plugin and marketplace state files. The Host owns
|
|
@@ -857,13 +927,20 @@ independently. Unknown selections and combining a block's inclusion filter with
|
|
|
857
927
|
|
|
858
928
|
Stdout contains JSON only; stderr shows the preview and exclusion reasons.
|
|
859
929
|
`--out` requires a new file (existing files and symlinks are not replaced).
|
|
860
|
-
Profiles contain canonical Git URLs with discovery inclusion,
|
|
861
|
-
version policies
|
|
862
|
-
other platforms, and Package selections as
|
|
863
|
-
|
|
930
|
+
Profiles contain canonical Git URLs with discovery inclusion, individual Skill
|
|
931
|
+
selections with recorded version policies, Hosts and user methods, complete App
|
|
932
|
+
recipes (including recipes for other platforms), and Package selections as
|
|
933
|
+
declarations only, with their full Source origin, Host coordinates and version
|
|
934
|
+
policy. A v2 Profile may also contain identity-only replica intent for Skills, Apps
|
|
935
|
+
and Packages confirmed installed on the exporting machine. These entries do not
|
|
936
|
+
carry installed state, receipts, approvals or local paths.
|
|
937
|
+
The current parser reads legacy v1 files; v1-only older readers reject v2 files.
|
|
938
|
+
CLI export always writes `included: true`; discovery choices are transient, while
|
|
864
939
|
the TUI may pass explicit inclusion choices to the shared export core.
|
|
865
|
-
Export neither refreshes Sources nor runs
|
|
866
|
-
|
|
940
|
+
Export neither refreshes Sources nor runs lifecycle commands. It may run the existing
|
|
941
|
+
approved App version probe and read-only Package inspection to determine current
|
|
942
|
+
replica intent; unknown state is not treated as installed, and inspection does not
|
|
943
|
+
reconcile records. Package receipts never travel in a Profile.
|
|
867
944
|
|
|
868
945
|
Local paths and obvious credentials are not portable. Nonportable/invalid items
|
|
869
946
|
are excluded with reasons, as are unmanaged/App-owned and project Skills,
|
|
@@ -917,9 +994,23 @@ so omitting their Source block does not force registration; the preview names
|
|
|
917
994
|
unregistered Sources that will be fetched without registering. Existing Source
|
|
918
995
|
rows explain when discovery inclusion differs but is not imported.
|
|
919
996
|
|
|
920
|
-
The **5 Import/Export** TUI tab
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
997
|
+
The **5 Import/Export** TUI tab starts with a collapsed **Sources** parent. It
|
|
998
|
+
contains nested Source choices, Skills, Apps, and Packages groups; resource rows show
|
|
999
|
+
their Source identities. **Installed replicas** and export notes are separate groups.
|
|
1000
|
+
`e` exports the whole marked selection from any row; `Enter` only expands a group or
|
|
1001
|
+
previews a note, so browsing never starts a write. Replica entries identify resources
|
|
1002
|
+
confirmed installed on the exporting machine. They do not contain installed state,
|
|
1003
|
+
approvals, or full machine contents. Import is add-only; it never transfers approval or
|
|
1004
|
+
automatically installs Apps or Packages. Exclusions and conflicts cannot be selected.
|
|
1005
|
+
|
|
1006
|
+
Export and import share one directory browser that starts at the project root, lists
|
|
1007
|
+
folders (and, for import, `.json` files), and moves with `j`/`k` or the arrows. Export
|
|
1008
|
+
picks a folder, then pre-fills `agent-depot-profile.json` in an editable name field that
|
|
1009
|
+
shows the complete destination; `Ctrl+U` clears it, a name without an extension gains
|
|
1010
|
+
`.json`, and an existing file or symlink is refused at that step so you can retype.
|
|
1011
|
+
Import browses to an existing file; `f` switches between `.json` files and every file,
|
|
1012
|
+
and a malformed file reports inline while the browser stays open. Export creates a new
|
|
1013
|
+
file only; empty exports write nothing (CLI reports an error). Import adds missing
|
|
1014
|
+
choices without replacing existing ones. Imported recipes remain unapproved and Apps
|
|
1015
|
+
are never installed by import. Imported Package selections are recorded without
|
|
1016
|
+
installing a bundle and without running a Host command.
|