Commit Graph
8 Commits
Author SHA1 Message Date
pierre b958eaab4c typing: refresh every 2s 2026-09-05 11:43:30 +03:00
pierre bf40b50f52 harness: typing indicator during agent turns (keepalive refreshes 60s window, cleared on reply) 2026-09-05 03:15:58 +03:00
pierre cbe99e89d0 harness: attachments named by real m.filename, not the caption; mimetype-derived extension fallback 2026-09-05 01:11:29 +03:00
pierreandLetta Code e212e3e120 matrix: file transfer both ways — send-file one-shot (upload + m.image/m.file by ext), incoming attachments downloaded to /tmp/matrix-files and path forwarded to agent
👾 Generated with [Letta Code](https://letta.com)

Co-Authored-By: Letta Code <noreply@letta.com>
2026-09-03 23:51:09 +03:00
pierre dcf6d8df75 harness: proactive send mode + persistent backlog seen-state
- 'matrix_harness send "text"' — one-shot unprompted messaging to the
  pinned room (agent announcements/alerts)
- backlog no longer re-forwards read messages: last homeserver
  origin_server_ts persisted to /tmp/matrix-harness.state, advanced on
  every processed event; events at/below it are skipped
- 30-min staleness window retained as outer bound
2026-09-03 00:58:42 +03:00
pierre 9f1a839a22 matrix bridge: proper JSON sync parsing, backlog forwarding, message provenance
- sync(): std.json walk of rooms.join.*.timeline (old string-window scraper
  misattributed senders across events); Event gains ts
- startup backlog: peer messages from last 30min forwarded to agent as
  context (reply suppressed); failures logged, never fatal (systemd
  Restart=on-failure would otherwise re-forward every 3s)
- messages to agent prefixed [matrix HH:MMZ] with UTC event timestamp
- sendText: jsonEscape covers control chars (\u00XX), markdown -> HTML
  formatted_body (bold/italic/code/fences) for Element rendering
- no startup banner in room; harness now runs as systemd user service
  matrix-harness (unit + .matrix-env, untracked)
2026-09-02 08:57:43 +03:00
pierreandLetta Code a6d4e29589 matrix harness: persistent room (MATRIX_ROOM env) — no more DM-per-run
Reuses the fixed room when MATRIX_ROOM is set; only creates a fresh DM
when unset. All replies go to the pinned room.

👾 Generated with [Letta Code](https://letta.com)

Co-Authored-By: Letta Code <noreply@letta.com>
2026-09-02 02:17:27 +03:00
pierreandLetta Code da50dea0d1 Matrix bridge scaffold: test harness with texting E2E
- src/matrix.zig: minimal Matrix client (conduwuit @ matrix.chaosmith.systems)
  via curl subprocess transport (native TLS swap later): login, createRoom
  (trusted_private_chat, unencrypted — no olm), sendText, sync polling with
  window-scan event extraction reusing letta.jsonStr
- src/matrix_harness.zig: standalone entrypoint (independent of tray daemon):
  login -> DM with peer -> sync loop -> peer messages routed through letta
  CLI (chaos-prime) -> replies sent back to the room
- build.zig: second exe matrix_harness; use_llvm fix promoted into build.zig
  for both executables (native lld vs GCC16 .sframe relocations)
- calling/Element Call (livekit SFU already deployed on ass-host) layers on
  top of this harness next

👾 Generated with [Letta Code](https://letta.com)

Co-Authored-By: Letta Code <noreply@letta.com>
2026-09-02 02:09:42 +03:00