NCBM
|
f23780171b
|
core/tools: export DEFAULT_TOOLS and package surface
|
2026-07-14 18:20:32 +08:00 |
|
NCBM
|
facd8d8a61
|
core/tools/process: minimal PTY open/read/close sessions
|
2026-07-14 18:20:32 +08:00 |
|
NCBM
|
fa9d157708
|
core/tools/process: run_command without shell
Async argv exec with timeout, cwd under workspace, output truncation
and command denylist.
|
2026-07-14 18:20:32 +08:00 |
|
NCBM
|
94720f4e57
|
core/tools/file: read, write, listdir, edit_replace
Module-level @tool handlers under workspace root; first-occurrence
string replace.
|
2026-07-14 18:20:32 +08:00 |
|
NCBM
|
111a554e80
|
core/tools: workspace root, path and command denylists
|
2026-07-14 18:20:32 +08:00 |
|
NCBM
|
770e239d27
|
ci/lint: replace dead type:ignore with casts and clean async gen
Drop ignored # type: ignore comments (basedpyright skips them); type
tomlkit tables via cast; empty stream without reportUnreachable.
|
2026-07-14 18:08:22 +08:00 |
|
NCBM
|
b72a9a8c1c
|
docs: document agent package in CLAUDE.md
|
2026-07-14 17:45:47 +08:00 |
|
NCBM
|
6d536ab913
|
test/agent: cover tools, loop, and memory-backed ChatAgent
|
2026-07-14 17:45:47 +08:00 |
|
NCBM
|
85fae1cb2f
|
core/agent: ChatAgent wrapper with optional memory bind
|
2026-07-14 17:45:47 +08:00 |
|
NCBM
|
54cf73452b
|
core/agent: multi-round chat/tool loop with event stream
run_chat_loop appends assistant/tool messages, yields events,
stops on no tool_calls or max_rounds.
|
2026-07-14 17:45:47 +08:00 |
|
NCBM
|
50863fa1c6
|
core/agent: add @tool decorator and ToolRegistry
Infer JSON Schema from type hints; execute tools by name with
string results for the model.
|
2026-07-14 17:45:47 +08:00 |
|
NCBM
|
8646752139
|
core/agent: add AgentEvent types and ChatClient protocol
|
2026-07-14 17:45:47 +08:00 |
|
NCBM
|
27c6cb77f5
|
docs: update CLAUDE.md for memory, runtime, and pytest
|
2026-07-14 17:25:22 +08:00 |
|
NCBM
|
227373914f
|
test/memory+runtime: cover store and client factory
Enable pytest-asyncio auto mode; assert default user, message
round-trip, and provider→client mapping including errors.
|
2026-07-14 17:25:22 +08:00 |
|
NCBM
|
c129498efa
|
core/runtime: map Provider config to protocol clients
create_client supports openai, openai-compatible, and deepseek
(openai convention); anthropic and deepseek anthropic raise.
|
2026-07-14 17:25:18 +08:00 |
|
NCBM
|
0c5cc20d0b
|
core/memory: add async MemoryStore with default local user
Open SQLite via aiosqlite, create schema, ensure default user, and
CRUD sessions/messages with msgspec AnyChatMessage JSON.
|
2026-07-14 17:25:14 +08:00 |
|
NCBM
|
8a1994a785
|
core/lmproto: fix msgspec Unset and tag multi-struct unions
Use Unset=UnsetType (not PEP 695 alias) and tag role/type fields so
decoders and convert work for chat messages and tool calls.
|
2026-07-14 17:25:09 +08:00 |
|
NCBM
|
123aadeadf
|
docs: add architecture notes and development principles
|
2026-07-14 17:19:31 +08:00 |
|
NCBM
|
43edb12d6a
|
core/memory: add SQLAlchemy schema for user, session, message
|
2026-07-14 17:19:31 +08:00 |
|
NCBM
|
a24d01f139
|
deps: add sqlalchemy, aiosqlite and pytest-asyncio
Runtime DB (async SQLite) and async test support for memory layer.
|
2026-07-14 17:19:26 +08:00 |
|
NCBM
|
c3e44cfff0
|
core/config: add database section to config store
Parse and expose [database] with defaults; keep providers API unchanged.
|
2026-07-14 17:19:21 +08:00 |
|
NCBM
|
7f63e7980b
|
core/lmproto: add openai-compatible and deepseek clients
OpenAI-compatible models, config, and async client via niquests;
DeepSeek OpenAI-compat extension with reasoning fields.
|
2026-07-14 17:19:16 +08:00 |
|
NCBM
|
223c456ebf
|
test/config: add tests for config
|
2026-07-06 21:55:48 +08:00 |
|
NCBM
|
fd6126fce7
|
core/config: add configuration center
|
2026-07-06 21:55:17 +08:00 |
|
NCBM
|
27396c9844
|
deps: add web request, configuration and test dependencies
|
2026-07-06 18:26:59 +08:00 |
|
NCBM
|
81087b5003
|
deps/lock: update lock due to pyproject reformat
|
2026-06-26 01:49:07 +08:00 |
|
NCBM
|
21aa7dd143
|
project: init
|
2026-06-25 23:22:45 +08:00 |
|