41 Commits

Author SHA1 Message Date
NCBM 9a7f7c9c8f release: plyngent 0.16.0 2026-11-02 18:20:30 +08:00
NCBM b897bac52b release: plyngent 0.15.0 2026-10-29 23:50:36 +08:00
NCBM 4676b9af32 release: plyngent 0.14.2 2026-10-26 00:54:34 +08:00
NCBM a79039f06f release: plyngent 0.14.1 2026-10-25 00:21:04 +08:00
NCBM 0e8d404642 release: plyngent 0.14.0 2026-10-24 04:43:15 +08:00
NCBM caecf62f47 release: plyngent 0.13.0 2026-10-24 03:24:55 +08:00
NCBM 102c377adc deps: bump ruff to 0.17.2
The commit gateway pins its hooks to the same versions as pdm.lock (see
prek.toml), so both ruff pins move together and `pdm lock` follows.
0.17.2 finds nothing new in src or tests, and `prek run --all-files` is green
on it.
2026-10-24 03:24:44 +08:00
NCBM d4485aff7a release: plyngent 0.12.0 2026-10-23 10:53:08 +08:00
NCBM cb4e9b3744 release: plyngent 0.11.0 2026-10-21 20:29:04 +08:00
NCBM 290f3daf60 deps: add send2trash
Deletes are about to become recoverable, and send2trash is what every desktop
already understands: the freedesktop trash specification on Linux (its own
implementation unless PyGObject/GIO is there), the Finder trash on macOS and the
Recycle Bin on Windows. It is pure Python over ctypes — no compilation, no
runtime dependencies — so it can sit on the default install instead of behind an
extra.

A required dependency rather than an optional one on purpose: a missing extra
would silently turn "recoverable" into "gone", and a safety net that disappears
without a word is worse than no safety net.
2026-10-21 20:15:41 +08:00
NCBM 10402f5be6 core/config: add the [notify] section
`[notify]` decides what the CLI does when a prompt is waiting on the human:
`grace_seconds` (default 5s, roughly Claude Code's permission notice) before
anything is shown, `min_interval_seconds` between two notifications,
`channels` (`auto` = desktop then terminal), `actions` for the allow/deny/review
buttons, `include_reason` for the one-line reason, and `protocol` to pin the
terminal escape protocol.

The reason stays out by default because it names commands, argv and URLs, and a
notification outlives the prompt and may be mirrored to a lock screen. Unknown
keys degrade to the defaults, the way `[mcp]` does, and `reload()` re-reads the
section.

Desktop notifications need the optional `notify` extra (`desktop-notifier`),
which is the only new dependency and stays off the default install.
2026-10-21 19:53:19 +08:00
NCBM a0aba700e2 release: plyngent 0.10.0 2026-10-17 17:47:03 +08:00
NCBM 2054423ebb release: plyngent 0.9.1 2026-10-16 22:31:50 +08:00
NCBM 3e7acbaf18 release: plyngent 0.9.0 2026-10-16 19:46:54 +08:00
NCBM a89543fd35 release: plyngent 0.8.0 2026-10-07 00:51:49 +08:00
NCBM 9296242881 ci/lint: ignore PLR0917 like PLR0913 2026-10-07 00:47:56 +08:00
NCBM c56449bfce deps/dev: upgrade ruff to 0.16.10 and basedpyright to 1.40.2 2026-10-07 00:47:03 +08:00
NCBM e0e19fde8f ci/lint: drop PLR0912 as a duplicate of C901 2026-10-07 00:40:08 +08:00
NCBM 36156043ca release: plyngent 0.7.0 2026-09-22 23:35:03 +08:00
NCBM ef8d74a92a release: plyngent 0.6.0 2026-09-09 22:58:03 +08:00
NCBM 66c58cf156 release: plyngent 0.5.0 2026-09-08 14:30:44 +08:00
NCBM ab8828f7b6 release: plyngent 0.4.1 2026-08-15 18:45:09 +08:00
NCBM ea8e64e913 release: plyngent 0.4.0 2026-08-11 21:18:01 +08:00
NCBM c1dfdc8478 release: plyngent 0.3.0 2026-08-04 00:06:18 +08:00
NCBM f0c27bf366 core: wire kind-based dispatch through agent, runtime, and state 2026-07-29 00:40:23 +08:00
NCBM acdc62f2a9 release: plyngent 0.2.0 2026-07-24 17:51:43 +08:00
NCBM 7bdd9ff8b7 chore: pin ruff and basedpyright for prek and lockfile
Match prek additional_dependencies and pyproject dev pins to pdm.lock
(ruff==0.15.22, basedpyright==1.39.9). Format fix for ruff 0.15.22.
2026-07-20 04:35:26 +08:00
NCBM bec14e76af release: plyngent 0.1.3
Bump package version; refresh lock (ruff 0.15.22, platformdirs 4.10.1).
prek.toml already tracks latest ruff/basedpyright via additional_dependencies.
2026-07-20 04:30:07 +08:00
NCBM d473cd2508 project: bump version to 0.1.2 2026-07-18 19:43:33 +08:00
NCBM 844220e013 project: bump version to 0.1.1 2026-07-17 17:41:38 +08:00
NCBM 5d2f0c5539 core/cli: Rich markdown for assistant text at end of turn
Stream plain tokens; on TTY re-render with Rich. /markdown and PLYNGENT_PLAIN.
2026-07-15 22:21:18 +08:00
NCBM c466d09173 core/process: cross-platform PTY via backend and pywinpty
POSIX openpty/fork and Windows ConPTY; win32 marker dep plus typings stub.
2026-07-15 20:01:43 +08:00
NCBM 5b0c9be90b core/cli: Click slash registry with awaitlet bridge
Register REPL slash commands as a Click Group (params, UsageError, help).
Dispatch via awaitlet.async_def so sync command bodies can awaitlet()
async memory/confirm work. Completer and /help derive from the registry.
2026-07-15 13:03:55 +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 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 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 a64e3bf769 deps: add click for CLI 2026-07-14 18:29:46 +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 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 27396c9844 deps: add web request, configuration and test dependencies 2026-07-06 18:26:59 +08:00
NCBM 21aa7dd143 project: init 2026-06-25 23:22:45 +08:00