- shared / ink-renderer / ui: bundle ESM-only dependencies in CJS output.
@alcalzone/ansi-tokenize(used by shared and ink-renderer) andmarked@17(used by ui) are pure ESM packages with norequireexport. Without bundling, our CJS dist emittedrequire("...")calls that crashed on Node ≥ 20 withERR_REQUIRE_ESM/ERR_PACKAGE_PATH_NOT_EXPORTED. Same shape as the 0.3.1 semver fix (#1), but those packages are ESM-only so a static import alone is not enough — they must be inlined via tsup'snoExternal. Discovered by the new cross-env smoke harness.
- agent:
MicroCompaction— cheap, deterministic compaction that clears old tool-result content while preserving every other message and the assistant'stoolCallsarray (decision trail). Aligned with Claude Code's microcompact strategy: same[Old tool result content cleared]placeholder, same defaultkeepRecentN: 5, same 8-tool whitelist (DEFAULT_COMPACTABLE_TOOLS), sameMath.max(1, n)floor. Idempotent. - agent:
LayeredCompaction— runs an array of strategies in sequence, re-estimating tokens after each layer and short-circuiting once the budget is met. Recommended stack: MicroCompaction → SummarizationCompaction → SlidingWindowCompaction. - agent: README gains a "Context compaction" section with a strategy
comparison table, recommended layered stack example, and the Claude Code
system-prompt instruction users should ship alongside
MicroCompaction.
- CI: cross-environment import smoke matrix. Each published package is
loaded under three loaders (ESM, CJS, tsx) on Node 18 / 20 / 22 and at
least one named export is asserted. Runs locally as
pnpm smoke. Catches the regression class that produced both 0.3.1 #1 and the 0.3.2 ansi-tokenize / marked CJS-require crash. pnpm release:checknow includes the smoke job.tests/smoke/workspace package added (ownpackage.json).
docs/roadmap.md: bumped to 0.3.1 baseline, "Now" section refocused on stability + optimization (cross-env smoke matrix, UI behavior tests, provider streaming tests, FileSession round-trip, bundle/perf budgets, stable API contract pass, release checklist) ahead of adoption work (docs site, scaffolding, starters).
- shared: replace CJS
require()with static ESM import forsemver, fixesDynamic require of "semver" is not supportedcrash undertsxand other native ESM loaders (#1, thanks @EduardF1) - ink-renderer: use
Object.hasOwnfallback for ES2020 lib compatibility - ink-renderer: resolve DTS build errors in
render-to-screen.tsandscreen.ts - ui: use stable React keys in
MessageList/DiffView/PermissionRequest/StatusLine/WelcomeScreen/PromptInputto avoid list-rerender state corruption - agent: tighten MCP transport constructor types and sync MCP client version to 0.3.0
- migrate Biome to v2.4.10 across all packages
- CI now runs lint and tests in addition to build / typecheck
- MCP client integration — Dynamic tool discovery from MCP servers (stdio + HTTP transport)
- Parallel tool execution — readOnly tools run in parallel; configurable
maxConcurrentTools
- WebSearch — DuckDuckGo search with
allowed_domains/blocked_domainsfiltering - TaskCreate / TaskUpdate / TaskGet / TaskList — Multi-agent task management with owner,
blocks/blockedBydependency tracking - Agent (subagent) — Spawn independent child agents with timeout and abort propagation
- NotebookEdit — Jupyter notebook cell editing (insert / replace / delete) with metadata preservation
- LSP — Language Server Protocol integration via factory pattern (
createLspTool) - EnterWorktree / ExitWorktree — Git worktree lifecycle management
- Grep: Full rewrite with 10 new params —
output_mode,-A/-B/-Ccontext,head_limit,offset,multiline,type,-i,-n - Bash: Required
descriptionparam,run_in_background, 120 s default timeout,sandboxflag - Read: Default 2000-line limit,
pagesparam for PDFs, image base64 support (PNG/JPG/GIF/WEBP/BMP) - Edit:
replace_allparam for global find-and-replace - WebFetch:
promptparam, HTML-to-Markdown conversion, HTTP-to-HTTPS upgrade, 15-min response cache - WebSearch:
allowed_domains/blocked_domainsfiltering - NotebookEdit:
cell_idlocator as alternative tocell_number - Glob: Results sorted by modification time
- All tool names changed to PascalCase (
bash->Bash,read->Read, etc.) - All params changed to snake_case (
path->file_path,oldString->old_string, etc.) - Grep default
output_modeis nowfiles_with_matches(wascontent) - Task tool split from 1 tool into 4 independent tools (
createTaskToolreturnsTaskToolSet)
- All tool descriptions rewritten to Claude Code style (10-50 line LLM behavior guides)
- Complete security marks (
isDestructive,requiresConfirmation) on all write tools - vitest config excludes worktrees and
node_modules - 498 tests across 20 test files
@claude-code-kit/agentv0.2.0 — Headless agent framework: Agent class, multi-provider (Anthropic, OpenAI, Ollama), AsyncGenerator-based agent loop@claude-code-kit/toolsv0.2.0 — Built-in tools: Bash, Read, Edit, Write, Glob, Grep, WebFetch
- Auth framework — Provider registry with environment variable, stored credential, and custom auth methods; file-based and in-memory credential storage
- Permission system — Tiered permission handler with auto-approve for read-only tools, always-allow/deny lists, session-level approval
- Compaction strategies — Sliding-window and LLM-based summarization compaction with configurable model
- Session persistence — JSONL file-backed sessions with session store management
- Mock provider — First-class scripted provider for testing and demos
- Context management — Automatic context window management with reactive compaction on overflow
- Fixed hardcoded summarization model — now configurable via
summaryModeloption - Pinned
zoddependency to>=3.20.0(was*) - Added
zod-to-json-schemaas optional peer dependency for Zod v3 fallback - Eliminated
anytypes across agent and tools packages
- 181 tests covering agent loop, providers, tools, permissions, auth, sessions, compaction, and context management
Initial release.
@claude-code-kit/sharedv0.1.0 — Yoga layout engine, utilities@claude-code-kit/ink-rendererv0.1.0 — Terminal rendering engine@claude-code-kit/uiv0.1.0 — 25+ UI components
- REPL, Select, MultiSelect, PromptInput, MessageList, StreamingText
- Spinner, ProgressBar, StatusIcon, StatusLine, Divider
- Markdown, MarkdownTable, DiffView, PermissionRequest
- SearchOverlay, WelcomeScreen, VirtualList
- CommandRegistry, keybindings system
- ThemeProvider (4 themes, 33 tokens)
- Design system: Dialog, Tabs, FuzzyPicker, Pane, ListItem, etc.