Releases: nex-agi/NexAU
Releases · nex-agi/NexAU
Release v0.4.0
- Backport default parallel_tool_calls for Responses API (114c537)
- fix(sandbox): expose public heredoc detection API to prevent shell-wr… (#429) (41a45fb)
- style: fix ruff UP012 lint errors in test_read_file (6d34522)
- fix(test): remove obsolete _detect_encoding tests and fix mocks for binary-only read_file (4b7d1fb)
- fix(read_file): 修复 chardet 将 ascii/utf-7 误检导致文件读取编码异常 (#400) (b5f4072)
- fix(read_file): add head output truncation and fix chat CLI build chain (#399) (581fb17)
- fix: skip ToolSearch registration when no deferred tools exist (#367) (#388) (0c30b0c)
- fix(sandbox): scriptify heredoc commands to prevent bash syntax errors in E2B (#387) (0cd853f)
- style: fix ruff formatting and lint errors in test_read_file (e8ae35e)
- fix: replace tautological assertion with mock-based chardet test (99ed9a5)
- fix: layered encoding detection in read_file to prevent UnicodeDecodeError (21dd45b)
Release v0.4.1
- bump version to 0.4.1 (#444) (265805b)
- automation: weekly Project README sync (Fri 22:00) (#423) (dc46f03)
- ci: unified project status workflow (Done + Cancelled) (#422) (5fb53d6)
- feat(token-trace): support chat_template_kwargs for generate_with_token tokenization (#438) (1f48647)
- fix: Agent.create() loses skill_registry after storage swap (#432) (5ff3cc3)
- Remove glob from examples/code_agent/sub_agent.yaml (#430) (61f8fac)
- fix(sandbox): expose public heredoc detection API to prevent shell-wr… (#429) (e2ffb41)
- Remove glob from code example because search_file_content already include Glob function (#428) (bbf97b3)
- fix: demote thinking blocks without signature to text blocks (#426) (f862729)
- docs: add Async / Sync Usage Guide (#421) (0cd56e6)
- fix(team): clarify leader prompt to output text before finish_team (#420) (dff0542)
- 🔧 消除 async event loop nesting hell — 全链路 async/sync 分离 (#414) (2632df2)
- fix(team): prevent /team/stream lock conflict on concurrent calls (#417) (31b783b)
- fix: CompactionConfig.max_context_tokens 默认 None,fallback 到 AgentConfig (#411) (ead86eb)
- fix(compaction): reject unknown config fields and cap hard truncation fallback (#407) (38d112e)
- fix: preserve thinking-only responses when max_tokens is hit (#409) (acb24e6)
- fix: resolve memory leaks in long-running agent sessions (#404) (d4f2bc8)
- fix(anthropic): handle ServerToolUseBlock and buffer early input_json_delta for consistent tool_call_id (#406) (f9d492b)
- fix(read_file): add head output truncation and fix chat CLI build chain (#399) (f1e964a)
- fix(mcp): filter agent_state/global_storage in _execute_async (#402) (b556cc2)
- fix(e2e): resolve force-stop test timeout (>120s) in CI (#396) (3a274c6)
- fix(read_file): 修复 chardet 将 ascii/utf-7 误检导致文件读取编码异常 (#400) (9629c63)
- fix(anthropic): handle None fields and concatenated JSON from eager_input_streaming (#395) (281079e)
- feat(anthropic): enable eager_input_streaming for tool definitions (#394) (713ca83)
- fix: sync intermediate messages to HistoryList on executor exception (#391) (002bbdc)
- feat(building-team): server-side snapshot reducer for event history (#389) (fff0b1b)
- fix(sandbox): scriptify heredoc commands to prevent bash syntax errors in E2B (#387) (f2c9b83)
- fix: skip ToolSearch registration when no deferred tools exist (#367) (#388) (e128e77)
- feat(compaction): add Langfuse tracer spans and propagate global_storage/session_id (#386) (a9c31fc)
- fix: layered encoding detection in read_file to prevent UnicodeDecode… (#382) (84aa19c)
- fix(compaction): place summary message at beginning instead of end of kept messages (#383) (cf7db7d)
- feat: add awaitable flush_async to HistoryList (#384) (91960d6)
- fix(session): defensive error handling in AgentLockService lock release (#353) (0063f69)
- feat: align usage accounting with opencode semantics (#368) (ddf3b42)
- [feat] RFC-0009: add token-generate trace memory flow (#312) (294d81d)
- fix: bypass LoadSkill in LongToolOutputMiddleware by default (#381) (7b13e54)
- feat: inject session_id into LLM provider payloads (#374) (0e141a2)
- fix: handle multimodal list content in _prepare_responses_api_input() (#373) (97ec7df)
- docs: add RFC-0013 for RunCode REPL sessions (#371) (8be8eb5)
- fix(ci): resolve project item before setting Cancelled (#362) (09d2c02)
- Update code_agent example param and prompt (#361) (b4ccaa8)
- fix(ci): sync project Cancelled for duplicate/not planned issues (#359) (7edd363)
- feat: RFC-0011 add MODEL_USAGE events and persist usage metadata (#326) (946191f)
- bump to 0.4.0 (#352) (420e486)
- fix(e2b): harden E2B sandbox against proxy/gateway connection timeouts (#349) (2da9456)
- fix: preserve LLMConfig api_type when copying (#347) (#348) (3d9808e)
- feat(rfc-0006): implement neutral structured tool calling (#339) (cea42cb)
- fix: skip unnecessary skill folder upload for local sandbox (#344) (67f62c8)
- feat: implement Tool Search (RFC-0005) (#297) (b76c74b)
- update code agent example (#336) (eeda837)
- nit: Example Code Agent uses openai_chat_completion (#335) (299f427)
- fix: Agent Team should only stop at finish_team (#332) (ef36562)
- fix(langfuse): cap incompatible v4 resolution (#330) (43e5b34)
- feat: add cache control TTL parameter to LLMConfig (#327) (1ad55b6)
- fix(shell-tools): harden stop cleanup and shell cancellation (#325) (b4371ce)
- fix: coerce tool call arguments to string in Responses API input (#329) (14ce3be)
- feat: enhance system prompt with cache control and multi-format support (#317) (a144089)
- fix: remove empty content fields from messages for provider compatibility (#315) (e822d1a)
- fix: raise detailed ValueError on tool parameter schema errors (#316) (4dd4519)
- fix: avoid sandbox uploads for in-memory as_skill loads (#322) (3e92a3e)
- feat: context overflow emergency compaction + token counter block migration (#278) (41190b0)
Release v0.3.9
- Revert version tag change 0.3.9-hotfix (#307) (35ee186)
- tag version 0.3.9-hotfix (#305) (ee09503)
- fix: mock Langfuse env vars in code agent integration test (#304) (cb39dfa)
- feat: support structured as_skill modes (#303) (9d6f76c)
- fix: remove silent 30k char truncation in sandbox read_file (#302) (8002662)
- fix: convert Path to str in BaseSandbox.dict() for JSON serialization (#299) (9623eaa)
- RFC-0005: Tool Search — 工具按需动态注入 (#276) (e7cd9b1)
- fix: cherry-pick sliding window compaction fixes (#293) (9079931)
- fix(ci): use GITHUB_TOKEN for milestone workflow (#296) (51f67e1)
- feat: add apply_patch builtin tool (OpenAI Codex compatible) (#294) (6f57586)
- bump to 0.3.9 (#295) (ddf2a31)
- remove respect_gemini_ignore from builtin tools (#291) (cc8c21c)
- feat: auto set project status to Cancelled on issue close (not planned/duplicate) (#289) (73302d0)
- update default head_chars and tail_chars of LongToolOutputMiddleware (#285) (9bcc38f)
- Optimize LongToolOutputMiddleware w/ head_chars and tail_chars (#284) (f850452)
- Fix Missing phase field when using OpenAI Responses API Streaming (#282) (1e36489)
- [fix]retry and timeout not work (#279) (924300e)
- Remove PDF support from read_file (#275) (0e990c0)
- refactor: split read_file into text-only read_file and multimodal read_visual_file (#273) (d540a6b)
- fix(middleware): exclude returnDisplay from LongToolOutputMiddleware length measurement (#274) (084a3ca)
- fix(tracer): use generation type for LLM spans and add TTFT mapping (#261) (1483be2)
- Optimize Agent Team: new frontend design, fix watchdog loop after finish_team, support context vars, optimize sandbox work_dir (#262) (fced6c0)
- chore: remove builtin Feishu/Lark tools and lark_oapi dependency (#264) (c6409fc)
- feat: context overflow emergency compaction + token counter block migration (#266) (9178f2b)
- feat(middleware): add LongToolOutputMiddleware for truncating oversized tool outputs (#253) (1dc82e7)
- fix: update team tool yaml packaging config (#259) (359ef7a)
Release v0.3.8
- ci: milestone-iteration-tag automation (#251) (6ce0784)
- fix: lint error of tests/unit/test_agent_run_id.py (#252) (7a5d7c7)
- bump to v0.3.8 (#250) (f59ac03)
- feat(agent): add run_id parameter to Agent.run_async (#249) (2a80a73)
- ci: auto move Backlog→Todo when Iteration is set (#248) (93e58f0)
- feat: LLM failover middleware (RFC-0003) (#243) (5a92bfb)
- fix: strip returnDisplay from tool results before sending to LLM (#242) (2d12432)
- fix: Anthropic thinking_delta + local sandbox graceful shutdown + remove tool_cache (#239) (1eb0aba)
- CI: wire E2B_SELFHOST_DOMAIN for self-host sandbox tests (#237) (cef423e)
- Anthropic Event Aggregator (#232) (a57aacc)
-
RFC-0002: AgentTeam — 多 Agent 协作框架 (#230) (fedfa9d)
- fix: handle split id/name chunks in tool call streaming aggregator (#218) (d1b49fb)
- feat: E2B sandbox stability improvements + glob fix + 94% test coverage (#217) (8b62887)
- feat(sandbox): support save bash tool output(stdout, stderr) to temp file (#212) (09c2691)
- fix: E2B self-host sandbox connection issues (#215) (2b31389)
- feat: typed sandbox config (LocalSandboxConfig & E2BSandboxConfig) (#208) (c605854)
-
RFC-0001: Agent 中断时状态持久化 (#211) (c2c1c47)
- Refactor/builtin tools sandbox (#203) (a400954)
- feat: add include=reasoning.encrypted_content to Responses API requests (#210) (348c146)
- feat: NexTask customizations - Anthropic thinking passthrough, robustness & compaction improvements (#209) (bfd69fc)
v0.3.7
Full Changelog: v0.3.6...v0.3.7
Release v0.3.6
Use json repair to fix malformed tool arguments (#161)
Release v0.3.5
- fix: add ensure_ascii=False to json.dumps in token_counter (#142) (48b961b)
- Langfuse client late init and fix otel ctx propagation (#141) (9da058c)
- bump version to 0.3.5 (#140) (c0b794c)
- refactor: optimize AgentConfig structure and AgentCreate logic (#136) (4fcc3ae)
- Fix tool timeout (#139) (8a75260)
- Support lazy tool binding (#138) (f961dce)
- Support custom_llm_client_provider (#132) (c4acd47)
- [feat]add round and token reminder middleware (#134) (d48ffa4)
- add todos for todowrite (#133) (56b50fd)
- Allow binding in tool yaml (#131) (287d8a9)
- change TokenCounter to handle token counting for tool definitions and tool calls in assistant message. (#128) (71f4f96)
- add cli agent_runner to package (#129) (2b83534)
- Fix bug: mcp tools not injected to tools when using tool_call format (#127) (cfb713d)
- fix: incorrect http header for Streamable Http request (#125) (cfbe2ed)
- Workaround of Langfuse bug: generation type events may be lost when using new api (#126) (6f99418)
- Add runtime tool injection and typed structured tool payloads (#123) (24a5356)
- Add missing tool description yaml to package (#124) (0add646)
- Reset executor._shutdown_event when 2nd round agent run (#122) (c539dce)
- Add before/after agent middleware hooks and related input classes (#119) (6afd430)
- Fix typing errors to enable pyright strict (#120) (ae7afad)
Release v0.3.4
- Fix RunCode typing issue (#121) (bba434f)
- add extra kwargs support in agent config (#117) (bb5a2a6)
- Fix ruff check (#118) (c2138e5)
- allow setting variables in the yaml file (#116) (b37c4a6)
- Move before_model_hook before context token count check (#115) (0326173)
- add the markdown documentation for context compaction (#114) (085b6f6)
- Support Passive Context Compression (#111) (e139c50)
- Refine lint/type tooling config (#112) (aae7761)
- bump to 0.3.4 (#113) (76a0b32)
- remove todos from index.md (#110) (889cb5f)
- fix end tool remark logic (#109) (47716f6)
- Langfuse Tracer supports user_id, tags (#108) (2f94511)
- Support Langfuse session_id (#107) (929ecdf)
- Fix InMemoryTracer lost sub-agent spans (#106) (11be6cf)
- Add InMemoryTracer (#105) (5cde291)
- Refactor langfuse tracer (#104) (95e6aa7)
- Remove tracer for later refactor (#103) (69d62dc)
- bump version to 0.3.3 (#102) (cb2a5ce)
- override tool name with agent config's tool name (#101) (74ed7f3)
- fix hook with no params fail with non-exist hook (#100) (31a2562)
- Fix example deep research yaml (#99) (2f7dbb3)
- Support stream and stream_chunk hook (#97) (062f596)
- Add type:agent/tool for config yaml files (#96) (4f5d817)
- nexau to NexAU when used in nex-agi/NexAU repo (#94) (f70cbd1)
- bump version to 0.3.2 (#93) (29e4570)
- update code agent yaml for more hints (#92) (a77bb9e)
- Update code agent example prompt (#91) (3b5a1ad)
- Update NexAU README example (#90) (38c1629)
- Fix Pythonic trace and add pythonic example in Readme (#89) (be03d15)
- Remove python shebang (#88) (f60e967)
- add CN readme (#87) (a79b189)
- bump version to 0.3.0 (#86) (c17e438)
- remove wrong license (#85) (3a7b48d)
- remove wrong license (449cf20)
- use NexAU in examples and Readme (#84) (bfed012)
- Add license header to all py, sh, js files (#83) (838f297)
- add Apache 2.0 license (#82) (a37f964)
- Fix langfuse span naming bug (#81) (a99df3f)
- support env var in config (e0c9134)
- force_stop when force_stop_reason != AgentStopReason (#79) (4dd9c6e)
- fix(llm_caller): add early return for forced stop in _call_with_retry (#77) (c7bb053)
- bump version (06d0fb6)
- Revert "add pypi release" (68c974c)
- add pypi release (1323b48)
- replace nex-agito nex-agi/ (#76) (a664b5f)
- rename fake_claude_code to code_agent (#75) (d471c98)
- Remove builtin old hooks (#74) (03022e0)
- update wrap_xxx_hooks to call passthrough instead return wrapped fn (#73) (8c1246a)
- add description to AgentConfig (#72) (989b7cd)
- Refactor to use Middleware to allow multiple types of hooks (#71) (e9f8d13)
- 添加了强制继续执行的agent选项,参数force_continue。 (#70) (725bb02)
- Use Pydantic Model to define configs (#69) (71875d5)
- execute hook after tool (#68) (fa645e3)
- rename from northau to nexau (b4c1e75)
- format (9d9edab)
- Support reasoning_content in openai chat completion, and properly catch tokens (abdad7c)
- remove default temperature from llm config (#65) (62a2cc3)
- Support Responses API (#64) (e71c41c)
- add anthropic api (#57) (bbeae02)
- Fix typo: Skils -> Skills (56087c5)
- misspelling "skils" (b212ca3)
- CLI: show subagent panel (#62) (fa8c423)
- Support sub-agent panel in cli (#61) (65330aa)
- support structured tool call (#60) (7b117b1)
- support additional_drop_params in LLMConfig (#59) (c84e4c0)
- Add fallback support to SSE (#58) (d088b3d)
- add northau-cli into package build (#56) (e3f4add)
- Add NorthAU CLI for easy agent test (#54) (790f7e3)
- fix trace_id for multiple runs (#55) (cdfb7ad)
- fix history override in multi-turn run (#53) (869115b)
- feat: lazy load tool module (#52) (4a0120b)
- disable use_batch_agent for main branch (#51) (ed82a80)
- fix cc example for wrong yaml format and add system_prompt_type checker (#50) (2522a5f)
- update readme with cc example (#49) (ae9b8a2)
- Support Skill (#48) (551a439)
- remove releasing script (#47) (e47c764)
- add uv install (#46) (1ce48bf)
- update readme for release install (#45) (d6f52fa)
- add release workflow (#44) (d93ab66)
- add tests and format check (#43) (bedcf19)
- add jinja prompt files to package (#42) (057f8c0)
- remove unnecessary fallbacks (#41) (1e85a55)
- Update index.md todos (#40) (29301a5)
- Update mcp.md (#39) (babb27c)
- Reorg readme files (#38) (987c2f9)
- add vars when load yaml (#37) (05c2f52)
- modify tool call id and run code kernel id (#36) (eea1e89)
- add tool_call_id to AfterToolHookInput (#35) (fd2fa4a)
- update tool call parser with regex (#32) (935c2c1)
- nit (7f8cb52)
- feat(agent): add BeforeModelHook; Support run_code_tool (#34) (b997285)
- rename HookResult to AfterModelHookResult; add parent_agent_state to AgentState (#33) (6eafa82)
- support mcp from yaml (cf24d6b)
- add agent stop reason (#31) (cea36dd)
- add diskcache to pyproject (38397dc)
- nit (c419c73)
- add stop interface (#30) (e85dd2f)
- fix(mcp): adapt for non-standard mcp server (#29) (c360427)
- feat(tool): support tool call cache (#28) (5f77d94)
- Stop xml parsing inside tool parameter (ea0aecc)
- remove <sub_agent> and <use_parallel_sub_agent> (#27) (e834f5d)
- refine todowrite prompt example (4941cdc)
- remove state and config from README.md (8fec738)
- fix lint (3b6b52a)
- add .pre-commit-config.yaml (9a6fad8)
- remove config, update global_storage from config (#26) (1f46cf3)
- remove config and state (#25) (b1f5370)
- Refactor config loader (#24) (5df28c0)
- Refactor Executor (#23) (89b6d14)
- when token budget insufficient custom_llm_generator should see it (#22) (0dfd5ba)
- add tool_call_id (#21) (f02a31e)
- refactor config and prompt builder (#20) (4bd0644)
- fix missing global_storage in tool params (0643fc2)
- nit (745a338)
- update README with after tool hook (bd88f34)
- add agent_name and agent_id to hooks (5090fef)
- add custom_llm_generator (ac3e971)
- Support AfterToolHook (33564b0)
- support queuing messages (a7b2cd2)
- Update agent override logics to agent_name matching (ade64f5)
- Skip validating params not listed in schema yaml (308c0c8)
- Fix Grep tool args (6026ab7)
- bugfix: add ctx to subagent (#19) (8c4316a)
- add fastmcp as dependency (d991093)
- Support both SSE and JSON HTTP MCP (907087c)
- add subagent trace (#18) (cc30a09)
- fix MCP http streamable support issue (ee6b0c0)
- nit (3862c99)
- remove debug print (#17) (e47eaf0)
- Fix MCP client request id and remove global_storage param (#16) (54c0178)
- Fix xml parser (ca92373)
- nit (0fb2185)
- fix system_prompt loader error (3049d47)
- add global_storage for load_agent_config (2bd7b78)
- support access global_storage from tool (05c36ad)
- nit (31700d5)
- nit (55a8173)
- solve race condition between key locks and global lock (e0b27ad)
- support GlobalStorage (7f2e020)
- refactor variable name (cde719d)
- support plain textual tool defination (7f85971)
- remove web_reader, use web_tool's web_read instead (cd6b093)
- load_dotenv in config_loader.py (1875577)
- add build_token_limit_hint (43bbc6b)
- Bug fix: Could not register signal handlers (not in main thread) (c54d6c0)
- Replace sub-agent with sub_agent (b7debe5)
- Update README.md (d96ac39)
- nit (8c48698)
- nit (4981938)
- nit (689034b)
- add tool_after_approve_hook (959ee90)
- add tool_after_approve_hook (30284de)
- support after_model_hook (460b88a)
- move prompt templates to prompts/ subfolder from agent.py (9ad8792)
- remove jinja available check (92b5e78)
- code refactor (be06ef2)
- nit (3be0f24)
- nit (2915b20)
- update todo, add stop split (8343c58)
- nit (6459125)
- add some feature, like openai call retry, initial state, config and context (c62a340)
- fix missing max_iterations (5033f08)
- support dump trace file and subagent (folder) (09d525a)
- token counter, kill sub-agent if main stop (ea84dc5)
- fix tool parsing (0c2a934)
- limit subagent concurrency (780e69d)
- limit subagent concurrency (2939490)
- limit output length of ls, glob, grep (c97f196)
- add batch sub agent launch (b746e5d)
- refine parallel tool_use and agents (253d427)
- sub-agent uses factory instead of instantiated (74cf037)
- fix minimax example (e665969)
- fix grep_tool (9f9fc80)
- fix feishu get_chat_user_mapping tool (1b9d969)
- fix file tool (f2b0806)
- fix: Add environment variable support for model and base_url in LLMConfig (c2c3a19)
- Parallel tool/sub-agent/mcp calls (e6e3ea4)
- remove deprecated llm config in Agent init args (98f07db)
- langfuse eval example doc (1eaedd1)
- use langfuse dataset and eval to replace builtin (e350665)
- rm nit files (2284399)
- support multiple system prompts (7e4cec6)
- update dataitem interface (2769f4b)
- add evaluator and prompt_hacking example (fc6f4a0)
- add "deep research" to voice mcp example (5f191e9)
- add feishu tool as builtin (f1ad79e)
- add allvoicelab mcp example (8d7c753)
- fix init handshake (157f46b)
- add github mcp (76cd6d6)
- fix stdio mcp connection issue (652917b)
- update Readme (b2d0a73)
- update Readme (7275797)
- add AgentContext operation to README.md (258b68e)
- fix exec example uv package not found issue (0a5b3a1)
- update README.md (0ea740f)
- add mcp support (629b3c6)
- reorg example files (be20329)
- fix xml parsing issue (8017de3)
- claude-code like agent example (068f3f0)
- use extracted_text of web parser (59e92d6)
- rename exmaple (a82e6e0)
- delete files (efd7a15)
- init commit (c4a2858)
Release v0.3.3
- bump version to 0.3.3 (#102) (4658882)
- override tool name with agent config's tool name (#101) (73b00c3)
- fix hook with no params fail with non-exist hook (#100) (cd5748a)
- Fix example deep research yaml (#99) (d3efc46)
- Support stream and stream_chunk hook (#97) (235605c)
- Add type:agent/tool for config yaml files (#96) (53a5c77)
- nexau to NexAU when used in nex-agi/NexAU repo (#94) (93ebc84)
- bump version to 0.3.2 (#93) (591373d)
- update code agent yaml for more hints (#92) (0401877)
- Update code agent example prompt (#91) (7952547)
- Update NexAU README example (#90) (868c6bb)
- Fix Pythonic trace and add pythonic example in Readme (#89) (f206e9d)
- Remove python shebang (#88) (013f268)
- add CN readme (#87) (2e9befa)
- bump version to 0.3.0 (#86) (4b5ff1b)
- remove wrong license (#85) (5736d1d)
- remove wrong license (59751d5)
- use NexAU in examples and Readme (#84) (5725d7a)
- Add license header to all py, sh, js files (#83) (1ad1205)
- add Apache 2.0 license (#82) (46425d9)
- Fix langfuse span naming bug (#81) (076b029)
- support env var in config (f8030c3)
- force_stop when force_stop_reason != AgentStopReason (#79) (b50cf49)
- fix(llm_caller): add early return for forced stop in _call_with_retry (#77) (ea6af58)
- bump version (73bcd1d)
- Revert "add pypi release" (f39b9ea)
- add pypi release (366b03c)
- replace china-qijizhifeng to nex-agi/ (#76) (a0d984b)
- rename fake_claude_code to code_agent (#75) (4afcdef)
- Remove builtin old hooks (#74) (35a5a7d)
- update wrap_xxx_hooks to call passthrough instead return wrapped fn (#73) (cea8d3b)
- add description to AgentConfig (#72) (100db0e)
- Refactor to use Middleware to allow multiple types of hooks (#71) (df79859)
- 添加了强制继续执行的agent选项,参数force_continue。 (#70) (524fd93)
- Use Pydantic Model to define configs (#69) (bf656f3)
- execute hook after tool (#68) (12d6f1b)
- rename from northau to nexau (b4ce545)
- format (b943054)
- Support reasoning_content in openai chat completion, and properly catch tokens (784738e)
- remove default temperature from llm config (#65) (62a0d55)
- Support Responses API (#64) (608df84)
- add anthropic api (#57) (f266890)
- Fix typo: Skils -> Skills (2cf9ebe)
- misspelling "skils" (746df6d)
- CLI: show subagent panel (#62) (1db622d)
- Support sub-agent panel in cli (#61) (981354b)
- support structured tool call (#60) (373ce11)
- support additional_drop_params in LLMConfig (#59) (1e6ba93)
- Add fallback support to SSE (#58) (05016ef)
- add northau-cli into package build (#56) (2ac8769)
- Add NorthAU CLI for easy agent test (#54) (7b749aa)
- fix trace_id for multiple runs (#55) (83345c6)
- fix history override in multi-turn run (#53) (4beead6)
- feat: lazy load tool module (#52) (d271003)
- disable use_batch_agent for main branch (#51) (b77ed98)
- fix cc example for wrong yaml format and add system_prompt_type checker (#50) (ed8e891)
- update readme with cc example (#49) (4a05f55)
- Support Skill (#48) (9cd39b8)
- remove releasing script (#47) (dd0fe76)
- add uv install (#46) (b0e43cd)
- update readme for release install (#45) (ae440d4)
- add release workflow (#44) (543e8a8)
- add tests and format check (#43) (fa19802)
- add jinja prompt files to package (#42) (611983f)
- remove unnecessary fallbacks (#41) (9bfc268)
- Update index.md todos (#40) (8dfee25)
- Update mcp.md (#39) (cf8e673)
- Reorg readme files (#38) (561f582)
- add vars when load yaml (#37) (1fe470a)
- modify tool call id and run code kernel id (#36) (4a79caa)
- add tool_call_id to AfterToolHookInput (#35) (a1b18d6)
- update tool call parser with regex (#32) (2a54376)
- nit (ee30576)
- feat(agent): add BeforeModelHook; Support run_code_tool (#34) (8fd7a50)
- rename HookResult to AfterModelHookResult; add parent_agent_state to AgentState (#33) (0b80b68)
- support mcp from yaml (92378cd)
- add agent stop reason (#31) (0028940)
- add diskcache to pyproject (35f85bb)
- nit (e021961)
- add stop interface (#30) (777ad1d)
- fix(mcp): adapt for non-standard mcp server (#29) (61666c3)
- feat(tool): support tool call cache (#28) (f676be9)
- Stop xml parsing inside tool parameter (a9758a6)
- remove <sub_agent> and <use_parallel_sub_agent> (#27) (8c32bda)
- refine todowrite prompt example (49646a3)
- remove state and config from README.md (a75e848)
- fix lint (0074fc7)
- add .pre-commit-config.yaml (7e4d5d3)
- remove config, update global_storage from config (#26) (c5097ac)
- remove config and state (#25) (39dc56d)
- Refactor config loader (#24) (417e4b0)
- Refactor Executor (#23) (7c3631d)
- when token budget insufficient custom_llm_generator should see it (#22) (cdd8032)
- add tool_call_id (#21) (3244987)
- refactor config and prompt builder (#20) (f2d83ff)
- fix missing global_storage in tool params (b27384f)
- nit (f21c814)
- update README with after tool hook (9c4effe)
- add agent_name and agent_id to hooks (2630475)
- add custom_llm_generator (03cadf1)
- Support AfterToolHook (3796b36)
- support queuing messages (e4d5861)
- Update agent override logics to agent_name matching (b0d596e)
- Skip validating params not listed in schema yaml (e657ee6)
- Fix Grep tool args (5c61d47)
- bugfix: add ctx to subagent (#19) (0df81ba)
- add fastmcp as dependency (4c4e302)
- Support both SSE and JSON HTTP MCP (e870e47)
- add subagent trace (#18) (1157455)
- fix MCP http streamable support issue (8e64fcf)
- nit (76ad743)
- remove debug print (#17) (3610f9d)
- Fix MCP client request id and remove global_storage param (#16) (f63eda4)
- Fix xml parser (b71433a)
- nit (76dfaf6)
- fix system_prompt loader error (65a237c)
- add global_storage for load_agent_config (130dd8e)
- support access global_storage from tool (e955597)
- nit (7fa882c)
- nit (145f2e7)
- solve race condition between key locks and global lock (a894818)
- support GlobalStorage (c3fcaed)
- refactor variable name (df955c8)
- support plain textual tool defination (8abb64f)
- remove web_reader, use web_tool's web_read instead (b9b0d0d)
- load_dotenv in config_loader.py (7ef4f84)
- add build_token_limit_hint (8ff1db3)
- Bug fix: Could not register signal handlers (not in main thread) (ec1b474)
- Replace sub-agent with sub_agent (21e4ddf)
- Update README.md (655226e)
- nit (8b8de55)
- nit (8210719)
- nit (a8391e7)
- add tool_after_approve_hook (04c0ffc)
- add tool_after_approve_hook (86a9c17)
- support after_model_hook (2f0ecde)
- move prompt templates to prompts/ subfolder from agent.py (ea61fd7)
- remove jinja available check (347714d)
- code refactor (bb5816e)
- nit (69b5fab)
- nit (74a8c1a)
- update todo, add stop split (ce37b6c)
- nit (c70e48d)
- add some feature, like openai call retry, initial state, config and context (9ee8ad2)
- fix missing max_iterations (222c10e)
- support dump trace file and subagent (folder) (7f1c5e2)
- token counter, kill sub-agent if main stop (5e27c5a)
- fix tool parsing (bb5e56e)
- limit subagent concurrency (d9fbab8)
- limit subagent concurrency (b95f8e1)
- limit output length of ls, glob, grep (16f71d4)
- add batch sub agent launch (2f98dec)
- refine parallel tool_use and agents (13e15a1)
- sub-agent uses factory instead of instantiated (32e9cfd)
- fix minimax example (e665969)
- fix grep_tool (9f9fc80)
- fix feishu get_chat_user_mapping tool (1b9d969)
- fix file tool (f2b0806)
- fix: Add environment variable support for model and base_url in LLMConfig (c2c3a19)
- Parallel tool/sub-agent/mcp calls (e6e3ea4)
- remove deprecated llm config in Agent init args (98f07db)
- langfuse eval example doc (1eaedd1)
- use langfuse dataset and eval to replace builtin (e350665)
- rm nit files (2284399)
- support multiple system prompts (7e4cec6)
- update dataitem interface (2769f4b)
- add evaluator and prompt_hacking example (fc6f4a0)
- add "deep research" to voice mcp example (5f191e9)
- add feishu tool as builtin (f1ad79e)
- add allvoicelab mcp example (8d7c753)
- fix init handshake (157f46b)
- add github mcp (76cd6d6)
- fix stdio mcp connection issue (652917b)
- update Readme (b2d0a73)
- update Readme (7275797)
- add AgentContext operation to README.md (258b68e)
- fix exec example uv package not found issue (0a5b3a1)
- update README.md (0ea740f)
- add mcp support (629b3c6)
- reorg example files (be20329)
- fix xml parsing issue (8017de3)
- claude-code like agent example (068f3f0)
- use extracted_text of web parser (59e92d6)
- rename exmaple (a82e6e0)
- delete files (efd7a15)
- init commit (c4a2858)
Release v0.3.2
init commit