Released to npm: npm install -g lynkr@9.6.0
Highlights
🔁 Tier-aware fallback (escalate-then-demote) — always on
When a tier's provider fails, Lynkr now climbs to a more capable tier first (toward REASONING); only if every higher tier is unavailable does it fall downward to SIMPLE/local. Skips circuit-OPEN providers, dedups provider:model, and never re-tries the failed model.
- Never silent:
X-Lynkr-Fallback,X-Lynkr-Served-Tier,X-Lynkr-Fallback-From-Tier,X-Lynkr-Fallback-Directionheaders + warn logs. - Example:
COMPLEX (Moonshot) fails → REASONING (Azure) → MEDIUM/SIMPLE (Ollama).
🧹 Output format guard — always on
Injects a markdown formatting instruction for non-Claude backends so weaker models avoid ASCII/Unicode box-drawing diagrams. Keyed off the routing-resolved provider/model; skips Claude-family backends (already clean).
🧩 Task decomposition — opt-in (TASK_DECOMPOSITION_ENABLED)
Cost-aware gate → planner (validated subtask DAG) → dispatcher (parallel within dependency levels, isolated context) → synthesizer, with confidence-scored monolithic fallback, shadow mode, and net-savings telemetry. Exposed as the DecomposeTask tool.
Config
TASK_DECOMPOSITION_ENABLED(defaultfalse) — the only new env knob.- Tier-aware fallback and the output format guard are always-on.
Testing
47 new unit tests across all three features; no regressions in existing suites; ESLint clean.
Full PR: #77
🤖 Generated with Claude Code