Skip to content

Releases: adityak74/quecto

quecto v0.1.1 (core)

Choose a tag to compare

@adityak74 adityak74 released this 26 Aug 05:42

quecto (core) v0.1.1

Performance: connection reuse.

What changed

  • Replaced the per-request agent() call (a fresh ureq::AgentBuilder build on every quecto_raw/quecto_stream call) with a single static SHARED_AGENT: LazyLock<ureq::Agent>, built once and reused across all requests. Enables persistent HTTP connections across every LLM call and streaming chunk instead of a new connection pool per call.
  • Internal only — no public API changes (agent() was private).

Quality

  • Full workspace suite green (462 tests across all crates), clippy clean.
  • Landed via #28.

quecto-agent releases alongside this as v0.2.2 with its own dispatch and tracing perf work.

quecto-agent v0.2.2

Choose a tag to compare

@adityak74 adityak74 released this 26 Aug 05:42

quecto-agent v0.2.2

Performance: tool dispatch and trace telemetry.

What changed

  • Tool dispatch: Registry moved from Vec<Box<dyn Tool>> with a linear find() scan to a BTreeMap<String, Box<dyn Tool>> keyed by tool name — lookup, has(), and dispatch are now tree-lookup instead of scanning every registered tool, and tool_names()/schemas() iterate in deterministic sorted order.
  • Trace telemetry: TraceEvent's identity field is now Rc<TraceIdentity> instead of a bare TraceIdentity. The ~10 trace-event emission sites in run_loop now bump a refcount per event instead of deep-cloning up to 6 heap-allocated String fields each time — one real allocation per run instead of one per event. (Requires serde's rc feature; #[serde(flatten)] output is unchanged.)
  • Also picks up the connection-reuse fix from quecto v0.1.1 via its dependency on core.

Review note
PR #28's original description overstated two of these: the tool dispatch was described as "O(1) hash lookup" (it's actually a BTreeMap, O(log n), no hashing — still a real improvement over the linear scan, just mislabeled), and the trace-identity change originally didn't reduce clone count at all (it just moved the clone source, same number of deep clones per event). The Rc<TraceIdentity> fix above was implemented during review to make the clone-elimination claim actually true before merge. See the PR discussion for the full verification.

Quality

  • Full workspace suite green (462 tests), clippy clean (no new warnings from this change).
  • No public API break for typical usage; TraceEvent's identity field type change from TraceIdentity to Rc<TraceIdentity> is technically visible to any external code pattern-matching on that field directly.

quecto-agent v0.2.1

Choose a tag to compare

@adityak74 adityak74 released this 25 Jul 17:38

quecto-agent v0.2.1

Capsules: declared write-key surface + load-time conflict guard.

Prompted by a design review of the capsules load/unload lifecycle: unloading a capsule frees its instructions but not any shared session state it may have written, so two capsules claiming the same state key can produce hard-to-trace "ghost" behavior. v1's active set only ever touched the system prompt (fully recomputed on every load/unload, so no such bug exists in the shipped v0.2.0), but this closes the gap ahead of any future capsule capability that writes real shared session state.

What's new

  • A capsule can declare writes: in its CAPSULE.md frontmatter — a comma-separated list of session-state keys it intends to write.
  • /load now rejects activating a capsule whose declared writes overlap an already-active capsule's, with a message naming the conflicting key and capsule (e.g. cannot load beta: write key "theme" is already claimed by active capsule alpha) — before either capsule's instructions touch the system prompt.
  • The full three-part guard (declared surface, load-time conflict check, unload scope-clear contract) is documented as a hard design constraint in docs/superpowers/specs/2026-07-23-capsules-design.md for any future capability that writes real session state.

Quality

  • 4 new unit tests covering writes: parsing and the conflict check (both the rejection and the disjoint-keys-coexist cases); full workspace suite green, clippy clean.
  • Live end-to-end UAT against the release binary in a real terminal session, including a scenario that confirms the conflict check walks every declared key across every active capsule, not just the first match — see docs/UAT-capsule-write-conflict-report.md.

