NCBM
1973ef93bb
cli: keep Ctrl+C a plain KeyboardInterrupt under asyncio.run
...
asyncio.run (Runner) replaces SIGINT with its own handler when the
current one is signal.default_int_handler: the first Ctrl+C silently
cancels the main task (invisible at the REPL prompt, leaving the task
marked cancelled) and the second raises KeyboardInterrupt, so a Ctrl+D
exit after a cancel was cancelled mid-memory.close() (SQLAlchemy
CancelledError traceback) and the CLI died with "Aborted!".
Install a distinct KeyboardInterrupt-raising handler before asyncio.run
so Runner leaves SIGINT alone, and have run_cancellable restore the
previous handler after each turn (remove_signal_handler leaves SIG_DFL,
which would kill the process on a stray Ctrl+C between turns).
2026-08-11 21:13:17 +08:00
NCBM
a197a67142
cli: keep REPL alive on stray Ctrl+C outside turn calls
...
After a turn the run_cancellable SIGINT handler is removed, so a Ctrl+C
landing between turns (echoing user text, expire_yolo_once, gaps between
statements, or re-entering _echo_interrupted) raised KeyboardInterrupt at
an arbitrary bytecode and escaped run_repl, killing the whole REPL. Wrap
the loop body in one try/except KeyboardInterrupt that re-prompts, and
make _echo_interrupted itself suppress a further interrupt.
2026-08-11 20:54:13 +08:00
NCBM
28a191cd79
core/agent: full reasoning_text.done replaces streamed fragments
2026-08-11 20:08:52 +08:00
NCBM
ec6edbcba4
core/config: tell model to clear todo stack when done
2026-08-11 19:42:10 +08:00
NCBM
bd1053a3bc
core/config: document default truncate_token everywhere
2026-08-11 19:42:10 +08:00
NCBM
b5a30190f6
core/tools: default read_file truncation with token (no hint when uncut)
2026-08-11 19:42:10 +08:00
NCBM
26472776fb
core/tools: token-ify per-stream caps and resume memory remainders
2026-08-11 19:41:54 +08:00
NCBM
6fdfb8398e
core/agent: token-ify generic tool-result cap and compact shrinks
2026-08-11 19:41:54 +08:00
NCBM
ec1ae59a28
core/tools: unified truncate marker with memory remainder store
2026-08-11 19:41:54 +08:00
NCBM
b5950bdb57
core/agent: drop get_truncated hint from token-less generic truncation
2026-08-11 18:21:45 +08:00
NCBM
c2735dada3
core/config: document read_file L-range and prettier summaries
2026-08-11 15:38:44 +08:00
NCBM
65349b3c07
cli: prettier tool call summaries for read_file and todo tools
2026-08-11 15:38:07 +08:00
NCBM
e4ed89b391
core/tools: distinguish missing files from non-files on read
2026-08-11 15:37:56 +08:00
NCBM
25e6ec3d44
core/tools: show 1-based line range on read_file results
2026-08-11 15:33:12 +08:00
NCBM
3fbf2dc388
core/agent: fix deepseek responses reasoning_content for tool calls
2026-08-11 15:27:01 +08:00
NCBM
9640f86b89
core/tools: make truncate tokens gap-free (advance by returned length)
2026-08-11 15:16:55 +08:00
NCBM
4c60e9b1b3
docs: document truncate tokens and get_truncated
2026-08-11 15:03:00 +08:00
NCBM
6458a4ad31
core/tools: embed truncate tokens in read_file (max_chars)
2026-08-11 15:02:37 +08:00
NCBM
00db7cdc7f
core/tools: add get_truncated tool for chained resume
2026-08-11 14:59:39 +08:00
NCBM
c96f669bcb
core/tools: embed truncate tokens in fetch (offset param)
2026-08-11 14:55:55 +08:00
NCBM
8cd456171c
core/agent: drop increase-limit hint in favor of truncate tokens
2026-08-11 14:53:49 +08:00
NCBM
cb137c1dee
core/tools: add truncate token module (chainable cursors)
2026-08-11 14:53:15 +08:00
NCBM
fa0e68d594
docs: document wait tool
2026-08-11 14:47:53 +08:00
NCBM
d3a5200e0f
core/tools: add wait tool (Enter to disturb)
2026-08-11 14:46:58 +08:00
NCBM
fe7b75aad8
core/prompting: add line input with timeout
2026-08-11 14:44:34 +08:00
NCBM
010173cfc7
docs: use run_argv tool names in docs
2026-08-04 21:41:39 +08:00
NCBM
f4c020b761
core/config: point default playbook and reminder at run_argv tools
2026-08-04 21:40:55 +08:00
NCBM
df8f6bf959
core/tools: rename run_command_batch to run_argv_batch (steps/argv keys)
2026-08-04 21:40:25 +08:00
NCBM
d698fbf06f
core/tools: rename run_command to run_argv (argv param)
2026-08-04 21:38:20 +08:00
NCBM
23f7b4e299
core/tools: clear argv error when run_command gets a string
2026-08-04 20:35:22 +08:00
NCBM
c1dfdc8478
release: plyngent 0.3.0
v0.3.0
2026-08-04 00:06:18 +08:00
NCBM
3449f3a77d
lint: drop mypy-style type ignore comments
2026-08-03 23:38:32 +08:00
NCBM
a834984bcc
core/memory: merge session schema migrations by version
2026-08-01 02:47:08 +08:00
NCBM
8954d855d5
docs: document DeepSeek Anthropic convention support
2026-08-01 02:32:45 +08:00
NCBM
a198fa9d41
runtime: route DeepSeek convention=anthropic to Anthropic client
2026-08-01 02:31:21 +08:00
NCBM
439c24a1ce
lmproto: add DeepSeek Anthropic client
2026-08-01 02:30:19 +08:00
NCBM
6e4d229f6f
config: default deepseek anthropic convention url
2026-08-01 02:27:23 +08:00
NCBM
f6072ce2a6
core/agent: interleave responses tool outputs after their calls
2026-08-01 02:16:48 +08:00
NCBM
6932937f87
docs: document DeepSeek Responses via convention field
2026-08-01 02:05:53 +08:00
NCBM
4b7cc93917
runtime: route DeepSeek convention=responses to Responses client
2026-08-01 02:03:52 +08:00
NCBM
bfafe74a6f
core/agent: handle incomplete/failed Responses stream terminals
2026-08-01 02:03:02 +08:00
NCBM
db6d2a83f4
lmproto: add DeepSeek Responses client
2026-08-01 02:01:06 +08:00
NCBM
8ad33af652
config: add typed DeepSeek convention field for API surface
2026-08-01 01:59:39 +08:00
NCBM
a877dba8c1
cli/repl: keep second Ctrl+C inside the REPL
2026-08-01 01:45:10 +08:00
NCBM
3fe1c4cf91
core/agent: add model-friendly hint to truncated tool results
2026-08-01 01:42:17 +08:00
NCBM
49a3ef0004
docs: describe read-line edit guard in tool playbook
2026-08-01 01:25:22 +08:00
NCBM
19ac4533d4
core/tools: invalidate lineno read state on file mutation
2026-08-01 01:22:30 +08:00
NCBM
56ac8d17d7
core/tools: restrict edit_lineno to lines read with line numbers
2026-08-01 01:21:00 +08:00
NCBM
0cb7a29f21
core/agent: track per-line lineno read state
2026-08-01 01:20:51 +08:00
NCBM
1d4e48f6f3
core/agent: normalize provider usage structs in token_usage_from_api
2026-08-01 01:09:12 +08:00