Skip to content

v0.80.6 — ai::* script bindings + workflow polish

Choose a tag to compare

@codedeviate codedeviate released this 17 May 15:19
· 226 commits to master since this release

First tagged release since v0.77.13 — closing out a long arc whose
centrepiece is the new ai::* Rhai script-engine binding plus
four built-in subprocess backends.

Highlights

ai::* script bindings (since 0.79.0)

Recon's Rhai engine can now ask an LLM a question and consume the
answer mid-script:

```rhai
let req = ai::request()
.backend("claude")
.system("Reply yes or no.")
.context("Status: 200 OK")
.context("Server: nginx/1.27.0")
.prompt("Is this an HTTP success response?");

print(req.send());
```

Built-in subprocess backends (no API keys, no SDK dependency — just
whatever CLI you already have authenticated):

Backend Invocation Notes
`claude` `claude -p --output-format text` Anthropic Claude Code
`codex` `codex exec` OpenAI Codex CLI
`copilot` `copilot -s --no-color` GitHub Copilot CLI (standalone, GA Oct 2025)
`gemini` `gemini --prompt` Google Gemini CLI
`cmd` user-defined argv from `[ai.backends.]` in `~/.recon/config.toml` Escape hatch for new agent CLIs without recompiling

Configuration precedence: per-request → env (`RECON_AI_BACKEND`,
`RECON_AI_MODEL`, `RECON_AI_TIMEOUT`) → `[ai]` config section.

Four focused demo scripts ship alongside the kitchen-sink `ai.rhai`:

  • `script/ai-simple.rhai` — smallest builder use
  • `script/ai-system.rhai` — `.system()` steering same prompt
  • `script/ai-context.rhai` — accumulating `.context()` blocks
  • `script/ai-multiturn.rhai` — manual `.assistant()` + `.user()` replay

--encode-hints (since 0.78.0)

New flag exposing rxing's `encode_with_hints` API for the Aztec and
PDF417 encoders. Keys: `charset`, `eclevel`, `aztec-layers`,
`pdf417-compact`, `pdf417-compaction`, `pdf417-auto-eci`, `margin`.

Workflow & polish

  • `--editor URL` (space-separated) now works — clap's greedy value
    consumption gets a rescue path (0.77.14).
  • OUT-OF-SCOPE.md bucket-discipline sweep moved ~20 items out of
    "Waiting" into their honest bucket (0.78.1).
  • Codebase-wide clippy sweep: 46 → 0 warnings (0.80.1).
  • Stale `v0.78` version targets removed from `--ja3`/`--ja4`/
    `--http2-fingerprint` docs (0.80.3).
  • CLAUDE.md workflow doc closures: post-merge rebuild hygiene,
    consolidated four-file version-bump table, `--features impersonate`
    in the test rule, worktree-base-ref drift documented, and
    `script/README.md` enforcement extended to all new `.rhai` files
    (0.80.5, 0.80.6).

Patch detail

```
0.77.14 --editor URL-grabbing rescue
0.78.0 --encode-hints (rxing Aztec/PDF417 tuning)
0.78.1 OUT-OF-SCOPE.md bucket discipline sweep
0.78.2 three compiler-warning fixes
0.79.0 ai::* Rhai script-engine bindings + builder API
0.80.0 built-in copilot backend (GitHub Copilot CLI)
0.80.1 codebase-wide clippy sweep, 46 -> 0 warnings
0.80.2 close two CLAUDE.md exposure-policy gaps from 0.80.0
0.80.3 drop stale v0.78 version target from --ja3/--ja4/H2-fp docs
0.80.4 four focused ai::* demo scripts
0.80.5 CLAUDE.md post-merge hygiene rule
0.80.6 four more CLAUDE.md workflow-gap closures
```

Build & test status

  • `cargo build --release` — 0 warnings.
  • `cargo build --release --features impersonate` — 0 warnings.
  • `cargo clippy --release` — no issues.
  • `cargo test --release` — 1413 passed, 2 ignored.
  • `cargo test --release --features impersonate --test impersonate_it` — 5 passed.

Install

```sh
cargo install recon-cli # from crates.io

or from this tag:

cargo install --git https://github.com/codedeviate/recon --tag v0.80.6 recon-cli
```

See `CHANGELOG.md` for full per-version detail and `HISTORY.md`
entries #73 (ai::* design rationale) and #74 (copilot backend
rationale) for the long-form design notes.