(#27)

quecto-agent v0.2.0

Choose a tag to compare

@adityak74 adityak74 released this 25 Jul 06:55
e3e18d6

quecto-agent v0.2.0

Capsules: loadable instruction bundles for the chat REPL.

A Claude-Code-Skills-like extensibility system: reusable bundles of instructions (and optional scripts) discovered from ~/.quecto/capsules (user scope) and <cwd>/.quecto/capsules (project scope, overriding user for a shared name).

New commands

  • /capsules — list available and loaded capsules
  • /load <name> / /unload <name> — toggle a capsule mid-session
  • /<capsule_name> [prompt] — load a capsule (if needed) and optionally route a prompt through it
  • /capsule-create <name> <what it should do> — describe what you want in plain language and the agent drafts, validates, writes, and immediately loads a new CAPSULE.md for you — no hand-authored frontmatter required

Loaded capsules fold into the agent's system prompt and survive /clear. /capsule-create writes to project scope (<cwd>/.quecto/capsules/<name>/CAPSULE.md) and validates the capsule name against path traversal before touching the filesystem.

Quality

  • Built task-by-task with TDD and independent review per task, plus a final whole-branch review that caught and fixed a path-traversal gap in /capsule-create's name handling before merge.
  • 458 tests passing across the workspace, zero warnings.
  • Live end-to-end UAT against qwen3.6:35b on Ollama — see docs/UAT-capsule-create-report.md.

Build

  • Size-optimized release binary: aarch64-apple-darwin, ~5.5 MB (grown from the v0.1.0 baseline as image support, the native Anthropic provider, and Mermaid rendering landed in between).

quecto core stays at v0.1.0 — this release only touches quecto-agent.

See CHANGELOG.md for the full day-by-day history.

quecto v0.1.0 (core)

Choose a tag to compare

@adityak74 adityak74 released this 23 Jul 02:41
d98c034

quecto (core) v0.1.0

First official release of the quecto core crate — a minimal, vendor-neutral execution layer for LLM agents.

Highlights

  • Four-function library API for driving an LLM agent loop
  • Streaming support via SSE with a non-SSE fallback
  • One-shot, REPL, and --init CLI modes
  • 24 tests, clippy-clean, only two dependencies (ureq, serde_json)
  • Size-optimized release build: ~1.3 MB static binary, no runtime
  • Declared-scope and multi-provider runtime config support wired through the paired eval runner

This is the foundation crate that quecto-agent, quecto-mcp, and quecto-eval all build on.

quecto-agent v0.1.0

Choose a tag to compare

@adityak74 adityak74 released this 23 Jul 02:41
d98c034

quecto-agent v0.1.0

First official release of quecto-agent — the coding agent built on the quecto core.

Highlights

  • Full coding-agent loop: tool use, editing under approval, sandbox denylist, verification gates
  • Session persistence: resume, undo, diff
  • Manifest "flavors" with trust-on-first-use
  • Interactive chat REPL (crossterm event loop, bracketed paste, Markdown + Mermaid rendering via merman)
  • Reasoning controls (/reasoning), session-scoped and persisted across resume
  • Multi-provider support: OpenAI-compatible and native Anthropic Claude Messages API (--provider anthropic), with reasoning mapped to thinking.budget_tokens
  • Multimodal image input support (--image)
  • Background process management and concurrent subagent delegation (spawn_subagent, monitor_subagents, cancel_subagent, up to 8 concurrent)
  • Project-local .qkb Markdown notes
  • OpenTelemetry tracing (otel feature flag) across run loops, steps, tool dispatch, and completions
  • Native evaluation harness (quecto-eval) with SQLite storage and pluggable graders (script, telemetry, LLM rubric)
  • Size-optimized release build: ~3.5 MB static binary, no runtime
  • UAT: 41 black-box scenarios, 34 pass / 7 minor polish partials, 0 failures, 0 blocking defects (see docs/UAT-report.md)

See CHANGELOG.md for the full day-by-day history.