feat(sandokan): B1.5 — umbrella + Engine::auto()

Crate sandokan (umbrella): re-exporta core/local/daemon y provee la
selección de transporte.

- auto(socket) — patrón "el primero que arranca gana": prueba si hay
  un daemon escuchando; si lo hay devuelve DaemonEngine, si no
  LocalEngine. Box<dyn Engine> (el trait es object-safe vía async_trait).
- auto_default() — auto() con default_socket_path().
- default_socket_path() — $XDG_RUNTIME_DIR/sandokan.sock o
  /run/brahman/sandokan.sock.

3 tests: fallback a Local sin daemon, pick Daemon con serve() activo,
default path absoluto. cargo check --workspace verde.

sandokan ya es usable end-to-end en modo local y daemon. Falta
RemoteEngine (B1.4, depende de brahman-ssh-multiplex).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 14:05:32 +00:00
parent b7d9d7abd9
commit 8cd8003dd5
4 changed files with 128 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
[package]
name = "sandokan"
description = "Orquestador sandokan (umbrella): re-exporta core/local/daemon + Engine::auto() que elige transporte según haya un daemon escuchando."
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
publish.workspace = true
[dependencies]
sandokan-core = { path = "../sandokan-core" }
sandokan-lifecycle = { path = "../sandokan-lifecycle" }
sandokan-local = { path = "../sandokan-local" }
sandokan-daemon = { path = "../sandokan-daemon" }
tokio = { workspace = true }
[dev-dependencies]
tempfile = { workspace = true }