leonard_cli 0.2.1
leonard_cli: ^0.2.1 copied to clipboard
CLI frontend for Leonard.
Changelog #
0.2.1 #
install --copilotnow overlays.github/agents/— the location GitHub Copilot (CLI, coding agent, VS Code) actually scans — instead of the retired repo-rootagents/+skills/plugin layout. Skills need no overlay:.agents/skills/is a first-class Copilot skill location, andgh skill install memento-engineering/lenny drive-with-leonardinstalls straight from this package's vendored assets.- The vended
leonard-driveagent's tools list carries both harness vocabularies (Bash, Read, execute), so the same file drives Claude Code and Copilot unchanged.
0.2.0 #
- Breaking:
leonard_drivespeaks theext.leonard.*VM-service namespace (protocol version 2). Target apps must runleonard_*0.2.0 — a 0.1.x app still registersext.exploration.*and will not answer the handshake.
0.1.5 #
- Bundled
AGENTS.mdtemplate documents the perceptionidentifier/valuefields and the addressing-vs-inference guidance, matchingleonard_agent0.1.5 (kDefaultAgentsMd); depends onleonard_agent ^0.1.5.
0.1.4 #
leonard_drive upgains a native dual path: boot a Flutter target AND theleonard_nativehost against ONE shared device, expose both VM-service endpoints (DualLaunchHandle{flutterWsUri, nativeEndpoint, deviceId}), and tear both down via a single--pid-file. The single-target path is unchanged.- New
drive-dualsubcommand (tools/observe/invoke) drives a multi-hostMultiHostSessionover both endpoints — merged manifest, merged observation, namespace-routed tool calls — so an external brain can perceive and drive a Flutter app and the native channel together.
0.1.3 #
leonard_drive toolsnow prints acapabilitiesarray next tonamespaces. It surfaces reachable host features that are not namespaced tools — notablyscreenshot(use thescreenshotsubcommand), which is absent fromnamespacesby design. Stops the recurring "the manifest has no screenshot, so there is no screenshot capability" mistake. Requiresleonard_agent^0.1.3(the handshake parse that decodescapabilities).leonard_drivegainsup/downlifecycle subcommands that erase the manual boot-grep-convert dance.up --runner flutter -d <device> -t <entry>(or--runner dart -t <entry>for a pure-Dart target) boots the app, discovers the VM-service URI, prints it machine-readably ({event:"vm_service_ready", ws_uri, …}plus optional--uri-file/--pid-file), then HOLDS the process alive (teeing its log to stderr) until a signal ordown. No model, no goal, no loop — the external brain attaches statelessobserve/invoke/screenshotcalls tows_uri.down --pid-file <p>stops a held target. New sharedlauncher.dartprimitive (spawn + scrape + hold + teardown) backs it.leonard_cligains--launchfor the autonomous loop: instead of a caller-supplied--vm-uri, boot the target (--runner flutter -d <device> -t <entry>, or--runner dart -t <entry>) via the shared launcher, drive the discovered URI with lenny's own LLM toward--goal, then tear the target down.--launchand--vm-uriare mutually exclusive (and the boot-only flags error without--launch) — no dual-mode interface.
0.1.2 #
leonard_drivegains ascreenshotsubcommand: capture a still and write the PNG to--out path.png(decodescore.screenshot; prints width/height/device-pixel-ratio). Just pixels — no settle, no golden compare.
0.1.1 #
- Provider construction moves to the
DartanticModelProviderseam (the agent's unified backend factory). - Ship consumer coding-agent assets plus an
installcommand, with harness-specific overlays (--claude/--copilot/--all). The bundled assets are target-agnostic (Dart-VM, not Flutter-specific).
0.1.0 #
Initial release.