From a9d1e135cb8ebc0c3b82ac733bfc07b99dd9c426 Mon Sep 17 00:00:00 2001 From: buenosairesam Date: Tue, 20 Jan 2026 06:01:27 -0300 Subject: [PATCH] more restructuring --- build.py | 32 ++- .../{managed => }/ctrl/Dockerfile.backend | 0 .../{managed => }/ctrl/Dockerfile.frontend | 0 .../docker-compose.managed.yml} | 0 cfg/amar/models/__init__.py | 156 ------------- cfg/amar/models/django/models.py | 191 ---------------- cfg/amar/models/prisma/schema.prisma | 213 ------------------ cfg/amar/models/pydantic/__init__.py | 187 --------------- cfg/amar/models/schema.json | 163 -------------- .../artery/shunts/amar/.env.example | 0 .../artery/shunts/amar/README.md | 0 .../artery/shunts/amar/__init__.py | 0 .../artery/shunts/amar/api/__init__.py | 0 .../artery/shunts/amar/api/routes.py | 0 .../artery/shunts/amar/core/__init__.py | 0 .../artery/shunts/amar/core/config.py | 0 .../artery/shunts/amar/main.py | 0 .../artery/shunts/amar/requirements.txt | 0 .../{ => soleprint}/artery/shunts/amar/run.py | 0 .../artery/shunts/amar/templates/index.html | 0 .../books/arch/01-backend-architecture.dot | 0 .../books/arch/01-backend-architecture.svg | 0 .../books/arch/02-frontend-architecture.dot | 0 .../books/arch/02-frontend-architecture.svg | 0 .../atlas/books/arch/03-data-model.dot | 0 .../atlas/books/arch/03-data-model.svg | 0 .../atlas/books/arch/04-data-model-simple.dot | 0 .../atlas/books/arch/04-data-model-simple.svg | 0 .../atlas/books/arch/graph.html | 0 .../atlas/books/arch/index.html | 0 .../atlas/books/arch/styles.css | 0 .../atlas/books/drive-index/index.html | 0 .../atlas/books/drive-index/index.md | 0 .../books/feature-form-samples/CLAUDE.md | 0 .../books/feature-form-samples/detail.html | 0 .../feature-form-samples/feature-form/.larder | 0 .../backoffice/01-gestion-solicitudes.md | 0 .../backoffice/02-gestion-usuarios.md | 0 .../backoffice/03-gestion-servicios.md | 0 .../feature-form/backoffice/04-reembolsos.md | 0 .../feature-form/backoffice/05-reportes.md | 0 .../feature-form/pet-owner/01-registro.md | 0 .../pet-owner/02-reservar-turno.md | 0 .../pet-owner/03-gestion-mascotas.md | 0 .../feature-form/pet-owner/04-pago-turno.md | 0 .../pet-owner/05-historial-medico.md | 0 .../veterinarian/01-aceptar-solicitud.md | 0 .../veterinarian/02-gestion-agenda.md | 0 .../veterinarian/03-realizar-visita.md | 0 .../veterinarian/04-zonas-cobertura.md | 0 .../veterinarian/05-historial-pacientes.md | 0 .../books/feature-form-samples/index.html | 0 .../template/feature-form.md | 0 .../atlas/books/gherkin-samples/CLAUDE.md | 0 .../atlas/books/gherkin-samples/detail.html | 0 .../backoffice/01-gestion-solicitudes.feature | 0 .../en/backoffice/02-gestion-usuarios.feature | 0 .../backoffice/03-gestion-servicios.feature | 0 .../en/backoffice/04-reembolsos.feature | 0 .../en/backoffice/05-reportes.feature | 0 .../en/pet-owner/01-registro.feature | 0 .../en/pet-owner/02-reservar-turno.feature | 0 .../en/pet-owner/03-gestion-mascotas.feature | 0 .../en/pet-owner/04-pago-turno.feature | 0 .../en/pet-owner/05-historial-medico.feature | 0 .../veterinarian/01-aceptar-solicitud.feature | 0 .../en/veterinarian/02-gestion-agenda.feature | 0 .../veterinarian/03-realizar-visita.feature | 0 .../veterinarian/04-zonas-cobertura.feature | 0 .../05-historial-pacientes.feature | 0 .../backoffice/01-gestion-solicitudes.feature | 0 .../es/backoffice/02-gestion-usuarios.feature | 0 .../backoffice/03-gestion-servicios.feature | 0 .../es/backoffice/04-reembolsos.feature | 0 .../es/backoffice/05-reportes.feature | 0 .../es/pet-owner/01-registro.feature | 0 .../es/pet-owner/02-reservar-turno.feature | 0 .../es/pet-owner/03-gestion-mascotas.feature | 0 .../es/pet-owner/04-pago-turno.feature | 0 .../es/pet-owner/05-historial-medico.feature | 0 .../veterinarian/01-aceptar-solicitud.feature | 0 .../es/veterinarian/02-gestion-agenda.feature | 0 .../veterinarian/03-realizar-visita.feature | 0 .../veterinarian/04-zonas-cobertura.feature | 0 .../05-historial-pacientes.feature | 0 .../atlas/books/gherkin-samples/index.html | 0 .../station/monitors/turnos/__init__.py | 0 .../station/monitors/turnos/index.html | 0 .../station/monitors/turnos/list.html | 0 .../station/monitors/turnos/main.py | 0 .../tools/databrowse/depot/scenarios.json | 0 .../tools/databrowse/depot/schema.json | 0 .../station/tools/databrowse/depot/views.json | 0 .../station/tools/datagen/amar.py | 0 .../station/tools/tester/tests/README.md | 0 .../station/tools/tester/tests/__init__.py | 0 .../station/tools/tester/tests/base.py | 0 .../station/tools/tester/tests/conftest.py | 0 .../station/tools/tester/tests/endpoints.py | 0 .../station/tools/tester/tests/helpers.py | 0 .../tools/tester/tests/mascotas/__init__.py | 0 .../tester/tests/mascotas/test_coverage.py | 0 .../tester/tests/mascotas/test_pet_owners.py | 0 .../tools/tester/tests/mascotas/test_pets.py | 0 .../tools/tester/tests/productos/__init__.py | 0 .../tools/tester/tests/productos/test_cart.py | 0 .../tester/tests/productos/test_categories.py | 0 .../tester/tests/productos/test_services.py | 0 .../tester/tests/solicitudes/__init__.py | 0 .../solicitudes/test_service_requests.py | 0 .../tools/tester/tests/workflows/__init__.py | 0 .../tests/workflows/test_turnero_general.py | 0 {ctrl => soleprint/ctrl}/build.sh | 0 {ctrl => soleprint/ctrl}/logs.sh | 0 {ctrl => soleprint/ctrl}/start.sh | 0 {ctrl => soleprint/ctrl}/stop.sh | 0 soleprint/run.py | 72 +++++- 117 files changed, 86 insertions(+), 928 deletions(-) rename cfg/amar/{managed => }/ctrl/Dockerfile.backend (100%) rename cfg/amar/{managed => }/ctrl/Dockerfile.frontend (100%) rename cfg/amar/{managed/ctrl/docker-compose.yml => ctrl/docker-compose.managed.yml} (100%) delete mode 100644 cfg/amar/models/__init__.py delete mode 100644 cfg/amar/models/django/models.py delete mode 100644 cfg/amar/models/prisma/schema.prisma delete mode 100644 cfg/amar/models/pydantic/__init__.py delete mode 100644 cfg/amar/models/schema.json rename cfg/amar/{ => soleprint}/artery/shunts/amar/.env.example (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/README.md (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/__init__.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/api/__init__.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/api/routes.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/core/__init__.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/core/config.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/main.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/requirements.txt (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/run.py (100%) rename cfg/amar/{ => soleprint}/artery/shunts/amar/templates/index.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/01-backend-architecture.dot (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/01-backend-architecture.svg (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/02-frontend-architecture.dot (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/02-frontend-architecture.svg (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/03-data-model.dot (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/03-data-model.svg (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/04-data-model-simple.dot (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/04-data-model-simple.svg (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/graph.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/index.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/arch/styles.css (100%) rename cfg/amar/{ => soleprint}/atlas/books/drive-index/index.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/drive-index/index.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/CLAUDE.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/detail.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/.larder (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/backoffice/01-gestion-solicitudes.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/backoffice/02-gestion-usuarios.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/backoffice/03-gestion-servicios.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/backoffice/04-reembolsos.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/backoffice/05-reportes.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/pet-owner/01-registro.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/pet-owner/02-reservar-turno.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/pet-owner/03-gestion-mascotas.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/pet-owner/04-pago-turno.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/pet-owner/05-historial-medico.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/veterinarian/01-aceptar-solicitud.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/veterinarian/02-gestion-agenda.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/veterinarian/03-realizar-visita.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/veterinarian/04-zonas-cobertura.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/feature-form/veterinarian/05-historial-pacientes.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/index.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/feature-form-samples/template/feature-form.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/CLAUDE.md (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/detail.html (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/backoffice/01-gestion-solicitudes.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/backoffice/02-gestion-usuarios.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/backoffice/03-gestion-servicios.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/backoffice/04-reembolsos.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/backoffice/05-reportes.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/pet-owner/01-registro.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/pet-owner/02-reservar-turno.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/pet-owner/03-gestion-mascotas.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/pet-owner/04-pago-turno.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/pet-owner/05-historial-medico.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/veterinarian/01-aceptar-solicitud.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/veterinarian/02-gestion-agenda.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/veterinarian/03-realizar-visita.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/veterinarian/04-zonas-cobertura.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/en/veterinarian/05-historial-pacientes.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/backoffice/01-gestion-solicitudes.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/backoffice/02-gestion-usuarios.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/backoffice/03-gestion-servicios.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/backoffice/04-reembolsos.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/backoffice/05-reportes.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/pet-owner/01-registro.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/pet-owner/02-reservar-turno.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/pet-owner/03-gestion-mascotas.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/pet-owner/04-pago-turno.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/pet-owner/05-historial-medico.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/veterinarian/01-aceptar-solicitud.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/veterinarian/02-gestion-agenda.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/veterinarian/03-realizar-visita.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/veterinarian/04-zonas-cobertura.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/es/veterinarian/05-historial-pacientes.feature (100%) rename cfg/amar/{ => soleprint}/atlas/books/gherkin-samples/index.html (100%) rename cfg/amar/{ => soleprint}/station/monitors/turnos/__init__.py (100%) rename cfg/amar/{ => soleprint}/station/monitors/turnos/index.html (100%) rename cfg/amar/{ => soleprint}/station/monitors/turnos/list.html (100%) rename cfg/amar/{ => soleprint}/station/monitors/turnos/main.py (100%) rename cfg/amar/{ => soleprint}/station/tools/databrowse/depot/scenarios.json (100%) rename cfg/amar/{ => soleprint}/station/tools/databrowse/depot/schema.json (100%) rename cfg/amar/{ => soleprint}/station/tools/databrowse/depot/views.json (100%) rename cfg/amar/{ => soleprint}/station/tools/datagen/amar.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/README.md (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/__init__.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/base.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/conftest.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/endpoints.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/helpers.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/mascotas/__init__.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/mascotas/test_coverage.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/mascotas/test_pet_owners.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/mascotas/test_pets.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/productos/__init__.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/productos/test_cart.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/productos/test_categories.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/productos/test_services.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/solicitudes/__init__.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/solicitudes/test_service_requests.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/workflows/__init__.py (100%) rename cfg/amar/{ => soleprint}/station/tools/tester/tests/workflows/test_turnero_general.py (100%) rename {ctrl => soleprint/ctrl}/build.sh (100%) rename {ctrl => soleprint/ctrl}/logs.sh (100%) rename {ctrl => soleprint/ctrl}/start.sh (100%) rename {ctrl => soleprint/ctrl}/stop.sh (100%) diff --git a/build.py b/build.py index c7e8ce4..f9c398e 100644 --- a/build.py +++ b/build.py @@ -170,14 +170,15 @@ def build_managed(output_dir: Path, cfg_name: str, config: dict): if copy_repo(source, target): log.info(f" {repo_name}/") - # Copy ctrl from cfg//managed/ctrl/ + # Copy ctrl from cfg//ctrl/ room_cfg = SPR_ROOT / "cfg" / cfg_name - managed_ctrl = room_cfg / "managed" / "ctrl" - if managed_ctrl.exists(): + room_ctrl = room_cfg / "ctrl" + if room_ctrl.exists(): ctrl_dir = managed_dir / "ctrl" ensure_dir(ctrl_dir) - for item in managed_ctrl.iterdir(): - copy_path(item, ctrl_dir / item.name) + for item in room_ctrl.iterdir(): + if item.is_file(): + copy_path(item, ctrl_dir / item.name) def build_link(output_dir: Path, cfg_name: str): @@ -245,23 +246,20 @@ def copy_cfg(output_dir: Path, room: str): if (room_cfg / ".env.example").exists(): copy_path(room_cfg / ".env.example", output_dir / ".env.example") - # Room-specific models - room_models = room_cfg / "models" - if room_models.exists(): - copy_path(room_models, output_dir / "models" / room) - # Room-specific soleprint config (docker-compose.yml, etc) + # Now in cfg//soleprint/ room_soleprint = room_cfg / "soleprint" if room_soleprint.exists(): for item in room_soleprint.iterdir(): - copy_path(item, output_dir / item.name) + if item.is_file(): + copy_path(item, output_dir / item.name) - # Merge room-specific system configs (artery, atlas, station) - for system in ["artery", "atlas", "station"]: - room_system = room_cfg / system - if room_system.exists(): - log.info(f" Merging {room} {system}...") - merge_into(room_system, output_dir / system) + # Merge room-specific system configs from soleprint subfolder + for system in ["artery", "atlas", "station"]: + room_system = room_soleprint / system + if room_system.exists(): + log.info(f" Merging {room} {system}...") + merge_into(room_system, output_dir / system) def build_soleprint(output_dir: Path, room: str): diff --git a/cfg/amar/managed/ctrl/Dockerfile.backend b/cfg/amar/ctrl/Dockerfile.backend similarity index 100% rename from cfg/amar/managed/ctrl/Dockerfile.backend rename to cfg/amar/ctrl/Dockerfile.backend diff --git a/cfg/amar/managed/ctrl/Dockerfile.frontend b/cfg/amar/ctrl/Dockerfile.frontend similarity index 100% rename from cfg/amar/managed/ctrl/Dockerfile.frontend rename to cfg/amar/ctrl/Dockerfile.frontend diff --git a/cfg/amar/managed/ctrl/docker-compose.yml b/cfg/amar/ctrl/docker-compose.managed.yml similarity index 100% rename from cfg/amar/managed/ctrl/docker-compose.yml rename to cfg/amar/ctrl/docker-compose.managed.yml diff --git a/cfg/amar/models/__init__.py b/cfg/amar/models/__init__.py deleted file mode 100644 index f39a9da..0000000 --- a/cfg/amar/models/__init__.py +++ /dev/null @@ -1,156 +0,0 @@ -""" -Pawprint Models - Platform Agnostic Definitions - -Portable to: TypeScript, Pydantic, Django, SQLAlchemy, etc. - -Hierarchy: - pawprint (abstract) - ├── artery → Pulse = Vein + Nest + Larder - ├── album → Book = Template + Larder - └── ward → Table = Tools + Nest + Larder - -Shared components: Nest, Larder -System-specific: Vein (artery), Template (album), Tools (ward) - -Rules: - - Larder in album generated from Template = "Book (written)" - - Same Larder exists independently in ward/artery - - Nest contains runtime configs, credentials, targets - - Larder contains data, provisions, stored content -""" - -from dataclasses import dataclass, field -from typing import Optional, List -from enum import Enum - - -class Status(Enum): - PENDING = "pending" - PLANNED = "planned" - BUILDING = "building" - DEV = "dev" - LIVE = "live" - READY = "ready" - - -class System(Enum): - ARTERY = "artery" - ALBUM = "album" - WARD = "ward" - - -# === Shared Components === - -@dataclass -class Nest: - """Runtime environment configuration. - - Contains: credentials, targets, runtime configs. - Shared across: artery, ward - """ - name: str - status: Status = Status.PENDING - # References to actual config files/secrets - config_path: Optional[str] = None - - -@dataclass -class Larder: - """Data storage / provisions. - - Contains: data, transforms, parsers, dumps. - Shared across: artery, album, ward - - Note: When generated from Template in album, appears as "Book (written)" - but exists as independent Larder in ward/artery. - """ - name: str - status: Status = Status.PENDING - # Optional source template (if generated) - source_template: Optional[str] = None - # Path to data - data_path: Optional[str] = None - - -# === System-Specific Components === - -@dataclass -class Vein: - """Connector (artery-specific). - - Single responsibility data connector. - Examples: jira, google, slack, whatsapp, cash, vnc - """ - name: str - status: Status = Status.PENDING - system: System = field(default=System.ARTERY, init=False) - - -@dataclass -class Template: - """Documentation template (album-specific). - - Gherkin, BDD patterns, generators. - Examples: feature-form, gherkin - """ - name: str - status: Status = Status.PENDING - system: System = field(default=System.ALBUM, init=False) - - -@dataclass -class Tool: - """Execution tool (ward-specific). - - Test runners, seeders, scripts. - """ - name: str - status: Status = Status.PENDING - system: System = field(default=System.WARD, init=False) - - -# === Composed Types === - -@dataclass -class Pulse: - """Composed data flow (artery). - - Pulse = Vein + Nest + Larder - """ - name: str - status: Status = Status.PENDING - vein: Optional[Vein] = None - nest: Optional[Nest] = None - larder: Optional[Larder] = None - system: System = field(default=System.ARTERY, init=False) - - -@dataclass -class Book: - """Composed documentation (album). - - Book = Template + Larder - - Note: Output larder can be referenced independently in other systems. - """ - name: str - status: Status = Status.PENDING - template: Optional[Template] = None - larder: Optional[Larder] = None - # If this book produces a larder, it's tracked here - output_larder: Optional[Larder] = None - system: System = field(default=System.ALBUM, init=False) - - -@dataclass -class Table: - """Composed execution bundle (ward). - - Table = Tools + Nest + Larder - """ - name: str - status: Status = Status.PENDING - tools: List[Tool] = field(default_factory=list) - nest: Optional[Nest] = None - larder: Optional[Larder] = None - system: System = field(default=System.WARD, init=False) diff --git a/cfg/amar/models/django/models.py b/cfg/amar/models/django/models.py deleted file mode 100644 index b2587a7..0000000 --- a/cfg/amar/models/django/models.py +++ /dev/null @@ -1,191 +0,0 @@ -""" -Django models - Generated from schema.json - -DO NOT EDIT MANUALLY - Regenerate from schema.json -""" - -from django.db import models - - -class Status(models.TextChoices): - PENDING = "pending", "Pending" - PLANNED = "planned", "Planned" - BUILDING = "building", "Building" - DEV = "dev", "Dev" - LIVE = "live", "Live" - READY = "ready", "Ready" - - -class System(models.TextChoices): - ARTERY = "artery", "Artery" - ALBUM = "album", "Album" - WARD = "ward", "Ward" - - -# === Shared Components === - -class Nest(models.Model): - """Runtime environment configuration. Shared across artery, ward.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="nests") - config_path = models.CharField(max_length=255, blank=True, null=True) - - class Meta: - db_table = "pawprint_nest" - - def __str__(self): - return self.title - - -class Larder(models.Model): - """Data storage. When generated from Template = 'Book (written)'. Independent in ward/artery.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="larders") - source_template = models.CharField(max_length=255, blank=True, null=True, help_text="Template name if generated") - data_path = models.CharField(max_length=255, blank=True, null=True, help_text="Path to data files") - - class Meta: - db_table = "pawprint_larder" - - def __str__(self): - return self.title - - -# === System-Specific Components === - -class Vein(models.Model): - """Connector (artery). Single responsibility.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="veins") - system = models.CharField(max_length=20, default="artery", editable=False) - - class Meta: - db_table = "pawprint_vein" - - def __str__(self): - return self.title - - -class Template(models.Model): - """Documentation template (album). Gherkin, BDD patterns.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="templates") - template_path = models.CharField(max_length=255, blank=True, null=True, help_text="Path to template files") - system = models.CharField(max_length=20, default="album", editable=False) - - class Meta: - db_table = "pawprint_template" - - def __str__(self): - return self.title - - -class Tool(models.Model): - """Execution tool (ward). Test runners, seeders.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="tools") - system = models.CharField(max_length=20, default="ward", editable=False) - - class Meta: - db_table = "pawprint_tool" - - def __str__(self): - return self.title - - -class Monitor(models.Model): - """Service monitor (ward). Health checks, status watchers.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="monitors") - system = models.CharField(max_length=20, default="ward", editable=False) - - class Meta: - db_table = "pawprint_monitor" - - def __str__(self): - return self.title - - -class Cabinet(models.Model): - """Tool cabinet (ward). Contains 0+ tools.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="cabinets") - tools = models.ManyToManyField(Tool, blank=True) - system = models.CharField(max_length=20, default="ward", editable=False) - - class Meta: - db_table = "pawprint_cabinet" - - def __str__(self): - return self.title - - -# === Composed Types === - -class Pulse(models.Model): - """Composed data flow (artery). Pulse = Vein + Nest + Larder.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses") - vein = models.ForeignKey(Vein, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses") - nest = models.ForeignKey(Nest, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses") - larder = models.ForeignKey(Larder, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses") - system = models.CharField(max_length=20, default="artery", editable=False) - - class Meta: - db_table = "pawprint_pulse" - - def __str__(self): - return self.title - - -class Book(models.Model): - """Composed documentation (album). Book = Template + Larder.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="books") - template = models.ForeignKey(Template, on_delete=models.SET_NULL, blank=True, null=True, related_name="books") - larder = models.ForeignKey(Larder, on_delete=models.SET_NULL, blank=True, null=True, related_name="books") - output_larder = models.ForeignKey(Larder, on_delete=models.SET_NULL, blank=True, null=True, related_name="books") - system = models.CharField(max_length=20, default="album", editable=False) - - class Meta: - db_table = "pawprint_book" - - def __str__(self): - return self.title - - -class Table(models.Model): - """Composed execution bundle (ward). Table = Cabinet + Nest + Larders.""" - name = models.CharField(max_length=255, help_text="Unique identifier") - slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier") - title = models.CharField(max_length=255, help_text="Display title for UI") - status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="tables") - cabinet = models.ForeignKey(Cabinet, on_delete=models.SET_NULL, blank=True, null=True, related_name="tables") - nest = models.ForeignKey(Nest, on_delete=models.SET_NULL, blank=True, null=True, related_name="tables") - larders = models.ManyToManyField(Larder, blank=True) - system = models.CharField(max_length=20, default="ward", editable=False) - - class Meta: - db_table = "pawprint_table" - - def __str__(self): - return self.title - diff --git a/cfg/amar/models/prisma/schema.prisma b/cfg/amar/models/prisma/schema.prisma deleted file mode 100644 index 4c7a8c6..0000000 --- a/cfg/amar/models/prisma/schema.prisma +++ /dev/null @@ -1,213 +0,0 @@ -// Prisma schema - Generated from schema.json -// -// DO NOT EDIT MANUALLY - Regenerate from schema.json - -generator client { - provider = "prisma-client-js" -} - -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} - -enum Status { - PENDING - PLANNED - BUILDING - DEV - LIVE - READY -} - -enum System { - ARTERY - ALBUM - WARD -} - -// === Shared Components === - -/// Runtime environment configuration. Shared across artery, ward. -model Nest { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - config_path String? - - @@map("pawprint_nest") -} - -/// Data storage. When generated from Template = 'Book (written)'. Independent in ward/artery. -model Larder { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - source_template String? - data_path String? - - @@map("pawprint_larder") -} - -// === System-Specific Components === - -/// Connector (artery). Single responsibility. -model Vein { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - system String @default("artery") - - @@map("pawprint_vein") -} - -/// Documentation template (album). Gherkin, BDD patterns. -model Template { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - template_path String? - system String @default("album") - - @@map("pawprint_template") -} - -/// Execution tool (ward). Test runners, seeders. -model Tool { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - system String @default("ward") - - @@map("pawprint_tool") -} - -/// Service monitor (ward). Health checks, status watchers. -model Monitor { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - system String @default("ward") - - @@map("pawprint_monitor") -} - -/// Tool cabinet (ward). Contains 0+ tools. -model Cabinet { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - tools Tool[] - system String @default("ward") - - @@map("pawprint_cabinet") -} - -// === Composed Types === - -/// Composed data flow (artery). Pulse = Vein + Nest + Larder. -model Pulse { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - vein Vein? @relation(fields: [veinId], references: [id]) - veinId Int? - nest Nest? @relation(fields: [nestId], references: [id]) - nestId Int? - larder Larder? @relation(fields: [larderId], references: [id]) - larderId Int? - system String @default("artery") - - @@map("pawprint_pulse") -} - -/// Composed documentation (album). Book = Template + Larder. -model Book { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - template Template? @relation(fields: [templateId], references: [id]) - templateId Int? - larder Larder? @relation(fields: [larderId], references: [id]) - larderId Int? - output_larder Larder? @relation(fields: [output_larderId], references: [id]) - output_larderId Int? - system String @default("album") - - @@map("pawprint_book") -} - -/// Composed execution bundle (ward). Table = Cabinet + Nest + Larders. -model Table { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - name String @unique - slug String @unique - title String - status Status? @relation(fields: [statusId], references: [id]) - statusId Int? - cabinet Cabinet? @relation(fields: [cabinetId], references: [id]) - cabinetId Int? - nest Nest? @relation(fields: [nestId], references: [id]) - nestId Int? - larders Larder[] - system String @default("ward") - - @@map("pawprint_table") -} diff --git a/cfg/amar/models/pydantic/__init__.py b/cfg/amar/models/pydantic/__init__.py deleted file mode 100644 index 378e0ab..0000000 --- a/cfg/amar/models/pydantic/__init__.py +++ /dev/null @@ -1,187 +0,0 @@ -""" -Pydantic models - Generated from schema.json - -DO NOT EDIT MANUALLY - Regenerate from schema.json -""" - -from enum import Enum -from typing import Optional, List, Literal -from pydantic import BaseModel, Field - - -class Status(str, Enum): - PENDING = "pending" - PLANNED = "planned" - BUILDING = "building" - DEV = "dev" - LIVE = "live" - READY = "ready" - - -class System(str, Enum): - ARTERY = "artery" - ALBUM = "album" - WARD = "ward" - - -class ToolType(str, Enum): - APP = "app" - CLI = "cli" - - -# === Shared Components === - -class Nest(BaseModel): - """Runtime environment configuration. Shared across artery, ward.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - config_path: Optional[str] = None - - -class Larder(BaseModel): - """Data storage. When generated from Template = 'Book (written)'. Independent in ward/artery.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - source_template: Optional[str] = None - data_path: Optional[str] = None - - -# === System-Specific Components === - -class Vein(BaseModel): - """Connector (artery). Single responsibility.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - system: Literal["artery"] = "artery" - mock: Optional[bool] = None - description: Optional[str] = None - - -class Template(BaseModel): - """Documentation template (album). Gherkin, BDD patterns.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - template_path: Optional[str] = None - system: Literal["album"] = "album" - - -class Tool(BaseModel): - """Execution tool (ward). Test runners, seeders.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - system: Literal["ward"] = "ward" - type: Optional[ToolType] = None - description: Optional[str] = None - path: Optional[str] = None - url: Optional[str] = None - cli: Optional[str] = None - - -class Monitor(BaseModel): - """Service monitor (ward). Health checks, status watchers.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - system: Literal["ward"] = "ward" - - -class Cabinet(BaseModel): - """Tool cabinet (ward). Contains 0+ tools.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - tools: List[Tool] = Field(default_factory=list) - system: Literal["ward"] = "ward" - - -# === Composed Types === - -class Pulse(BaseModel): - """Composed data flow (artery). Pulse = Vein + Nest + Larder.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - vein: Optional[Vein] = None - nest: Optional[Nest] = None - larder: Optional[Larder] = None - system: Literal["artery"] = "artery" - - -class Book(BaseModel): - """Composed documentation (album). Book = Template + Larder.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - template: Optional[Template] = None - larder: Optional[Larder] = None - output_larder: Optional[Larder] = None - system: Literal["album"] = "album" - - -class Table(BaseModel): - """Composed execution bundle (ward). Table = Cabinet + Nest + Larders.""" - name: str # Unique identifier - slug: str # URL-friendly identifier - title: str # Display title for UI - status: Optional[Status] = None - cabinet: Optional[Cabinet] = None - nest: Optional[Nest] = None - larders: List[Larder] = Field(default_factory=list) - system: Literal["ward"] = "ward" - - -# === Collection wrappers for JSON files === - -class NestCollection(BaseModel): - items: List[Nest] = Field(default_factory=list) - - -class LarderCollection(BaseModel): - items: List[Larder] = Field(default_factory=list) - - -class VeinCollection(BaseModel): - items: List[Vein] = Field(default_factory=list) - - -class TemplateCollection(BaseModel): - items: List[Template] = Field(default_factory=list) - - -class ToolCollection(BaseModel): - items: List[Tool] = Field(default_factory=list) - - -class MonitorCollection(BaseModel): - items: List[Monitor] = Field(default_factory=list) - - -class CabinetCollection(BaseModel): - items: List[Cabinet] = Field(default_factory=list) - - -class PulseCollection(BaseModel): - items: List[Pulse] = Field(default_factory=list) - - -class BookCollection(BaseModel): - items: List[Book] = Field(default_factory=list) - - -class TableCollection(BaseModel): - items: List[Table] = Field(default_factory=list) - diff --git a/cfg/amar/models/schema.json b/cfg/amar/models/schema.json deleted file mode 100644 index d7bcb20..0000000 --- a/cfg/amar/models/schema.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Pawprint Models", - "description": "Platform-agnostic model definitions. Portable to TypeScript, Pydantic, Django, Prisma.", - "definitions": { - "Status": { - "type": "string", - "enum": ["pending", "planned", "building", "dev", "live", "ready"] - }, - "System": { - "type": "string", - "enum": ["artery", "album", "ward"] - }, - "Nest": { - "type": "object", - "description": "Runtime environment configuration. Shared across artery, ward.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "config_path": { "type": "string" } - }, - "required": ["name", "slug", "title"] - }, - "Larder": { - "type": "object", - "description": "Data storage. When generated from Template = 'Book (written)'. Independent in ward/artery.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "source_template": { "type": "string", "description": "Template name if generated" }, - "data_path": { "type": "string", "description": "Path to data files" } - }, - "required": ["name", "slug", "title"] - }, - "Vein": { - "type": "object", - "description": "Connector (artery). Single responsibility.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "system": { "const": "artery" } - }, - "required": ["name", "slug", "title"] - }, - "Template": { - "type": "object", - "description": "Documentation template (album). Gherkin, BDD patterns.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "template_path": { "type": "string", "description": "Path to template files" }, - "system": { "const": "album" } - }, - "required": ["name", "slug", "title"] - }, - "ToolType": { - "type": "string", - "enum": ["app", "cli"], - "description": "Type of tool: app (web UI) or cli (command line)" - }, - "Tool": { - "type": "object", - "description": "Execution tool (ward). Test runners, seeders.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "system": { "const": "ward" }, - "type": { "$ref": "#/definitions/ToolType" }, - "description": { "type": "string", "description": "Human-readable description" }, - "path": { "type": "string", "description": "Path to tool source" }, - "url": { "type": "string", "description": "URL path for app tools" }, - "cli": { "type": "string", "description": "CLI command for cli tools" } - }, - "required": ["name", "slug", "title"] - }, - "Monitor": { - "type": "object", - "description": "Service monitor (ward). Health checks, status watchers.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "system": { "const": "ward" } - }, - "required": ["name", "slug", "title"] - }, - "Cabinet": { - "type": "object", - "description": "Tool cabinet (ward). Contains 0+ tools.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "tools": { - "type": "array", - "items": { "$ref": "#/definitions/Tool" } - }, - "system": { "const": "ward" } - }, - "required": ["name", "slug", "title"] - }, - "Pulse": { - "type": "object", - "description": "Composed data flow (artery). Pulse = Vein + Nest + Larder.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "vein": { "$ref": "#/definitions/Vein" }, - "nest": { "$ref": "#/definitions/Nest" }, - "larder": { "$ref": "#/definitions/Larder" }, - "system": { "const": "artery" } - }, - "required": ["name", "slug", "title"] - }, - "Book": { - "type": "object", - "description": "Composed documentation (album). Book = Template + Larder.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "template": { "$ref": "#/definitions/Template" }, - "larder": { "$ref": "#/definitions/Larder" }, - "output_larder": { "$ref": "#/definitions/Larder" }, - "system": { "const": "album" } - }, - "required": ["name", "slug", "title"] - }, - "Table": { - "type": "object", - "description": "Composed execution bundle (ward). Table = Cabinet + Nest + Larders.", - "properties": { - "name": { "type": "string", "description": "Unique identifier" }, - "slug": { "type": "string", "description": "URL-friendly identifier" }, - "title": { "type": "string", "description": "Display title for UI" }, - "status": { "$ref": "#/definitions/Status" }, - "cabinet": { "$ref": "#/definitions/Cabinet" }, - "nest": { "$ref": "#/definitions/Nest" }, - "larders": { - "type": "array", - "items": { "$ref": "#/definitions/Larder" } - }, - "system": { "const": "ward" } - }, - "required": ["name", "slug", "title"] - } - } -} diff --git a/cfg/amar/artery/shunts/amar/.env.example b/cfg/amar/soleprint/artery/shunts/amar/.env.example similarity index 100% rename from cfg/amar/artery/shunts/amar/.env.example rename to cfg/amar/soleprint/artery/shunts/amar/.env.example diff --git a/cfg/amar/artery/shunts/amar/README.md b/cfg/amar/soleprint/artery/shunts/amar/README.md similarity index 100% rename from cfg/amar/artery/shunts/amar/README.md rename to cfg/amar/soleprint/artery/shunts/amar/README.md diff --git a/cfg/amar/artery/shunts/amar/__init__.py b/cfg/amar/soleprint/artery/shunts/amar/__init__.py similarity index 100% rename from cfg/amar/artery/shunts/amar/__init__.py rename to cfg/amar/soleprint/artery/shunts/amar/__init__.py diff --git a/cfg/amar/artery/shunts/amar/api/__init__.py b/cfg/amar/soleprint/artery/shunts/amar/api/__init__.py similarity index 100% rename from cfg/amar/artery/shunts/amar/api/__init__.py rename to cfg/amar/soleprint/artery/shunts/amar/api/__init__.py diff --git a/cfg/amar/artery/shunts/amar/api/routes.py b/cfg/amar/soleprint/artery/shunts/amar/api/routes.py similarity index 100% rename from cfg/amar/artery/shunts/amar/api/routes.py rename to cfg/amar/soleprint/artery/shunts/amar/api/routes.py diff --git a/cfg/amar/artery/shunts/amar/core/__init__.py b/cfg/amar/soleprint/artery/shunts/amar/core/__init__.py similarity index 100% rename from cfg/amar/artery/shunts/amar/core/__init__.py rename to cfg/amar/soleprint/artery/shunts/amar/core/__init__.py diff --git a/cfg/amar/artery/shunts/amar/core/config.py b/cfg/amar/soleprint/artery/shunts/amar/core/config.py similarity index 100% rename from cfg/amar/artery/shunts/amar/core/config.py rename to cfg/amar/soleprint/artery/shunts/amar/core/config.py diff --git a/cfg/amar/artery/shunts/amar/main.py b/cfg/amar/soleprint/artery/shunts/amar/main.py similarity index 100% rename from cfg/amar/artery/shunts/amar/main.py rename to cfg/amar/soleprint/artery/shunts/amar/main.py diff --git a/cfg/amar/artery/shunts/amar/requirements.txt b/cfg/amar/soleprint/artery/shunts/amar/requirements.txt similarity index 100% rename from cfg/amar/artery/shunts/amar/requirements.txt rename to cfg/amar/soleprint/artery/shunts/amar/requirements.txt diff --git a/cfg/amar/artery/shunts/amar/run.py b/cfg/amar/soleprint/artery/shunts/amar/run.py similarity index 100% rename from cfg/amar/artery/shunts/amar/run.py rename to cfg/amar/soleprint/artery/shunts/amar/run.py diff --git a/cfg/amar/artery/shunts/amar/templates/index.html b/cfg/amar/soleprint/artery/shunts/amar/templates/index.html similarity index 100% rename from cfg/amar/artery/shunts/amar/templates/index.html rename to cfg/amar/soleprint/artery/shunts/amar/templates/index.html diff --git a/cfg/amar/atlas/books/arch/01-backend-architecture.dot b/cfg/amar/soleprint/atlas/books/arch/01-backend-architecture.dot similarity index 100% rename from cfg/amar/atlas/books/arch/01-backend-architecture.dot rename to cfg/amar/soleprint/atlas/books/arch/01-backend-architecture.dot diff --git a/cfg/amar/atlas/books/arch/01-backend-architecture.svg b/cfg/amar/soleprint/atlas/books/arch/01-backend-architecture.svg similarity index 100% rename from cfg/amar/atlas/books/arch/01-backend-architecture.svg rename to cfg/amar/soleprint/atlas/books/arch/01-backend-architecture.svg diff --git a/cfg/amar/atlas/books/arch/02-frontend-architecture.dot b/cfg/amar/soleprint/atlas/books/arch/02-frontend-architecture.dot similarity index 100% rename from cfg/amar/atlas/books/arch/02-frontend-architecture.dot rename to cfg/amar/soleprint/atlas/books/arch/02-frontend-architecture.dot diff --git a/cfg/amar/atlas/books/arch/02-frontend-architecture.svg b/cfg/amar/soleprint/atlas/books/arch/02-frontend-architecture.svg similarity index 100% rename from cfg/amar/atlas/books/arch/02-frontend-architecture.svg rename to cfg/amar/soleprint/atlas/books/arch/02-frontend-architecture.svg diff --git a/cfg/amar/atlas/books/arch/03-data-model.dot b/cfg/amar/soleprint/atlas/books/arch/03-data-model.dot similarity index 100% rename from cfg/amar/atlas/books/arch/03-data-model.dot rename to cfg/amar/soleprint/atlas/books/arch/03-data-model.dot diff --git a/cfg/amar/atlas/books/arch/03-data-model.svg b/cfg/amar/soleprint/atlas/books/arch/03-data-model.svg similarity index 100% rename from cfg/amar/atlas/books/arch/03-data-model.svg rename to cfg/amar/soleprint/atlas/books/arch/03-data-model.svg diff --git a/cfg/amar/atlas/books/arch/04-data-model-simple.dot b/cfg/amar/soleprint/atlas/books/arch/04-data-model-simple.dot similarity index 100% rename from cfg/amar/atlas/books/arch/04-data-model-simple.dot rename to cfg/amar/soleprint/atlas/books/arch/04-data-model-simple.dot diff --git a/cfg/amar/atlas/books/arch/04-data-model-simple.svg b/cfg/amar/soleprint/atlas/books/arch/04-data-model-simple.svg similarity index 100% rename from cfg/amar/atlas/books/arch/04-data-model-simple.svg rename to cfg/amar/soleprint/atlas/books/arch/04-data-model-simple.svg diff --git a/cfg/amar/atlas/books/arch/graph.html b/cfg/amar/soleprint/atlas/books/arch/graph.html similarity index 100% rename from cfg/amar/atlas/books/arch/graph.html rename to cfg/amar/soleprint/atlas/books/arch/graph.html diff --git a/cfg/amar/atlas/books/arch/index.html b/cfg/amar/soleprint/atlas/books/arch/index.html similarity index 100% rename from cfg/amar/atlas/books/arch/index.html rename to cfg/amar/soleprint/atlas/books/arch/index.html diff --git a/cfg/amar/atlas/books/arch/styles.css b/cfg/amar/soleprint/atlas/books/arch/styles.css similarity index 100% rename from cfg/amar/atlas/books/arch/styles.css rename to cfg/amar/soleprint/atlas/books/arch/styles.css diff --git a/cfg/amar/atlas/books/drive-index/index.html b/cfg/amar/soleprint/atlas/books/drive-index/index.html similarity index 100% rename from cfg/amar/atlas/books/drive-index/index.html rename to cfg/amar/soleprint/atlas/books/drive-index/index.html diff --git a/cfg/amar/atlas/books/drive-index/index.md b/cfg/amar/soleprint/atlas/books/drive-index/index.md similarity index 100% rename from cfg/amar/atlas/books/drive-index/index.md rename to cfg/amar/soleprint/atlas/books/drive-index/index.md diff --git a/cfg/amar/atlas/books/feature-form-samples/CLAUDE.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/CLAUDE.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/CLAUDE.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/CLAUDE.md diff --git a/cfg/amar/atlas/books/feature-form-samples/detail.html b/cfg/amar/soleprint/atlas/books/feature-form-samples/detail.html similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/detail.html rename to cfg/amar/soleprint/atlas/books/feature-form-samples/detail.html diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/.larder b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/.larder similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/.larder rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/.larder diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/01-gestion-solicitudes.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/01-gestion-solicitudes.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/01-gestion-solicitudes.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/01-gestion-solicitudes.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/02-gestion-usuarios.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/02-gestion-usuarios.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/02-gestion-usuarios.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/02-gestion-usuarios.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/03-gestion-servicios.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/03-gestion-servicios.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/03-gestion-servicios.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/03-gestion-servicios.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/04-reembolsos.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/04-reembolsos.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/04-reembolsos.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/04-reembolsos.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/05-reportes.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/05-reportes.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/backoffice/05-reportes.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/backoffice/05-reportes.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/01-registro.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/01-registro.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/01-registro.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/01-registro.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/02-reservar-turno.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/02-reservar-turno.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/02-reservar-turno.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/02-reservar-turno.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/03-gestion-mascotas.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/03-gestion-mascotas.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/03-gestion-mascotas.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/03-gestion-mascotas.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/04-pago-turno.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/04-pago-turno.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/04-pago-turno.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/04-pago-turno.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/05-historial-medico.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/05-historial-medico.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/pet-owner/05-historial-medico.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/pet-owner/05-historial-medico.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/01-aceptar-solicitud.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/01-aceptar-solicitud.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/01-aceptar-solicitud.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/01-aceptar-solicitud.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/02-gestion-agenda.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/02-gestion-agenda.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/02-gestion-agenda.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/02-gestion-agenda.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/03-realizar-visita.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/03-realizar-visita.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/03-realizar-visita.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/03-realizar-visita.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/04-zonas-cobertura.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/04-zonas-cobertura.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/04-zonas-cobertura.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/04-zonas-cobertura.md diff --git a/cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/05-historial-pacientes.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/05-historial-pacientes.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/feature-form/veterinarian/05-historial-pacientes.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/feature-form/veterinarian/05-historial-pacientes.md diff --git a/cfg/amar/atlas/books/feature-form-samples/index.html b/cfg/amar/soleprint/atlas/books/feature-form-samples/index.html similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/index.html rename to cfg/amar/soleprint/atlas/books/feature-form-samples/index.html diff --git a/cfg/amar/atlas/books/feature-form-samples/template/feature-form.md b/cfg/amar/soleprint/atlas/books/feature-form-samples/template/feature-form.md similarity index 100% rename from cfg/amar/atlas/books/feature-form-samples/template/feature-form.md rename to cfg/amar/soleprint/atlas/books/feature-form-samples/template/feature-form.md diff --git a/cfg/amar/atlas/books/gherkin-samples/CLAUDE.md b/cfg/amar/soleprint/atlas/books/gherkin-samples/CLAUDE.md similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/CLAUDE.md rename to cfg/amar/soleprint/atlas/books/gherkin-samples/CLAUDE.md diff --git a/cfg/amar/atlas/books/gherkin-samples/detail.html b/cfg/amar/soleprint/atlas/books/gherkin-samples/detail.html similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/detail.html rename to cfg/amar/soleprint/atlas/books/gherkin-samples/detail.html diff --git a/cfg/amar/atlas/books/gherkin-samples/en/backoffice/01-gestion-solicitudes.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/01-gestion-solicitudes.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/backoffice/01-gestion-solicitudes.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/01-gestion-solicitudes.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/backoffice/02-gestion-usuarios.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/02-gestion-usuarios.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/backoffice/02-gestion-usuarios.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/02-gestion-usuarios.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/backoffice/03-gestion-servicios.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/03-gestion-servicios.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/backoffice/03-gestion-servicios.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/03-gestion-servicios.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/backoffice/04-reembolsos.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/04-reembolsos.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/backoffice/04-reembolsos.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/04-reembolsos.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/backoffice/05-reportes.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/05-reportes.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/backoffice/05-reportes.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/backoffice/05-reportes.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/pet-owner/01-registro.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/01-registro.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/pet-owner/01-registro.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/01-registro.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/pet-owner/02-reservar-turno.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/02-reservar-turno.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/pet-owner/02-reservar-turno.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/02-reservar-turno.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/pet-owner/03-gestion-mascotas.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/03-gestion-mascotas.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/pet-owner/03-gestion-mascotas.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/03-gestion-mascotas.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/pet-owner/04-pago-turno.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/04-pago-turno.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/pet-owner/04-pago-turno.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/04-pago-turno.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/pet-owner/05-historial-medico.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/05-historial-medico.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/pet-owner/05-historial-medico.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/pet-owner/05-historial-medico.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/veterinarian/01-aceptar-solicitud.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/01-aceptar-solicitud.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/veterinarian/01-aceptar-solicitud.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/01-aceptar-solicitud.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/veterinarian/02-gestion-agenda.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/02-gestion-agenda.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/veterinarian/02-gestion-agenda.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/02-gestion-agenda.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/veterinarian/03-realizar-visita.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/03-realizar-visita.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/veterinarian/03-realizar-visita.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/03-realizar-visita.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/veterinarian/04-zonas-cobertura.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/04-zonas-cobertura.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/veterinarian/04-zonas-cobertura.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/04-zonas-cobertura.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/en/veterinarian/05-historial-pacientes.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/05-historial-pacientes.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/en/veterinarian/05-historial-pacientes.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/en/veterinarian/05-historial-pacientes.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/backoffice/01-gestion-solicitudes.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/01-gestion-solicitudes.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/backoffice/01-gestion-solicitudes.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/01-gestion-solicitudes.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/backoffice/02-gestion-usuarios.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/02-gestion-usuarios.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/backoffice/02-gestion-usuarios.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/02-gestion-usuarios.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/backoffice/03-gestion-servicios.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/03-gestion-servicios.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/backoffice/03-gestion-servicios.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/03-gestion-servicios.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/backoffice/04-reembolsos.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/04-reembolsos.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/backoffice/04-reembolsos.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/04-reembolsos.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/backoffice/05-reportes.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/05-reportes.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/backoffice/05-reportes.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/backoffice/05-reportes.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/pet-owner/01-registro.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/01-registro.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/pet-owner/01-registro.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/01-registro.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/pet-owner/02-reservar-turno.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/02-reservar-turno.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/pet-owner/02-reservar-turno.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/02-reservar-turno.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/pet-owner/03-gestion-mascotas.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/03-gestion-mascotas.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/pet-owner/03-gestion-mascotas.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/03-gestion-mascotas.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/pet-owner/04-pago-turno.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/04-pago-turno.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/pet-owner/04-pago-turno.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/04-pago-turno.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/pet-owner/05-historial-medico.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/05-historial-medico.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/pet-owner/05-historial-medico.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/pet-owner/05-historial-medico.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/veterinarian/01-aceptar-solicitud.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/01-aceptar-solicitud.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/veterinarian/01-aceptar-solicitud.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/01-aceptar-solicitud.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/veterinarian/02-gestion-agenda.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/02-gestion-agenda.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/veterinarian/02-gestion-agenda.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/02-gestion-agenda.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/veterinarian/03-realizar-visita.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/03-realizar-visita.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/veterinarian/03-realizar-visita.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/03-realizar-visita.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/veterinarian/04-zonas-cobertura.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/04-zonas-cobertura.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/veterinarian/04-zonas-cobertura.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/04-zonas-cobertura.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/es/veterinarian/05-historial-pacientes.feature b/cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/05-historial-pacientes.feature similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/es/veterinarian/05-historial-pacientes.feature rename to cfg/amar/soleprint/atlas/books/gherkin-samples/es/veterinarian/05-historial-pacientes.feature diff --git a/cfg/amar/atlas/books/gherkin-samples/index.html b/cfg/amar/soleprint/atlas/books/gherkin-samples/index.html similarity index 100% rename from cfg/amar/atlas/books/gherkin-samples/index.html rename to cfg/amar/soleprint/atlas/books/gherkin-samples/index.html diff --git a/cfg/amar/station/monitors/turnos/__init__.py b/cfg/amar/soleprint/station/monitors/turnos/__init__.py similarity index 100% rename from cfg/amar/station/monitors/turnos/__init__.py rename to cfg/amar/soleprint/station/monitors/turnos/__init__.py diff --git a/cfg/amar/station/monitors/turnos/index.html b/cfg/amar/soleprint/station/monitors/turnos/index.html similarity index 100% rename from cfg/amar/station/monitors/turnos/index.html rename to cfg/amar/soleprint/station/monitors/turnos/index.html diff --git a/cfg/amar/station/monitors/turnos/list.html b/cfg/amar/soleprint/station/monitors/turnos/list.html similarity index 100% rename from cfg/amar/station/monitors/turnos/list.html rename to cfg/amar/soleprint/station/monitors/turnos/list.html diff --git a/cfg/amar/station/monitors/turnos/main.py b/cfg/amar/soleprint/station/monitors/turnos/main.py similarity index 100% rename from cfg/amar/station/monitors/turnos/main.py rename to cfg/amar/soleprint/station/monitors/turnos/main.py diff --git a/cfg/amar/station/tools/databrowse/depot/scenarios.json b/cfg/amar/soleprint/station/tools/databrowse/depot/scenarios.json similarity index 100% rename from cfg/amar/station/tools/databrowse/depot/scenarios.json rename to cfg/amar/soleprint/station/tools/databrowse/depot/scenarios.json diff --git a/cfg/amar/station/tools/databrowse/depot/schema.json b/cfg/amar/soleprint/station/tools/databrowse/depot/schema.json similarity index 100% rename from cfg/amar/station/tools/databrowse/depot/schema.json rename to cfg/amar/soleprint/station/tools/databrowse/depot/schema.json diff --git a/cfg/amar/station/tools/databrowse/depot/views.json b/cfg/amar/soleprint/station/tools/databrowse/depot/views.json similarity index 100% rename from cfg/amar/station/tools/databrowse/depot/views.json rename to cfg/amar/soleprint/station/tools/databrowse/depot/views.json diff --git a/cfg/amar/station/tools/datagen/amar.py b/cfg/amar/soleprint/station/tools/datagen/amar.py similarity index 100% rename from cfg/amar/station/tools/datagen/amar.py rename to cfg/amar/soleprint/station/tools/datagen/amar.py diff --git a/cfg/amar/station/tools/tester/tests/README.md b/cfg/amar/soleprint/station/tools/tester/tests/README.md similarity index 100% rename from cfg/amar/station/tools/tester/tests/README.md rename to cfg/amar/soleprint/station/tools/tester/tests/README.md diff --git a/cfg/amar/station/tools/tester/tests/__init__.py b/cfg/amar/soleprint/station/tools/tester/tests/__init__.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/__init__.py rename to cfg/amar/soleprint/station/tools/tester/tests/__init__.py diff --git a/cfg/amar/station/tools/tester/tests/base.py b/cfg/amar/soleprint/station/tools/tester/tests/base.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/base.py rename to cfg/amar/soleprint/station/tools/tester/tests/base.py diff --git a/cfg/amar/station/tools/tester/tests/conftest.py b/cfg/amar/soleprint/station/tools/tester/tests/conftest.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/conftest.py rename to cfg/amar/soleprint/station/tools/tester/tests/conftest.py diff --git a/cfg/amar/station/tools/tester/tests/endpoints.py b/cfg/amar/soleprint/station/tools/tester/tests/endpoints.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/endpoints.py rename to cfg/amar/soleprint/station/tools/tester/tests/endpoints.py diff --git a/cfg/amar/station/tools/tester/tests/helpers.py b/cfg/amar/soleprint/station/tools/tester/tests/helpers.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/helpers.py rename to cfg/amar/soleprint/station/tools/tester/tests/helpers.py diff --git a/cfg/amar/station/tools/tester/tests/mascotas/__init__.py b/cfg/amar/soleprint/station/tools/tester/tests/mascotas/__init__.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/mascotas/__init__.py rename to cfg/amar/soleprint/station/tools/tester/tests/mascotas/__init__.py diff --git a/cfg/amar/station/tools/tester/tests/mascotas/test_coverage.py b/cfg/amar/soleprint/station/tools/tester/tests/mascotas/test_coverage.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/mascotas/test_coverage.py rename to cfg/amar/soleprint/station/tools/tester/tests/mascotas/test_coverage.py diff --git a/cfg/amar/station/tools/tester/tests/mascotas/test_pet_owners.py b/cfg/amar/soleprint/station/tools/tester/tests/mascotas/test_pet_owners.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/mascotas/test_pet_owners.py rename to cfg/amar/soleprint/station/tools/tester/tests/mascotas/test_pet_owners.py diff --git a/cfg/amar/station/tools/tester/tests/mascotas/test_pets.py b/cfg/amar/soleprint/station/tools/tester/tests/mascotas/test_pets.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/mascotas/test_pets.py rename to cfg/amar/soleprint/station/tools/tester/tests/mascotas/test_pets.py diff --git a/cfg/amar/station/tools/tester/tests/productos/__init__.py b/cfg/amar/soleprint/station/tools/tester/tests/productos/__init__.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/productos/__init__.py rename to cfg/amar/soleprint/station/tools/tester/tests/productos/__init__.py diff --git a/cfg/amar/station/tools/tester/tests/productos/test_cart.py b/cfg/amar/soleprint/station/tools/tester/tests/productos/test_cart.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/productos/test_cart.py rename to cfg/amar/soleprint/station/tools/tester/tests/productos/test_cart.py diff --git a/cfg/amar/station/tools/tester/tests/productos/test_categories.py b/cfg/amar/soleprint/station/tools/tester/tests/productos/test_categories.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/productos/test_categories.py rename to cfg/amar/soleprint/station/tools/tester/tests/productos/test_categories.py diff --git a/cfg/amar/station/tools/tester/tests/productos/test_services.py b/cfg/amar/soleprint/station/tools/tester/tests/productos/test_services.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/productos/test_services.py rename to cfg/amar/soleprint/station/tools/tester/tests/productos/test_services.py diff --git a/cfg/amar/station/tools/tester/tests/solicitudes/__init__.py b/cfg/amar/soleprint/station/tools/tester/tests/solicitudes/__init__.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/solicitudes/__init__.py rename to cfg/amar/soleprint/station/tools/tester/tests/solicitudes/__init__.py diff --git a/cfg/amar/station/tools/tester/tests/solicitudes/test_service_requests.py b/cfg/amar/soleprint/station/tools/tester/tests/solicitudes/test_service_requests.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/solicitudes/test_service_requests.py rename to cfg/amar/soleprint/station/tools/tester/tests/solicitudes/test_service_requests.py diff --git a/cfg/amar/station/tools/tester/tests/workflows/__init__.py b/cfg/amar/soleprint/station/tools/tester/tests/workflows/__init__.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/workflows/__init__.py rename to cfg/amar/soleprint/station/tools/tester/tests/workflows/__init__.py diff --git a/cfg/amar/station/tools/tester/tests/workflows/test_turnero_general.py b/cfg/amar/soleprint/station/tools/tester/tests/workflows/test_turnero_general.py similarity index 100% rename from cfg/amar/station/tools/tester/tests/workflows/test_turnero_general.py rename to cfg/amar/soleprint/station/tools/tester/tests/workflows/test_turnero_general.py diff --git a/ctrl/build.sh b/soleprint/ctrl/build.sh similarity index 100% rename from ctrl/build.sh rename to soleprint/ctrl/build.sh diff --git a/ctrl/logs.sh b/soleprint/ctrl/logs.sh similarity index 100% rename from ctrl/logs.sh rename to soleprint/ctrl/logs.sh diff --git a/ctrl/start.sh b/soleprint/ctrl/start.sh similarity index 100% rename from ctrl/start.sh rename to soleprint/ctrl/start.sh diff --git a/ctrl/stop.sh b/soleprint/ctrl/stop.sh similarity index 100% rename from ctrl/stop.sh rename to soleprint/ctrl/stop.sh diff --git a/soleprint/run.py b/soleprint/run.py index 01710d1..a6a5459 100644 --- a/soleprint/run.py +++ b/soleprint/run.py @@ -95,7 +95,7 @@ def scan_directory(base_path: Path, pattern: str = "*") -> list[dict]: def health(): return { "status": "ok", - "service": "soleprint-dev", + "service": "soleprint", "mode": "bare-metal", } @@ -274,6 +274,76 @@ def station_route(path: str): return {"system": "station", "path": path, "message": "Station route placeholder"} +# === Generate === + + +@app.get("/generate") +def generate_ui(): + """Serve the generation UI.""" + from fastapi.responses import FileResponse + + return FileResponse(SPR_ROOT / "generate.html") + + +@app.post("/api/generate") +def generate_config(req: dict): + """Generate a config.json for a new room.""" + config = load_config() + hub_port = config.get("framework", {}).get("hub_port", 12000) + system_ports = {s["key"]: s["port"] for s in config.get("systems", [])} + + framework = req.get("framework", {}) + systems = req.get("systems", {}) + managed = req.get("managed") + + result = { + "framework": { + "name": framework.get("name", "soleprint"), + "slug": framework.get("name", "soleprint").lower().replace(" ", "-"), + "version": "0.1.0", + "hub_port": hub_port, + }, + "systems": [ + { + "key": "data_flow", + "name": systems.get("artery", "artery"), + "port": system_ports.get("data_flow", 12001), + }, + { + "key": "documentation", + "name": systems.get("atlas", "atlas"), + "port": system_ports.get("documentation", 12002), + }, + { + "key": "execution", + "name": systems.get("station", "station"), + "port": system_ports.get("execution", 12003), + }, + ], + } + + if managed and managed.get("name"): + result["managed"] = {"name": managed["name"], "repos": managed.get("repos", {})} + + return {"config": result, "room_name": req.get("room_name")} + + +@app.post("/api/generate/preview") +def generate_preview(req: dict): + """Preview the generated folder structure.""" + room = req.get("room_name") or "room" + fw = req.get("framework", {}).get("name") or "soleprint" + managed = req.get("managed") + + lines = [f'gen/{room}/'] + if managed and managed.get("name"): + lines.append(f' {managed["name"]}/') + lines.append(' link/') + lines.append(f' {fw}/') + + return {"tree": "\n".join(lines)} + + # === Main ===