Commit Graph

91 Commits

Author SHA1 Message Date
Peter Steinberger
4dcb5f276b auto-reply: surface tool args from rpc start events 2025-12-03 15:45:43 +00:00
Peter Steinberger
4d6bc8eeaf fix(web): annotate group replies with sender 2025-12-03 13:25:34 +00:00
Peter Steinberger
46f2e39142 fix(web): allow group replies past allowFrom 2025-12-03 13:08:54 +00:00
Peter Steinberger
7a7395fc99 Add /restart WhatsApp command to restart warelay 2025-12-03 12:14:32 +00:00
Peter Steinberger
631c7266de Pi: stream tool results faster (0.5s, flush after 5) 2025-12-03 12:08:58 +00:00
Peter Steinberger
9a92a88c7b Pi: stream assistant text during RPC runs 2025-12-03 11:50:49 +00:00
Peter Steinberger
b6a04aadd2 Pi: resume Tau sessions with --continue 2025-12-03 11:33:51 +00:00
Peter Steinberger
906bcb929e Chore: satisfy lint after tool-meta refactor 2025-12-03 10:42:10 +00:00
Peter Steinberger
2e9f600161 Refactor: extract tool meta formatter + debouncer 2025-12-03 10:30:01 +00:00
Peter Steinberger
2878bcdd6f Verbose: shorten meta paths when aggregating 2025-12-03 10:26:41 +00:00
Peter Steinberger
3361beca63 Verbose: collapse tool meta paths by directory 2025-12-03 10:24:41 +00:00
Peter Steinberger
32679adcc8 Verbose: slow tool batch window to 1s 2025-12-03 10:13:02 +00:00
Peter Steinberger
f96fa5330e Verbose: shorten home paths in tool meta 2025-12-03 10:12:27 +00:00
Peter Steinberger
040c991ce9 Verbose: batch rapid tool results 2025-12-03 10:11:41 +00:00
Peter Steinberger
c9fd48de31 Verbose: include tool arg metadata in prefixes 2025-12-03 09:57:41 +00:00
Peter Steinberger
01185952e6 Verbose: send tool result metadata only 2025-12-03 09:40:05 +00:00
Peter Steinberger
d839533d4e Auto-reply: stream verbose tool results via tau rpc 2025-12-03 09:21:31 +00:00
Peter Steinberger
78646030f4 Auto-reply: show tool results before main reply in verbose mode 2025-12-03 09:14:10 +00:00
Peter Steinberger
4c6bef34cf Chore: format + lint fixes 2025-12-03 09:09:34 +00:00
Peter Steinberger
ffd14dc6c6 Auto-reply: add verbose session hint 2025-12-03 09:07:17 +00:00
Peter Steinberger
e33c7a813d Auto-reply: add /verbose directives and tool result replies 2025-12-03 09:04:37 +00:00
Peter Steinberger
ddf5cc12c2 Auto-reply: treat prefixed think directives as directive-only 2025-12-03 08:57:30 +00:00
Peter Steinberger
e5fff1d374 Auto-reply: ack think directives 2025-12-03 08:54:38 +00:00
Peter Steinberger
ff6d832151 Auto-reply: add thinking directives 2025-12-03 08:45:23 +00:00
Peter Steinberger
a0633e3ff1 Format: align thinking helpers 2025-12-03 01:02:10 +00:00
Peter Steinberger
ba744915eb Heartbeat: guard optional heartbeatCommand 2025-12-03 00:45:27 +00:00
Peter Steinberger
f1ee08659e Heartbeat: normalize array replies 2025-12-03 00:40:19 +00:00
Peter Steinberger
61e76cb43b Auto-reply: allow array payloads in signature 2025-12-03 00:35:57 +00:00
Peter Steinberger
849244d93e CI: fix command-reply payload typing 2025-12-03 00:33:58 +00:00
Peter Steinberger
61723fa0d0 Auto-reply: format and lint fixes 2025-12-03 00:30:05 +00:00
Peter Steinberger
d25d12ca8a Auto-reply: smarter chunking breaks 2025-12-03 00:25:01 +00:00
Peter Steinberger
0f378bb640 limits: chunk replies for twilio/web 2025-12-02 23:10:16 +00:00
Peter Steinberger
f374561579 auto-reply: support multi-text RPC outputs 2025-12-02 23:03:55 +00:00
Peter Steinberger
32f1af6277 logging: emit agent/session meta at command start 2025-12-02 21:30:28 +00:00
Peter Steinberger
45d9bca433 revert: mark system prompt sent on first turn 2025-12-02 21:23:56 +00:00
Peter Steinberger
86302247b6 chore: tidy claude prompt and drop npm lock 2025-12-02 21:07:37 +00:00
Joao Lisboa
7d919ac3bc style: fix biome formatting 2025-12-02 21:07:13 +00:00
Joao Lisboa
26ae8c780e style: fix biome lint errors 2025-12-02 21:07:13 +00:00
Joao Lisboa
57b48d9ad9 fix: send Claude identity prefix on first session message
The systemSent variable was being set to true before being passed to
runCommandReply, causing the identity prefix to never be injected.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 21:07:13 +00:00
Joao Lisboa
24bc88b638 chore: user-agnostic Claude identity and tests
- Use ~/Clawd instead of hardcoded /Users/steipete/clawd
- Add MEDIA: syntax instructions to identity prefix
- Update tests to check for 'scratchpad' instead of specific path

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 21:07:13 +00:00
Peter Steinberger
2a2b662c3e perf(pi): reuse tau rpc for command auto-replies 2025-12-02 20:09:51 +00:00
Peter Steinberger
84d9501e85 Tests: cover agents and fix web defaults
Co-authored-by: RealSid08 <RealSid08@users.noreply.github.com>
2025-12-02 11:08:00 +00:00
Peter Steinberger
d61e641496 Agents: add pluggable CLIs
Co-authored-by: RealSid08 <RealSid08@users.noreply.github.com>
2025-12-02 11:07:46 +00:00
Peter Steinberger
7ea879ac46 Fix test corrupting production sessions.json
The test 'falls back to most recent session when no to is provided' was
using resolveStorePath() which returns the real ~/.warelay/sessions.json.
This overwrote production session data with test values, causing session
fragmentation issues.

