services/apps_service library

Classes

AppsService
App CRUD against /v1/app/* for the CLI's own commands (#30) — apps create / apps list, and init's offer-to-create. Call-injected Dio (never ApiClient.forKey itself) — the KeysService contract, not upload_service.dart's: never calls exit(), every failure becomes a thrown AuthCliFault. A connectivity failure (no response at all) is rethrown as the raw DioException for the caller to report.