Commit Graph

620 Commits

Author SHA1 Message Date
Peter Steinberger
daa753112c fix: unblock auto-reply lint/typecheck 2026-01-12 23:13:39 +00:00
Peter Steinberger
cf92099d40 test(auto-reply): fix heartbeat typing block reply assertions 2026-01-12 23:01:53 +00:00
Peter Steinberger
a8680f9a09 fix(auto-reply): fix streaming block reply media handling 2026-01-12 22:59:36 +00:00
Peter Steinberger
2e08a868a7 style: format native commands bits 2026-01-12 22:59:36 +00:00
Peter Steinberger
ec5099db89 fix: pick best fuzzy model match 2026-01-12 22:59:35 +00:00
Peter Steinberger
209380edf8 Merge pull request #801 from mcinteerj/fix/restore-reasoning-tag-check
fix(agent): restore reasoning tag enforcement for non-ollama providers
2026-01-12 22:59:13 +00:00
Peter Steinberger
cf8251bb81 test: cover typing signals from block and tool streams 2026-01-12 22:55:17 +00:00
Peter Steinberger
fd768334a9 refactor: fast-lane directives helpers 2026-01-12 22:34:13 +00:00
Peter Steinberger
27d940f5b6 refactor: reuse streaming text normalizer across callbacks 2026-01-12 22:27:56 +00:00
Peter Steinberger
7ba72aeb6c fix: make pw download tests platform-safe 2026-01-12 22:27:19 +00:00
Peter Steinberger
29b7b2068a refactor: centralize streaming text normalization 2026-01-12 22:17:14 +00:00
Peter Steinberger
f4ab057807 fix: start typing on partial deltas 2026-01-12 22:16:29 +00:00
Peter Steinberger
5d83be76c9 test: cover mixed directive fast-lane 2026-01-12 21:57:10 +00:00
Peter Steinberger
99fea64823 fix: fast-lane directives bypass queue dedupe 2026-01-12 21:44:19 +00:00
Peter Steinberger
490cb834e5 style: italicize reasoning output 2026-01-12 21:24:36 +00:00
Jake
eceb41f6f7 fix(agent): restore reasoning tag enforcement for non-ollama providers
This restores the fix from PR #754 which was accidentally reverted in bf11a42c3.
2026-01-13 09:47:04 +13:00
Peter Steinberger
7dc44b04c1 fix: close memory index and refresh protocol outputs 2026-01-12 18:49:24 +00:00
Peter Steinberger
ffbcd83d1e chore: log elevated and reasoning toggles 2026-01-12 18:37:44 +00:00
Peter Steinberger
355c13564c fix: restore heartbeat defaults and model listing 2026-01-12 17:17:54 +00:00
Peter Steinberger
f1dd59bf82 test: update heartbeat and agent list thresholds 2026-01-12 17:14:04 +00:00
Peter Steinberger
bf11a42c37 feat: add memory vector search 2026-01-12 11:23:44 +00:00
Peter Steinberger
a3938d62f6 chore: raise heartbeat ack window 2026-01-12 11:06:46 +00:00
Peter Steinberger
562d0e3b5f fix: avoid duplicate status replies 2026-01-12 11:04:03 +00:00
Peter Steinberger
a8f67f0be6 fix: only strip inline /status for allowlisted senders 2026-01-12 08:55:02 +00:00
Peter Steinberger
252841ab13 fix: enforce final tag gating (#754) (thanks @mcinteerj) 2026-01-12 08:45:23 +00:00
Keith the Silly Goose
efdf874407 fix(agent): correctly strip <final> tags from reasoning providers
- Added src/utils/provider-utils.ts to track reasoning provider logic
- Updated isReasoningTagProvider to loosely match 'google-antigravity' (fixes sub-models)
- Enabled enforceFinalTag in reply.ts when provider matches
- Verified <final> tag stripping logic in pi-embedded-subscribe.ts
- Updated pi-embedded-runner to use consistent provider check for prompt hints
2026-01-12 08:34:06 +00:00
Peter Steinberger
3fba8ceb97 test(model): cover provider-less id fuzzy match 2026-01-12 08:02:55 +00:00
Peter Steinberger
60823fd9bd feat(model): fuzzy /model matching 2026-01-12 07:57:53 +00:00
Peter Steinberger
e1150f1b93 test: expand memory flush coverage 2026-01-12 07:42:03 +00:00
Peter Steinberger
d17fc7e448 fix(auto-reply): preserve inline /status text for unauthorized senders 2026-01-12 07:42:03 +00:00
Peter Steinberger
097e66391f fix(auto-reply): show config models in /model 2026-01-12 07:31:20 +00:00
Peter Steinberger
7466575120 fix: ignore inline status directives 2026-01-12 07:13:08 +00:00
Peter Steinberger
e19a5dc2b1 feat(control-ui): add model presets 2026-01-12 07:09:58 +00:00
Peter Steinberger
1a89a5dd14 test(model): expand /model picker coverage 2026-01-12 06:34:33 +00:00
Peter Steinberger
5b44825cb3 fix: skip memory flush on read-only workspace 2026-01-12 06:33:27 +00:00
Peter Steinberger
1ffb0fe787 fix: handle inline status for allowlisted senders 2026-01-12 06:33:27 +00:00
Peter Steinberger
46a6d79784 fix: sender fallback for command auth (#755) (thanks @juanpablodlc) 2026-01-12 06:28:53 +00:00
juanpablodlc
20d606c4c4 fix: use logical OR for sender ID fallback in command auth
The nullish coalescing operator (??) only skips null/undefined, not
empty strings. For direct WhatsApp messages, ctx.SenderId was an empty
string, causing senderRaw to be "" instead of falling through to the
valid ctx.SenderE164 value.

This caused commands like /status to be rejected with "unauthorized
sender" for self-chat WhatsApp messages.

Tested: Verified /status command now works correctly for self-chat
WhatsApp messages after the fix.
2026-01-12 06:20:51 +00:00
Peter Steinberger
c9f2358769 test: clean unused var 2026-01-12 06:14:45 +00:00
Peter Steinberger
4044957819 test: fix lint warning 2026-01-12 06:14:45 +00:00
Peter Steinberger
b185d130ba test: cover inline slash command fast-path 2026-01-12 06:14:45 +00:00
Peter Steinberger
0f257f792a fix: fast-path slash commands 2026-01-12 06:10:17 +00:00
Peter Steinberger
2da2057a37 feat(model): add /model picker 2026-01-12 06:02:39 +00:00
Peter Steinberger
7dbb21be8e feat: add pre-compaction memory flush 2026-01-12 05:29:18 +00:00
Peter Steinberger
6a012fd625 refactor: reuse resolved think default 2026-01-12 03:00:30 +00:00
The Admiral
c64bcd047b fix: flush block reply coalescer on tool boundaries
When block streaming is enabled with verbose=off, tool blocks are hidden
but their boundary information was lost. Text segments before and after
tool execution would get coalesced into a single message because the
coalescer had no signal that a tool had executed between them.

This adds an onBlockReplyFlush callback that fires on tool_execution_start,
allowing the block reply pipeline to flush pending text before the tool
runs. This preserves natural message boundaries even when tools are hidden.

Fixes the issue where:
  text → [hidden tool] → text → rendered as one merged message

Now correctly renders as:
  text → [hidden tool] → text → two separate messages

Co-diagnosed-by: Krill (Discord assistant)
2026-01-12 02:52:48 +00:00
Gabriel Trigo
99877e8e63 fix: align /think default with model reasoning 2026-01-12 02:50:13 +00:00
Peter Steinberger
58a12a757e fix(sandbox): avoid sandboxing main DM sessions 2026-01-12 01:24:44 +00:00
Peter Steinberger
9c8967ef5d style: biome fixes 2026-01-12 00:32:47 +00:00
Peter Steinberger
67743325ee fix: reset session after compaction overflow 2026-01-12 00:28:16 +00:00