NCBM
bd6d98ceda
core/lmproto+agent: stream via chat_completions(stream=True)
...
Keep library async-def→async-iterator shape; remove raw-lines path;
typed StreamToolCallDelta merge; scripted clients emit real chunks.
2026-07-14 22:40:24 +08:00
NCBM
4548828354
core/lmproto+agent: use normal stream API for chat loop
...
Accept async-def returning async iterator; stream via
chat_completions(..., stream=True); typed StreamToolCallDelta merge;
update scripted test clients to emit real chunks.
2026-07-14 22:40:15 +08:00
NCBM
e6300cde43
ci/lint: enable strictGenericNarrowing; type-clean stream merge
...
strictGenericNarrowing=true; rewrite raw SSE tool-call merge with
typed Mapping helpers so basedpyright is warning-free.
2026-07-14 22:27:44 +08:00
NCBM
bdb52bdef5
test/agent: cover merge_stream_tool_calls accumulation
2026-07-14 22:22:22 +08:00
NCBM
e063efda20
core/agent: fix Phase A streaming await bug and polish
...
Do not await async generators for raw SSE; close stream on cancel;
merge tool calls without relying only on finish_reason; quieter tool
output; /status slash command.
2026-07-14 22:22:14 +08:00
NCBM
1b582e82d3
ci/lint: disable PLR0913 globally; fix type annotations and streaming
...
Add PLR0913 to ruff ignore; annotate ChatAgent.stream; remove
unnecessary casts; suppress basedpyright warnings in JSON parsing.
2026-07-14 22:14:50 +08:00
NCBM
ed028dc00b
core/cli: update display and state for streaming, error, cancel events
2026-07-14 22:11:30 +08:00
NCBM
42b50716f4
core/agent: document chat_completions_raw_lines as optional
2026-07-14 22:11:25 +08:00
NCBM
49eff9c947
core/agent: stream flag on ChatAgent; rollback on any exception
2026-07-14 22:11:25 +08:00
NCBM
8da9e9dd59
core/agent: streaming loop with text deltas and tool-call reconstruction
2026-07-14 22:11:25 +08:00
NCBM
b83e7bffc0
core/agent: add ErrorEvent and CancelledEvent
2026-07-14 22:11:25 +08:00
NCBM
665c3f435d
core/lmproto: add stream decoder and raw SSE tool-call merger
...
StreamChatCompletionChunk tolerant of partial tool calls;
merge_stream_tool_calls accumulates by index from raw bytes.
2026-07-14 22:11:25 +08:00
NCBM
f26e13c2c1
core/tools/file: copy, move, and delete paths via shutil
...
Workspace-bound copy_path/move_path/delete_path for files and
directories; overwrite and recursive flags where needed.
2026-07-14 21:47:57 +08:00
NCBM
25ff849efe
core/cli: level-1 cancel of in-flight turns via Ctrl+C
...
Run turns as asyncio tasks; SIGINT cancels the task; agent rolls back
and keeps pending_retry_text for /retry.
2026-07-14 21:02:54 +08:00
NCBM
e0916a6352
core/agent+cli: defer DB write until turn success; auto/manual retry
...
Failed turns roll back memory and keep pending_retry_text; persist only
after success. CLI auto-retries 10s/20s/30s (cancellable) and /retry.
2026-07-14 20:56:08 +08:00
NCBM
f079ab73df
core/tools/file: add tree with depth, entry, and VCS filters
...
Workspace-relative tree; always skip VCS dirs; skip hidden dirs by
default; max_depth and max_entries caps.
2026-07-14 20:19:49 +08:00
NCBM
4f1e99fa4b
core/tools/process: timeout partial output, per-session PTY budget
...
run_command keeps stdout/stderr on timeout with timed_out=true;
open_pty uses shlex.join; PTY output budget is per-session.
2026-07-14 20:07:07 +08:00
NCBM
a634021a80
core/cli: interactive continue prompts for loop and PTY limits
...
on_limit raises tool-round allowance; PTY session/budget limits can
prompt to raise; MaxRoundsEvent.continued marks extended runs.
2026-07-14 19:53:34 +08:00
NCBM
1b53b415b6
core/tools/process: harden PTY sessions for agents
...
Structured alive/exit_code/data reads; until= wait; SIGTERM then
SIGKILL; exec-fail marker; session limit, idle TTL, output budget.
2026-07-14 19:47:32 +08:00
NCBM
73c11cee36
core/tools/process: run_command stdin/env and write_pty
...
Optional stdin and env overlay for run_command; write_pty for
interactive PTY input.
2026-07-14 19:36:46 +08:00
NCBM
bd6f8f5d9a
core/cli: resume sessions, history, editline Tab, higher tool rounds
...
Default to file SQLite DB and latest session; /history and /rounds;
bind Tab for libedit; max tool rounds default 32.
2026-07-14 19:15:12 +08:00
NCBM
366199fc0c
core/lmproto: allow null assistant content and optional response fields
...
Providers return content=null with tool_calls; relax choice logprobs,
finish_reason, fingerprint, and usage for real API payloads.
2026-07-14 18:52:27 +08:00
NCBM
5d90e48618
core/cli: open config in $EDITOR with optional prompt
...
shlex-split EDITOR (e.g. codium --wait); prompt when no providers;
add config path/edit commands.
2026-07-14 18:44:32 +08:00
NCBM
a017adda39
core/cli: readline Tab completion and persistent history
...
Complete slash commands and provider/model/tools args; store history
under platformdirs user data.
2026-07-14 18:33:34 +08:00
NCBM
054b2e8837
docs: document CLI in CLAUDE.md
2026-07-14 18:29:46 +08:00
NCBM
566c1d7d4d
test/cli: cover selection, slash commands, and providers list
2026-07-14 18:29:46 +08:00
NCBM
e1f71e7828
core/cli: click app, chat/providers commands, entry points
...
Expose plyngent console script and python -m plyngent.
2026-07-14 18:29:46 +08:00
NCBM
6be0ef5ac9
core/cli: readline REPL with slash commands
2026-07-14 18:29:46 +08:00
NCBM
a1edfd2947
core/cli: provider selection, event display, REPL state
2026-07-14 18:29:46 +08:00
NCBM
a64e3bf769
deps: add click for CLI
2026-07-14 18:29:46 +08:00
NCBM
2d589eb36f
docs: document tools package in CLAUDE.md
2026-07-14 18:20:32 +08:00
NCBM
f45af76c9b
test/tools: cover workspace, file, run_command and PTY
2026-07-14 18:20:32 +08:00
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