Files
cleveragents-core/scripts/create_template_db.py
T
HAL9000 18d00c04c4
CI / lint (pull_request) Failing after 1m15s
CI / quality (pull_request) Successful in 1m21s
CI / typecheck (pull_request) Successful in 1m34s
CI / security (pull_request) Successful in 1m37s
CI / coverage (pull_request) Has been skipped
CI / unit_tests (pull_request) Failing after 1m37s
CI / docker (pull_request) Has been skipped
CI / build (pull_request) Successful in 33s
CI / helm (pull_request) Successful in 26s
CI / push-validation (pull_request) Successful in 19s
CI / e2e_tests (pull_request) Successful in 3m20s
CI / integration_tests (pull_request) Successful in 4m32s
CI / status-check (pull_request) Failing after 3s
fix(skills): implement multi-scope agent skill discovery for global, project, and local tiers
Implements AgentSkillDiscovery class to support discovering Agent Skills from
multiple configured directories across three scopes (global, project, local).
Handles name collisions with precedence: local > project > global.

Adds comprehensive BDD test coverage for multi-scope discovery scenarios including:
- Global-only, project-only, and local-only discovery
- Combined discovery from all scopes
- Name collision resolution with proper precedence
- Non-existent and empty scope directory handling
- Multiple skills in same scope discovery

ISSUES CLOSED: #9369
2026-05-06 19:55:22 +00:00

69 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""Create a pre-migrated template SQLite database for fast test setup.
Instead of running 25 Alembic migrations per scenario (~0.5-3s each),
tests can copy this template file (~1ms) and get an identical schema.
Usage:
python scripts/create_template_db.py [output_path]
Default output: build/.template-migrated.db
"""
import sys
from pathlib import Path
# Ensure src/ is importable
src_dir = Path(__file__).resolve().parent.parent / "src"
sys.path.insert(0, str(src_dir))
def create_template(output_path: str = "build/.template-migrated.db") -> None:
"""Create a fully-migrated template SQLite database.
Uses Base.metadata.create_all() to create all tables in a single DDL
batch (~5ms), then stamps the alembic_version table with the head
revision so MigrationRunner sees no pending migrations.
"""
from alembic import command
from alembic.config import Config
from alembic.script import ScriptDirectory
from sqlalchemy import create_engine
from cleveragents.infrastructure.database.models import Base
out = Path(output_path)
out.parent.mkdir(parents=True, exist_ok=True)
# Remove existing template so we always create fresh
if out.exists():
out.unlink()
db_url = f"sqlite:///{out.resolve()}"
engine = create_engine(db_url, connect_args={"check_same_thread": False})
# Create all 33 tables in one fast DDL batch
Base.metadata.create_all(engine)
# Stamp alembic_version with the head revision so MigrationRunner
# sees the database as fully migrated (no pending migrations).
alembic_ini = Path(__file__).resolve().parent.parent / "alembic.ini"
cfg = Config(str(alembic_ini))
sd = ScriptDirectory.from_config(cfg)
head = sd.get_current_head()
if head is None:
msg = "No Alembic revisions found — cannot stamp template database."
raise RuntimeError(msg)
with engine.connect() as conn:
cfg.attributes["connection"] = conn
command.stamp(cfg, head)
conn.commit()
engine.dispose()
if __name__ == "__main__":
path = sys.argv[1] if len(sys.argv) > 1 else "build/.template-migrated.db"
create_template(path)