v0.2.0
Minor Changes
-
f2846df: Standalone query engine, concurrent tool scheduler, and Apache-2.0 licensing.
This release replaces the React
useChat-based chat harness with a dedicated,
framework-agnostic query engine, adds a concurrency-aware tool scheduler, and
hardens the interactive terminal experience. The project is now formally
licensed under Apache-2.0.Added
- Standalone query engine. A new engine loop drives a turn end-to-end,
independent of the React render tree (lib/engine/). It owns engine event and
params types, a transcript-repair pass that resolves dangling/unresolved tool
calls, and tool-gating decisions backed by a loop guard to prevent runaway
tool cycles. useQueryEnginehook. A thin React hook that drives the engine loop and
replaces the previoususeChatharness entirely.- Concurrency-aware tool scheduler. Engine-owned scheduling policy runs tool
rounds with bounded concurrency. Introduces an engineToolHostcontract and a
hook adapter so the engine can execute tools without depending on the UI layer. - Cross-session project memory. Durable, non-obvious facts are extracted
automatically after completed turns into a per-project store
(~/.knightcode/projects/<cwd>/memory/) with aMEMORY.mdrecall index.
Relevant memories are recalled into the system prompt, a consolidation
("dream") pass merges and prunes the store, and aMemorytool lets the model
review, correct, or forget entries. - Per-row tool spinners. Concurrently running tools each get their own inline
spinner instead of a single shared indicator. @-mention path expansion. Paths referenced with@in a prompt are
expanded into the model's context at submit time.- PostToolUse
systemMessagesurfacing. Messages emitted byPostToolUse
hooks are now surfaced to callers. - Apache-2.0 license. Added root
LICENSEandNOTICEfiles andlicense
fields in the workspace and CLIpackage.json.
Changed
- Extracted
compactHistoryout of the olduse-chatmodule and moved chat
message types intolib/engine/messages. - Exposed a hook-free
executeRegisteredToolfor engine use. - Unified all interactive prompts onto a single shared permission panel.
- Dropped the unused
sessionIdfromQueryParams. - Pointed repository URLs at the KnightCodeAI org and scoped the publish
workflow to publishable paths.
Fixed
- Quit behaviour:
/exitis now the only way to quit; Ctrl+C never exits. - Permissions: every confirm-gated tool now shows a permission prompt, and
every awaited tool decision is guaranteed a resolvable prompt; scoped the
always-allow sweep correctly. - Markdown rendering: convert
<br>to real line breaks in prose, expand
<br>table cells into continuation rows, and stop rendering literal<br>
tags. - Interrupts: render the interrupted marker after the partial response, with
a plain interrupted notice (no emoji or completion verb); render interrupted
aborts and surface queued mid-turn submits. - History integrity: stop schema-validating history and instead quarantine
invalid tool calls. - State sync: synchronize message-ref writes, guard submit re-entry, persist
the final turn snapshot, queue mid-turn submits, clear finished todos, and only
clear the compacting state when it was actually set. - Hardened file reads, question cancellation, and transcript text handling, plus
a sweep of code-review findings across the engine and UI.
- Standalone query engine. A new engine loop drives a turn end-to-end,