Changed to use a temp directory like other tests.
2025-12-02 05:54:31 +00:00
Peter Steinberger
8a94bc1b30 Fix empty result JSON dump and missing heartbeat prefix
Bug fixes:
- Empty result field handling: Changed truthy check to explicit type
  check (`typeof parsed?.text === "string"`) in command-reply.ts.
  Previously, Claude CLI returning `result: ""` would cause raw JSON
  to be sent to WhatsApp.
- Response prefix on heartbeat: Apply `responsePrefix` to heartbeat
  alert messages in runReplyHeartbeat, matching behavior of regular
  message handler.
2025-12-02 04:29:17 +00:00
Peter Steinberger
a7b6914a64 feat: same-phone mode with echo detection and configurable marker
Adds full support for self-messaging setups where you chat with yourself
and an AI assistant replies in the same WhatsApp bubble.

Changes:
- Same-phone mode (from === to) always allowed, bypasses allowFrom check
- Echo detection via bounded Set (max 100) prevents infinite loops
- Configurable samePhoneMarker in config (default: "[same-phone]")
- Messages prefixed with marker so assistants know the context
- fromMe filter removed from inbound.ts (echo detection in auto-reply)
- Verbose logging for same-phone detection and echo skips

Tests:
- Same-phone allowed without/despite allowFrom configuration
- Body prefixed only when from === to
- Non-same-phone rejected when not in allowFrom
2025-11-29 04:52:21 +00:00
Peter Steinberger
dba1e8c602 Tests: cover identity prefix gating 2025-11-27 04:40:03 +01:00
Peter Steinberger
845594dcc4 Claude prompt: only prepend on first turn 2025-11-27 03:53:13 +01:00
Marcus Neves
b3b23234d3 fix: add @lid format support and allowFrom wildcard handling
- Add support for WhatsApp Linked ID (@lid) format in jidToE164()
- Use existing lid-mapping-*_reverse.json files for LID resolution
- Fix allowFrom wildcard '*' to actually allow all senders
- Maintain backward compatibility with @s.whatsapp.net format

Fixes issues where:
- Messages from newer WhatsApp versions are silently dropped
- allowFrom: ['*'] configuration doesn't work as documented
2025-11-26 18:03:12 +01:00
Peter Steinberger
3dd2baba9d feat: add heartbeat cli and relay trigger 2025-11-26 17:04:43 +01:00