diff --git a/api/CHANGELOG.md b/api/CHANGELOG.md index 895edf46a..3b06f1aaf 100644 --- a/api/CHANGELOG.md +++ b/api/CHANGELOG.md @@ -5,6 +5,44 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) + +### Documentation + +- **api**: Add proto comments for buf lint +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **execution**: Add rara py worker grpc runtime skeleton +- **execution**: Add jobspy capability and capability discovery +- Integrate mem0 via execution worker + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Format +- Format + +### Refactor + +- Rename rsketch crates to job +- Rename remaining rsketch references to job +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Unify runtime state into AppState with init() and routes() +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 ### Chore diff --git a/crates/agents/CHANGELOG.md b/crates/agents/CHANGELOG.md new file mode 100644 index 000000000..9480e99a9 --- /dev/null +++ b/crates/agents/CHANGELOG.md @@ -0,0 +1,154 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **agents**: Add snafu display attrs to Error variants for better diagnostics +- **agents**: Skip unparseable streaming chunks instead of aborting +- **agents**: Abort with clear message on incompatible streaming model +- **resume**: Rename migration to avoid timestamp conflict with pipeline_runs_events +- **agents**: Correct include_str! paths for prompt files ([#243](https://github.com/rararulab/rara/issues/243)) +- **agents**: Restore compaction persistence via CompactionEffect ([#249](https://github.com/rararulab/rara/issues/249)) +- **agent-core**: Configurable max_iterations with partial results on limit ([#260](https://github.com/rararulab/rara/issues/260)) +- **tools**: Rename all tool names to match OpenAI ^[a-zA-Z0-9-]+$ pattern +- Tape memory +- **mita**: Add tape tool to Mita agent manifest ([#168](https://github.com/rararulab/rara/issues/168)) +- **agents**: Prevent repetitive text output on simple greetings ([#201](https://github.com/rararulab/rara/issues/201)) +- **agents**: 为 rara manifest 填充显式 tool allowlist ([#246](https://github.com/rararulab/rara/issues/246)) +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) +- **agents**: Add marketplace tool to rara agent manifest ([#347](https://github.com/rararulab/rara/issues/347)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **kernel**: Increase max_tokens to 2048 and optimize agent prompt ([#815](https://github.com/rararulab/rara/issues/815)) ([#816](https://github.com/rararulab/rara/issues/816)) +- **agents**: Mita_system_prompt string formatting and minor cleanups ([#995](https://github.com/rararulab/rara/issues/995)) ([#996](https://github.com/rararulab/rara/issues/996)) +- **agents**: Reinforce rara identity in system prompt ([#1024](https://github.com/rararulab/rara/issues/1024)) ([#1028](https://github.com/rararulab/rara/issues/1028)) +- **agents**: Remove hardcoded max_iterations=25 from rara manifest ([#1325](https://github.com/rararulab/rara/issues/1325)) ([#1326](https://github.com/rararulab/rara/issues/1326)) + +### Documentation + +- **streaming**: Add detailed comments to streaming implementation +- **agents**: Add comprehensive doc comments to subagent executor and tool +- **agents**: Add README explaining agent crate architecture ([#249](https://github.com/rararulab/rara/issues/249)) +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **agents**: Add agents crate with OpenRouter-based agent runner +- **sessions**: Add sessions crate and chat HTTP API ([#108](https://github.com/rararulab/rara/issues/108)) +- **workers**: Integrate chat service into AppState +- **chat**: Integrate skills into agent loop — prompt injection + tool filtering ([#161](https://github.com/rararulab/rara/issues/161)) +- **agents**: Model fallback chain ([#193](https://github.com/rararulab/rara/issues/193)) +- Integrate composio +- **agents,chat**: Streaming agent runner + SSE endpoint ([#204](https://github.com/rararulab/rara/issues/204)) +- **agents**: Replace openrouter-rs with async-openai + LlmProvider trait ([#206](https://github.com/rararulab/rara/issues/206)) +- **agents**: Add AgentDefinition types and parser ([#242](https://github.com/rararulab/rara/issues/242)) +- **agents**: Add subagent executor for single/chain/parallel ([#242](https://github.com/rararulab/rara/issues/242)) +- **agents**: Add SubagentTool with single/chain/parallel modes ([#242](https://github.com/rararulab/rara/issues/242)) +- **agents**: Add orchestrator module ([#243](https://github.com/rararulab/rara/issues/243)) +- **agents**: Add builtin agent module with ChatAgent, ProactiveAgent, ScheduledAgent ([#249](https://github.com/rararulab/rara/issues/249)) +- **agents**: Implement unified AgentDispatcher with LogStore, metrics, and REST API ([#270](https://github.com/rararulab/rara/issues/270)) +- **agent-core**: Add ModelCapabilities detection and provider_hint plumbing +- **memory**: Add post-compaction recall and per-turn recall config ([#319](https://github.com/rararulab/rara/issues/319)) +- **memory**: Recall strategy engine with agent-configurable rules ([#322](https://github.com/rararulab/rara/issues/322)) +- **agent**: Implement Mita background proactive agent ([#72](https://github.com/rararulab/rara/issues/72)) +- **memory**: Add information writeback and tape compaction ([#73](https://github.com/rararulab/rara/issues/73)) +- **agent**: Emit intent/progress during long multi-step tool executions ([#116](https://github.com/rararulab/rara/issues/116)) +- **kernel**: ScheduledJobAgent + enriched task notifications ([#135](https://github.com/rararulab/rara/issues/135)) +- **kernel**: KernelEvent::SendNotification + fix PublishEvent syscall ([#137](https://github.com/rararulab/rara/issues/137)) +- **memory**: User tape knowledge distillation via anchor ([#170](https://github.com/rararulab/rara/issues/170)) +- **agents**: Integrate SoulLoader into agent manifest construction ([#172](https://github.com/rararulab/rara/issues/172)) +- **mita**: Add soul evolution tools for background agent ([#177](https://github.com/rararulab/rara/issues/177)) +- **soul**: Implement evolve-soul tool and auto-notifications for Mita tools +- **agents**: Add proactive behavior guidelines to rara and mita prompts +- **agents**: Improve rara interaction for heavy tasks ([#187](https://github.com/rararulab/rara/issues/187)) +- **kernel**: Add /msg_version command and session/manifest routing ([#257](https://github.com/rararulab/rara/issues/257)) +- **kernel**: Background agent spawning with proactive result delivery ([#340](https://github.com/rararulab/rara/issues/340)) +- **memory**: Add note-taking strategy to Rara system prompt ([#403](https://github.com/rararulab/rara/issues/403)) ([#405](https://github.com/rararulab/rara/issues/405)) +- **memory**: Add structured user profile template for distillation ([#402](https://github.com/rararulab/rara/issues/402)) ([#406](https://github.com/rararulab/rara/issues/406)) +- **kernel,telegram**: Auto-generate session title & redesign /sessions UI ([#434](https://github.com/rararulab/rara/issues/434)) +- **kernel**: External agent.md prompt ([#451](https://github.com/rararulab/rara/issues/451)) +- **kernel**: Agent knowledge directory with index + on-demand loading ([#466](https://github.com/rararulab/rara/issues/466)) ([#469](https://github.com/rararulab/rara/issues/469)) +- **kernel**: Add browser automation subsystem via Lightpanda + CDP ([#473](https://github.com/rararulab/rara/issues/473)) +- **kernel**: Implement pause_turn circuit breaker for agent loop ([#506](https://github.com/rararulab/rara/issues/506)) ([#508](https://github.com/rararulab/rara/issues/508)) +- **kernel**: Deferred tool loading — reduce per-turn token overhead ([#756](https://github.com/rararulab/rara/issues/756)) ([#768](https://github.com/rararulab/rara/issues/768)) +- **kernel**: Task tool — preset-based background agent delegation ([#845](https://github.com/rararulab/rara/issues/845)) ([#847](https://github.com/rararulab/rara/issues/847)) +- **kernel**: Add explore task preset and delegation routing ([#873](https://github.com/rararulab/rara/issues/873)) ([#875](https://github.com/rararulab/rara/issues/875)) +- **kernel**: Inject deferred tool names into agent system prompt ([#902](https://github.com/rararulab/rara/issues/902)) ([#906](https://github.com/rararulab/rara/issues/906)) +- **agents**: Mita self-improving skill discovery loop ([#992](https://github.com/rararulab/rara/issues/992)) ([#993](https://github.com/rararulab/rara/issues/993)) +- **kernel**: Batch file reads and 429 rate-limit recovery ([#1118](https://github.com/rararulab/rara/issues/1118)) ([#1119](https://github.com/rararulab/rara/issues/1119)) +- **kernel**: Self-continuation signal to prevent GPT stop-and-ask ([#1301](https://github.com/rararulab/rara/issues/1301)) ([#1306](https://github.com/rararulab/rara/issues/1306)) +- **agents**: Make safety fragment act-by-default to improve proactivity ([#1320](https://github.com/rararulab/rara/issues/1320)) ([#1324](https://github.com/rararulab/rara/issues/1324)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Format & some improvement & prompt markdown +- Change default HTTP port from 3000 to 25555 +- Format +- Make lint pass across workspace +- Format +- Tidy project +- Format +- Format +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **agents**: Layered tool architecture (primitives + services) +- **agents**: Move generic primitive tools from workers to agents crate +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- Extract AgentTool to tool-core crate, McpManager derive Clone ([#198](https://github.com/rararulab/rara/issues/198)) +- **agents**: Remove primitives, delegate to tool-core ([#199](https://github.com/rararulab/rara/issues/199)) +- **agents**: Extract provider.rs + fix settings key reload +- **agents**: Restructure provider as directory module +- **agents**: Extract SubagentExecutor struct from free functions +- **agents**: Address code review findings ([#249](https://github.com/rararulab/rara/issues/249)) +- **ai**: Remove rara-ai crate, move task agents into rara-agents ([#254](https://github.com/rararulab/rara/issues/254)) +- **agents**: Extract dispatcher admin routes to rara-dispatcher-admin ([#272](https://github.com/rararulab/rara/issues/272)) +- Migrate all prompt consumers to PromptRepo + cleanup legacy code ([#278](https://github.com/rararulab/rara/issues/278)) +- Merge rara-prompt into agent-core + prompt-admin ([#280](https://github.com/rararulab/rara/issues/280)) +- Remove compose_with_soul/resolve_soul and settings prompt fields ([#281](https://github.com/rararulab/rara/issues/281)) +- **settings**: Move SettingsSvc + ollama from domain/shared to backend-admin ([#310](https://github.com/rararulab/rara/issues/310)) +- **memory**: Integrate new MemoryManager into tools, orchestrator, and settings ([#313](https://github.com/rararulab/rara/issues/313)) +- **memory**: Separate trigger timing for mem0, memos, and hindsight ([#318](https://github.com/rararulab/rara/issues/318)) +- **agents**: Decompose AgentOrchestrator into AgentContext trait hierarchy ([#326](https://github.com/rararulab/rara/issues/326)) +- Move memory-core into agent-core, add unified Memory trait, design kernel architecture +- **kernel**: Move runner, context, subagent from agent-core to kernel ([#335](https://github.com/rararulab/rara/issues/335)) +- Remove legacy dispatcher from agents, admin backend, and frontend ([#343](https://github.com/rararulab/rara/issues/343)) +- Delete orphaned rara-agents crate ([#344](https://github.com/rararulab/rara/issues/344)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **kernel**: Introduce EventBase for unified event metadata +- **agents**: Optimize rara soul & system prompt for memory-first, anti-meta ([#95](https://github.com/rararulab/rara/issues/95)) +- **agents**: Optimize nana prompt — stand-in positioning ([#98](https://github.com/rararulab/rara/issues/98)) +- **agents**: Strengthen rara system prompt — identity, execution, transparency +- **app**: Require mita config and use humantime-serde for durations +- **soul**: Remove all fallback logic, use built-in defaults directly +- **agents**: Remove rara-soul dependency, soul resolved by kernel at runtime +- **soul**: Redesign rara personality to tsundere style +- **memory**: Remove MAX_USER_NOTES truncation, trust anchor boundary ([#407](https://github.com/rararulab/rara/issues/407)) +- **kernel**: Plan mode agent loop fixes (#648 #649 #650) ([#667](https://github.com/rararulab/rara/issues/667)) +- **kernel**: Prompt review — fix 12 findings ([#755](https://github.com/rararulab/rara/issues/755)) ([#758](https://github.com/rararulab/rara/issues/758)) +- **kernel**: Flatten spawn-background params — remove nested manifest ([#764](https://github.com/rararulab/rara/issues/764)) ([#767](https://github.com/rararulab/rara/issues/767)) +- **tools**: Token diet — aggressive tool tiering + new file tools + browser prompt ([#805](https://github.com/rararulab/rara/issues/805)) ([#806](https://github.com/rararulab/rara/issues/806)) +- **agents**: Prompt diet — cut tokens ~49% ([#823](https://github.com/rararulab/rara/issues/823)) ([#824](https://github.com/rararulab/rara/issues/824)) +- **agents**: Align system prompts with Claude Code patterns ([#841](https://github.com/rararulab/rara/issues/841)) ([#844](https://github.com/rararulab/rara/issues/844)) +- **agents**: Optimize agent prompts with prompt-refinery framework ([#1105](https://github.com/rararulab/rara/issues/1105)) ([#1106](https://github.com/rararulab/rara/issues/1106)) +- **kernel**: Introduce ToolName newtype for type-safe tool identifiers ([#1123](https://github.com/rararulab/rara/issues/1123)) ([#1133](https://github.com/rararulab/rara/issues/1133)) + +### Revert + +- **kernel**: Back out today's proactivity changes +- **kernel**: Back out remaining afternoon changes +- Restore April 13 changes previously rolled back + + diff --git a/crates/app/CHANGELOG.md b/crates/app/CHANGELOG.md index a36924300..f6fdb5123 100644 --- a/crates/app/CHANGELOG.md +++ b/crates/app/CHANGELOG.md @@ -5,6 +5,345 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- Jobspy build improvements, Docker user paths, and justfile PYO3 config +- **routes**: Flatten OpenApiRouter merge chain to prevent stack overflow ([#180](https://github.com/rararulab/rara/issues/180)) +- **app**: Connection pool timeout and Ctrl+C shutdown panic ([#296](https://github.com/rararulab/rara/issues/296)) +- **kernel**: Use ModelRepo for runtime model resolution, read Telegram token from settings +- **boot,channels**: Session key mismatch — messages persisted to wrong session +- **gateway**: Use CancellationToken for shutdown + add docs and justfile updates ([#85](https://github.com/rararulab/rara/issues/85)) +- **gateway**: Ctrl+C now reliably stops gateway during all phases +- **app**: Clean up stale staging worktrees on executor init ([#111](https://github.com/rararulab/rara/issues/111)) +- **gateway**: Only trigger update when remote is ahead of local +- **config**: Ensure clean YAML roundtrip for AppConfig ([#121](https://github.com/rararulab/rara/issues/121)) +- **security**: Enforce tool permissions in agent loop +- **kernel**: Auto-register system user for internal sessions ([#117](https://github.com/rararulab/rara/issues/117)) +- **tools**: Rename all tool names to match OpenAI ^[a-zA-Z0-9-]+$ pattern +- Tape memory +- **mita**: Fix tape name mismatch and add session recovery ([#167](https://github.com/rararulab/rara/issues/167)) +- **mita**: Add user_id parameter to read-tape tool ([#180](https://github.com/rararulab/rara/issues/180)) +- **app**: Use correct user identity in E2E anchor checkout test ([#188](https://github.com/rararulab/rara/issues/188)) +- **gateway**: Address code review feedback for telegram listener ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Remove /shutdown command to prevent unrecoverable state ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Add proxy + timeout support to gateway Telegram bot ([#205](https://github.com/rararulab/rara/issues/205)) +- **mcp**: Use correct npm package name for context-mode ([#208](https://github.com/rararulab/rara/issues/208)) +- **gateway**: Skip duplicate auto-update when detector publishes stale state +- **app**: Prevent context-mode interceptor from causing agent loop +- **app**: Use whitelist + 32KB threshold for context-mode interceptor +- **app**: Disable context-mode output interceptor +- **kernel**: Address review feedback — configurable rate limit, memory eviction, serde parse +- **kernel**: Address PR review — gc wiring, clock-testable rate limiter, strum parsing ([#223](https://github.com/rararulab/rara/issues/223)) +- **context-mode**: Switch to default-on interceptor with exclusion list ([#230](https://github.com/rararulab/rara/issues/230)) +- **app**: Lower context-mode intercept threshold to 8KB ([#236](https://github.com/rararulab/rara/issues/236)) +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) +- **keyring-store**: Enable tokio and crypto-rust features to satisfy secret-service v4 runtime requirement ([#332](https://github.com/rararulab/rara/issues/332)) ([#333](https://github.com/rararulab/rara/issues/333)) +- **agents**: Add marketplace tool to rara agent manifest ([#347](https://github.com/rararulab/rara/issues/347)) +- **telegram**: Pre-render trace HTML for instant callback response ([#343](https://github.com/rararulab/rara/issues/343)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **skills**: Universal marketplace install support ([#354](https://github.com/rararulab/rara/issues/354)) +- **skills**: Include install_repo in marketplace tool description ([#704](https://github.com/rararulab/rara/issues/704)) ([#706](https://github.com/rararulab/rara/issues/706)) +- **app**: Skip rtk rewrite for find commands with compound predicates ([#705](https://github.com/rararulab/rara/issues/705)) ([#707](https://github.com/rararulab/rara/issues/707)) +- **tg**: Wire McpManager into KernelBotServiceClient ([#720](https://github.com/rararulab/rara/issues/720)) ([#721](https://github.com/rararulab/rara/issues/721)) +- **app**: Context-mode interceptor whitelist + summary + system prompt ([#722](https://github.com/rararulab/rara/issues/722)) ([#732](https://github.com/rararulab/rara/issues/732)) +- Remove screenshot ([#741](https://github.com/rararulab/rara/issues/741)) +- **kernel**: Align OpenAI driver wire format with API spec ([#743](https://github.com/rararulab/rara/issues/743)) ([#745](https://github.com/rararulab/rara/issues/745)) +- **app**: Bash tool — spawn with process group, incremental read, clean kill ([#744](https://github.com/rararulab/rara/issues/744)) ([#746](https://github.com/rararulab/rara/issues/746)) +- **app**: Use actual MCP tool name in context-mode prompt fragment ([#751](https://github.com/rararulab/rara/issues/751)) ([#753](https://github.com/rararulab/rara/issues/753)) +- **kernel**: Make interceptor prompt fragment dynamic to track MCP state ([#763](https://github.com/rararulab/rara/issues/763)) ([#769](https://github.com/rararulab/rara/issues/769)) +- **kernel**: Tune agent loop timeouts for responsiveness ([#770](https://github.com/rararulab/rara/issues/770)) ([#772](https://github.com/rararulab/rara/issues/772)) +- **app**: Correct ctx_search parameter format in context-mode prompt ([#799](https://github.com/rararulab/rara/issues/799)) ([#800](https://github.com/rararulab/rara/issues/800)) +- **app**: Start wechat adapter polling loop on boot ([#848](https://github.com/rararulab/rara/issues/848)) ([#850](https://github.com/rararulab/rara/issues/850)) +- **channels**: Prioritize filesystem credentials over settings for wechat adapter ([#867](https://github.com/rararulab/rara/issues/867)) ([#868](https://github.com/rararulab/rara/issues/868)) +- **tools**: Sanitize discover-tools query to strip stray JSON characters ([#908](https://github.com/rararulab/rara/issues/908)) ([#909](https://github.com/rararulab/rara/issues/909)) +- **tools**: Enrich marketplace tool parameter descriptions for LLM usability ([#911](https://github.com/rararulab/rara/issues/911)) ([#912](https://github.com/rararulab/rara/issues/912)) +- **kernel**: Use parking_lot mutex ([#927](https://github.com/rararulab/rara/issues/927)) ([#933](https://github.com/rararulab/rara/issues/933)) +- **agents**: Mita_system_prompt string formatting and minor cleanups ([#995](https://github.com/rararulab/rara/issues/995)) ([#996](https://github.com/rararulab/rara/issues/996)) +- **kernel**: Bypass proxy for local/private-network LLM providers ([#1020](https://github.com/rararulab/rara/issues/1020)) ([#1021](https://github.com/rararulab/rara/issues/1021)) +- Resolve contract violations found by code quality scan ([#1026](https://github.com/rararulab/rara/issues/1026)) ([#1030](https://github.com/rararulab/rara/issues/1030)) +- **app**: Coerce bash timeout from string/humantime to Duration ([#1114](https://github.com/rararulab/rara/issues/1114)) ([#1115](https://github.com/rararulab/rara/issues/1115)) +- **app**: Set browser User-Agent on http-fetch tool ([#1189](https://github.com/rararulab/rara/issues/1189)) ([#1190](https://github.com/rararulab/rara/issues/1190)) +- **tests**: Stabilize e2e rara_paths init for CI ([#1199](https://github.com/rararulab/rara/issues/1199)) +- **app**: Replace npx/python web server with bun run dev ([#1272](https://github.com/rararulab/rara/issues/1272)) ([#1273](https://github.com/rararulab/rara/issues/1273)) +- **app**: Accept Duration-style map for bash timeout parameter ([#1307](https://github.com/rararulab/rara/issues/1307)) ([#1308](https://github.com/rararulab/rara/issues/1308)) +- **tests**: Replace sleep with state polling in llm_error e2e test ([#1336](https://github.com/rararulab/rara/issues/1336)) ([#1337](https://github.com/rararulab/rara/issues/1337)) +- **kernel**: Add deferred tier to task and spawn-background tools ([#1375](https://github.com/rararulab/rara/issues/1375)) ([#1377](https://github.com/rararulab/rara/issues/1377)) + +### Documentation + +- Add configuration guide, remove config.toml support +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- Full-stack integration — DB repos, REST API, Docker Compose, app wiring +- Notify & scheduler modules with background workers and API routes +- Add analytics API routes and Docker app service ([#18](https://github.com/rararulab/rara/issues/18)) +- **notify**: Implement noop notification sender +- **notify**: Implement Telegram sender via teloxide +- **app**: Integrate JobSpyDriver into composition root +- **ai**: Integrate rig-core SDK, replace stubbed providers +- **telegram**: Create bot crate with message receiving +- Implement telegram bot worker and JD parse pipeline +- **job-source**: Add job discovery API endpoint and connect frontend +- **server**: Implement singleflight request dedup middleware ([#77](https://github.com/rararulab/rara/issues/77)) +- **domain**: Add saved-job domain crate with CRUD API ([#81](https://github.com/rararulab/rara/issues/81)) +- **workers**: Add saved job GC worker for expired links ([#83](https://github.com/rararulab/rara/issues/83)) +- **domain**: Add saved job crawl + AI analysis pipeline ([#82](https://github.com/rararulab/rara/issues/82)) +- Integrate saved jobs UI, MinIO config, and standalone telegram bot +- Add runtime settings with hot reload for ai and telegram +- **notifications**: Rebuild observability around pgmq queue semantics +- **agents**: Add proactive agent with personality (Agent Soul) +- **workers**: Implement agent scheduler and schedule tools ([#144](https://github.com/rararulab/rara/issues/144)) +- **telegram**: Add group chat support with mention-based triggering +- **openapi**: Add OpenAPI support with utoipa + Swagger UI ([#159](https://github.com/rararulab/rara/issues/159)) +- **pipeline**: Add cron scheduling for automatic pipeline runs ([#220](https://github.com/rararulab/rara/issues/220)) +- **contacts**: Add telegram contacts allowlist ([#232](https://github.com/rararulab/rara/issues/232)) +- **infisical**: Add Infisical secrets manager integration ([#267](https://github.com/rararulab/rara/issues/267)) +- **config**: Replace Infisical with Consul KV as configuration source ([#288](https://github.com/rararulab/rara/issues/288)) +- Load app config from consul kv via rs-consul +- **memory**: Mem0 on-demand K8s pod with LazyMem0Client ([#321](https://github.com/rararulab/rara/issues/321)) +- **app**: Validate platform identity in ChatServiceBridge ([#363](https://github.com/rararulab/rara/issues/363)) +- **app**: Wire real deps into I/O Bus pipeline ([#371](https://github.com/rararulab/rara/issues/371)) +- **app**: Wire WebAdapter into I/O Bus pipeline and HTTP server +- **cli**: Add interactive chat command with TerminalAdapter ([#381](https://github.com/rararulab/rara/issues/381)) +- **kernel**: Multi-provider LLM architecture with ProviderRegistry ([#421](https://github.com/rararulab/rara/issues/421)) +- **user**: Backend auth — JWT + user domain crate ([#428](https://github.com/rararulab/rara/issues/428)) +- **channels**: Add Telegram account linking via /link command ([#430](https://github.com/rararulab/rara/issues/430)) +- **boot**: Channel binding-aware session resolver + misc fixes +- **kernel**: Inject per-process syscall tools into ToolRegistry ([#443](https://github.com/rararulab/rara/issues/443)) +- **kernel**: Integrate agentfs-sdk for KV + ToolCall audit ([#451](https://github.com/rararulab/rara/issues/451)) +- **kernel**: Settings-driven SandboxConfig + hot reload ([#453](https://github.com/rararulab/rara/issues/453)) +- **agent**: Implement Mita background proactive agent ([#72](https://github.com/rararulab/rara/issues/72)) +- **memory**: Add information writeback and tape compaction ([#73](https://github.com/rararulab/rara/issues/73)) +- **kernel**: Wire knowledge layer into kernel event loop and boot sequence ([#81](https://github.com/rararulab/rara/issues/81)) +- **tools**: Add SettingsTool for runtime config introspection ([#84](https://github.com/rararulab/rara/issues/84)) +- **gateway**: Add supervisor foundation — spawn, health check, restart agent ([#92](https://github.com/rararulab/rara/issues/92)) +- **gateway**: Add update detector — git fetch + rev comparison ([#93](https://github.com/rararulab/rara/issues/93)) +- **config**: Support per-agent model override in config.yaml ([#99](https://github.com/rararulab/rara/issues/99)) +- **gateway**: Wire update detector → executor → supervisor restart pipeline ([#102](https://github.com/rararulab/rara/issues/102)) +- **gateway**: Send auto-update lifecycle notifications to Telegram channel ([#109](https://github.com/rararulab/rara/issues/109)) +- **gateway**: Use sysinfo for rich system context in notifications ([#112](https://github.com/rararulab/rara/issues/112)) +- **gateway**: Enable sccache for staging worktree builds +- **gateway**: Make commit rev a clickable GitHub link in notifications ([#114](https://github.com/rararulab/rara/issues/114)) +- **symphony**: Add SymphonyService and integrate with rara-app ([#119](https://github.com/rararulab/rara/issues/119)) +- **config**: Add unflatten_from_settings() for KV → config struct roundtrip ([#121](https://github.com/rararulab/rara/issues/121)) +- **config**: Add ConfigFileSync for bidirectional config <-> settings sync ([#121](https://github.com/rararulab/rara/issues/121)) +- **config**: Wire ConfigFileSync into startup, remove seed_defaults ([#121](https://github.com/rararulab/rara/issues/121)) +- **kernel**: Dynamic MCP tool injection into agent loop ([#126](https://github.com/rararulab/rara/issues/126)) +- **tools**: Resolve tool working directory to workspace_dir +- **kernel**: Usage collection, tape tools, and context contract ([#130](https://github.com/rararulab/rara/issues/130)) +- **kernel**: KernelEvent::SendNotification + fix PublishEvent syscall ([#137](https://github.com/rararulab/rara/issues/137)) +- **symphony**: Replace ralph sidecar with per-issue `ralph run` subprocess +- **kernel**: Harden tape-handoff prompt and elevate to core protocol ([#148](https://github.com/rararulab/rara/issues/148)) +- Align chat tui with openfang +- **kernel**: Add desired_session_key to spawn_with_input ([#164](https://github.com/rararulab/rara/issues/164)) +- **mita**: Add updated_since filter to list-sessions tool ([#169](https://github.com/rararulab/rara/issues/169)) +- **memory**: User tape knowledge distillation via anchor ([#170](https://github.com/rararulab/rara/issues/170)) +- **soul**: Implement evolve-soul tool and auto-notifications for Mita tools +- **tools**: Add set-avatar tool for Telegram bot profile photo ([#189](https://github.com/rararulab/rara/issues/189)) +- **kernel+app**: Persist image metadata to session & add get-session-info tool ([#192](https://github.com/rararulab/rara/issues/192)) +- **tui**: Integrate kernel CommandHandler into chat TUI ([#194](https://github.com/rararulab/rara/issues/194)) +- **gateway**: Move bot_token + notification_channel_id into GatewayConfig ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Add GatewayTelegramListener with management commands ([#199](https://github.com/rararulab/rara/issues/199)) +- **mcp**: Add InterceptorStats to ContextModeInterceptor ([#209](https://github.com/rararulab/rara/issues/209)) +- **mcp**: Heartbeat reconnection restores context-mode interceptor ([#209](https://github.com/rararulab/rara/issues/209)) +- **gateway**: Show build duration in auto-update notifications +- **channels**: Wire GroupPolicy into TelegramConfig +- **kernel**: Wire IngressRateLimiter into IOSubsystem resolve path +- **gateway**: Add ProcessMonitor with snapshot and threshold types ([#252](https://github.com/rararulab/rara/issues/252)) +- **gateway**: Wire ProcessMonitor into bootstrap and status endpoint ([#252](https://github.com/rararulab/rara/issues/252)) +- **gateway**: Add /threshold and /stats Telegram commands ([#252](https://github.com/rararulab/rara/issues/252)) +- **gateway**: Persist alert thresholds to gateway-state.yaml ([#266](https://github.com/rararulab/rara/issues/266)) +- **telegram**: Register all command handlers and add slash menu ([#331](https://github.com/rararulab/rara/issues/331)) +- **kernel,telegram**: Rara_message_id end-to-end tracing and debug_trace tool ([#337](https://github.com/rararulab/rara/issues/337)) +- **kernel**: Background agent spawning with proactive result delivery ([#340](https://github.com/rararulab/rara/issues/340)) +- **kernel**: Context folding — auto-anchor with pressure-driven summarization ([#357](https://github.com/rararulab/rara/issues/357)) +- **memory**: Add structured user profile template for distillation ([#402](https://github.com/rararulab/rara/issues/402)) ([#406](https://github.com/rararulab/rara/issues/406)) +- **kernel,telegram**: Auto-generate session title & redesign /sessions UI ([#434](https://github.com/rararulab/rara/issues/434)) +- **channels**: Add /status command with session info and scheduled jobs ([#450](https://github.com/rararulab/rara/issues/450)) ([#453](https://github.com/rararulab/rara/issues/453)) +- **dock**: Generative UI canvas workbench ([#424](https://github.com/rararulab/rara/issues/424)) +- **kernel**: Read-file adaptive paging based on context window ([#468](https://github.com/rararulab/rara/issues/468)) ([#471](https://github.com/rararulab/rara/issues/471)) +- **kernel**: Add browser automation subsystem via Lightpanda + CDP ([#473](https://github.com/rararulab/rara/issues/473)) +- **gateway**: Send Telegram notification on shutdown ([#490](https://github.com/rararulab/rara/issues/490)) ([#491](https://github.com/rararulab/rara/issues/491)) +- **kernel**: Inject installed skills into agent system prompt ([#487](https://github.com/rararulab/rara/issues/487)) +- **channels**: Add session delete buttons and relative time in /sessions ([#492](https://github.com/rararulab/rara/issues/492)) +- **acp**: Add native acp client crate ([#504](https://github.com/rararulab/rara/issues/504)) +- **kernel**: Add PathScopeGuard for file-access scope enforcement ([#579](https://github.com/rararulab/rara/issues/579)) ([#582](https://github.com/rararulab/rara/issues/582)) +- **kernel**: Add LlmModelLister and LlmEmbedder extension traits ([#762](https://github.com/rararulab/rara/issues/762)) ([#766](https://github.com/rararulab/rara/issues/766)) +- **kernel**: Deferred tool loading — reduce per-turn token overhead ([#756](https://github.com/rararulab/rara/issues/756)) ([#768](https://github.com/rararulab/rara/issues/768)) +- **kernel**: Per-tool execution timeout granularity ([#778](https://github.com/rararulab/rara/issues/778)) ([#782](https://github.com/rararulab/rara/issues/782)) +- **kernel**: Stream bash stdout in real-time during tool execution ([#777](https://github.com/rararulab/rara/issues/777)) ([#788](https://github.com/rararulab/rara/issues/788)) +- **app**: Port kota file tools — in-process grep/find, delete-file, create-directory ([#808](https://github.com/rararulab/rara/issues/808)) ([#810](https://github.com/rararulab/rara/issues/810)) +- **channels**: Add WeChat iLink Bot channel adapter ([#827](https://github.com/rararulab/rara/issues/827)) ([#830](https://github.com/rararulab/rara/issues/830)) +- **kernel**: Discover-tools finds skills ([#833](https://github.com/rararulab/rara/issues/833)) ([#835](https://github.com/rararulab/rara/issues/835)) +- **app**: Add system-paths tool to expose directory layout ([#838](https://github.com/rararulab/rara/issues/838)) ([#840](https://github.com/rararulab/rara/issues/840)) +- **tools**: Include parameter summaries in discover-tools results ([#925](https://github.com/rararulab/rara/issues/925)) ([#926](https://github.com/rararulab/rara/issues/926)) +- **kernel**: Add ToolHint, UserQuestionManager, and ask-user tool ([#945](https://github.com/rararulab/rara/issues/945)) ([#952](https://github.com/rararulab/rara/issues/952)) +- **kernel**: Codex OAuth as first-class LLM provider ([#950](https://github.com/rararulab/rara/issues/950)) ([#953](https://github.com/rararulab/rara/issues/953)) +- **cmd**: TUI-Telegram feature parity ([#961](https://github.com/rararulab/rara/issues/961)) ([#984](https://github.com/rararulab/rara/issues/984)) +- **agents**: Mita self-improving skill discovery loop ([#992](https://github.com/rararulab/rara/issues/992)) ([#993](https://github.com/rararulab/rara/issues/993)) +- **kernel**: Telegram voice message STT via local whisper-server ([#998](https://github.com/rararulab/rara/issues/998)) ([#1003](https://github.com/rararulab/rara/issues/1003)) +- **app**: Auto-manage whisper-server lifecycle ([#1081](https://github.com/rararulab/rara/issues/1081)) ([#1082](https://github.com/rararulab/rara/issues/1082)) +- **web**: Voice message input via microphone recording ([#1084](https://github.com/rararulab/rara/issues/1084)) ([#1085](https://github.com/rararulab/rara/issues/1085)) +- **browser**: Seamless Lightpanda integration via config.yaml ([#1109](https://github.com/rararulab/rara/issues/1109)) ([#1110](https://github.com/rararulab/rara/issues/1110)) +- **kernel**: Batch file reads and 429 rate-limit recovery ([#1118](https://github.com/rararulab/rara/issues/1118)) ([#1119](https://github.com/rararulab/rara/issues/1119)) +- **channels**: Add /debug command for Telegram message context retrieval ([#1127](https://github.com/rararulab/rara/issues/1127)) ([#1130](https://github.com/rararulab/rara/issues/1130)) +- **channels**: Telegram voice reply via TTS ([#1163](https://github.com/rararulab/rara/issues/1163)) ([#1171](https://github.com/rararulab/rara/issues/1171)) +- **kernel**: Add safety axes + concurrency partitioning ([#1186](https://github.com/rararulab/rara/issues/1186)) ([#1192](https://github.com/rararulab/rara/issues/1192)) +- **app**: Generalize send-image into send-file for arbitrary file delivery ([#1213](https://github.com/rararulab/rara/issues/1213)) ([#1214](https://github.com/rararulab/rara/issues/1214)) +- **kernel**: Add CodexDriver for ChatGPT backend Responses API ([#1246](https://github.com/rararulab/rara/issues/1246)) ([#1247](https://github.com/rararulab/rara/issues/1247)) +- **app**: Auto-start web frontend server alongside Gateway ([#1266](https://github.com/rararulab/rara/issues/1266)) ([#1268](https://github.com/rararulab/rara/issues/1268)) +- **app**: Integrate fff-search as native frecency-aware find/grep tools ([#1282](https://github.com/rararulab/rara/issues/1282)) ([#1283](https://github.com/rararulab/rara/issues/1283)) +- **kernel**: Implement SkillNudge + MemoryNudge lifecycle hooks ([#1290](https://github.com/rararulab/rara/issues/1290)) ([#1292](https://github.com/rararulab/rara/issues/1292)) +- **agents**: Make safety fragment act-by-default to improve proactivity ([#1320](https://github.com/rararulab/rara/issues/1320)) ([#1324](https://github.com/rararulab/rara/issues/1324)) +- **kernel**: Runtime ack detection to prevent lazy LLM responses ([#1329](https://github.com/rararulab/rara/issues/1329)) ([#1330](https://github.com/rararulab/rara/issues/1330)) +- **kernel**: Hermes-aligned agent loop efficiency improvements ([#1384](https://github.com/rararulab/rara/issues/1384)) ([#1387](https://github.com/rararulab/rara/issues/1387)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Refactor +- Format +- Rename to rara +- Format & some improvement & prompt markdown +- Change default HTTP port from 3000 to 25555 +- Format +- Make lint pass across workspace +- Format +- Format +- Clean repo +- Format +- Clean +- **app**: Remove dead register_mcp_tools, fix stale doc comment ([#69](https://github.com/rararulab/rara/issues/69)) +- Format +- Support composio config +- Format chat tui files +- Optimize supervisor +- **gateway**: Add sysinfo dependency ([#252](https://github.com/rararulab/rara/issues/252)) +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) +- **app**: Remove sync_from_file_populates_kv test ([#678](https://github.com/rararulab/rara/issues/678)) ([#680](https://github.com/rararulab/rara/issues/680)) +- Disable lightpanda + +### Refactor + +- Rename rsketch crates to job +- **yunara-store**: Remove domain repos, models, and conversions ([#40](https://github.com/rararulab/rara/issues/40)) +- Move API routes from server to domain crates +- **ai**: Replace generic AiTaskKind with concrete agent structs +- Extract AI crate from domain/, create workers crate +- Move TelegramService to shared crate, add notify-driven workers +- **telegram**: Extract bot from worker framework into standalone service +- Split SavedJobPipeline into independent crawl + analyze workers ([#92](https://github.com/rararulab/rara/issues/92)) +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Move TelegramService into telegram-bot crate, add outbox pattern +- Remove notify domain crate, replace with lightweight shared notify client +- Realign domain boundaries and rename domain crates +- **notify**: Route observability through NotifyClient +- Unify runtime state into AppState with init() and routes() +- Unify job domain into single JobService +- Extract crawl4ai into common crate and remove unused downloader +- Migrate to reversible migrations, use paths crate for sessions dir, simplify store +- Unify process model, integrate telegram-bot into app +- **job**: Remove saved jobs feature ([#236](https://github.com/rararulab/rara/issues/236)) +- **infisical**: Implement config AsyncSource instead of env var injection ([#269](https://github.com/rararulab/rara/issues/269)) +- Move chroma config from settings to app config +- Remove duplicate worker memory config type +- **settings**: Move SettingsSvc + ollama from domain/shared to backend-admin ([#310](https://github.com/rararulab/rara/issues/310)) +- **memory**: Integrate new MemoryManager into tools, orchestrator, and settings ([#313](https://github.com/rararulab/rara/issues/313)) +- Remove mem0 on-demand pod mode +- **app**: Replace telegram-bot crate with TelegramAdapter ([#354](https://github.com/rararulab/rara/issues/354)) +- **app**: Wire I/O Bus pipeline alongside ChatService ([#365](https://github.com/rararulab/rara/issues/365)) +- Remove ChannelBridge, ChannelRouter, and ChatServiceBridge ([#366](https://github.com/rararulab/rara/issues/366)) +- **kernel**: Extract shared spawn logic, consolidate noop defaults ([#368](https://github.com/rararulab/rara/issues/368)) +- **kernel**: Redesign executor as OS process model ([#374](https://github.com/rararulab/rara/issues/374)) +- **kernel**: Unify SessionRepository trait, delete SessionManager ([#378](https://github.com/rararulab/rara/issues/378)) +- **kernel**: Separate kernel/agent concerns, unify spawn, use CancellationToken +- **kernel**: Kernel owns I/O subsystem, boot() -> Kernel ([#380](https://github.com/rararulab/rara/issues/380)) +- Remove legacy proactive agent and agent scheduler +- **kernel**: Unify all interactions into KernelEvent ([#400](https://github.com/rararulab/rara/issues/400)) +- Remove job pipeline module and related code +- **settings**: Unify runtime settings into flat KV store ([#401](https://github.com/rararulab/rara/issues/401)) +- **agents**: Simplify agents crate — AgentRole to kernel, inline prompts, rara only ([#408](https://github.com/rararulab/rara/issues/408)) +- **kernel**: ProcessTable redesign — tree index, AgentRegistry, 3-path routing ([#419](https://github.com/rararulab/rara/issues/419)) +- **boot,backend**: Split AppState into RaraState + BackendState ([#438](https://github.com/rararulab/rara/issues/438)) +- **kernel,config**: Rename SpawnTool → SyscallTool and harden Consul KV config +- **kernel**: Migrate external callers to KernelHandle, demote Kernel methods ([#24](https://github.com/rararulab/rara/issues/24)) +- **kernel**: Remove async-openai and legacy LLM provider layer +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **kernel**: Dissolve defaults/ module into domain modules ([#36](https://github.com/rararulab/rara/issues/36)) +- Remove PGMQ NotifyClient — replaced by kernel egress +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- Remove rara-k8s crate and clean up unused infrastructure +- Remove telegram contacts subsystem +- **boot**: 简化 boot 层,集成 tape store 和 session index ([#44](https://github.com/rararulab/rara/issues/44)) +- **llm**: Per-provider default_model and fallback_models ([#47](https://github.com/rararulab/rara/issues/47)) +- Make it compile +- **kernel**: Remove SessionResolver, simplify ChannelBinding ([#63](https://github.com/rararulab/rara/issues/63)) +- **app**: Merge rara-boot into rara-app ([#69](https://github.com/rararulab/rara/issues/69)) +- **tool**: Remove unused ToolLayer/ToolSource, flatten tools directory ([#74](https://github.com/rararulab/rara/issues/74)) +- **kernel**: Make knowledge layer a required component, not optional ([#81](https://github.com/rararulab/rara/issues/81)) +- **kernel**: Remove enabled flag from KnowledgeConfig ([#81](https://github.com/rararulab/rara/issues/81)) +- **app**: Load KnowledgeConfig from YAML config, not settings ([#81](https://github.com/rararulab/rara/issues/81)) +- **app**: Align knowledge config with settings-first architecture +- **gateway**: Use teloxide::Bot instead of raw reqwest for TG notifier ([#109](https://github.com/rararulab/rara/issues/109)) +- **gateway**: Require Telegram config and enrich notification templates ([#109](https://github.com/rararulab/rara/issues/109)) +- **app**: Require mita config and use humantime-serde for durations +- **config**: Add Serialize derive to all AppConfig types ([#121](https://github.com/rararulab/rara/issues/121)) +- **app,backend-admin**: Adapt to simplified symphony — remove SymphonyStatusHandle +- **mita**: Make Mita a long-lived session with fixed tape ([#164](https://github.com/rararulab/rara/issues/164)) +- **mita**: Replace submit_message with typed MitaDirective ([#171](https://github.com/rararulab/rara/issues/171)) +- **app**: Remove MitaHeartbeatWorker, use kernel scheduler ([#183](https://github.com/rararulab/rara/issues/183)) +- **tools**: Set-avatar reads from images_dir instead of URL ([#190](https://github.com/rararulab/rara/issues/190)) +- **gateway**: Simplify notification template, remove sysinfo dep ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Rename notification_channel_id to chat_id ([#199](https://github.com/rararulab/rara/issues/199)) +- **kernel**: Make output_interceptor dynamically swappable ([#209](https://github.com/rararulab/rara/issues/209)) +- **tools**: Split composio meta-tool into 4 focused tools ([#234](https://github.com/rararulab/rara/issues/234)) +- **app**: Migrate app, dock, and knowledge tools to ToolDef derive macro ([#512](https://github.com/rararulab/rara/issues/512)) ([#519](https://github.com/rararulab/rara/issues/519)) +- **browser**: Remove BrowserConfig from AppConfig ([#525](https://github.com/rararulab/rara/issues/525)) ([#526](https://github.com/rararulab/rara/issues/526)) +- **tool**: Typed Output associated type for ToolExecute ([#524](https://github.com/rararulab/rara/issues/524)) ([#533](https://github.com/rararulab/rara/issues/533)) +- **tool**: Migrate acp tools to ToolExecute macro ([#569](https://github.com/rararulab/rara/issues/569)) +- **acp**: Remove builtin agents and capture stderr in spawn errors ([#571](https://github.com/rararulab/rara/issues/571)) ([#572](https://github.com/rararulab/rara/issues/572)) +- **acp**: Address code review findings across rara-acp crate ([#672](https://github.com/rararulab/rara/issues/672)) ([#676](https://github.com/rararulab/rara/issues/676)) +- **tools**: Token diet — aggressive tool tiering + new file tools + browser prompt ([#805](https://github.com/rararulab/rara/issues/805)) ([#806](https://github.com/rararulab/rara/issues/806)) +- **kernel**: Drop output interceptor ([#809](https://github.com/rararulab/rara/issues/809)) ([#811](https://github.com/rararulab/rara/issues/811)) +- **kernel**: Tool schema diet — split tape + compress descriptions ([#825](https://github.com/rararulab/rara/issues/825)) ([#826](https://github.com/rararulab/rara/issues/826)) +- **kernel**: Prompt diet tool tiering ([#831](https://github.com/rararulab/rara/issues/831)) ([#832](https://github.com/rararulab/rara/issues/832)) +- **app**: Remove swagger-ui support ([#904](https://github.com/rararulab/rara/issues/904)) +- **tools**: Split monolithic marketplace tool into 6 independent tools ([#922](https://github.com/rararulab/rara/issues/922)) ([#923](https://github.com/rararulab/rara/issues/923)) +- Remove dead code identified by desloppify scan ([#1025](https://github.com/rararulab/rara/issues/1025)) ([#1029](https://github.com/rararulab/rara/issues/1029)) +- **kernel**: Fix KernelHandle API inconsistencies ([#1027](https://github.com/rararulab/rara/issues/1027)) ([#1031](https://github.com/rararulab/rara/issues/1031)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) +- Replace magic strings with typed enums ([#1033](https://github.com/rararulab/rara/issues/1033)) ([#1036](https://github.com/rararulab/rara/issues/1036)) +- **kernel**: Introduce ToolName newtype for type-safe tool identifiers ([#1123](https://github.com/rararulab/rara/issues/1123)) ([#1133](https://github.com/rararulab/rara/issues/1133)) +- **kernel**: Type-state InboundMessage ([#1125](https://github.com/rararulab/rara/issues/1125)) ([#1134](https://github.com/rararulab/rara/issues/1134)) +- **workspace**: Extract browser/stt from kernel into driver crates ([#1146](https://github.com/rararulab/rara/issues/1146)) ([#1154](https://github.com/rararulab/rara/issues/1154)) +- **kernel**: Clean up io.rs (typestate, constructors, dead code, hot path) ([#1180](https://github.com/rararulab/rara/issues/1180)) ([#1184](https://github.com/rararulab/rara/issues/1184)) + +### Revert + +- **kernel**: Back out today's proactivity changes +- Restore April 13 changes previously rolled back + +### Styling + +- **browser**: Fix rustfmt alignment in BrowserFetchResult ([#1112](https://github.com/rararulab/rara/issues/1112)) ([#1113](https://github.com/rararulab/rara/issues/1113)) + +### Testing + +- **config**: Add integration test for ConfigFileSync file→KV sync ([#121](https://github.com/rararulab/rara/issues/121)) +- **app**: Add E2E test for anchor checkout conversation flow ([#198](https://github.com/rararulab/rara/issues/198)) +- **kernel**: Add ScriptedLlmDriver and CI-ready E2E test harness ([#1172](https://github.com/rararulab/rara/issues/1172)) ([#1175](https://github.com/rararulab/rara/issues/1175)) +- **kernel**: Tool call round-trip E2E test with FakeTool ([#1177](https://github.com/rararulab/rara/issues/1177)) ([#1182](https://github.com/rararulab/rara/issues/1182)) +- **kernel**: Failure mode E2E tests for LLM/tool/iteration errors ([#1179](https://github.com/rararulab/rara/issues/1179)) ([#1188](https://github.com/rararulab/rara/issues/1188)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/channels/CHANGELOG.md b/crates/channels/CHANGELOG.md new file mode 100644 index 000000000..127f9368e --- /dev/null +++ b/crates/channels/CHANGELOG.md @@ -0,0 +1,177 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **kernel**: Add SessionKey::try_from_raw, remove Timer dead code, document kv panic safety +- **channels**: Resolve RefMut-across-await, add Reply fallback, extend cleanup timeout ([#38](https://github.com/rararulab/rara/issues/38)) +- **kernel,channels**: Prevent duplicate telegram messages and stuck Running processes +- Avoid duplicating telegram long replies after stream split +- Axum route +- **channels**: Add tool progress reporting in Telegram stream ([#87](https://github.com/rararulab/rara/issues/87)) +- **telegram**: Implement unified command dispatch ([#108](https://github.com/rararulab/rara/issues/108)) +- **tools**: Rename all tool names to match OpenAI ^[a-zA-Z0-9-]+$ pattern +- Tape memory +- Revert temporary work +- **telegram**: Handle photos without caption text ([#166](https://github.com/rararulab/rara/issues/166)) +- **channels**: Refresh typing indicator directly in stream forwarder ([#182](https://github.com/rararulab/rara/issues/182)) +- **gateway**: Add proxy + timeout support to gateway Telegram bot ([#205](https://github.com/rararulab/rara/issues/205)) +- **channels**: Emit TextClear to fix tool progress notifications ([#207](https://github.com/rararulab/rara/issues/207)) +- **guard**: Address PR review issues — auth, normalization, cleanup ([#220](https://github.com/rararulab/rara/issues/220)) +- **tg**: Update progress timer even when no new events arrive ([#225](https://github.com/rararulab/rara/issues/225)) +- **channels**: Show tool arguments in guard approval prompt +- **channels**: Strip tool call XML from TG text stream ([#276](https://github.com/rararulab/rara/issues/276)) +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) +- **telegram**: Pre-render trace HTML for instant callback response ([#343](https://github.com/rararulab/rara/issues/343)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **channels**: Render placeholder node for sessions with no anchors ([#436](https://github.com/rararulab/rara/issues/436)) ([#437](https://github.com/rararulab/rara/issues/437)) +- **channels**: Remove stale message count from /sessions display ([#441](https://github.com/rararulab/rara/issues/441)) ([#442](https://github.com/rararulab/rara/issues/442)) +- **channels**: Remove stale message count from session detail/switch display ([#448](https://github.com/rararulab/rara/issues/448)) ([#449](https://github.com/rararulab/rara/issues/449)) +- **kernel**: Inject agent context into plan-mode planner ([#567](https://github.com/rararulab/rara/issues/567)) ([#576](https://github.com/rararulab/rara/issues/576)) +- **tg**: Answer cascade callback immediately to prevent timeout ([#585](https://github.com/rararulab/rara/issues/585)) ([#587](https://github.com/rararulab/rara/issues/587)) +- **tg**: Show tool call parameters in plan progress view ([#598](https://github.com/rararulab/rara/issues/598)) ([#599](https://github.com/rararulab/rara/issues/599)) +- **guard**: Expand whitelist and fix approval timeout race (#604, #605) ([#609](https://github.com/rararulab/rara/issues/609)) +- **tg**: Cascade button no response due to HTML truncation ([#691](https://github.com/rararulab/rara/issues/691)) ([#695](https://github.com/rararulab/rara/issues/695)) +- **tg**: Show trace buttons for pure text replies ([#702](https://github.com/rararulab/rara/issues/702)) ([#703](https://github.com/rararulab/rara/issues/703)) +- **tg**: Wire McpManager into KernelBotServiceClient ([#720](https://github.com/rararulab/rara/issues/720)) ([#721](https://github.com/rararulab/rara/issues/721)) +- **channels**: Adapt wechat login to iLink API v2 ([#839](https://github.com/rararulab/rara/issues/839)) ([#842](https://github.com/rararulab/rara/issues/842)) +- **channels**: Correct wechat polling field names for msgs and user ID ([#869](https://github.com/rararulab/rara/issues/869)) ([#870](https://github.com/rararulab/rara/issues/870)) +- **channels**: Handle iLink API type 1 text_item format in body_from_item_list ([#872](https://github.com/rararulab/rara/issues/872)) ([#874](https://github.com/rararulab/rara/issues/874)) +- **channels**: Send wechat replies to bot account_id, not from_user_id ([#877](https://github.com/rararulab/rara/issues/877)) ([#879](https://github.com/rararulab/rara/issues/879)) +- **channels**: Align sendmessage with iLink protocol per weclaw reference ([#884](https://github.com/rararulab/rara/issues/884)) ([#886](https://github.com/rararulab/rara/issues/886)) +- **channels**: Implement correct iLink typing indicator protocol ([#887](https://github.com/rararulab/rara/issues/887)) ([#889](https://github.com/rararulab/rara/issues/889)) +- **channels**: Handle Progress variant to trigger wechat typing indicator ([#891](https://github.com/rararulab/rara/issues/891)) ([#892](https://github.com/rararulab/rara/issues/892)) +- **channels**: Always refresh progress timer once message exists ([#893](https://github.com/rararulab/rara/issues/893)) ([#895](https://github.com/rararulab/rara/issues/895)) +- **channels**: Use kernel-resolved session key for web stream forwarder ([#1056](https://github.com/rararulab/rara/issues/1056)) ([#1057](https://github.com/rararulab/rara/issues/1057)) +- **kernel**: Use SessionKey/ChannelType types in ChannelMessage and ChannelBinding ([#1120](https://github.com/rararulab/rara/issues/1120)) ([#1132](https://github.com/rararulab/rara/issues/1132)) +- **kernel**: Explicit backpressure retry for IOError::Full in ingress pipeline ([#1148](https://github.com/rararulab/rara/issues/1148)) ([#1158](https://github.com/rararulab/rara/issues/1158)) +- **drivers**: Structured STT errors with retry for transient failures ([#1164](https://github.com/rararulab/rara/issues/1164)) ([#1168](https://github.com/rararulab/rara/issues/1168)) +- **channels**: Add missing ToolKind variants and show raw name for unknown tools ([#1191](https://github.com/rararulab/rara/issues/1191)) ([#1193](https://github.com/rararulab/rara/issues/1193)) +- **tests**: Stabilize e2e rara_paths init for CI ([#1199](https://github.com/rararulab/rara/issues/1199)) +- **telegram**: Avoid duplicate replies and render markdown tables ([#1203](https://github.com/rararulab/rara/issues/1203)) +- **channels**: /debug shows all entry kinds via entries_by_message_id ([#1207](https://github.com/rararulab/rara/issues/1207)) ([#1209](https://github.com/rararulab/rara/issues/1209)) +- **channels**: Panic on UTF-8 char boundary in markdown chunk_message ([#1258](https://github.com/rararulab/rara/issues/1258)) +- **channels**: Route approval requests to originating chat, not primary_chat_id ([#1319](https://github.com/rararulab/rara/issues/1319)) ([#1322](https://github.com/rararulab/rara/issues/1322)) +- **channels**: Guard streamed_visible_prefix behind actual TG message send ([#1334](https://github.com/rararulab/rara/issues/1334)) ([#1335](https://github.com/rararulab/rara/issues/1335)) + +### Features + +- **channels**: Add StreamingMessage struct and StreamHub fields to TelegramAdapter ([#38](https://github.com/rararulab/rara/issues/38)) +- **channels**: Implement spawn_stream_forwarder and flush_edit for TG streaming ([#38](https://github.com/rararulab/rara/issues/38)) +- **channels**: Wire up TG stream forwarder in polling loop and egress reply ([#38](https://github.com/rararulab/rara/issues/38)) +- **kernel**: Add group chat proactive reply with two-step LLM judgment ([#71](https://github.com/rararulab/rara/issues/71)) +- **kernel,channels**: Expose Signal::Interrupt via SyscallTool, Telegram /stop, and Web API ([#80](https://github.com/rararulab/rara/issues/80)) +- **channels**: Support sending images to users in Telegram ([#91](https://github.com/rararulab/rara/issues/91)) +- **telegram**: Wire command handlers with KernelBotServiceClient ([#108](https://github.com/rararulab/rara/issues/108)) +- **channels**: Enrich tool-call progress with argument summaries ([#115](https://github.com/rararulab/rara/issues/115)) +- **telegram**: Compact tool-call progress display for long tasks ([#118](https://github.com/rararulab/rara/issues/118)) +- **llm**: Image compression pipeline for vision input ([#131](https://github.com/rararulab/rara/issues/131)) +- **channels**: Improve tool progress display detail ([#187](https://github.com/rararulab/rara/issues/187)) +- **channels**: Add tool execution time and concurrency display ([#187](https://github.com/rararulab/rara/issues/187)) +- **channels**: Show total turn elapsed time in progress display ([#187](https://github.com/rararulab/rara/issues/187)) +- **channels**: Save uploaded photos to images_dir ([#191](https://github.com/rararulab/rara/issues/191)) +- **tui**: Integrate kernel CommandHandler into chat TUI ([#194](https://github.com/rararulab/rara/issues/194)) +- **telegram**: Show interceptor status in /mcp for context-mode ([#209](https://github.com/rararulab/rara/issues/209)) +- **channels**: Show error reason in tool progress display ([#207](https://github.com/rararulab/rara/issues/207)) +- **guard**: Integrate approval flow with Telegram inline keyboard ([#220](https://github.com/rararulab/rara/issues/220)) +- **channels**: Render plan events in Telegram and Web adapters ([#251](https://github.com/rararulab/rara/issues/251)) +- **channels**: Plan-execute TG 三级显示策略 + 单消息编辑流 ([#267](https://github.com/rararulab/rara/issues/267)) +- **channels**: TG tool progress 语义化显示 ([#278](https://github.com/rararulab/rara/issues/278)) +- **telegram**: Show input/output token counts in progress UX ([#304](https://github.com/rararulab/rara/issues/304)) +- **telegram**: Register all command handlers and add slash menu ([#331](https://github.com/rararulab/rara/issues/331)) +- **kernel,telegram**: Rara_message_id end-to-end tracing and debug_trace tool ([#337](https://github.com/rararulab/rara/issues/337)) +- **kernel**: Background agent spawning with proactive result delivery ([#340](https://github.com/rararulab/rara/issues/340)) +- **kernel,telegram**: Auto-generate session title & redesign /sessions UI ([#434](https://github.com/rararulab/rara/issues/434)) +- **kernel**: Centralize loading hints with random selection ([#455](https://github.com/rararulab/rara/issues/455)) +- **channels**: Add /status command with session info and scheduled jobs ([#450](https://github.com/rararulab/rara/issues/450)) ([#453](https://github.com/rararulab/rara/issues/453)) +- **dock**: Generative UI canvas workbench ([#424](https://github.com/rararulab/rara/issues/424)) +- **chat**: Support user image input in web and cli ([#475](https://github.com/rararulab/rara/issues/475)) +- **channels**: Add session delete buttons and relative time in /sessions ([#492](https://github.com/rararulab/rara/issues/492)) +- **kernel**: Implement pause_turn circuit breaker for agent loop ([#506](https://github.com/rararulab/rara/issues/506)) ([#508](https://github.com/rararulab/rara/issues/508)) +- **web**: Cascade viewer — agent execution trace side panel ([#513](https://github.com/rararulab/rara/issues/513)) +- **kernel**: Show LLM reasoning for tool calls in progress display ([#661](https://github.com/rararulab/rara/issues/661)) ([#664](https://github.com/rararulab/rara/issues/664)) +- **channels**: Enhance guard approval UI with context, timing, and expiration ([#653](https://github.com/rararulab/rara/issues/653)) ([#665](https://github.com/rararulab/rara/issues/665)) +- **kernel**: Add tool call loop breaker ([#773](https://github.com/rararulab/rara/issues/773)) ([#775](https://github.com/rararulab/rara/issues/775)) +- **kernel**: Stream bash stdout in real-time during tool execution ([#777](https://github.com/rararulab/rara/issues/777)) ([#788](https://github.com/rararulab/rara/issues/788)) +- **channels**: Add WeChat iLink Bot channel adapter ([#827](https://github.com/rararulab/rara/issues/827)) ([#830](https://github.com/rararulab/rara/issues/830)) +- **channels**: Log bot and user identity in wechat adapter ([#864](https://github.com/rararulab/rara/issues/864)) ([#865](https://github.com/rararulab/rara/issues/865)) +- **channels**: Improve Telegram progress UX (#947, #948, #949) ([#951](https://github.com/rararulab/rara/issues/951)) +- **kernel**: Add ToolHint, UserQuestionManager, and ask-user tool ([#945](https://github.com/rararulab/rara/issues/945)) ([#952](https://github.com/rararulab/rara/issues/952)) +- **cmd**: TUI-Telegram feature parity ([#961](https://github.com/rararulab/rara/issues/961)) ([#984](https://github.com/rararulab/rara/issues/984)) +- **kernel**: Telegram voice message STT via local whisper-server ([#998](https://github.com/rararulab/rara/issues/998)) ([#1003](https://github.com/rararulab/rara/issues/1003)) +- **web**: Voice message input via microphone recording ([#1084](https://github.com/rararulab/rara/issues/1084)) ([#1085](https://github.com/rararulab/rara/issues/1085)) +- **channels**: Convert LaTeX math to Unicode for Telegram display ([#1101](https://github.com/rararulab/rara/issues/1101)) ([#1102](https://github.com/rararulab/rara/issues/1102)) +- **channels**: Add /debug command for Telegram message context retrieval ([#1127](https://github.com/rararulab/rara/issues/1127)) ([#1130](https://github.com/rararulab/rara/issues/1130)) +- **cmd**: Add 'rara debug ' CLI command ([#1135](https://github.com/rararulab/rara/issues/1135)) ([#1136](https://github.com/rararulab/rara/issues/1136)) +- **channels**: Telegram voice reply via TTS ([#1163](https://github.com/rararulab/rara/issues/1163)) ([#1171](https://github.com/rararulab/rara/issues/1171)) +- **app**: Generalize send-image into send-file for arbitrary file delivery ([#1213](https://github.com/rararulab/rara/issues/1213)) ([#1214](https://github.com/rararulab/rara/issues/1214)) +- **channels**: Port Claude Code spinner verbs for tool progress feedback ([#1220](https://github.com/rararulab/rara/issues/1220)) ([#1221](https://github.com/rararulab/rara/issues/1221)) +- **channels**: Move spinner verb from phase line to footer ([#1295](https://github.com/rararulab/rara/issues/1295)) ([#1296](https://github.com/rararulab/rara/issues/1296)) +- **channels**: Show tool name in progress phase line when summary is empty ([#1298](https://github.com/rararulab/rara/issues/1298)) ([#1299](https://github.com/rararulab/rara/issues/1299)) +- **channels**: Hermes-style per-tool progress lines ([#1300](https://github.com/rararulab/rara/issues/1300)) +- **channels**: Display subagent status in Telegram ([#1327](https://github.com/rararulab/rara/issues/1327)) ([#1328](https://github.com/rararulab/rara/issues/1328)) + +### Miscellaneous Tasks + +- Tidy project +- Format +- Clean +- Format +- Format +- Format +- **channels**: Upgrade reqwest 0.12 → 0.13 ([#283](https://github.com/rararulab/rara/issues/283)) ([#288](https://github.com/rararulab/rara/issues/288)) +- Format +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) +- **channels**: Add debug logging to wechat polling loop ([#858](https://github.com/rararulab/rara/issues/858)) ([#859](https://github.com/rararulab/rara/issues/859)) +- **channels**: Promote wechat adapter logs to info level ([#860](https://github.com/rararulab/rara/issues/860)) ([#861](https://github.com/rararulab/rara/issues/861)) +- **channels**: Add delivery debug logging for wechat send path ([#881](https://github.com/rararulab/rara/issues/881)) ([#882](https://github.com/rararulab/rara/issues/882)) + +### Performance + +- **cascade**: Build CascadeTrace incrementally during agent loop ([#625](https://github.com/rararulab/rara/issues/625)) ([#632](https://github.com/rararulab/rara/issues/632)) + +### Refactor + +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- Remove telegram contacts subsystem +- **kernel**: Introduce EventBase for unified event metadata +- **channels**: Adapt to session-centric kernel API ([#49](https://github.com/rararulab/rara/issues/49)) +- **kernel**: Remove SessionResolver, simplify ChannelBinding ([#63](https://github.com/rararulab/rara/issues/63)) +- **kernel**: Decouple proactive judgment into GroupMessage event ([#79](https://github.com/rararulab/rara/issues/79)) +- **tools**: Split composio meta-tool into 4 focused tools ([#234](https://github.com/rararulab/rara/issues/234)) +- **channels**: Use strum ToolKind enum for tool display mappings ([#278](https://github.com/rararulab/rara/issues/278)) +- **tg**: Cascade viewer toggles in-place instead of sending new message ([#528](https://github.com/rararulab/rara/issues/528)) +- **tg**: Unify plan and progress into single in-progress message ([#580](https://github.com/rararulab/rara/issues/580)) ([#583](https://github.com/rararulab/rara/issues/583)) +- **app**: Remove swagger-ui support ([#904](https://github.com/rararulab/rara/issues/904)) +- **kernel**: Fix KernelHandle API inconsistencies ([#1027](https://github.com/rararulab/rara/issues/1027)) ([#1031](https://github.com/rararulab/rara/issues/1031)) +- **kernel**: Type-state InboundMessage ([#1125](https://github.com/rararulab/rara/issues/1125)) ([#1134](https://github.com/rararulab/rara/issues/1134)) +- **kernel**: SessionState transitions via methods ([#1143](https://github.com/rararulab/rara/issues/1143)) ([#1153](https://github.com/rararulab/rara/issues/1153)) +- **workspace**: Extract browser/stt from kernel into driver crates ([#1146](https://github.com/rararulab/rara/issues/1146)) ([#1154](https://github.com/rararulab/rara/issues/1154)) +- **kernel**: Clean up io.rs (typestate, constructors, dead code, hot path) ([#1180](https://github.com/rararulab/rara/issues/1180)) ([#1184](https://github.com/rararulab/rara/issues/1184)) + +### Revert + +- **channels**: Back out today's Telegram routing changes +- **kernel**: Back out remaining afternoon changes +- Restore April 13 changes previously rolled back + +### Styling + +- **channels**: Fix rustfmt formatting ([#723](https://github.com/rararulab/rara/issues/723)) ([#728](https://github.com/rararulab/rara/issues/728)) +- **channels**: Fix formatting ([#1338](https://github.com/rararulab/rara/issues/1338)) ([#1339](https://github.com/rararulab/rara/issues/1339)) + +### Testing + +- **channels**: Add unit and integration tests for TG streaming ([#38](https://github.com/rararulab/rara/issues/38)) +- **app**: Add E2E test for anchor checkout conversation flow ([#198](https://github.com/rararulab/rara/issues/198)) +- **channels**: Web adapter E2E tests via direct handler invocation ([#1178](https://github.com/rararulab/rara/issues/1178)) ([#1187](https://github.com/rararulab/rara/issues/1187)) + + diff --git a/crates/cmd/CHANGELOG.md b/crates/cmd/CHANGELOG.md index 8f92db1a1..dbd0e1e1d 100644 --- a/crates/cmd/CHANGELOG.md +++ b/crates/cmd/CHANGELOG.md @@ -5,6 +5,141 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **cmd**: Restore clap sub-command layout with server as core command +- **cmd**: Correct agents endpoint URL in rara top client +- **kernel**: Convert StreamEvent TextDelta/ReasoningDelta to struct variants ([#447](https://github.com/rararulab/rara/issues/447)) +- **cmd**: Use centralized logs directory for server and gateway +- Tape memory +- **gateway**: Address code review feedback for telegram listener ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Remove /shutdown command to prevent unrecoverable state ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Add proxy + timeout support to gateway Telegram bot ([#205](https://github.com/rararulab/rara/issues/205)) +- **channels**: Emit TextClear to fix tool progress notifications ([#207](https://github.com/rararulab/rara/issues/207)) +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **ci**: Repair broken release pipeline ([#444](https://github.com/rararulab/rara/issues/444)) +- **cmd**: Default chat user-id to first configured user ([#986](https://github.com/rararulab/rara/issues/986)) ([#987](https://github.com/rararulab/rara/issues/987)) +- **kernel**: Use SessionKey/ChannelType types in ChannelMessage and ChannelBinding ([#1120](https://github.com/rararulab/rara/issues/1120)) ([#1132](https://github.com/rararulab/rara/issues/1132)) +- **cmd**: Index 'rara debug' lookup via execution_traces SQL ([#1138](https://github.com/rararulab/rara/issues/1138)) ([#1139](https://github.com/rararulab/rara/issues/1139)) +- **cmd**: Render full ExecutionTrace from SQL in 'rara debug' ([#1156](https://github.com/rararulab/rara/issues/1156)) ([#1161](https://github.com/rararulab/rara/issues/1161)) +- **cmd**: Parse tool_call/tool_result payload correctly in debug timeline ([#1165](https://github.com/rararulab/rara/issues/1165)) ([#1169](https://github.com/rararulab/rara/issues/1169)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- Full-stack integration — DB repos, REST API, Docker Compose, app wiring +- Integrate saved jobs UI, MinIO config, and standalone telegram bot +- Integrate config crate for unified configuration management +- **telemetry**: Integrate Langfuse LLM observability via OTLP ([#253](https://github.com/rararulab/rara/issues/253)) +- **infisical**: Add Infisical secrets manager integration ([#267](https://github.com/rararulab/rara/issues/267)) +- Load app config from consul kv via rs-consul +- **web**: Unify agent chat, operations, and settings navigation +- **cli**: Add interactive chat command with TerminalAdapter ([#381](https://github.com/rararulab/rara/issues/381)) +- **cmd**: Add `rara top` TUI subcommand for kernel observability ([#423](https://github.com/rararulab/rara/issues/423)) +- **boot**: Channel binding-aware session resolver + misc fixes +- **kernel**: Enrich tool call traces with arguments and results ([#444](https://github.com/rararulab/rara/issues/444)) +- **cmd**: Auto-enable OTLP tracing in Kubernetes environment ([#449](https://github.com/rararulab/rara/issues/449)) +- **cmd**: Improve TUI session Gantt chart with metrics overlay and time axis +- **kernel**: Add group chat proactive reply with two-step LLM judgment ([#71](https://github.com/rararulab/rara/issues/71)) +- **gateway**: Add supervisor foundation — spawn, health check, restart agent ([#92](https://github.com/rararulab/rara/issues/92)) +- **gateway**: Add update detector — git fetch + rev comparison ([#93](https://github.com/rararulab/rara/issues/93)) +- **gateway**: Expose admin HTTP API for restart, status, and shutdown ([#97](https://github.com/rararulab/rara/issues/97)) +- **cmd**: Enable file logging by default and print lnav hint in gateway +- **gateway**: Wire update detector → executor → supervisor restart pipeline ([#102](https://github.com/rararulab/rara/issues/102)) +- **gateway**: Send auto-update lifecycle notifications to Telegram channel ([#109](https://github.com/rararulab/rara/issues/109)) +- **gateway**: Use sysinfo for rich system context in notifications ([#112](https://github.com/rararulab/rara/issues/112)) +- **gateway**: Make commit rev a clickable GitHub link in notifications ([#114](https://github.com/rararulab/rara/issues/114)) +- **channels**: Enrich tool-call progress with argument summaries ([#115](https://github.com/rararulab/rara/issues/115)) +- **symphony**: Replace ralph sidecar with per-issue `ralph run` subprocess +- Align chat tui with openfang +- **tui**: Integrate kernel CommandHandler into chat TUI ([#194](https://github.com/rararulab/rara/issues/194)) +- **gateway**: Move bot_token + notification_channel_id into GatewayConfig ([#199](https://github.com/rararulab/rara/issues/199)) +- **gateway**: Wire Telegram listener into gateway startup and handle /shutdown ([#199](https://github.com/rararulab/rara/issues/199)) +- **channels**: Render plan events in Telegram and Web adapters ([#251](https://github.com/rararulab/rara/issues/251)) +- **gateway**: Wire ProcessMonitor into bootstrap and status endpoint ([#252](https://github.com/rararulab/rara/issues/252)) +- **gateway**: Add /threshold and /stats Telegram commands ([#252](https://github.com/rararulab/rara/issues/252)) +- **gateway**: Persist alert thresholds to gateway-state.yaml ([#266](https://github.com/rararulab/rara/issues/266)) +- **channels**: Plan-execute TG 三级显示策略 + 单消息编辑流 ([#267](https://github.com/rararulab/rara/issues/267)) +- **telegram**: Show input/output token counts in progress UX ([#304](https://github.com/rararulab/rara/issues/304)) +- **kernel,telegram**: Rara_message_id end-to-end tracing and debug_trace tool ([#337](https://github.com/rararulab/rara/issues/337)) +- **kernel**: Background agent spawning with proactive result delivery ([#340](https://github.com/rararulab/rara/issues/340)) +- **kernel**: Centralize loading hints with random selection ([#455](https://github.com/rararulab/rara/issues/455)) +- **channels**: Add /status command with session info and scheduled jobs ([#450](https://github.com/rararulab/rara/issues/450)) ([#453](https://github.com/rararulab/rara/issues/453)) +- **dock**: Generative UI canvas workbench ([#424](https://github.com/rararulab/rara/issues/424)) +- **chat**: Support user image input in web and cli ([#475](https://github.com/rararulab/rara/issues/475)) +- **gateway**: Send Telegram notification on shutdown ([#490](https://github.com/rararulab/rara/issues/490)) ([#491](https://github.com/rararulab/rara/issues/491)) +- **kernel**: Implement pause_turn circuit breaker for agent loop ([#506](https://github.com/rararulab/rara/issues/506)) ([#508](https://github.com/rararulab/rara/issues/508)) +- **kernel**: Show LLM reasoning for tool calls in progress display ([#661](https://github.com/rararulab/rara/issues/661)) ([#664](https://github.com/rararulab/rara/issues/664)) +- **kernel**: Add tool call loop breaker ([#773](https://github.com/rararulab/rara/issues/773)) ([#775](https://github.com/rararulab/rara/issues/775)) +- **kernel**: Stream bash stdout in real-time during tool execution ([#777](https://github.com/rararulab/rara/issues/777)) ([#788](https://github.com/rararulab/rara/issues/788)) +- **channels**: Add WeChat iLink Bot channel adapter ([#827](https://github.com/rararulab/rara/issues/827)) ([#830](https://github.com/rararulab/rara/issues/830)) +- **kernel**: Codex OAuth as first-class LLM provider ([#950](https://github.com/rararulab/rara/issues/950)) ([#953](https://github.com/rararulab/rara/issues/953)) +- **web**: Align with rararulab/style ([#963](https://github.com/rararulab/rara/issues/963)) ([#964](https://github.com/rararulab/rara/issues/964)) +- **login**: Replace callback server with paste-URL flow for codex OAuth ([#957](https://github.com/rararulab/rara/issues/957)) ([#960](https://github.com/rararulab/rara/issues/960)) +- **cmd**: TUI-Telegram feature parity ([#961](https://github.com/rararulab/rara/issues/961)) ([#984](https://github.com/rararulab/rara/issues/984)) +- **cmd**: Show thinking content in TUI like Claude Code ([#989](https://github.com/rararulab/rara/issues/989)) ([#990](https://github.com/rararulab/rara/issues/990)) +- **cmd**: Rara setup interactive configuration wizard ([#1008](https://github.com/rararulab/rara/issues/1008)) ([#1011](https://github.com/rararulab/rara/issues/1011)) +- **cmd**: Add `setup whisper` subcommand for standalone STT configuration ([#1059](https://github.com/rararulab/rara/issues/1059)) ([#1060](https://github.com/rararulab/rara/issues/1060)) +- **app**: Auto-manage whisper-server lifecycle ([#1081](https://github.com/rararulab/rara/issues/1081)) ([#1082](https://github.com/rararulab/rara/issues/1082)) +- **cmd**: Add 'rara debug ' CLI command ([#1135](https://github.com/rararulab/rara/issues/1135)) ([#1136](https://github.com/rararulab/rara/issues/1136)) +- **cmd**: Add /name command to rename current session ([#1370](https://github.com/rararulab/rara/issues/1370)) ([#1371](https://github.com/rararulab/rara/issues/1371)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Refactor +- Rename to rara +- Clean up stale code from prompt/agent refactoring ([#289](https://github.com/rararulab/rara/issues/289)) +- Format +- Make lint pass across workspace +- Format +- Format +- Clean repo +- Format +- Clean +- Format +- Format chat tui files +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename rsketch crates to job +- Consolidate migrations, simplify job-source and app architecture +- Move TelegramService to shared crate, add notify-driven workers +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Realign domain boundaries and rename domain crates +- Unify runtime state into AppState with init() and routes() +- Extract crawl4ai into common crate and remove unused downloader +- Unify process model, integrate telegram-bot into app +- **infisical**: Implement config AsyncSource instead of env var injection ([#269](https://github.com/rararulab/rara/issues/269)) +- Migrate all prompt consumers to PromptRepo + cleanup legacy code ([#278](https://github.com/rararulab/rara/issues/278)) +- **kernel**: Remove InboundSink trait, use concrete IngressPipeline ([#398](https://github.com/rararulab/rara/issues/398)) +- **kernel,config**: Rename SpawnTool → SyscallTool and harden Consul KV config +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- **kernel**: Introduce EventBase for unified event metadata +- **cmd**: Replace Events tab with session-based view ([#46](https://github.com/rararulab/rara/issues/46)) +- **kernel**: Session-centric runtime ([#48](https://github.com/rararulab/rara/issues/48)) +- **cmd,server**: Update to session-centric naming ([#50](https://github.com/rararulab/rara/issues/50)) +- Make it compile +- **kernel**: Decouple proactive judgment into GroupMessage event ([#79](https://github.com/rararulab/rara/issues/79)) +- **gateway**: Use teloxide::Bot instead of raw reqwest for TG notifier ([#109](https://github.com/rararulab/rara/issues/109)) +- **gateway**: Require Telegram config and enrich notification templates ([#109](https://github.com/rararulab/rara/issues/109)) +- **gateway**: Rename notification_channel_id to chat_id ([#199](https://github.com/rararulab/rara/issues/199)) +- **kernel**: Fix KernelHandle API inconsistencies ([#1027](https://github.com/rararulab/rara/issues/1027)) ([#1031](https://github.com/rararulab/rara/issues/1031)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/common/base/CHANGELOG.md b/crates/common/base/CHANGELOG.md index f3e8d9bb3..2a18e9a30 100644 --- a/crates/common/base/CHANGELOG.md +++ b/crates/common/base/CHANGELOG.md @@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.2] - 2026-04-14 + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **base**: Add ArcCow and SharedString utility types +- **base**: Add deterministic UUID constructor to define_id ([#164](https://github.com/rararulab/rara/issues/164)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Make lint pass across workspace +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Performance + +- **base**: Use NonZeroU128 in define_id! for Option niche optimization ([#1149](https://github.com/rararulab/rara/issues/1149)) ([#1160](https://github.com/rararulab/rara/issues/1160)) + +### Refactor + +- Rename rsketch crates to job +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Extract crawl4ai into common crate and remove unused downloader +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Make it compile +- Remove dead code identified by desloppify scan ([#1025](https://github.com/rararulab/rara/issues/1025)) ([#1029](https://github.com/rararulab/rara/issues/1029)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/common/base/Cargo.toml b/crates/common/base/Cargo.toml index 17276eecc..54ccce4d1 100644 --- a/crates/common/base/Cargo.toml +++ b/crates/common/base/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "base" -version = "0.0.1" +version = "0.0.2" edition.workspace = true authors.workspace = true license.workspace = true diff --git a/crates/common/crawl4ai/CHANGELOG.md b/crates/common/crawl4ai/CHANGELOG.md new file mode 100644 index 000000000..62362f9e7 --- /dev/null +++ b/crates/common/crawl4ai/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Extract crawl4ai into common crate and remove unused downloader +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate + + diff --git a/crates/common/error/CHANGELOG.md b/crates/common/error/CHANGELOG.md index f3e8d9bb3..bb03ce621 100644 --- a/crates/common/error/CHANGELOG.md +++ b/crates/common/error/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename rsketch crates to job +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Extract crawl4ai into common crate and remove unused downloader +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/common/runtime/CHANGELOG.md b/crates/common/runtime/CHANGELOG.md index 2676153e6..8c5a3d44f 100644 --- a/crates/common/runtime/CHANGELOG.md +++ b/crates/common/runtime/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename rsketch crates to job +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Extract crawl4ai into common crate and remove unused downloader +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/common/telemetry/CHANGELOG.md b/crates/common/telemetry/CHANGELOG.md index 0f284efd9..1eded1ff2 100644 --- a/crates/common/telemetry/CHANGELOG.md +++ b/crates/common/telemetry/CHANGELOG.md @@ -5,6 +5,48 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **job-source**: Add site selection support and improve observability +- **telemetry**: Integrate Langfuse LLM observability via OTLP ([#253](https://github.com/rararulab/rara/issues/253)) +- Load app config from consul kv via rs-consul + +### Miscellaneous Tasks + +- Establish job backend baseline +- Format +- Rename to rara +- Format +- Format +- Clean +- Add tool timeout +- Support composio config +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename rsketch crates to job +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Extract crawl4ai into common crate and remove unused downloader +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Remove rara-k8s crate and clean up unused infrastructure +- **telemetry**: Migrate metrics from Prometheus pull to OpenTelemetry push ([#568](https://github.com/rararulab/rara/issues/568)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/common/tool-macro/CHANGELOG.md b/crates/common/tool-macro/CHANGELOG.md new file mode 100644 index 000000000..a4aca6e86 --- /dev/null +++ b/crates/common/tool-macro/CHANGELOG.md @@ -0,0 +1,41 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **app**: Context-mode interceptor whitelist + summary + system prompt ([#722](https://github.com/rararulab/rara/issues/722)) ([#732](https://github.com/rararulab/rara/issues/732)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **tool-macro**: Add ToolDef derive macro infrastructure ([#514](https://github.com/rararulab/rara/issues/514)) +- **kernel**: Deferred tool loading — reduce per-turn token overhead ([#756](https://github.com/rararulab/rara/issues/756)) ([#768](https://github.com/rararulab/rara/issues/768)) +- **kernel**: Per-tool execution timeout granularity ([#778](https://github.com/rararulab/rara/issues/778)) ([#782](https://github.com/rararulab/rara/issues/782)) +- **kernel**: Add AgentTool::validate semantic validation step ([#1183](https://github.com/rararulab/rara/issues/1183)) ([#1185](https://github.com/rararulab/rara/issues/1185)) +- **kernel**: Add safety axes + concurrency partitioning ([#1186](https://github.com/rararulab/rara/issues/1186)) ([#1192](https://github.com/rararulab/rara/issues/1192)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **tool**: Typed Output associated type for ToolExecute ([#524](https://github.com/rararulab/rara/issues/524)) ([#533](https://github.com/rararulab/rara/issues/533)) +- **kernel**: Drop output interceptor ([#809](https://github.com/rararulab/rara/issues/809)) ([#811](https://github.com/rararulab/rara/issues/811)) + + diff --git a/crates/common/worker/CHANGELOG.md b/crates/common/worker/CHANGELOG.md index 070339bd5..8ce6ee816 100644 --- a/crates/common/worker/CHANGELOG.md +++ b/crates/common/worker/CHANGELOG.md @@ -5,6 +5,47 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **app**: Connection pool timeout and Ctrl+C shutdown panic ([#296](https://github.com/rararulab/rara/issues/296)) +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- Integrate mem0 via execution worker + +### Miscellaneous Tasks + +- Establish job backend baseline +- Clean +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Format +- Format +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename rsketch crates to job +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Move TelegramService into telegram-bot crate, add outbox pattern +- Extract crawl4ai into common crate and remove unused downloader +- **metrics**: Migrate to lazy_static grouped pattern with eager init +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **telemetry**: Migrate metrics from Prometheus pull to OpenTelemetry push ([#568](https://github.com/rararulab/rara/issues/568)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/common/yunara-store/CHANGELOG.md b/crates/common/yunara-store/CHANGELOG.md new file mode 100644 index 000000000..151c7f697 --- /dev/null +++ b/crates/common/yunara-store/CHANGELOG.md @@ -0,0 +1,62 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **app**: Connection pool timeout and Ctrl+C shutdown panic ([#296](https://github.com/rararulab/rara/issues/296)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **store**: Add domain models and database schema for job automation platform +- **resume**: Implement resume version management domain layer ([#8](https://github.com/rararulab/rara/issues/8)) +- Full-stack integration — DB repos, REST API, Docker Compose, app wiring +- Notify & scheduler modules with background workers and API routes + +### Miscellaneous Tasks + +- Establish job backend baseline +- Clean +- Refactor +- Refactor +- Refactor +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Make lint pass across workspace +- Format +- Clean repo +- Clean +- Unify all crate versions to 0.0.1 ([#388](https://github.com/rararulab/rara/issues/388)) ([#389](https://github.com/rararulab/rara/issues/389)) +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- **store**: Migrate yunara-store to Postgres +- **yunara-store**: Remove domain repos, models, and conversions ([#40](https://github.com/rararulab/rara/issues/40)) +- Remove stale ai_run and prompt_template tables and models +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Realign domain boundaries and rename domain crates +- **yunara-store**: Remove dead business model code +- Unify runtime state into AppState with init() and routes() +- Migrate to reversible migrations, use paths crate for sessions dir, simplify store +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **store**: Migrate yunara-store and migrations from PostgreSQL to SQLite +- **config**: Add Serialize derive to all AppConfig types ([#121](https://github.com/rararulab/rara/issues/121)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + +### Testing + +- **config**: Add integration test for ConfigFileSync file→KV sync ([#121](https://github.com/rararulab/rara/issues/121)) + + diff --git a/crates/domain/shared/CHANGELOG.md b/crates/domain/shared/CHANGELOG.md new file mode 100644 index 000000000..06ad5aedd --- /dev/null +++ b/crates/domain/shared/CHANGELOG.md @@ -0,0 +1,108 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **notifications**: Avoid 500 when pgmq archive table is absent +- **settings**: Add pipeline_cron field to test initializers +- **shared**: Add missing recall_every_turn field in test initializer ([#322](https://github.com/rararulab/rara/issues/322)) +- **kernel**: Use ModelRepo for runtime model resolution, read Telegram token from settings + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- Add runtime settings with hot reload for ai and telegram +- **settings**: Add updated timestamp and toast-based feedback +- **notifications**: Rebuild observability around pgmq queue semantics +- Improve settings UX and markdown preview flow +- **settings**: Per-scenario model configuration +- **agents**: Add proactive agent with personality (Agent Soul) +- **chat**: Make default system prompt configurable via settings ([#121](https://github.com/rararulab/rara/issues/121)) +- **memory**: Integrate agent memory with pg/sqlite backends +- **telegram**: Add group chat support with mention-based triggering +- **chat**: Dynamic OpenRouter model list + favorites ([#151](https://github.com/rararulab/rara/issues/151)) +- **tools**: Add screenshot tool with Playwright + Telegram photo sending ([#157](https://github.com/rararulab/rara/issues/157)) +- **openapi**: Add OpenAPI support with utoipa + Swagger UI ([#159](https://github.com/rararulab/rara/issues/159)) +- **openapi**: Annotate chat, job, typst, resume, settings routes ([#178](https://github.com/rararulab/rara/issues/178)) +- **agents**: Model fallback chain ([#193](https://github.com/rararulab/rara/issues/193)) +- Integrate composio +- **email**: Integrate lettre for Gmail sending ([#216](https://github.com/rararulab/rara/issues/216)) +- **pipeline**: Implement job pipeline agent and service ([#217](https://github.com/rararulab/rara/issues/217)) +- **pipeline**: Add cron scheduling for automatic pipeline runs ([#220](https://github.com/rararulab/rara/issues/220)) +- **pipeline**: Add MCP tool support to pipeline agent +- **pipeline**: Send notifications to dedicated Telegram channel ([#227](https://github.com/rararulab/rara/issues/227)) +- **pipeline**: Add report_pipeline_stats tool and recipient-based notify +- **contacts**: Add telegram contacts allowlist ([#232](https://github.com/rararulab/rara/issues/232)) +- **ai**: Add Ollama provider support for local LLM inference ([#240](https://github.com/rararulab/rara/issues/240)) +- **settings**: Add SSH public key API endpoint +- **settings**: Add llmfit model recommendations endpoint ([#256](https://github.com/rararulab/rara/issues/256)) +- **settings**: Integrate Ollama model management endpoints ([#268](https://github.com/rararulab/rara/issues/268)) +- **web**: Add capability-based filtering to Ollama model selector ([#274](https://github.com/rararulab/rara/issues/274)) +- Modularize settings admin routes +- **memory**: Add post-compaction recall and per-turn recall config ([#319](https://github.com/rararulab/rara/issues/319)) +- **kernel**: Settings-driven SandboxConfig + hot reload ([#453](https://github.com/rararulab/rara/issues/453)) +- **kernel**: Wire IngressRateLimiter into IOSubsystem resolve path +- **channels**: Add WeChat iLink Bot channel adapter ([#827](https://github.com/rararulab/rara/issues/827)) ([#830](https://github.com/rararulab/rara/issues/830)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Fmt code +- Format +- Rename to rara +- Format & some improvement & prompt markdown +- Change default HTTP port from 3000 to 25555 +- Remove unused ollama-rs dependency +- Remove legacy domain settings router file +- Format +- Format +- Rustfmt formatting pass, fix Helm replicas/workers from `true` to `1` +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename job-domain-core to job-domain-shared and clean up unused types +- Merge convert.rs into types.rs and remove redundant tests +- Move TelegramService to shared crate, add notify-driven workers +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Move TelegramService into telegram-bot crate, add outbox pattern +- Remove notify domain crate, replace with lightweight shared notify client +- Realign domain boundaries and rename domain crates +- **notify**: Route observability through NotifyClient +- Unify runtime state into AppState with init() and routes() +- Extract crawl4ai into common crate and remove unused downloader +- **message-bus**: Rewrite as Coordinator + Command trait +- **memory**: Use Chroma server-side embeddings, remove HashEmbedder +- **memory**: Simplify to PG-only backend with required Chroma +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- **pipeline**: Move agent prompt into extension crate +- **settings**: Replace llmfit subprocess with llmfit-core git dependency ([#258](https://github.com/rararulab/rara/issues/258)) +- **agent-core**: Centralize model configuration behind ModelRepo trait ([#279](https://github.com/rararulab/rara/issues/279)) +- Remove compose_with_soul/resolve_soul and settings prompt fields ([#281](https://github.com/rararulab/rara/issues/281)) +- Split settings admin domains and reorganize settings UI +- **backend-admin**: Move all domain routers into backend-admin ([#295](https://github.com/rararulab/rara/issues/295)) +- Move contacts to telegram-bot, add ContactLookup trait ([#307](https://github.com/rararulab/rara/issues/307)) +- **settings**: Move SettingsSvc + ollama from domain/shared to backend-admin ([#310](https://github.com/rararulab/rara/issues/310)) +- **memory**: Integrate new MemoryManager into tools, orchestrator, and settings ([#313](https://github.com/rararulab/rara/issues/313)) +- **codex**: Move oauth core logic out of backend-admin +- **codex**: Move oauth core into integrations crate +- Remove legacy proactive agent and agent scheduler +- Remove job pipeline module and related code +- **settings**: Unify runtime settings into flat KV store ([#401](https://github.com/rararulab/rara/issues/401)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Remove PGMQ NotifyClient — replaced by kernel egress +- **llm**: Per-provider default_model and fallback_models ([#47](https://github.com/rararulab/rara/issues/47)) +- **app**: Align knowledge config with settings-first architecture + + diff --git a/crates/drivers/browser/CHANGELOG.md b/crates/drivers/browser/CHANGELOG.md new file mode 100644 index 000000000..9880f2a92 --- /dev/null +++ b/crates/drivers/browser/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **workspace**: Extract browser/stt from kernel into driver crates ([#1146](https://github.com/rararulab/rara/issues/1146)) ([#1154](https://github.com/rararulab/rara/issues/1154)) + + diff --git a/crates/drivers/stt/CHANGELOG.md b/crates/drivers/stt/CHANGELOG.md new file mode 100644 index 000000000..ec2422fc4 --- /dev/null +++ b/crates/drivers/stt/CHANGELOG.md @@ -0,0 +1,36 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **drivers**: Structured STT errors with retry for transient failures ([#1164](https://github.com/rararulab/rara/issues/1164)) ([#1168](https://github.com/rararulab/rara/issues/1168)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **workspace**: Extract browser/stt from kernel into driver crates ([#1146](https://github.com/rararulab/rara/issues/1146)) ([#1154](https://github.com/rararulab/rara/issues/1154)) + +### Testing + +- **drivers**: Wiremock-based integration tests for STT and TTS services ([#1176](https://github.com/rararulab/rara/issues/1176)) ([#1181](https://github.com/rararulab/rara/issues/1181)) + + diff --git a/crates/drivers/tts/CHANGELOG.md b/crates/drivers/tts/CHANGELOG.md new file mode 100644 index 000000000..ca5095b8a --- /dev/null +++ b/crates/drivers/tts/CHANGELOG.md @@ -0,0 +1,35 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **drivers**: Create rara-tts crate with OpenAI-compatible TTS client ([#1162](https://github.com/rararulab/rara/issues/1162)) ([#1167](https://github.com/rararulab/rara/issues/1167)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate + +### Testing + +- **drivers**: Wiremock-based integration tests for STT and TTS services ([#1176](https://github.com/rararulab/rara/issues/1176)) ([#1181](https://github.com/rararulab/rara/issues/1181)) + + diff --git a/crates/extensions/backend-admin/CHANGELOG.md b/crates/extensions/backend-admin/CHANGELOG.md new file mode 100644 index 000000000..2f9aade07 --- /dev/null +++ b/crates/extensions/backend-admin/CHANGELOG.md @@ -0,0 +1,119 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- Move contacts CRUD router back to backend-admin +- **backend-admin**: Resolve codex oauth route wiring for start/status/disconnect +- **codex-oauth**: Correct callback port and redirect URLs ([#324](https://github.com/rararulab/rara/issues/324)) +- **codex-oauth**: Use OpenAI's pre-registered redirect URI and ephemeral callback server ([#324](https://github.com/rararulab/rara/issues/324)) +- **codex-oauth**: Use static model list instead of API fetch ([#324](https://github.com/rararulab/rara/issues/324)) +- **kernel**: Use ModelRepo for runtime model resolution, read Telegram token from settings +- **kernel**: Fix model type mismatch after Option migration ([#421](https://github.com/rararulab/rara/issues/421)) +- **kernel**: Add SessionKey::try_from_raw, remove Timer dead code, document kv panic safety +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **kernel**: Openai wire format alignment ([#747](https://github.com/rararulab/rara/issues/747)) ([#750](https://github.com/rararulab/rara/issues/750)) +- **chat**: Preserve multimodal in api ([#1066](https://github.com/rararulab/rara/issues/1066)) ([#1067](https://github.com/rararulab/rara/issues/1067)) +- **kernel**: Use SessionKey/ChannelType types in ChannelMessage and ChannelBinding ([#1120](https://github.com/rararulab/rara/issues/1120)) ([#1132](https://github.com/rararulab/rara/issues/1132)) + +### Documentation + +- **codex**: Add integration architecture docs and inline comments + +### Features + +- **codex-oauth**: Fetch available models from OpenAI API ([#324](https://github.com/rararulab/rara/issues/324)) +- **kernel**: Use HashMap for builtin agents and expose agent registry HTTP API +- **backend-admin**: Add kernel HTTP observability endpoints + RFC 9457 ProblemDetails ([#422](https://github.com/rararulab/rara/issues/422)) +- **kernel**: Collect and expose per-turn agent traces ([#442](https://github.com/rararulab/rara/issues/442)) +- **backend**: Add per-process WebSocket stream endpoint ([#447](https://github.com/rararulab/rara/issues/447)) +- **config**: Wire ConfigFileSync into startup, remove seed_defaults ([#121](https://github.com/rararulab/rara/issues/121)) +- **admin**: Add context-mode status endpoint ([#209](https://github.com/rararulab/rara/issues/209)) +- **kernel**: Add /msg_version command and session/manifest routing ([#257](https://github.com/rararulab/rara/issues/257)) +- **kernel**: Implement pause_turn circuit breaker for agent loop ([#506](https://github.com/rararulab/rara/issues/506)) ([#508](https://github.com/rararulab/rara/issues/508)) +- **web**: Cascade viewer — agent execution trace side panel ([#513](https://github.com/rararulab/rara/issues/513)) +- **kernel**: Add LlmModelLister and LlmEmbedder extension traits ([#762](https://github.com/rararulab/rara/issues/762)) ([#766](https://github.com/rararulab/rara/issues/766)) +- **kernel**: Task tool — preset-based background agent delegation ([#845](https://github.com/rararulab/rara/issues/845)) ([#847](https://github.com/rararulab/rara/issues/847)) +- **kernel**: Codex OAuth as first-class LLM provider ([#950](https://github.com/rararulab/rara/issues/950)) ([#953](https://github.com/rararulab/rara/issues/953)) +- **kernel**: Self-continuation signal to prevent GPT stop-and-ask ([#1301](https://github.com/rararulab/rara/issues/1301)) ([#1306](https://github.com/rararulab/rara/issues/1306)) + +### Miscellaneous Tasks + +- Format +- Make lint pass across workspace +- Format +- Clean repo +- Clean +- Cleanup old memory + session code ([#45](https://github.com/rararulab/rara/issues/45)) +- Format +- Format +- Format +- Remove unused llmfit-core dependency ([#348](https://github.com/rararulab/rara/issues/348)) +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Performance + +- **cascade**: Build CascadeTrace incrementally during agent loop ([#625](https://github.com/rararulab/rara/issues/625)) ([#632](https://github.com/rararulab/rara/issues/632)) + +### Refactor + +- Consolidate 6 admin crates into rara-backend-admin ([#283](https://github.com/rararulab/rara/issues/283)) +- **agent-core**: Move builtin prompts + FilePromptRepo from backend-admin ([#286](https://github.com/rararulab/rara/issues/286)) +- **backend-admin**: Move pipeline and coding-task routers into backend-admin ([#291](https://github.com/rararulab/rara/issues/291)) +- **backend-admin**: Move all domain routers into backend-admin ([#295](https://github.com/rararulab/rara/issues/295)) +- **backend-admin**: Merge analytics, application, interview, scheduler domain crates ([#298](https://github.com/rararulab/rara/issues/298)) +- **backend-admin**: Merge resume + job-pipeline into backend-admin ([#299](https://github.com/rararulab/rara/issues/299)) +- Merge domain-job into backend-admin ([#303](https://github.com/rararulab/rara/issues/303)) +- Remove notify admin routes from backend-admin ([#306](https://github.com/rararulab/rara/issues/306)) +- Move contacts to telegram-bot, add ContactLookup trait ([#307](https://github.com/rararulab/rara/issues/307)) +- **settings**: Move SettingsSvc + ollama from domain/shared to backend-admin ([#310](https://github.com/rararulab/rara/issues/310)) +- **codex**: Move oauth core logic out of backend-admin +- **codex**: Move oauth core into integrations crate +- **codex**: Centralize oauth exchange and refresh in integration +- **kernel**: Move runner, context, subagent from agent-core to kernel ([#335](https://github.com/rararulab/rara/issues/335)) +- Decompose rara-agents into kernel dispatcher + domain agents ([#337](https://github.com/rararulab/rara/issues/337)) +- Remove legacy dispatcher from agents, admin backend, and frontend ([#343](https://github.com/rararulab/rara/issues/343)) +- **app**: Replace telegram-bot crate with TelegramAdapter ([#354](https://github.com/rararulab/rara/issues/354)) +- **chat**: Absorb rara-domain-chat into backend-admin ([#370](https://github.com/rararulab/rara/issues/370)) +- Unify ChatMessage types, delete SessionRepoBridge ([#373](https://github.com/rararulab/rara/issues/373)) +- Move AgentTool trait to kernel, tool impls to boot, delete tool-core ([#375](https://github.com/rararulab/rara/issues/375)) +- **boot**: Remove domain tools, flatten tool module structure ([#377](https://github.com/rararulab/rara/issues/377)) +- **chat**: Remove LLM execution from ChatService, delete ChatAgent +- Remove legacy proactive agent and agent scheduler +- Remove job pipeline module and related code +- **settings**: Unify runtime settings into flat KV store ([#401](https://github.com/rararulab/rara/issues/401)) +- Remove legacy prompt management UI and API routes ([#413](https://github.com/rararulab/rara/issues/413)) +- Remove legacy ai_tasks module and related dead code ([#418](https://github.com/rararulab/rara/issues/418)) +- **boot,backend**: Split AppState into RaraState + BackendState ([#438](https://github.com/rararulab/rara/issues/438)) +- **kernel**: Migrate external callers to KernelHandle, demote Kernel methods ([#24](https://github.com/rararulab/rara/issues/24)) +- **kernel**: Remove async-openai and legacy LLM provider layer +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **kernel**: Split session.rs into directory module, fix external import paths ([#36](https://github.com/rararulab/rara/issues/36)) +- **kernel**: 平铺过度拆分的子模块 ([#40](https://github.com/rararulab/rara/issues/40)) +- Remove PGMQ NotifyClient — replaced by kernel egress +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- Remove rara-k8s crate and clean up unused infrastructure +- Remove telegram contacts subsystem +- **boot**: 简化 boot 层,集成 tape store 和 session index ([#44](https://github.com/rararulab/rara/issues/44)) +- **cmd,server**: Update to session-centric naming ([#50](https://github.com/rararulab/rara/issues/50)) +- Make it compile +- **kernel**: Remove SessionResolver, simplify ChannelBinding ([#63](https://github.com/rararulab/rara/issues/63)) +- **app**: Merge rara-boot into rara-app ([#69](https://github.com/rararulab/rara/issues/69)) +- **app,backend-admin**: Adapt to simplified symphony — remove SymphonyStatusHandle +- **kernel**: Plan mode agent loop fixes (#648 #649 #650) ([#667](https://github.com/rararulab/rara/issues/667)) +- **kernel**: Drop output interceptor ([#809](https://github.com/rararulab/rara/issues/809)) ([#811](https://github.com/rararulab/rara/issues/811)) +- **kernel**: Fix KernelHandle API inconsistencies ([#1027](https://github.com/rararulab/rara/issues/1027)) ([#1031](https://github.com/rararulab/rara/issues/1031)) +- **kernel**: Introduce ToolName newtype for type-safe tool identifiers ([#1123](https://github.com/rararulab/rara/issues/1123)) ([#1133](https://github.com/rararulab/rara/issues/1133)) + +### Revert + +- **kernel**: Back out today's proactivity changes +- Restore April 13 changes previously rolled back + + diff --git a/crates/extensions/rara-git/CHANGELOG.md b/crates/extensions/rara-git/CHANGELOG.md new file mode 100644 index 000000000..06539dbd4 --- /dev/null +++ b/crates/extensions/rara-git/CHANGELOG.md @@ -0,0 +1,25 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Features + +- **git**: Scaffold rara-git extension crate with error types +- **git**: Implement SSH Ed25519 key pair generation +- **git**: Implement GitRepo — clone, worktree, commit, push, sync + +### Miscellaneous Tasks + +- Format +- Format +- Format +- **rara-git**: Upgrade rand_core 0.6 → 0.10 ([#287](https://github.com/rararulab/rara/issues/287)) ([#292](https://github.com/rararulab/rara/issues/292)) +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + + diff --git a/crates/integrations/codex-oauth/CHANGELOG.md b/crates/integrations/codex-oauth/CHANGELOG.md new file mode 100644 index 000000000..c6cd5b485 --- /dev/null +++ b/crates/integrations/codex-oauth/CHANGELOG.md @@ -0,0 +1,51 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **codex**: Support configurable oauth client id and in-memory pending state +- **codex-oauth**: Correct callback port and redirect URLs ([#324](https://github.com/rararulab/rara/issues/324)) +- **codex-oauth**: Use OpenAI's pre-registered redirect URI and ephemeral callback server ([#324](https://github.com/rararulab/rara/issues/324)) +- **codex-oauth**: Handle repeated starts and show auth URL in UI ([#324](https://github.com/rararulab/rara/issues/324)) +- **codex-oauth**: Use static model list instead of API fetch ([#324](https://github.com/rararulab/rara/issues/324)) +- **codex-oauth**: Add ChatGPT-Account-Id header for API access ([#1241](https://github.com/rararulab/rara/issues/1241)) ([#1244](https://github.com/rararulab/rara/issues/1244)) + +### Documentation + +- **codex**: Add integration architecture docs and inline comments +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **codex-oauth**: Fetch available models from OpenAI API ([#324](https://github.com/rararulab/rara/issues/324)) +- **kernel**: Codex OAuth as first-class LLM provider ([#950](https://github.com/rararulab/rara/issues/950)) ([#953](https://github.com/rararulab/rara/issues/953)) +- **web**: Align with rararulab/style ([#963](https://github.com/rararulab/rara/issues/963)) ([#964](https://github.com/rararulab/rara/issues/964)) +- **login**: Replace callback server with paste-URL flow for codex OAuth ([#957](https://github.com/rararulab/rara/issues/957)) ([#960](https://github.com/rararulab/rara/issues/960)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) +- **codex-oauth**: Remove non-standard auth URL params ([#973](https://github.com/rararulab/rara/issues/973)) ([#978](https://github.com/rararulab/rara/issues/978)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **codex**: Move oauth core into integrations crate +- **codex**: Centralize oauth exchange and refresh in integration +- **codex-oauth**: Accept injected KeyringStoreRef ([#452](https://github.com/rararulab/rara/issues/452)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **kernel**: Make LlmCredential fields private with constructor ([#1122](https://github.com/rararulab/rara/issues/1122)) ([#1131](https://github.com/rararulab/rara/issues/1131)) + + diff --git a/crates/integrations/composio/CHANGELOG.md b/crates/integrations/composio/CHANGELOG.md new file mode 100644 index 000000000..cead108bb --- /dev/null +++ b/crates/integrations/composio/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **composio**: Try multiple V3 slug formats before V2 fallback +- **kernel**: Use parking_lot mutex ([#927](https://github.com/rararulab/rara/issues/927)) ([#933](https://github.com/rararulab/rara/issues/933)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- Integrate composio + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate + + diff --git a/crates/integrations/keyring-store/CHANGELOG.md b/crates/integrations/keyring-store/CHANGELOG.md new file mode 100644 index 000000000..af1d14fb4 --- /dev/null +++ b/crates/integrations/keyring-store/CHANGELOG.md @@ -0,0 +1,38 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **keyring-store**: Enable tokio and crypto-rust features to satisfy secret-service v4 runtime requirement ([#332](https://github.com/rararulab/rara/issues/332)) ([#333](https://github.com/rararulab/rara/issues/333)) +- **deps**: Upgrade testcontainers-modules to 0.15 ([#378](https://github.com/rararulab/rara/issues/378)) ([#379](https://github.com/rararulab/rara/issues/379)) +- **scheduler**: Update scheduler-tool's prompt + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Clean repo +- **keyring-store**: Upgrade secret-service 4 → 5 ([#285](https://github.com/rararulab/rara/issues/285)) ([#290](https://github.com/rararulab/rara/issues/290)) +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- **keyring-store**: Make KeyringStore trait async ([#452](https://github.com/rararulab/rara/issues/452)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate + + diff --git a/crates/integrations/mcp/CHANGELOG.md b/crates/integrations/mcp/CHANGELOG.md new file mode 100644 index 000000000..2528c22a2 --- /dev/null +++ b/crates/integrations/mcp/CHANGELOG.md @@ -0,0 +1,67 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **mcp**: Distinguish connecting vs connected server status ([#213](https://github.com/rararulab/rara/issues/213)) +- **mcp**: Detect dead transport in server connection status +- **kernel,boot**: Address user tape code review issues ([#75](https://github.com/rararulab/rara/issues/75)) +- Tape memory +- **context-mode**: Address code review findings +- **mcp**: Use builder API for non-exhaustive rmcp structs in example ([#284](https://github.com/rararulab/rara/issues/284)) +- **mcp**: Use builder API for non-exhaustive rmcp structs in example ([#296](https://github.com/rararulab/rara/issues/296)) ([#297](https://github.com/rararulab/rara/issues/297)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **mcp**: Per-server log buffer with HTTP API and frontend display ([#201](https://github.com/rararulab/rara/issues/201)) +- Integrate composio +- **mcp**: Add heartbeat to auto-reconnect dead MCP servers ([#231](https://github.com/rararulab/rara/issues/231)) +- **mcp**: Emit tracing events for MCP logs, add Grafana deep-link ([#214](https://github.com/rararulab/rara/issues/214)) +- **mcp**: Add K8s Pod transport for MCP servers ([#290](https://github.com/rararulab/rara/issues/290)) +- **k8s**: Extract Pod infra to rara-k8s crate + add PodTool ([#294](https://github.com/rararulab/rara/issues/294)) +- **context-mode**: Integrate builtin MCP output interception + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Make lint pass across workspace +- Format +- Format +- **mcp**: Upgrade rmcp 0.16 → 1.2 ([#284](https://github.com/rararulab/rara/issues/284)) ([#289](https://github.com/rararulab/rara/issues/289)) +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) +- **mcp**: Mcp tools use deferred tier ([#819](https://github.com/rararulab/rara/issues/819)) ([#820](https://github.com/rararulab/rara/issues/820)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- **mcp**: Extract manager module with real integration tests +- **mcp**: Optimize shutdown, move start to ManagedClient, add tool cache +- Extract AgentTool to tool-core crate, McpManager derive Clone ([#198](https://github.com/rararulab/rara/issues/198)) +- **k8s**: Use k8s-openapi Pod directly instead of custom PodSpec ([#300](https://github.com/rararulab/rara/issues/300)) +- Move AgentTool trait to kernel, tool impls to boot, delete tool-core ([#375](https://github.com/rararulab/rara/issues/375)) +- **mcp**: Accept injected KeyringStoreRef for OAuth credential persistence ([#452](https://github.com/rararulab/rara/issues/452)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Remove rara-k8s crate and clean up unused infrastructure + +### Testing + +- **mcp**: Add comprehensive tests for rara-mcp client + + diff --git a/crates/integrations/pg-credential-store/CHANGELOG.md b/crates/integrations/pg-credential-store/CHANGELOG.md new file mode 100644 index 000000000..e69b49e3f --- /dev/null +++ b/crates/integrations/pg-credential-store/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **deps**: Upgrade testcontainers-modules to 0.15 ([#378](https://github.com/rararulab/rara/issues/378)) ([#379](https://github.com/rararulab/rara/issues/379)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **pg-credential-store**: PgKeyringStore backed by PostgreSQL ([#452](https://github.com/rararulab/rara/issues/452)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Replace Consul with YAML config, continue SQLite migration, add session resumption + + diff --git a/crates/kernel/CHANGELOG.md b/crates/kernel/CHANGELOG.md new file mode 100644 index 000000000..7f480189f --- /dev/null +++ b/crates/kernel/CHANGELOG.md @@ -0,0 +1,405 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **egress**: Fallback to persistent platform identities for stateless channels ([#25](https://github.com/rararulab/rara/issues/25)) +- **kernel**: Unify agent_turn error type from String to KernelError +- **kernel,channels**: Prevent duplicate telegram messages and stuck Running processes +- **kernel,boot**: Address user tape code review issues ([#75](https://github.com/rararulab/rara/issues/75)) +- **kernel**: Wire spawn_child result_tx through Session lifecycle ([#76](https://github.com/rararulab/rara/issues/76)) +- **kernel**: Cleanup spawn_child agents after first turn completion ([#76](https://github.com/rararulab/rara/issues/76)) +- **kernel**: Catch panics in turn task and log actual panic message ([#88](https://github.com/rararulab/rara/issues/88)) +- **kernel**: Store origin_endpoint in Session to prevent cross-channel reply leaks ([#96](https://github.com/rararulab/rara/issues/96)) +- **memory**: Deduplicate user message in LLM context assembly ([#101](https://github.com/rararulab/rara/issues/101)) +- **security**: Enforce tool permissions in agent loop +- **kernel**: User-friendly context window error message ([#129](https://github.com/rararulab/rara/issues/129)) +- **tools**: Rename all tool names to match OpenAI ^[a-zA-Z0-9-]+$ pattern +- **kernel**: Schedule-add parameter validation for LLM compatibility ([#132](https://github.com/rararulab/rara/issues/132)) +- **kernel,symphony**: Offload blocking I/O to spawn_blocking to prevent tokio starvation +- **kernel**: Scheduled task isolation — independent tape and silent delivery ([#140](https://github.com/rararulab/rara/issues/140)) +- **kernel**: Build meaningful summary for auto-handoff anchor +- Tape memory +- **memory**: Improve tape search relevance +- **mita**: Persist MitaDirective as Event entry in session tape ([#173](https://github.com/rararulab/rara/issues/173)) +- **kernel**: Move syscall job_wheel persist to spawn_blocking ([#184](https://github.com/rararulab/rara/issues/184)) +- **kernel**: Prevent orphan tape in checkout and add rollback ([#188](https://github.com/rararulab/rara/issues/188)) +- **channels**: Emit TextClear to fix tool progress notifications ([#207](https://github.com/rararulab/rara/issues/207)) +- **kernel**: Emit ToolCallStart before argument parsing ([#207](https://github.com/rararulab/rara/issues/207)) +- **kernel**: Normalize empty tool call arguments to valid JSON +- **kernel**: Log successful tool calls +- **kernel**: Log tool call arguments at start +- **kernel**: Include request args in tool error log +- **kernel**: Use info level for LLM request/response logs +- **kernel**: Ensure ToolCallStart is emitted before ToolCallArgumentsDelta +- **kernel**: Address review feedback — configurable rate limit, memory eviction, serde parse +- **kernel**: Address PR review — gc wiring, clock-testable rate limiter, strum parsing ([#223](https://github.com/rararulab/rara/issues/223)) +- **kernel**: Preserve original message in NonRetryable/RetryableServer errors ([#227](https://github.com/rararulab/rara/issues/227)) +- **kernel**: 强制执行 max_concurrency 和 child_semaphore 并发限制 (#242, #243) +- **kernel**: Add default_execution_mode to worker manifest +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) +- **kernel**: Mark TurnTrace as failed and emit warning when max_iterations exhausted ([#319](https://github.com/rararulab/rara/issues/319)) ([#326](https://github.com/rararulab/rara/issues/326)) +- **llm**: Add frequency_penalty to prevent repetition loops ([#317](https://github.com/rararulab/rara/issues/317)) ([#318](https://github.com/rararulab/rara/issues/318)) +- **kernel**: Skip empty notifications instead of sending placeholder string ([#334](https://github.com/rararulab/rara/issues/334)) ([#336](https://github.com/rararulab/rara/issues/336)) +- **agents**: Add marketplace tool to rara agent manifest ([#347](https://github.com/rararulab/rara/issues/347)) +- **telegram**: Pre-render trace HTML for instant callback response ([#343](https://github.com/rararulab/rara/issues/343)) +- **kernel**: Drop PublishEvent with missing/blank payload.message ([#350](https://github.com/rararulab/rara/issues/350)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **kernel**: Suppress duplicate error message on user interrupt ([#355](https://github.com/rararulab/rara/issues/355)) +- **kernel**: Treat plan step iteration exhaustion as replan trigger ([#477](https://github.com/rararulab/rara/issues/477)) +- **kernel**: Use origin_endpoint directly for outbound routing ([#482](https://github.com/rararulab/rara/issues/482)) +- **kernel**: Add logging and thinking model fallback for session title generation ([#493](https://github.com/rararulab/rara/issues/493)) ([#494](https://github.com/rararulab/rara/issues/494)) +- **syscall-scheduler**: Move scheduler to workspace dir +- **scheduler**: List scheduler jobs across sessions +- **scheduler**: Update scheduler-tool's prompt +- **kernel**: Default execution mode to Plan instead of Reactive ([#567](https://github.com/rararulab/rara/issues/567)) ([#570](https://github.com/rararulab/rara/issues/570)) +- **kernel**: Inject agent context into plan-mode planner ([#567](https://github.com/rararulab/rara/issues/567)) ([#576](https://github.com/rararulab/rara/issues/576)) +- **kernel**: Reduce plan step iterations and add early-exit guidance ([#586](https://github.com/rararulab/rara/issues/586)) ([#588](https://github.com/rararulab/rara/issues/588)) +- **kernel**: Replace byte truncation with self-summarizing child agents ([#578](https://github.com/rararulab/rara/issues/578)) ([#581](https://github.com/rararulab/rara/issues/581)) +- **kernel**: Persist intermediate assistant messages to tape for cascade tick detection ([#606](https://github.com/rararulab/rara/issues/606)) ([#608](https://github.com/rararulab/rara/issues/608)) +- **guard**: Expand whitelist and fix approval timeout race (#604, #605) ([#609](https://github.com/rararulab/rara/issues/609)) +- **kernel**: Repetition guard fixes ([#616](https://github.com/rararulab/rara/issues/616)) ([#619](https://github.com/rararulab/rara/issues/619)) +- **kernel**: Pass parsed arguments to ToolCallStart for trace summaries ([#621](https://github.com/rararulab/rara/issues/621)) ([#623](https://github.com/rararulab/rara/issues/623)) +- **kernel**: Register notified() before emptiness check in ShardQueue::wait() ([#687](https://github.com/rararulab/rara/issues/687)) ([#692](https://github.com/rararulab/rara/issues/692)) +- **kernel**: Close zombie streams when opening new stream ([#688](https://github.com/rararulab/rara/issues/688)) ([#693](https://github.com/rararulab/rara/issues/693)) +- **kernel**: Log and recover from job_wheel mutex poisoning ([#689](https://github.com/rararulab/rara/issues/689)) ([#694](https://github.com/rararulab/rara/issues/694)) +- **kernel**: Prefer accumulated_text over reasoning for TurnRationale ([#713](https://github.com/rararulab/rara/issues/713)) ([#715](https://github.com/rararulab/rara/issues/715)) +- **kernel**: Allow ancestor paths in path_scope guard for directory tools ([#727](https://github.com/rararulab/rara/issues/727)) ([#733](https://github.com/rararulab/rara/issues/733)) +- **app**: Context-mode interceptor whitelist + summary + system prompt ([#722](https://github.com/rararulab/rara/issues/722)) ([#732](https://github.com/rararulab/rara/issues/732)) +- **kernel**: Align OpenAI driver wire format with API spec ([#743](https://github.com/rararulab/rara/issues/743)) ([#745](https://github.com/rararulab/rara/issues/745)) +- **kernel**: Default ExecutionMode to Reactive and cap plan-mode iterations ([#752](https://github.com/rararulab/rara/issues/752)) ([#754](https://github.com/rararulab/rara/issues/754)) +- **kernel**: Openai wire format alignment ([#747](https://github.com/rararulab/rara/issues/747)) ([#750](https://github.com/rararulab/rara/issues/750)) +- **kernel**: Make interceptor prompt fragment dynamic to track MCP state ([#763](https://github.com/rararulab/rara/issues/763)) ([#769](https://github.com/rararulab/rara/issues/769)) +- **kernel**: Tune agent loop timeouts for responsiveness ([#770](https://github.com/rararulab/rara/issues/770)) ([#772](https://github.com/rararulab/rara/issues/772)) +- **kernel**: Add logs_dir and ~/.claude to path-scope whitelist ([#780](https://github.com/rararulab/rara/issues/780)) ([#781](https://github.com/rararulab/rara/issues/781)) +- **kernel**: Set max_tokens to 1024 in agent loop CompletionRequest ([#802](https://github.com/rararulab/rara/issues/802)) ([#803](https://github.com/rararulab/rara/issues/803)) +- **kernel**: Increase max_tokens to 2048 and optimize agent prompt ([#815](https://github.com/rararulab/rara/issues/815)) ([#816](https://github.com/rararulab/rara/issues/816)) +- **kernel**: Nudge LLM when it returns empty text after tool calls ([#855](https://github.com/rararulab/rara/issues/855)) ([#856](https://github.com/rararulab/rara/issues/856)) +- **kernel**: Send fallback reply on empty LLM response after error recovery ([#894](https://github.com/rararulab/rara/issues/894)) ([#896](https://github.com/rararulab/rara/issues/896)) +- **kernel**: Make typing_refresh respect turn cancellation ([#900](https://github.com/rararulab/rara/issues/900)) ([#903](https://github.com/rararulab/rara/issues/903)) +- **kernel**: Include descriptions in discoverable tools system prompt ([#914](https://github.com/rararulab/rara/issues/914)) ([#915](https://github.com/rararulab/rara/issues/915)) +- **kernel**: Inject system paths and improve discover-tools guidance in agent system prompt ([#919](https://github.com/rararulab/rara/issues/919)) ([#920](https://github.com/rararulab/rara/issues/920)) +- **kernel**: Reword deferred tools prompt to stop agent claiming tools unavailable ([#935](https://github.com/rararulab/rara/issues/935)) ([#937](https://github.com/rararulab/rara/issues/937)) +- **kernel**: Align deferred tool catalog with executable tool registry ([#941](https://github.com/rararulab/rara/issues/941)) ([#942](https://github.com/rararulab/rara/issues/942)) +- **kernel**: Add timeout enforcement for background agent watchers ([#928](https://github.com/rararulab/rara/issues/928)) ([#931](https://github.com/rararulab/rara/issues/931)) +- **kernel**: Allow multiple LLM error recoveries per agent turn ([#930](https://github.com/rararulab/rara/issues/930)) ([#932](https://github.com/rararulab/rara/issues/932)) +- **kernel**: Use parking_lot mutex ([#927](https://github.com/rararulab/rara/issues/927)) ([#933](https://github.com/rararulab/rara/issues/933)) +- **kernel**: Improve context estimation ([#929](https://github.com/rararulab/rara/issues/929)) ([#934](https://github.com/rararulab/rara/issues/934)) +- **kernel**: Expose full error chain in LLM provider errors ([#1017](https://github.com/rararulab/rara/issues/1017)) ([#1018](https://github.com/rararulab/rara/issues/1018)) +- **kernel**: Bypass proxy for local/private-network LLM providers ([#1020](https://github.com/rararulab/rara/issues/1020)) ([#1021](https://github.com/rararulab/rara/issues/1021)) +- Resolve contract violations found by code quality scan ([#1026](https://github.com/rararulab/rara/issues/1026)) ([#1030](https://github.com/rararulab/rara/issues/1030)) +- **kernel**: Merge system messages for strict chat template providers ([#1034](https://github.com/rararulab/rara/issues/1034)) ([#1038](https://github.com/rararulab/rara/issues/1038)) +- **kernel**: Strip tags from content field ([#1054](https://github.com/rararulab/rara/issues/1054)) ([#1055](https://github.com/rararulab/rara/issues/1055)) +- **kernel,web**: Preserve multimodal image content through LLM pipeline ([#1063](https://github.com/rararulab/rara/issues/1063)) ([#1064](https://github.com/rararulab/rara/issues/1064)) +- **chat**: Preserve multimodal in api ([#1066](https://github.com/rararulab/rara/issues/1066)) ([#1067](https://github.com/rararulab/rara/issues/1067)) +- **kernel**: Preserve multimodal content on first-turn spawn ([#1068](https://github.com/rararulab/rara/issues/1068)) ([#1070](https://github.com/rararulab/rara/issues/1070)) +- **kernel**: Treat empty LLM stream as error with auto-fold recovery ([#1116](https://github.com/rararulab/rara/issues/1116)) ([#1117](https://github.com/rararulab/rara/issues/1117)) +- **kernel**: Use SessionKey/ChannelType types in ChannelMessage and ChannelBinding ([#1120](https://github.com/rararulab/rara/issues/1120)) ([#1132](https://github.com/rararulab/rara/issues/1132)) +- **cmd**: Index 'rara debug' lookup via execution_traces SQL ([#1138](https://github.com/rararulab/rara/issues/1138)) ([#1139](https://github.com/rararulab/rara/issues/1139)) +- **kernel**: Explicit backpressure retry for IOError::Full in ingress pipeline ([#1148](https://github.com/rararulab/rara/issues/1148)) ([#1158](https://github.com/rararulab/rara/issues/1158)) +- **cmd**: Render full ExecutionTrace from SQL in 'rara debug' ([#1156](https://github.com/rararulab/rara/issues/1156)) ([#1161](https://github.com/rararulab/rara/issues/1161)) +- **kernel**: Intercept XML tool calls from MiniMax in content stream ([#1166](https://github.com/rararulab/rara/issues/1166)) ([#1170](https://github.com/rararulab/rara/issues/1170)) +- **kernel**: Tool_xml safe_emit_len panics on multi-byte UTF-8 ([#1173](https://github.com/rararulab/rara/issues/1173)) ([#1174](https://github.com/rararulab/rara/issues/1174)) +- **kernel**: Handle streamed tool deltas even when stop_reason mismatches ([#1201](https://github.com/rararulab/rara/issues/1201)) +- **channels**: /debug shows all entry kinds via entries_by_message_id ([#1207](https://github.com/rararulab/rara/issues/1207)) ([#1209](https://github.com/rararulab/rara/issues/1209)) +- **kernel**: Detect vision support by model name, stop stripping images ([#1216](https://github.com/rararulab/rara/issues/1216)) ([#1218](https://github.com/rararulab/rara/issues/1218)) +- **codex-oauth**: Add ChatGPT-Account-Id header for API access ([#1241](https://github.com/rararulab/rara/issues/1241)) ([#1244](https://github.com/rararulab/rara/issues/1244)) +- **kernel**: CodexDriver reads HTTPS_PROXY for chatgpt.com connectivity ([#1248](https://github.com/rararulab/rara/issues/1248)) +- **kernel**: CodexDriver proxy support + required instructions field ([#1249](https://github.com/rararulab/rara/issues/1249)) +- **kernel**: Codex driver — extract system messages into top-level instructions field ([#1252](https://github.com/rararulab/rara/issues/1252)) +- **kernel**: Codex driver — set store=false (endpoint rejects store=true) ([#1253](https://github.com/rararulab/rara/issues/1253)) +- **kernel**: Codex driver — remove unsupported max_output_tokens parameter ([#1254](https://github.com/rararulab/rara/issues/1254)) +- **kernel**: Codex driver — strip all unsupported parameters from request body ([#1255](https://github.com/rararulab/rara/issues/1255)) +- **kernel**: Codex driver — explicitly send store=false (API defaults to true) ([#1256](https://github.com/rararulab/rara/issues/1256)) +- **kernel**: Ensure object schemas always have properties key ([#1257](https://github.com/rararulab/rara/issues/1257)) +- **kernel**: Codex driver — add 5-minute absolute stream timeout ([#1260](https://github.com/rararulab/rara/issues/1260)) +- **kernel**: Simplify context contract following bub's approach ([#1309](https://github.com/rararulab/rara/issues/1309)) ([#1310](https://github.com/rararulab/rara/issues/1310)) +- **kernel**: Disable auto-fold, remove context warnings, align with bub ([#1315](https://github.com/rararulab/rara/issues/1315)) ([#1316](https://github.com/rararulab/rara/issues/1316)) +- **channels**: Route approval requests to originating chat, not primary_chat_id ([#1319](https://github.com/rararulab/rara/issues/1319)) ([#1322](https://github.com/rararulab/rara/issues/1322)) +- **kernel**: Ack detector now catches mid-turn planning responses ([#1332](https://github.com/rararulab/rara/issues/1332)) ([#1333](https://github.com/rararulab/rara/issues/1333)) +- **kernel**: Sanitize tool names for OpenAI API compatibility ([#1342](https://github.com/rararulab/rara/issues/1342)) ([#1343](https://github.com/rararulab/rara/issues/1343)) +- **kernel**: Deliver scheduled task result to origin session ([#1360](https://github.com/rararulab/rara/issues/1360)) ([#1362](https://github.com/rararulab/rara/issues/1362)) +- **kernel**: Relax loop breaker flooding thresholds and exempt read-only tools ([#1359](https://github.com/rararulab/rara/issues/1359)) ([#1361](https://github.com/rararulab/rara/issues/1361)) +- **kernel**: Return Err(Interrupted) for new-message interrupt path ([#1372](https://github.com/rararulab/rara/issues/1372)) ([#1373](https://github.com/rararulab/rara/issues/1373)) +- **kernel**: Close spawn_child race that leaks child semaphore permits ([#1376](https://github.com/rararulab/rara/issues/1376)) ([#1378](https://github.com/rararulab/rara/issues/1378)) +- **kernel**: Add deferred tier to task and spawn-background tools ([#1375](https://github.com/rararulab/rara/issues/1375)) ([#1377](https://github.com/rararulab/rara/issues/1377)) + +### Documentation + +- **memory**: Add detailed what/how/why comments to tape memory module ([#64](https://github.com/rararulab/rara/issues/64)) +- **kernel**: Add detailed comments to start_llm_turn explaining lifecycle phases +- **telegram**: Add implementation comments for anchor tree flows +- **kernel**: Enrich checkout action description in TapeTool ([#202](https://github.com/rararulab/rara/issues/202)) +- **kernel**: Add AGENT.md guidelines for IngressRateLimiter and GroupPolicy +- **kernel**: Add 'why' reasoning to AGENT.md guidelines +- **kernel**: Add AGENT.md section for tape-driven message rebuild + context budget ([#229](https://github.com/rararulab/rara/issues/229)) +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) +- **kernel**: Add ARCHITECTURE.md mapping kernel data flow and module roles ([#1140](https://github.com/rararulab/rara/issues/1140)) ([#1150](https://github.com/rararulab/rara/issues/1150)) +- **kernel**: Rewrite delegation tools and tool tier docs in AGENT.md ([#1382](https://github.com/rararulab/rara/issues/1382)) + +### Features + +- **kernel**: Implement KernelHandle as event-queue-based public API ([#23](https://github.com/rararulab/rara/issues/23)) +- **session**: 添加 SessionIndex trait 和 FileSessionIndex 实现 ([#43](https://github.com/rararulab/rara/issues/43)) +- **cmd**: Improve TUI session Gantt chart with metrics overlay and time axis +- **memory**: Add user tape for cross-session user memory ([#70](https://github.com/rararulab/rara/issues/70)) +- **kernel**: Add group chat proactive reply with two-step LLM judgment ([#71](https://github.com/rararulab/rara/issues/71)) +- **kernel**: Add KnowledgeConfig struct ([#81](https://github.com/rararulab/rara/issues/81)) +- **kernel**: Add knowledge layer — items, categories, embedding, extractor, tool ([#81](https://github.com/rararulab/rara/issues/81)) +- **kernel**: Wire knowledge layer into kernel event loop and boot sequence ([#81](https://github.com/rararulab/rara/issues/81)) +- **channels**: Support sending images to users in Telegram ([#91](https://github.com/rararulab/rara/issues/91)) +- **memory**: Add source_ids to compaction anchor and entry lookup by ID ([#104](https://github.com/rararulab/rara/issues/104)) +- **memory**: Expose source references in knowledge search and add resolve_sources ([#105](https://github.com/rararulab/rara/issues/105)) +- **memory**: Support fork from specific entry ID ([#107](https://github.com/rararulab/rara/issues/107)) +- **agent**: Emit intent/progress during long multi-step tool executions ([#116](https://github.com/rararulab/rara/issues/116)) +- **kernel**: Dynamic MCP tool injection into agent loop ([#126](https://github.com/rararulab/rara/issues/126)) +- **kernel**: Replace oneshot result channel with mpsc AgentEvent channel ([#127](https://github.com/rararulab/rara/issues/127)) +- **kernel**: Run_agent_loop emits milestones via mpsc channel ([#127](https://github.com/rararulab/rara/issues/127)) +- **kernel**: Exec_spawn collects milestones into tool result ([#127](https://github.com/rararulab/rara/issues/127)) +- **kernel**: Usage collection, tape tools, and context contract ([#130](https://github.com/rararulab/rara/issues/130)) +- **llm**: Image compression pipeline for vision input ([#131](https://github.com/rararulab/rara/issues/131)) +- **kernel**: Add scheduled task system ([#132](https://github.com/rararulab/rara/issues/132)) +- **kernel**: Auto-handoff on context window overflow ([#134](https://github.com/rararulab/rara/issues/134)) +- **kernel**: ScheduledJobAgent + enriched task notifications ([#135](https://github.com/rararulab/rara/issues/135)) +- **kernel**: KernelEvent::SendNotification + fix PublishEvent syscall ([#137](https://github.com/rararulab/rara/issues/137)) +- **kernel**: Runtime context guard with token feedback ([#149](https://github.com/rararulab/rara/issues/149)) +- **llm**: Add Message::tool_result_multimodal() constructor +- **kernel**: Add ToolOutput type and update AgentTool::execute() signature +- **kernel**: Add desired_session_key to spawn_with_input ([#164](https://github.com/rararulab/rara/issues/164)) +- **kernel**: Store LLM usage metadata on assistant tape entries ([#165](https://github.com/rararulab/rara/issues/165)) +- **memory**: Add estimated_context_tokens to TapeInfo ([#165](https://github.com/rararulab/rara/issues/165)) +- **kernel**: Expose estimated_context_tokens in tape.info tool ([#165](https://github.com/rararulab/rara/issues/165)) +- **kernel**: Use estimated_context_tokens in context pressure warnings ([#165](https://github.com/rararulab/rara/issues/165)) +- **memory**: User tape knowledge distillation via anchor ([#170](https://github.com/rararulab/rara/issues/170)) +- **kernel**: Render soul prompt with runtime state via SoulRenderer ([#174](https://github.com/rararulab/rara/issues/174)) +- **kernel**: Add mood inference hook at end of agent loop ([#176](https://github.com/rararulab/rara/issues/176)) +- **kernel**: Add rate limit retry with exponential backoff for LLM calls +- **telegram**: Add /anchors and /checkout commands +- **kernel**: Add checkout action to tape tool ([#188](https://github.com/rararulab/rara/issues/188)) +- **kernel**: Teach LLM about anchor navigation in runtime prompt ([#188](https://github.com/rararulab/rara/issues/188)) +- **kernel**: Inject SessionIndex into TapeTool for real checkout ([#193](https://github.com/rararulab/rara/issues/193)) +- **kernel**: Add checkout_root action to TapeTool ([#204](https://github.com/rararulab/rara/issues/204)) +- **channels**: Include raw args in tool parse failure error ([#207](https://github.com/rararulab/rara/issues/207)) +- **kernel**: Log LLM request and response at debug level +- **kernel**: Add GroupPolicy enum to channel types (#219-adjacent) +- **kernel**: Add IngressRateLimiter with sliding-window per-key limiting +- **kernel**: Wire IngressRateLimiter into IOSubsystem resolve path +- **kernel**: Add context budget for tool result truncation ([#228](https://github.com/rararulab/rara/issues/228)) +- **kernel**: Add /msg_version command and session/manifest routing ([#257](https://github.com/rararulab/rara/issues/257)) +- **channels**: Plan-execute TG 三级显示策略 + 单消息编辑流 ([#267](https://github.com/rararulab/rara/issues/267)) +- **telegram**: Show input/output token counts in progress UX ([#304](https://github.com/rararulab/rara/issues/304)) +- **kernel,telegram**: Rara_message_id end-to-end tracing and debug_trace tool ([#337](https://github.com/rararulab/rara/issues/337)) +- **kernel**: Background agent spawning with proactive result delivery ([#340](https://github.com/rararulab/rara/issues/340)) +- **kernel**: Context folding — auto-anchor with pressure-driven summarization ([#357](https://github.com/rararulab/rara/issues/357)) +- **kernel**: Implement ContextFolder and FoldBranchTool ([#376](https://github.com/rararulab/rara/issues/376)) +- **kernel,telegram**: Auto-generate session title & redesign /sessions UI ([#434](https://github.com/rararulab/rara/issues/434)) +- **kernel**: External agent.md prompt ([#451](https://github.com/rararulab/rara/issues/451)) +- **kernel**: Centralize loading hints with random selection ([#455](https://github.com/rararulab/rara/issues/455)) +- **channels**: Add /status command with session info and scheduled jobs ([#450](https://github.com/rararulab/rara/issues/450)) ([#453](https://github.com/rararulab/rara/issues/453)) +- **kernel**: Implement TaskReport type system and notification subscription bus ([#438](https://github.com/rararulab/rara/issues/438)) ([#439](https://github.com/rararulab/rara/issues/439)) +- **dock**: Generative UI canvas workbench ([#424](https://github.com/rararulab/rara/issues/424)) +- **kernel**: Agent knowledge directory with index + on-demand loading ([#466](https://github.com/rararulab/rara/issues/466)) ([#469](https://github.com/rararulab/rara/issues/469)) +- **kernel**: Read-file adaptive paging based on context window ([#468](https://github.com/rararulab/rara/issues/468)) ([#471](https://github.com/rararulab/rara/issues/471)) +- **kernel**: Default execution mode to plan (v2) ([#479](https://github.com/rararulab/rara/issues/479)) ([#481](https://github.com/rararulab/rara/issues/481)) +- **kernel**: Add browser automation subsystem via Lightpanda + CDP ([#473](https://github.com/rararulab/rara/issues/473)) +- **kernel**: Inject installed skills into agent system prompt ([#487](https://github.com/rararulab/rara/issues/487)) +- **channels**: Add session delete buttons and relative time in /sessions ([#492](https://github.com/rararulab/rara/issues/492)) +- **tool-macro**: Add ToolDef derive macro infrastructure ([#514](https://github.com/rararulab/rara/issues/514)) +- **kernel**: Implement pause_turn circuit breaker for agent loop ([#506](https://github.com/rararulab/rara/issues/506)) ([#508](https://github.com/rararulab/rara/issues/508)) +- **tool-macro**: Migrate kernel tools to ToolDef ([#510](https://github.com/rararulab/rara/issues/510)) ([#517](https://github.com/rararulab/rara/issues/517)) +- **web**: Cascade viewer — agent execution trace side panel ([#513](https://github.com/rararulab/rara/issues/513)) +- **acp**: Add native acp client crate ([#504](https://github.com/rararulab/rara/issues/504)) +- **kernel**: Enrich tape metadata with typed structs for latency, model, and stop_reason ([#548](https://github.com/rararulab/rara/issues/548)) ([#551](https://github.com/rararulab/rara/issues/551)) +- **kernel**: Add PathScopeGuard for file-access scope enforcement ([#579](https://github.com/rararulab/rara/issues/579)) ([#582](https://github.com/rararulab/rara/issues/582)) +- **kernel**: Session-level dynamic whitelist for PathScopeGuard approvals ([#596](https://github.com/rararulab/rara/issues/596)) ([#597](https://github.com/rararulab/rara/issues/597)) +- **kernel**: Streaming repetition guard for LLM output loops ([#602](https://github.com/rararulab/rara/issues/602)) ([#614](https://github.com/rararulab/rara/issues/614)) +- **kernel**: Add session-length handoff reminder and strengthen topic-switch prompt ([#615](https://github.com/rararulab/rara/issues/615)) +- **kernel**: Show LLM reasoning for tool calls in progress display ([#661](https://github.com/rararulab/rara/issues/661)) ([#664](https://github.com/rararulab/rara/issues/664)) +- **channels**: Enhance guard approval UI with context, timing, and expiration ([#653](https://github.com/rararulab/rara/issues/653)) ([#665](https://github.com/rararulab/rara/issues/665)) +- **kernel**: Add LlmModelLister and LlmEmbedder extension traits ([#762](https://github.com/rararulab/rara/issues/762)) ([#766](https://github.com/rararulab/rara/issues/766)) +- **kernel**: Add tool call loop breaker ([#773](https://github.com/rararulab/rara/issues/773)) ([#775](https://github.com/rararulab/rara/issues/775)) +- **kernel**: Deferred tool loading — reduce per-turn token overhead ([#756](https://github.com/rararulab/rara/issues/756)) ([#768](https://github.com/rararulab/rara/issues/768)) +- **kernel**: Per-tool execution timeout granularity ([#778](https://github.com/rararulab/rara/issues/778)) ([#782](https://github.com/rararulab/rara/issues/782)) +- **kernel**: Stream bash stdout in real-time during tool execution ([#777](https://github.com/rararulab/rara/issues/777)) ([#788](https://github.com/rararulab/rara/issues/788)) +- **app**: Port kota file tools — in-process grep/find, delete-file, create-directory ([#808](https://github.com/rararulab/rara/issues/808)) ([#810](https://github.com/rararulab/rara/issues/810)) +- **channels**: Add WeChat iLink Bot channel adapter ([#827](https://github.com/rararulab/rara/issues/827)) ([#830](https://github.com/rararulab/rara/issues/830)) +- **kernel**: Discover-tools finds skills ([#833](https://github.com/rararulab/rara/issues/833)) ([#835](https://github.com/rararulab/rara/issues/835)) +- **kernel**: Task tool — preset-based background agent delegation ([#845](https://github.com/rararulab/rara/issues/845)) ([#847](https://github.com/rararulab/rara/issues/847)) +- **kernel**: Add explore task preset and delegation routing ([#873](https://github.com/rararulab/rara/issues/873)) ([#875](https://github.com/rararulab/rara/issues/875)) +- **kernel**: Inject deferred tool names into agent system prompt ([#902](https://github.com/rararulab/rara/issues/902)) ([#906](https://github.com/rararulab/rara/issues/906)) +- **tools**: Include parameter summaries in discover-tools results ([#925](https://github.com/rararulab/rara/issues/925)) ([#926](https://github.com/rararulab/rara/issues/926)) +- **channels**: Improve Telegram progress UX (#947, #948, #949) ([#951](https://github.com/rararulab/rara/issues/951)) +- **kernel**: Add ToolHint, UserQuestionManager, and ask-user tool ([#945](https://github.com/rararulab/rara/issues/945)) ([#952](https://github.com/rararulab/rara/issues/952)) +- **kernel**: Codex OAuth as first-class LLM provider ([#950](https://github.com/rararulab/rara/issues/950)) ([#953](https://github.com/rararulab/rara/issues/953)) +- **kernel**: Telegram voice message STT via local whisper-server ([#998](https://github.com/rararulab/rara/issues/998)) ([#1003](https://github.com/rararulab/rara/issues/1003)) +- **cmd**: Rara setup interactive configuration wizard ([#1008](https://github.com/rararulab/rara/issues/1008)) ([#1011](https://github.com/rararulab/rara/issues/1011)) +- **kernel**: Detect model vision capability and strip image blocks ([#1076](https://github.com/rararulab/rara/issues/1076)) ([#1078](https://github.com/rararulab/rara/issues/1078)) +- **app**: Auto-manage whisper-server lifecycle ([#1081](https://github.com/rararulab/rara/issues/1081)) ([#1082](https://github.com/rararulab/rara/issues/1082)) +- **web**: Voice message input via microphone recording ([#1084](https://github.com/rararulab/rara/issues/1084)) ([#1085](https://github.com/rararulab/rara/issues/1085)) +- **browser**: Enforce navigation timeout and make wait_for timeout configurable ([#1107](https://github.com/rararulab/rara/issues/1107)) ([#1108](https://github.com/rararulab/rara/issues/1108)) +- **kernel**: Batch file reads and 429 rate-limit recovery ([#1118](https://github.com/rararulab/rara/issues/1118)) ([#1119](https://github.com/rararulab/rara/issues/1119)) +- **cmd**: Add 'rara debug ' CLI command ([#1135](https://github.com/rararulab/rara/issues/1135)) ([#1136](https://github.com/rararulab/rara/issues/1136)) +- **kernel**: Per-session child concurrency semaphore ([#1144](https://github.com/rararulab/rara/issues/1144)) ([#1155](https://github.com/rararulab/rara/issues/1155)) +- **kernel**: Add AgentTool::validate semantic validation step ([#1183](https://github.com/rararulab/rara/issues/1183)) ([#1185](https://github.com/rararulab/rara/issues/1185)) +- **kernel**: GLM-5.1 provider-specific optimizations ([#1196](https://github.com/rararulab/rara/issues/1196)) ([#1197](https://github.com/rararulab/rara/issues/1197)) +- **kernel**: Add safety axes + concurrency partitioning ([#1186](https://github.com/rararulab/rara/issues/1186)) ([#1192](https://github.com/rararulab/rara/issues/1192)) +- **kernel**: Tool execution hooks — PreToolUse / PostToolUse / PostToolUseFailure ([#1204](https://github.com/rararulab/rara/issues/1204)) ([#1208](https://github.com/rararulab/rara/issues/1208)) +- **kernel**: Scheduling architecture hardening — 10 improvements from matklad review ([#1222](https://github.com/rararulab/rara/issues/1222)) ([#1245](https://github.com/rararulab/rara/issues/1245)) +- **kernel**: Add CodexDriver for ChatGPT backend Responses API ([#1246](https://github.com/rararulab/rara/issues/1246)) ([#1247](https://github.com/rararulab/rara/issues/1247)) +- **kernel**: Add LifecycleHook trait and registry for turn/fold events ([#1286](https://github.com/rararulab/rara/issues/1286)) ([#1288](https://github.com/rararulab/rara/issues/1288)) +- **kernel**: Implement SkillNudge + MemoryNudge lifecycle hooks ([#1290](https://github.com/rararulab/rara/issues/1290)) ([#1292](https://github.com/rararulab/rara/issues/1292)) +- **kernel**: Self-continuation signal to prevent GPT stop-and-ask ([#1301](https://github.com/rararulab/rara/issues/1301)) ([#1306](https://github.com/rararulab/rara/issues/1306)) +- **kernel**: Interrupt agent turn on new user message ([#1317](https://github.com/rararulab/rara/issues/1317)) ([#1318](https://github.com/rararulab/rara/issues/1318)) +- **kernel**: Add task delegation guidance to context_contract ([#1321](https://github.com/rararulab/rara/issues/1321)) ([#1323](https://github.com/rararulab/rara/issues/1323)) +- **agents**: Make safety fragment act-by-default to improve proactivity ([#1320](https://github.com/rararulab/rara/issues/1320)) ([#1324](https://github.com/rararulab/rara/issues/1324)) +- **kernel**: Runtime ack detection to prevent lazy LLM responses ([#1329](https://github.com/rararulab/rara/issues/1329)) ([#1330](https://github.com/rararulab/rara/issues/1330)) +- **kernel**: GPT-specific anti-narration prompt + raise ack length to 2000 ([#1340](https://github.com/rararulab/rara/issues/1340)) ([#1341](https://github.com/rararulab/rara/issues/1341)) +- **kernel**: Hermes-aligned tool-use enforcement for GPT/Gemini/Grok ([#1340](https://github.com/rararulab/rara/issues/1340)) ([#1344](https://github.com/rararulab/rara/issues/1344)) +- **kernel**: Add WHEN TO USE guidance to task tool and promote spawn-background to core ([#1348](https://github.com/rararulab/rara/issues/1348)) ([#1352](https://github.com/rararulab/rara/issues/1352)) +- **kernel**: Three-tier ack detection for verbose GPT narration ([#1349](https://github.com/rararulab/rara/issues/1349)) ([#1353](https://github.com/rararulab/rara/issues/1353)) +- **kernel**: Integrate talk-normal anti-slop output style rules ([#1350](https://github.com/rararulab/rara/issues/1350)) ([#1354](https://github.com/rararulab/rara/issues/1354)) +- **kernel**: Hermes-aligned agent loop efficiency improvements ([#1384](https://github.com/rararulab/rara/issues/1384)) ([#1387](https://github.com/rararulab/rara/issues/1387)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Tidy project +- Format code +- **kernel**: Replace From<(&str, Option)> with explicit classify_provider_error, add stage constants +- Rustfmt formatting pass, fix Helm replicas/workers from `true` to `1` +- Format +- Clean +- **kernel**: Add usearch dependency for knowledge layer ([#81](https://github.com/rararulab/rara/issues/81)) +- Change jobs_path +- Format +- Add tool timeout +- Support composio config +- **kernel**: Add perf TODO for anchor tree session loading ([#188](https://github.com/rararulab/rara/issues/188)) +- Format +- Format +- Auto tool +- **channels**: Add delivery debug logging for wechat send path ([#881](https://github.com/rararulab/rara/issues/881)) ([#882](https://github.com/rararulab/rara/issues/882)) +- **kernel**: Increase default_max_iterations from 12 to 60 ([#1313](https://github.com/rararulab/rara/issues/1313)) ([#1313](https://github.com/rararulab/rara/issues/1313)) + +### Performance + +- **cascade**: Build CascadeTrace incrementally during agent loop ([#625](https://github.com/rararulab/rara/issues/625)) ([#632](https://github.com/rararulab/rara/issues/632)) +- **kernel**: Batch sequential event handling in run_processor ([#1141](https://github.com/rararulab/rara/issues/1141)) ([#1152](https://github.com/rararulab/rara/issues/1152)) +- **kernel**: In-memory tape index for anchor and kind lookups ([#1147](https://github.com/rararulab/rara/issues/1147)) ([#1157](https://github.com/rararulab/rara/issues/1157)) +- **base**: Use NonZeroU128 in define_id! for Option niche optimization ([#1149](https://github.com/rararulab/rara/issues/1149)) ([#1160](https://github.com/rararulab/rara/issues/1160)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Extract SecuritySubsystem +- **kernel**: Extract AuditSubsystem +- **kernel**: Flatten KernelInner, add strum derives, instrument macros, and Arc type aliases +- **kernel**: Use join_all for concurrent event batch processing ([#20](https://github.com/rararulab/rara/issues/20)) +- **kernel**: Migrate external callers to KernelHandle, demote Kernel methods ([#24](https://github.com/rararulab/rara/issues/24)) +- **kernel**: Remove redundant spawn methods from Kernel +- **kernel**: Remove async-openai and legacy LLM provider layer +- **kernel**: Add OutboundEnvelope constructors, eliminate duplicate struct literals +- **kernel**: Extract routing helpers from handle_user_message +- **kernel**: Reduce ProcessHandle boilerplate with helper methods +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **kernel**: Replace manual map_err with snafu ResultExt ([#33](https://github.com/rararulab/rara/issues/33)) +- **kernel**: Replace manual enum match with strum derives ([#34](https://github.com/rararulab/rara/issues/34)) +- **kernel**: Replace manual Debug impls with derive_more::Debug ([#35](https://github.com/rararulab/rara/issues/35)) +- **kernel**: Dissolve defaults/ module into domain modules ([#36](https://github.com/rararulab/rara/issues/36)) +- **kernel**: Split session.rs into directory module, fix external import paths ([#36](https://github.com/rararulab/rara/issues/36)) +- **kernel**: 将 RuntimeTable 从类型别名提升为领域结构体 ([#39](https://github.com/rararulab/rara/issues/39)) +- **kernel**: 提取 DeliverySubsystem 子组件 ([#39](https://github.com/rararulab/rara/issues/39)) +- **kernel**: 提取 SyscallDispatcher 子组件 ([#39](https://github.com/rararulab/rara/issues/39)) +- **kernel**: 平铺过度拆分的子模块 ([#40](https://github.com/rararulab/rara/issues/40)) +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- **kernel**: Introduce EventBase for unified event metadata +- **llm**: Per-provider default_model and fallback_models ([#47](https://github.com/rararulab/rara/issues/47)) +- **kernel**: Session-centric runtime ([#48](https://github.com/rararulab/rara/issues/48)) +- **kernel**: Migrate from Memory+SessionRepository to tape ([#51](https://github.com/rararulab/rara/issues/51)) +- Make it compile +- **kernel**: Remove SessionResolver, simplify ChannelBinding ([#63](https://github.com/rararulab/rara/issues/63)) +- **kernel**: Extract TapeTool from SyscallTool into dedicated tool +- **kernel**: Improve TapeTool error handling, add between_anchors action ([#68](https://github.com/rararulab/rara/issues/68)) +- **kernel**: Decouple proactive judgment into GroupMessage event ([#79](https://github.com/rararulab/rara/issues/79)) +- **kernel**: Make knowledge layer a required component, not optional ([#81](https://github.com/rararulab/rara/issues/81)) +- **kernel**: Remove enabled flag from KnowledgeConfig ([#81](https://github.com/rararulab/rara/issues/81)) +- **app**: Align knowledge config with settings-first architecture +- **memory**: Compaction shrinks read set instead of deleting history ([#103](https://github.com/rararulab/rara/issues/103)) +- **memory**: Define typed HandoffState contract for anchor state ([#106](https://github.com/rararulab/rara/issues/106)) +- **kernel**: ScheduledTask as dedicated KernelEvent + notifications ([#133](https://github.com/rararulab/rara/issues/133)) +- **kernel**: Split schedule-add into three LLM-friendly tools +- **kernel**: Rewrite tape tool description with topic-driven anchor and recall guidance +- **mita**: Replace submit_message with typed MitaDirective ([#171](https://github.com/rararulab/rara/issues/171)) +- **soul**: Remove all fallback logic, use built-in defaults directly +- **kernel**: Spawn per event instead of join_all to prevent batch blocking ([#185](https://github.com/rararulab/rara/issues/185)) +- **kernel**: Extract InMemorySessionIndex to shared test utility ([#188](https://github.com/rararulab/rara/issues/188)) +- **kernel**: Move checkout_anchor to TapeService ([#188](https://github.com/rararulab/rara/issues/188)) +- **kernel**: 每次迭代从 tape 重建 LLM messages,消除双写冗余 ([#229](https://github.com/rararulab/rara/issues/229)) +- **kernel**: Replace Chinese prompts with English in agent loop ([#229](https://github.com/rararulab/rara/issues/229)) +- **kernel**: Consolidate tool impls into tool/ module ([#264](https://github.com/rararulab/rara/issues/264)) +- **memory**: Remove MAX_USER_NOTES truncation, trust anchor boundary ([#407](https://github.com/rararulab/rara/issues/407)) +- **kernel**: Migrate browser tools to ToolDef derive macro ([#511](https://github.com/rararulab/rara/issues/511)) ([#518](https://github.com/rararulab/rara/issues/518)) +- **app**: Migrate app, dock, and knowledge tools to ToolDef derive macro ([#512](https://github.com/rararulab/rara/issues/512)) ([#519](https://github.com/rararulab/rara/issues/519)) +- **tool**: Typed Output associated type for ToolExecute ([#524](https://github.com/rararulab/rara/issues/524)) ([#533](https://github.com/rararulab/rara/issues/533)) +- **telemetry**: Migrate metrics from Prometheus pull to OpenTelemetry push ([#568](https://github.com/rararulab/rara/issues/568)) +- **tg**: Unify plan and progress into single in-progress message ([#580](https://github.com/rararulab/rara/issues/580)) ([#583](https://github.com/rararulab/rara/issues/583)) +- **kernel**: Plan mode agent loop fixes (#648 #649 #650) ([#667](https://github.com/rararulab/rara/issues/667)) +- **kernel**: Prompt review — fix 12 findings ([#755](https://github.com/rararulab/rara/issues/755)) ([#758](https://github.com/rararulab/rara/issues/758)) +- **kernel**: Flatten spawn-background params — remove nested manifest ([#764](https://github.com/rararulab/rara/issues/764)) ([#767](https://github.com/rararulab/rara/issues/767)) +- **tools**: Token diet — aggressive tool tiering + new file tools + browser prompt ([#805](https://github.com/rararulab/rara/issues/805)) ([#806](https://github.com/rararulab/rara/issues/806)) +- **kernel**: Drop output interceptor ([#809](https://github.com/rararulab/rara/issues/809)) ([#811](https://github.com/rararulab/rara/issues/811)) +- **agents**: Prompt diet — cut tokens ~49% ([#823](https://github.com/rararulab/rara/issues/823)) ([#824](https://github.com/rararulab/rara/issues/824)) +- **kernel**: Tool schema diet — split tape + compress descriptions ([#825](https://github.com/rararulab/rara/issues/825)) ([#826](https://github.com/rararulab/rara/issues/826)) +- **kernel**: Prompt diet tool tiering ([#831](https://github.com/rararulab/rara/issues/831)) ([#832](https://github.com/rararulab/rara/issues/832)) +- **agents**: Align system prompts with Claude Code patterns ([#841](https://github.com/rararulab/rara/issues/841)) ([#844](https://github.com/rararulab/rara/issues/844)) +- **app**: Remove swagger-ui support ([#904](https://github.com/rararulab/rara/issues/904)) +- Remove dead code identified by desloppify scan ([#1025](https://github.com/rararulab/rara/issues/1025)) ([#1029](https://github.com/rararulab/rara/issues/1029)) +- **kernel**: Fix KernelHandle API inconsistencies ([#1027](https://github.com/rararulab/rara/issues/1027)) ([#1031](https://github.com/rararulab/rara/issues/1031)) +- Replace magic strings with typed enums ([#1033](https://github.com/rararulab/rara/issues/1033)) ([#1036](https://github.com/rararulab/rara/issues/1036)) +- **agents**: Optimize agent prompts with prompt-refinery framework ([#1105](https://github.com/rararulab/rara/issues/1105)) ([#1106](https://github.com/rararulab/rara/issues/1106)) +- **kernel**: Replace anyhow with snafu typed errors in kernel internals ([#1124](https://github.com/rararulab/rara/issues/1124)) ([#1129](https://github.com/rararulab/rara/issues/1129)) +- **kernel**: Make LlmCredential fields private with constructor ([#1122](https://github.com/rararulab/rara/issues/1122)) ([#1131](https://github.com/rararulab/rara/issues/1131)) +- **kernel**: Introduce ToolName newtype for type-safe tool identifiers ([#1123](https://github.com/rararulab/rara/issues/1123)) ([#1133](https://github.com/rararulab/rara/issues/1133)) +- **kernel**: Type-state InboundMessage ([#1125](https://github.com/rararulab/rara/issues/1125)) ([#1134](https://github.com/rararulab/rara/issues/1134)) +- **kernel**: Type-state Principal vs Principal ([#1121](https://github.com/rararulab/rara/issues/1121)) ([#1137](https://github.com/rararulab/rara/issues/1137)) +- **kernel**: Remove single-impl EventQueue trait, use ShardedEventQueue directly ([#1142](https://github.com/rararulab/rara/issues/1142)) ([#1151](https://github.com/rararulab/rara/issues/1151)) +- **kernel**: SessionState transitions via methods ([#1143](https://github.com/rararulab/rara/issues/1143)) ([#1153](https://github.com/rararulab/rara/issues/1153)) +- **workspace**: Extract browser/stt from kernel into driver crates ([#1146](https://github.com/rararulab/rara/issues/1146)) ([#1154](https://github.com/rararulab/rara/issues/1154)) +- **agent**: Split run_agent_loop into sans-IO machine + runner ([#1145](https://github.com/rararulab/rara/issues/1145)) ([#1159](https://github.com/rararulab/rara/issues/1159)) +- **kernel**: Clean up io.rs (typestate, constructors, dead code, hot path) ([#1180](https://github.com/rararulab/rara/issues/1180)) ([#1184](https://github.com/rararulab/rara/issues/1184)) +- **kernel**: Rewrite Codex driver — full Responses API event handling ([#1250](https://github.com/rararulab/rara/issues/1250)) ([#1251](https://github.com/rararulab/rara/issues/1251)) +- **kernel**: Unify Codex into OpenAiDriver via ApiFormat enum ([#1287](https://github.com/rararulab/rara/issues/1287)) ([#1293](https://github.com/rararulab/rara/issues/1293)) +- **kernel**: Restrict tape-anchor to topic-switch only ([#1355](https://github.com/rararulab/rara/issues/1355)) ([#1356](https://github.com/rararulab/rara/issues/1356)) + +### Revert + +- **channels**: Back out today's Telegram routing changes +- **kernel**: Back out today's proactivity changes +- **kernel**: Back out remaining afternoon changes +- Restore April 13 changes previously rolled back + +### Styling + +- **browser**: Fix rustfmt alignment in BrowserFetchResult ([#1112](https://github.com/rararulab/rara/issues/1112)) ([#1113](https://github.com/rararulab/rara/issues/1113)) +- **channels**: Fix formatting ([#1338](https://github.com/rararulab/rara/issues/1338)) ([#1339](https://github.com/rararulab/rara/issues/1339)) + +### Testing + +- **memory**: Add tests for estimated_context_tokens ([#165](https://github.com/rararulab/rara/issues/165)) +- **kernel**: Add E2E tests for anchor checkout flow ([#197](https://github.com/rararulab/rara/issues/197)) +- **kernel**: Add rate limiter window expiry test +- **kernel**: Add ScriptedLlmDriver and CI-ready E2E test harness ([#1172](https://github.com/rararulab/rara/issues/1172)) ([#1175](https://github.com/rararulab/rara/issues/1175)) +- **kernel**: Tool call round-trip E2E test with FakeTool ([#1177](https://github.com/rararulab/rara/issues/1177)) ([#1182](https://github.com/rararulab/rara/issues/1182)) +- **kernel**: Failure mode E2E tests for LLM/tool/iteration errors ([#1179](https://github.com/rararulab/rara/issues/1179)) ([#1188](https://github.com/rararulab/rara/issues/1188)) + + diff --git a/crates/rara-model/CHANGELOG.md b/crates/rara-model/CHANGELOG.md new file mode 100644 index 000000000..d580711a3 --- /dev/null +++ b/crates/rara-model/CHANGELOG.md @@ -0,0 +1,62 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **pipeline**: Move migration to centralized rara-model/migrations dir +- **resume**: Move migration to centralized directory +- **resume**: Rename migration to avoid timestamp conflict with pipeline_runs_events +- **telegram**: Pre-render trace HTML for instant callback response ([#343](https://github.com/rararulab/rara/issues/343)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **sessions**: Add sessions crate and chat HTTP API ([#108](https://github.com/rararulab/rara/issues/108)) +- **typst**: Add Typst compilation service ([#126](https://github.com/rararulab/rara/issues/126)) +- **typst**: Add Git repository import and sync ([#133](https://github.com/rararulab/rara/issues/133)) +- **skills**: Add PG-backed skill cache for fast startup ([#182](https://github.com/rararulab/rara/issues/182)) +- **coding-task**: Implement Agent Gateway Phase 1 ([#208](https://github.com/rararulab/rara/issues/208)) +- **contacts**: Add telegram contacts allowlist ([#232](https://github.com/rararulab/rara/issues/232)) +- **boot**: Add PgUserStore + kernel_users migration ([#363](https://github.com/rararulab/rara/issues/363)) +- **boot**: Implement PgOutboxStore for durable message delivery ([#417](https://github.com/rararulab/rara/issues/417)) +- **user**: Backend auth — JWT + user domain crate ([#428](https://github.com/rararulab/rara/issues/428)) +- **pg-credential-store**: PgKeyringStore backed by PostgreSQL ([#452](https://github.com/rararulab/rara/issues/452)) +- **model**: Add memory_items table for knowledge layer ([#81](https://github.com/rararulab/rara/issues/81)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Rename to rara +- Checkpoint local changes after memory merge +- Change default HTTP port from 3000 to 25555 +- Format +- Format +- Clean +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **sessions**: Use JSONL files for message storage and add docs +- Migrate to reversible migrations, use paths crate for sessions dir, simplify store +- **typst**: Switch to local filesystem mode for Typst projects ([#136](https://github.com/rararulab/rara/issues/136)) +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- **job**: Remove saved jobs feature ([#236](https://github.com/rararulab/rara/issues/236)) +- **model**: Inline rara-model types into remaining crates ([#238](https://github.com/rararulab/rara/issues/238)) +- Remove job pipeline module and related code +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **store**: Migrate yunara-store and migrations from PostgreSQL to SQLite +- Remove telegram contacts subsystem + + diff --git a/crates/server/CHANGELOG.md b/crates/server/CHANGELOG.md index a44df8930..113525602 100644 --- a/crates/server/CHANGELOG.md +++ b/crates/server/CHANGELOG.md @@ -5,6 +5,63 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **server**: Fix middleware layer ordering, remove OTel noise, add service spans +- **server**: Ensure TraceLayer logs all routes including discover endpoint +- **server**: Reduce health endpoint log noise +- **app**: Replace npx/python web server with bun run dev ([#1272](https://github.com/rararulab/rara/issues/1272)) ([#1273](https://github.com/rararulab/rara/issues/1273)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- Full-stack integration — DB repos, REST API, Docker Compose, app wiring +- Notify & scheduler modules with background workers and API routes +- Add analytics API routes and Docker app service ([#18](https://github.com/rararulab/rara/issues/18)) +- Add #[instrument] to all HTTP handlers and request timeout middleware +- **server**: Add TraceLayer for HTTP request/response logging with latency +- **server**: Add moka cache dependency and request-key extraction ([#76](https://github.com/rararulab/rara/issues/76)) +- **server**: Implement singleflight request dedup middleware ([#77](https://github.com/rararulab/rara/issues/77)) +- **job-source**: Add site selection support and improve observability +- **web**: Add location autocomplete and persist form state to localStorage +- Integrate saved jobs UI, MinIO config, and standalone telegram bot +- **server**: Add /metrics Prometheus endpoint ([#449](https://github.com/rararulab/rara/issues/449)) +- **app**: Auto-start web frontend server alongside Gateway ([#1266](https://github.com/rararulab/rara/issues/1266)) ([#1268](https://github.com/rararulab/rara/issues/1268)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Refactor +- Format +- Rename to rara +- Change default HTTP port from 3000 to 25555 +- Format +- Format code +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Rename rsketch crates to job +- Rename job-domain-core to job-domain-shared and clean up unused types +- Move API routes from server to domain crates +- **telegram**: Extract bot from worker framework into standalone service +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- Extract crawl4ai into common crate and remove unused downloader +- **kernel,config**: Rename SpawnTool → SyscallTool and harden Consul KV config +- **kernel**: Flatten KernelInner, add strum derives, instrument macros, and Arc type aliases +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **telemetry**: Migrate metrics from Prometheus pull to OpenTelemetry push ([#568](https://github.com/rararulab/rara/issues/568)) +- Fix naming conventions and convention drift ([#1032](https://github.com/rararulab/rara/issues/1032)) ([#1035](https://github.com/rararulab/rara/issues/1035)) + + + ## [0.0.17] - 2026-01-20 diff --git a/crates/sessions/CHANGELOG.md b/crates/sessions/CHANGELOG.md new file mode 100644 index 000000000..4c66bbb25 --- /dev/null +++ b/crates/sessions/CHANGELOG.md @@ -0,0 +1,57 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **kernel**: Use SessionKey/ChannelType types in ChannelMessage and ChannelBinding ([#1120](https://github.com/rararulab/rara/issues/1120)) ([#1132](https://github.com/rararulab/rara/issues/1132)) +- **channels**: Route approval requests to originating chat, not primary_chat_id ([#1319](https://github.com/rararulab/rara/issues/1319)) ([#1322](https://github.com/rararulab/rara/issues/1322)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **sessions**: Add sessions crate and chat HTTP API ([#108](https://github.com/rararulab/rara/issues/108)) +- **boot**: Channel binding-aware session resolver + misc fixes +- **session**: 添加 SessionIndex trait 和 FileSessionIndex 实现 ([#43](https://github.com/rararulab/rara/issues/43)) +- **channels**: Add session delete buttons and relative time in /sessions ([#492](https://github.com/rararulab/rara/issues/492)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Format & some improvement & prompt markdown +- Change default HTTP port from 3000 to 25555 +- Make lint pass across workspace +- Format +- Format +- Cleanup old memory + session code ([#45](https://github.com/rararulab/rara/issues/45)) +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **sessions**: Use JSONL files for message storage and add docs +- **sessions**: Extract SessionStore with binary indexing +- Migrate to reversible migrations, use paths crate for sessions dir, simplify store +- **model**: Inline rara-model types into remaining crates ([#238](https://github.com/rararulab/rara/issues/238)) +- Unify ChatMessage types, delete SessionRepoBridge ([#373](https://github.com/rararulab/rara/issues/373)) +- **kernel**: Unify SessionRepository trait, delete SessionManager ([#378](https://github.com/rararulab/rara/issues/378)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- **kernel**: Remove SessionResolver, simplify ChannelBinding ([#63](https://github.com/rararulab/rara/issues/63)) + +### Revert + +- **channels**: Back out today's Telegram routing changes +- Restore April 13 changes previously rolled back + + diff --git a/crates/skills/CHANGELOG.md b/crates/skills/CHANGELOG.md new file mode 100644 index 000000000..82d5857fa --- /dev/null +++ b/crates/skills/CHANGELOG.md @@ -0,0 +1,71 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **skills**: Add ~/.claude/skills/ and bundled skills to discovery paths +- **skills,telegram**: Improve skill prompt injection and markdown rendering +- **skills**: Add config_dir skills path to discoverer ([#128](https://github.com/rararulab/rara/issues/128)) +- **skills**: Harden ClawhubClient — zip traversal, snafu errors, trust policy ([#224](https://github.com/rararulab/rara/issues/224)) +- **skills**: Harden ClawhubClient — retry, cleanup, conflict, encoding ([#224](https://github.com/rararulab/rara/issues/224)) +- **telegram**: Harden tool-call XML stripping for streaming edge cases ([#314](https://github.com/rararulab/rara/issues/314)) +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **skills**: Universal marketplace install support ([#354](https://github.com/rararulab/rara/issues/354)) +- **skills**: Normalize source in install_repo to fix manifest lookup ([#645](https://github.com/rararulab/rara/issues/645)) ([#646](https://github.com/rararulab/rara/issues/646)) +- **skills**: Fallback to SKILL.md scanning for hybrid repos ([#714](https://github.com/rararulab/rara/issues/714)) ([#716](https://github.com/rararulab/rara/issues/716)) +- **kernel**: Align deferred tool catalog with executable tool registry ([#941](https://github.com/rararulab/rara/issues/941)) ([#942](https://github.com/rararulab/rara/issues/942)) +- Resolve contract violations found by code quality scan ([#1026](https://github.com/rararulab/rara/issues/1026)) ([#1030](https://github.com/rararulab/rara/issues/1030)) + +### Documentation + +- **skills**: Add README and module doc comments ([#176](https://github.com/rararulab/rara/issues/176)) +- **skills**: Add AGENT.md for ClawHub integration design constraints ([#224](https://github.com/rararulab/rara/issues/224)) +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **skills**: Add core skill types, loader, and registry crate ([#160](https://github.com/rararulab/rara/issues/160)) +- **skills**: Add PG-backed skill cache for fast startup ([#182](https://github.com/rararulab/rara/issues/182)) +- **skills**: Add marketplace data types ([#218](https://github.com/rararulab/rara/issues/218)) +- **skills**: MarketplaceService fetch_index from GitHub API ([#218](https://github.com/rararulab/rara/issues/218)) +- **skills**: MarketplaceService browse/search/install/enable ([#218](https://github.com/rararulab/rara/issues/218)) +- **skills**: Add ClawHub API response types +- **skills**: Add ClawhubClient retry scaffold and serde tests +- **skills**: Add ClawhubClient search browse and detail methods +- **skills**: Add ClawhubClient download and install +- **kernel**: Inject installed skills into agent system prompt ([#487](https://github.com/rararulab/rara/issues/487)) +- **kernel**: Discover-tools finds skills ([#833](https://github.com/rararulab/rara/issues/833)) ([#835](https://github.com/rararulab/rara/issues/835)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Format +- Format +- **skills**: Upgrade notify-debouncer-full 0.5 → 0.7, rstest 0.25 → 0.26 ([#286](https://github.com/rararulab/rara/issues/286)) ([#291](https://github.com/rararulab/rara/issues/291)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **skills**: Replace anyhow with snafu, add new modules ([#171](https://github.com/rararulab/rara/issues/171)) +- **skills**: Update backend consumers for new InMemoryRegistry API ([#173](https://github.com/rararulab/rara/issues/173)) +- **skills**: Make InMemoryRegistry cloneable with internal Arc +- Add keyring-store crate, process group utils, layer READMEs, and dep upgrades +- **model**: Inline rara-model types into remaining crates ([#238](https://github.com/rararulab/rara/issues/238)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- Replace Consul with YAML config, continue SQLite migration, add session resumption +- **kernel**: Prompt review — fix 12 findings ([#755](https://github.com/rararulab/rara/issues/755)) ([#758](https://github.com/rararulab/rara/issues/758)) +- **agents**: Prompt diet — cut tokens ~49% ([#823](https://github.com/rararulab/rara/issues/823)) ([#824](https://github.com/rararulab/rara/issues/824)) +- **skills**: Skill install hardening — manifest locking, GitHub auth, cleanup ([#817](https://github.com/rararulab/rara/issues/817)) ([#821](https://github.com/rararulab/rara/issues/821)) +- **tools**: Split monolithic marketplace tool into 6 independent tools ([#922](https://github.com/rararulab/rara/issues/922)) ([#923](https://github.com/rararulab/rara/issues/923)) + + diff --git a/crates/soul/CHANGELOG.md b/crates/soul/CHANGELOG.md new file mode 100644 index 000000000..a3fa02696 --- /dev/null +++ b/crates/soul/CHANGELOG.md @@ -0,0 +1,50 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- Resolve all clippy warnings across codebase ([#313](https://github.com/rararulab/rara/issues/313)) +- **kernel**: Disable auto-fold, remove context warnings, align with bub ([#1315](https://github.com/rararulab/rara/issues/1315)) ([#1316](https://github.com/rararulab/rara/issues/1316)) + +### Documentation + +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **soul**: Add rara-soul crate with structured persona framework ([#172](https://github.com/rararulab/rara/issues/172)) +- **soul**: Add default soul definitions for rara and nana ([#172](https://github.com/rararulab/rara/issues/172)) +- **soul**: Rewrite rara soul with expressive personality ([#175](https://github.com/rararulab/rara/issues/175)) +- **soul**: Implement evolve-soul tool and auto-notifications for Mita tools +- **soul**: Add self-identity to rara's soul prompt ([#684](https://github.com/rararulab/rara/issues/684)) ([#685](https://github.com/rararulab/rara/issues/685)) +- **soul**: Add user autonomy boundary to disable content censorship ([#851](https://github.com/rararulab/rara/issues/851)) ([#852](https://github.com/rararulab/rara/issues/852)) +- **soul**: Add working habits for tape usage to rara soul prompt ([#1311](https://github.com/rararulab/rara/issues/1311)) ([#1312](https://github.com/rararulab/rara/issues/1312)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **soul**: Remove all fallback logic, use built-in defaults directly +- **soul**: Redesign rara personality to tsundere style +- **soul**: Redesign rara personality to yamato nadeshiko style +- **agents**: Prompt diet — cut tokens ~49% ([#823](https://github.com/rararulab/rara/issues/823)) ([#824](https://github.com/rararulab/rara/issues/824)) +- **agents**: Optimize agent prompts with prompt-refinery framework ([#1105](https://github.com/rararulab/rara/issues/1105)) ([#1106](https://github.com/rararulab/rara/issues/1106)) +- **soul**: Introduce StyleScore newtype for bounded 1-10 values ([#1126](https://github.com/rararulab/rara/issues/1126)) ([#1128](https://github.com/rararulab/rara/issues/1128)) + + diff --git a/crates/symphony/CHANGELOG.md b/crates/symphony/CHANGELOG.md new file mode 100644 index 000000000..857d0d2b3 --- /dev/null +++ b/crates/symphony/CHANGELOG.md @@ -0,0 +1,87 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.0.1] - 2026-04-14 + +### Bug Fixes + +- **symphony**: Add humantime_serde serialize for Duration fields +- **symphony**: Address code review issues ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Support Linear team-based filtering ([#139](https://github.com/rararulab/rara/issues/139)) +- **symphony**: Release claimed issue on dispatch failure and add hook timeouts +- **kernel,symphony**: Offload blocking I/O to spawn_blocking to prevent tokio starvation +- **symphony**: Align with ralph-api — use env vars for port, add missing TaskRecord fields +- **symphony**: Use `ralph web` to start RPC API server, not `ralph-api` +- Tape memory +- **symphony**: Default dynamic repos to ssh +- **symphony**: Recreate invalid worktrees +- **symphony**: Add io error context +- **symphony**: Allow missing Ralph core config +- **symphony**: Improve issue start error context +- **deps**: Upgrade testcontainers-modules to 0.15 ([#378](https://github.com/rararulab/rara/issues/378)) ([#379](https://github.com/rararulab/rara/issues/379)) +- **skills**: Normalize source in install_repo to fix manifest lookup ([#645](https://github.com/rararulab/rara/issues/645)) ([#646](https://github.com/rararulab/rara/issues/646)) +- **symphony**: Address code review feedback ([#635](https://github.com/rararulab/rara/issues/635)) ([#679](https://github.com/rararulab/rara/issues/679)) +- **symphony**: Include source in Linear error display ([#724](https://github.com/rararulab/rara/issues/724)) ([#726](https://github.com/rararulab/rara/issues/726)) +- **symphony**: Omit project filter when project_slug is None ([#729](https://github.com/rararulab/rara/issues/729)) ([#731](https://github.com/rararulab/rara/issues/731)) + +### Documentation + +- **symphony**: Explain missing core config fallback +- Update README to reflect tape-based architecture ([#783](https://github.com/rararulab/rara/issues/783)) ([#784](https://github.com/rararulab/rara/issues/784)) +- Simplify readme with logo ([#1088](https://github.com/rararulab/rara/issues/1088)) ([#1089](https://github.com/rararulab/rara/issues/1089)) +- Add inspired-by credits ([#1091](https://github.com/rararulab/rara/issues/1091)) ([#1092](https://github.com/rararulab/rara/issues/1092)) + +### Features + +- **symphony**: Align prompt construction with Symphony spec — WORKFLOW.md as template ([#120](https://github.com/rararulab/rara/issues/120)) +- **symphony**: Add HTTP status endpoint and SSE event stream for observability ([#122](https://github.com/rararulab/rara/issues/122)) +- **symphony**: Add lineark-sdk workspace dependency ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Add identifier field to TrackedIssue ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Add TrackerConfig enum for GitHub/Linear ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Add Linear error variant to SymphonyError ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Implement LinearIssueTracker ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Wire LinearIssueTracker in SymphonyService ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Add detailed logging for Linear tracker polling ([#138](https://github.com/rararulab/rara/issues/138)) +- **symphony**: Add RalphClient — HTTP client for ralph JSON-RPC API +- **symphony**: Add RalphSupervisor — process guardian for ralph-api +- **symphony**: Add IssueSyncer — issue ↔ ralph task synchronization +- **symphony**: Replace ralph sidecar with per-issue `ralph run` subprocess +- **kernel**: Show LLM reasoning for tool calls in progress display ([#661](https://github.com/rararulab/rara/issues/661)) ([#664](https://github.com/rararulab/rara/issues/664)) +- **symphony**: Upgrade to bidirectional RPC + review pipeline ([#654](https://github.com/rararulab/rara/issues/654)) ([#666](https://github.com/rararulab/rara/issues/666)) +- **symphony**: Add verify phase — review+fix ToVerify issues ([#735](https://github.com/rararulab/rara/issues/735)) ([#736](https://github.com/rararulab/rara/issues/736)) + +### Miscellaneous Tasks + +- Establish job backend baseline +- Change default HTTP port from 3000 to 25555 +- Format +- Format +- Format +- Add missing AGENT.md files for all crates ([#535](https://github.com/rararulab/rara/issues/535)) ([#539](https://github.com/rararulab/rara/issues/539)) + +### Refactor + +- Decouple telegram bot with grpc/http boundary ([#94](https://github.com/rararulab/rara/issues/94)) +- **kernel**: Consolidate queue/KV/LLM subsystems, remove rara-queue crate +- **symphony**: Use multiline string for default prompt ([#120](https://github.com/rararulab/rara/issues/120)) +- **symphony**: Use tokio::select! with intervals instead of self-scheduling events ([#119](https://github.com/rararulab/rara/issues/119)) +- **symphony**: Store issue in RetryEntry instead of parsing ID ([#136](https://github.com/rararulab/rara/issues/136)) +- **symphony**: Simplify config — remove agent/workspace/workflow fields +- **symphony**: Simplify errors — remove workspace/hook/git, add ralph +- **symphony**: Move TrackedIssue into tracker.rs, delete event.rs +- **symphony**: Delete agent/workspace/workflow/orchestrator/queue/status +- **symphony**: Remove unused deps, add uuid +- **symphony**: Rewrite service.rs — simplified poll loop with ralph sync +- **symphony**: One ralph instance per repo — ralph is per-workspace +- **symphony**: Use snafu context for worktree cleanup +- **symphony**: Use snafu context for workspace io +- **symphony**: Use direct snafu context +- **symphony**: Use snafu context for startup errors +- **symphony**: Use snafu source conversion +- **symphony**: Replace manual snafu error construction with context selectors ([#380](https://github.com/rararulab/rara/issues/380)) ([#382](https://github.com/rararulab/rara/issues/382)) + +