NCBM
a61b536243
core/agent+cli: separate last-request usage from billed turn totals
...
Tool-loop rounds re-send history, so summed prompt tokens are billing
not context size. Track last_request_usage and label turn/session as
billed; clarify /status and end-of-turn lines.
2026-07-15 11:04:41 +08:00
NCBM
6bdf7ea283
core/agent: always emit UsageEvent with api or estimate
...
Every model round yields usage; prefer provider usage, else estimate
from request messages and assistant content.
2026-07-15 10:52:48 +08:00
NCBM
28b6767b32
core/agent: emit UsageEvent from stream and non-stream rounds
...
Request stream_options.include_usage; yield usage after each model
completion when the provider reports it.
2026-07-15 10:47:59 +08:00
NCBM
5c13e06427
ci/lint: per-file ignores for tests in ruff and basedpyright
...
Relax ANN/ARG/PLR/C901 and related rules under tests/**; silence noisy
basedpyright reports for test fakes and private helpers.
2026-07-15 10:35:30 +08:00
NCBM
4741341888
core/agent: yield stream text deltas as chunks arrive
...
Stop buffering the full SSE response before emitting TextDeltaEvent so
CLI/UI can render assistant output token-by-token.
2026-07-15 10:27:49 +08:00
NCBM
a7d9c9879b
core/cli+agent: run TTY confirms off the event loop
...
Max-rounds and destructive-tool prompts use asyncio.to_thread with
cancel paused on the main thread so multi-tool turns no longer look
like user cancel. Hooks may be sync or async.
2026-07-15 09:41:32 +08:00
NCBM
3363ab928b
core/agent+cli: wire system prompt and agent budgets
...
ChatAgent accepts system_prompt, result budget, and parallel_tools;
CLI loads them from config [agent].
2026-07-14 23:24:23 +08:00
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
ed028dc00b
core/cli: update display and state for streaming, error, cancel events
2026-07-14 22:11:30 +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
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
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
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
6d536ab913
test/agent: cover tools, loop, and memory-backed ChatAgent
2026-07-14 17:45:47 +08:00