This commit is contained in:
2026-09-24 05:19:06 -04:00
commit 2cec225860
27 changed files with 2640 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
# CHANGELOG.md — ApiPilot
Tracciamento modifiche per data. Ogni entry include riferimenti precisi a file e righe.
## 2026-09-23 — versione 0.1.1
Aggiornamenti post-implementazione iniziale.
- [examples/demo_backend.py](examples/demo_backend.py#L264-L267) — Porta demo backend da 8000 a 9292.
- [examples/demo_backend.py](examples/demo_backend.py#L20-L41) — Demo senza autenticazione obbligatoria: introdotto `DEFAULT_USER = {"id": "demo-user", "role": "admin"}`, `get_current_user_optional` restituisce default se header manca o token sconosciuto.
- [examples/demo_backend.py](examples/demo_backend.py#L100-L172) — Rimosso 401 su endpoint demo: `create_order`, `restock_product` (senza blocco admin), `list_my_orders` ritornano sempre; ordini di default assegnati a `demo-user`.
- [examples/demo_backend.py](examples/demo_backend.py#L177-L185) — `install_apipilot` con `require_auth_for_http=False`.
- [examples/demo_backend.py](examples/demo_backend.py#L235-L260) — `/demo/chat` senza auth, con `auth_note` che spiega default user e token opzionali.
- [README.md](README.md#L15-L32) — Sezione Installazione con istruzioni `python -m venv .venv` + alternativa PEP 668.
- [README.md](README.md#L224-L260) — Sezione Demo backend: servizi `./demo.sh`, modalità veloce `./run_demo.sh`, manuale con venv; nota su demo senza auth obbligatoria.
- [run_demo.sh](run_demo.sh) — Script bash idempotente: crea `.venv` se mancante, installa `apipilot[test]`, avvia `uvicorn` su porta 9292 con reload.
- [demo.sh](demo.sh#L1-L208) — Servizio completo: `start` (background con PID+log), `stop` (graceful + SIGKILL fallback), `restart`, `status`, `logs [N]`, `help`. Nota auth aggiornata.
- [.gitignore](.gitignore) — Aggiunto `.venv/`, `.demo.pid`, `.demo.log`, `nohup.out`, cache pytest/mypy/ruff, `*.egg-info/`, build artifacts.
- Bump versione: [pyproject.toml](pyproject.toml#L7), [apipilot/__init__.py](apipilot/__init__.py#L38), [examples/demo_backend.py](examples/demo_backend.py#L11) e `/healthz` a 0.1.1.
## 2026-09-23 — versione 0.1.0
Prima implementazione completa.
- [pyproject.toml](pyproject.toml) — Scaffold progetto con deps FastAPI/Pydantic/httpx/jsonschema e optional [test]/[dev].
- [apipilot/__init__.py](apipilot/__init__.py) — API pubblica: `ApiPilot`, `install_apipilot`, `CompositeTool`, errori, tipi.
- [apipilot/errors.py](apipilot/errors.py) — Gerarchia eccezioni: `ApiPilotError`, `InvalidConfigurationError`, `DuplicateToolError`, `UnsupportedSchemaError`, `ToolNotFoundError`, `ArgumentValidationError`, `ExecutionError`.
- [apipilot/types.py](apipilot/types.py) — TypedDict (`ToolDefinition`, `ExecuteResponse`, `ApiPilotOpenAPIExtra`) e dataclass (`OperationInfo`, `ParamSpec`, `ToolRecord`).
- [apipilot/openapi_parser.py](apipilot/openapi_parser.py) — `extract_operations`, `build_tool_definition` (path/query/body, risoluzione $ref, conversioni schema JSON), `validate_operations` (nomi, duplicati, config incomplete).
- [apipilot/validation.py](apipilot/validation.py) — `validate_arguments` via jsonschema con errori strutturati.
- [apipilot/tool.py](apipilot/tool.py) — Protocollo `PilotTool` e `CompositeTool` runnabile asincrono.
- [apipilot/core.py](apipilot/core.py) — Classe `ApiPilot`: `register_fastapi_app`, `add_tool`, `tools_for(user)` con `allow_tool`, `execute(user, name, arguments)` (validazione, size-cap, timeout, errori strutturati), dispatch endpoint vs composite.
- [apipilot/fastapi.py](apipilot/fastapi.py) — `install_apipilot(...)` con wiring FastAPI; `GET /<prefix>/tools` e `POST /<prefix>/execute` opzionali con autenticazione dell'app ospite.
- [apipilot/adapters/__init__.py](apipilot/adapters/__init__.py) + [adapters/openai.py](apipilot/adapters/openai.py) — Adapter OpenAI: `to_tools`, `parse_tool_call`, `make_tool_result` con `tool_call_id`.
- [tests/conftest.py](tests/conftest.py) — `build_sample_app` helper con endpoint di esempio (list/get/create/slow/huge/non-pilot), `get_current_user`, `allow_tool`, composite `find_cheapest_item`.
- [tests/test_openapi_parser.py](tests/test_openapi_parser.py) — selezione x-apipilot.enabled, conversione path/query/body, nomi duplicati, config incomplete.
- [tests/test_pilot.py](tests/test_pilot.py) — tools_for, autorizzazione per utente, execute happy path path+query+body, 404 endpoint, tool sconosciuto, argomenti invalidi, allow_tool, timeout, troncamento risposte grandi, tool composto, risultati vuoti, adapter OpenAI roundtrip.
- [tests/test_http_endpoints.py](tests/test_http_endpoints.py) — catalogo HTTP, execute HTTP successo/fallimento, argomenti invalidi → 422.
- [examples/demo_backend.py](examples/demo_backend.py) — FastAPI backend demo completo: prodotti, ordini, restock admin, ordini utente, tool composto `recommend_product`, `GET /demo/chat` esempio ciclo agente.
- [README.md](README.md) — panoramica, formato x-apipilot, installazione, esempi integrazione, sicurezza, test, demo.
- [AGENT.md](AGENT.md) — confini moduli, comandi installazione/test, convenzioni codice, sicurezza, aggiunta adapter/tool, aggiornamento docs+test, changelog.
- [CLAUDE.md](CLAUDE.md) — note specifiche per Claude: anti-thinking-leak, regole parser/endpoints/adapter, limiti modelli quantizzati.