Files
tai/taicpp
retoorandClaude Sonnet 5.5 bad5ea72ab whatsapp: one encrypted copy per device, treat an ack with error as a rejection
A message to the user's own number listed the phone twice (as recipient device and as
own device), so the server accepted it but nothing arrived. The device list is now
deduplicated; devices of the sender's user get the DeviceSentMessage wrapper, all
others the plain message (whatsmeow encryptMessageForDevices). The participant hash is
computed and compared with the server's (they match: 2:TKwG4B1n), and an ack carrying
error= is reported as a failed send instead of success.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 21:37:48 +01:00
..
2026-10-24 06:40:09 +02:00
2026-10-24 07:27:06 +02:00
2026-10-24 06:43:45 +02:00

detz: C++23 port of tai.py

Future molo detz subcommand. See plan.md, SPEC.md, docs/. Build: make && make test. Binary: build/detz. Rules for working here: AGENTS.md.

What taicpp adds on top of the port

The port is behavior-compatible with ../tai.py and checked against it (PARITY.md, docs/parity.md). These parts exist only here; each has a specification and tests:

Feature Spec Code Tests
Fuzzy matching of identifiers (letter order, word boundaries, typos, trigrams) docs/fuzzy.md src/util/fuzzy.* build/fuzzy_test
CAP agents and their models: discovery, probes, @agent, @agent:model, @model docs/cap-agents.md src/cap/cap_model_catalog.*, src/cap/cap_mention.* build/capmcp/cap_model_catalog_test
Sub agents in live panels on the multiplexer screen, with supervision docs/orchestration.md src/orch/, src/mplex/mplex_vpane.* build/orch_test, tests/orch_mplex_e2e.py

Reading order for a new contributor: docs/cap.md (the protocol), docs/cap-agents.md (agents and models), docs/fuzzy.md (how a mention is matched), docs/mplex.md and docs/orchestration.md (the screen).

Using it

@claude refactor the parser           run one turn on a CAP agent (typos are fine: @clde)
@claude:opus review the diff          on a specific model of that agent
@opus review the diff                 a model name alone works when one agent offers it
@claude                               pin the agent for following messages;  @auto clears all pins

Sub agents (fork workers and agent turns) appear in panels on the right of the multiplexer screen while they work; closing a panel cancels its agent. TAI_ORCH_PANELS=0 turns the panels off.

Tests

make test builds every test binary and runs tests/run_all.py (36 steps, logs in build/test-logs/). Single steps: python3 tests/run_all.py --only orch, --only mplex, --only capmcp, --only fuzzy. The research behind the decisions is in ../research/ (index: ../research/INDEX.md).