Skip to content

Releases: fame0528/savant-code

v0.2.0 - Sprint B-1: real stream-JSON output

20 Jun 20:58

Choose a tag to compare

Sprint B-1: wires the real SavantClient.run() events to the StreamEvent schema, replacing the v0.1 placeholder 'got your prompt' message.

What changed

\stream-json\ mode (--output-format stream-json, or auto-detect when stdout is not a TTY) now emits real agent output: session.start, message.user, message.assistant (chunked), message.assistant.done, message.reasoning (NEW), message.reasoning.done (NEW), tool.call, tool.result, error, session.end.

A new pure mapper \mapPrintModeToStream\ converts SDK \PrintModeEvent\ -> \StreamEvent\ for all 9 PrintModeEvent types.

Cancellation via stdin EOF or SIGINT now emits \session.end: cancelled\ (exit 1) immediately.

Schema additions (backwards-compat)

  • \message.reasoning\ { id, delta } — chunks of agent reasoning, id =
    unId\
  • \message.reasoning.done\ { id } — signals end of reasoning block

Existing stream-json consumers using only the 8 original event types continue to work.

Perfection Loop (converged)

  • Pass 1: 11/12 tests, 1 improvement (counter -> runId for reasoning)
  • Pass 2: 12/12 tests, 0 improvements (converged)
  • Pass 3: 12/12 tests, 0 functional improvements (cosmetic cleanup)

Verification

  • \�un x tsc --noEmit -p tsconfig.json\ — PASS (exit 0)
  • \�un test\ — 21 pass, 0 fail, 67 expect() calls (275ms)
  • call-graph reachability: 39 grep matches, all new symbols wired

Numbers

  • +477 / -80 lines (1 new mapper, 1 new test file, 1 new schema variant, runner refactored)
  • 12 new mapper tests + 9 existing stream-json-emitter tests still pass
  • v0.1.0 -> v0.2.0 (semver minor: new event types, backwards-compat)

Sister Projects

v0.1.0 — Sprint A

20 Jun 20:19

Choose a tag to compare

Sprint A release of the public savant-code monorepo. Three cross-cutting user-facing features, all backwards-compatible.

New Features

Progressive Skill Loading (FID-2026-0620-004)

\SKILL.md\ files are now discovered as metadata at session start; full bodies are loaded on demand via /skill:\ or the \�ctivate_skill\ tool. Skills with \�utoActivate: true\ in their frontmatter still load eagerly. Token savings scale with skill count.

Custom Slash Commands (FID-2026-0620-005)

Drop .md\ files into .savant/commands/\ (project) or ~/.savant/commands/\ (global) to define /\ commands. YAML frontmatter (description, aliases, argument-hint, agent, model) + template substitution (-, /$@, ). Strict mode via \SAVANT_CODE_STRICT_COMMANDS=1.

Stream-JSON Output Mode (FID-2026-0620-006)

--output-format stream-json\ (or auto-detect when stdout is not a TTY) skips the TUI renderer and emits NDJSON to stdout for CI/CD. Versioned schema (\�: 1); chunked \message.assistant\ events; \session.end\ with optional usage payload. Exit 0/1 per standard POSIX.

Verification

  • \�un x tsc --noEmit -p tsconfig.json\ — PASS (exit 0)
  • 24 new unit tests across the 3 features pass

Numbers

  • 3 features shipped in 4 commits (1 + 1 + 1 + 1 release prep)
  • 10 workspace package.json files bumped to 0.1.0
  • +1,255 net lines (3 new files in common/, 2 new in cli/, 2 new in sdk/, 3 FIDs, README + CHANGELOG)

Sister Projects

v0.0.1 — base release

20 Jun 08:35

Choose a tag to compare

Changelog

All notable changes to this project are documented here.

Version source of truth: package.json at the repo root and in each workspace.


v0.0.1 — 2026-06-20

Base release. Public rebrand of the savant-code monorepo.

  • [LOW] FID-2026-0620-001 — Re-brand as savant-code base v0.0.1. Reset all 10 workspace package.json versions to 0.0.1 (sdk 0.10.7 → 0.0.1 per user approval). Renamed savant-freefree-build in root package.json workspaces array (was broken — directory was free-build/, not savant-free/). Added "ignoreDeprecations": "5.0" to tsconfig.base.json (silences TS 6.0 baseUrl deprecation). Added "globals": "^15.14.0" to root devDependencies (was missing despite eslint.config.js importing it). Patched AGENTS.md repo map (savant-free/free-build/). Removed > Built on the [Savant-Code] platform line from free-build/README.md. Rewrote root README.md following the savant-bot template (Overview, Key Tech, Features, Repo Map, Quick Start, Commands, Configuration, Validation, Conventions, ECHO Protocol, Sister Projects, Documentation, License).

Verification

  • type_check (bun x tsc --noEmit -p tsconfig.json): PASS (exit 0, 0 errors).
  • lint (bun x eslint . --max-warnings 0): NOT PASS — pre-existing ESLint 10 / typescript-eslint 7 incompat (FID-003).
  • format (bun x prettier --check .): NOT PASS — pre-existing 1456 unformatted lines (out of scope).
  • build (bun run build:sdk && bun run build:savant-free): NOT VERIFIED — pre-existing canvas dep fails Windows install (FID-002).
  • test (bun test): NOT VERIFIED — 197 test files discovered but not yet run in this session.

Known Issues

  • FID-2026-0620-002 (MEDIUM) — canvas dep fails Windows bun install (missing GTK3 runtime + headers). Affects onboarding + CI gates.
  • FID-2026-0620-003 (MEDIUM) — ESLint 10.5.0 vs typescript-eslint 7.17.0 incompat. bun x eslint exits 2 with TypeError: Class extends value undefined. Pin ESLint to ^9.0.0 or upgrade typescript-eslint to ^8.0.0.