-
b275e7cb88
feat(voice): add Confluence read/write tools for voice sessions
Christian Gick
2026-02-23 13:09:34 +02:00
-
e81aa79396
fix: increase voice PDF context to 40k chars, fix language detection sanity
Christian Gick
2026-02-23 12:40:13 +02:00
-
751bfbd164
fix: encrypted file handler + summary heading/markup fixes
Christian Gick
2026-02-23 12:00:10 +02:00
-
040d4c9285
fix(markup): add heading support to _md_to_html (h1/h2/h3)
Christian Gick
2026-02-23 11:51:48 +02:00
-
42ba3c09d0
feat(voice): all file types + images in voice context (MAT-10)
Christian Gick
2026-02-23 11:45:54 +02:00
-
90e662be96
feat(voice): PDF context in voice calls + call transcript summary (MAT-10)
Christian Gick
2026-02-23 11:21:31 +02:00
-
1ec63b93f2
feat(voice): per-user timezone via memory preferences
Christian Gick
2026-02-23 11:02:03 +02:00
-
e84260f839
feat(prompt): add user timezone and LLM model to voice prompt
Christian Gick
2026-02-23 10:56:40 +02:00
-
277d6b5fe4
fix(e2ee): restore 3s key rotation wait, fix mute callback arg order
Christian Gick
2026-02-23 10:43:38 +02:00
-
a11cafc1d6
feat(memory): store full conversation exchanges instead of LLM-extracted facts
Christian Gick
2026-02-23 10:40:59 +02:00
-
150df19be1
fix(tts): revert to multilingual_v2 for better quality, keep speed 1.15x
Christian Gick
2026-02-23 10:38:46 +02:00
-
294fbac913
feat(tts): switch to flash model + speed 1.15x for snappier voice
Christian Gick
2026-02-23 10:33:27 +02:00
-
6443aa0668
chore: Trigger rebuild
Christian Gick
2026-02-23 08:41:02 +02:00
-
c532f4678d
fix(e2ee): consolidate key timing + noise filtering (MAT-40, MAT-41)
Christian Gick
2026-02-23 08:33:40 +02:00
-
4b4a150fbf
fix(e2ee): extend key rotation wait to 10s, debug late key events
Christian Gick
2026-02-22 21:54:27 +02:00
-
230c083b7b
fix(e2ee): revert incorrect HKDF patch, remove pre-ratcheting
Christian Gick
2026-02-22 21:44:11 +02:00
-
d30e9f8c83
chore: Trigger rebuild
Christian Gick
2026-02-22 21:14:47 +02:00
-
62be6b91d6
fix(e2ee): patch Rust FFI HKDF to match Element Call JS SDK parameters
Christian Gick
2026-02-22 21:14:31 +02:00
-
220ad6cced
chore: Trigger rebuild
Christian Gick
2026-02-22 20:14:20 +02:00
-
ea52236880
feat(e2ee): make E2EE configurable via E2EE_ENABLED env var
Christian Gick
2026-02-22 20:14:06 +02:00
-
5bfe0d0188
chore: Trigger rebuild
Christian Gick
2026-02-22 20:01:14 +02:00
-
e3be4512d9
fix(e2ee): use correct Element Call E2EE parameters
Christian Gick
2026-02-22 20:00:55 +02:00
-
c2338fca46
chore: Trigger rebuild
Christian Gick
2026-02-22 19:45:13 +02:00
-
7b7079352f
fix(noise): expand STT artifact filter to catch subtitle metadata leaks
Christian Gick
2026-02-22 19:43:22 +02:00
-
5984132f60
chore: Trigger rebuild
Christian Gick
2026-02-22 19:38:06 +02:00
-
9e0f2a15b6
chore: Trigger rebuild
Christian Gick
2026-02-22 19:35:11 +02:00
-
c38ab96054
chore(voice): switch to Robert Ranger voice
Christian Gick
2026-02-22 19:34:54 +02:00
-
38c3d93adf
chore: Trigger rebuild
Christian Gick
2026-02-22 19:07:45 +02:00
-
fa9e95b250
fix(noise): filter STT noise annotations via on_user_turn_completed
Christian Gick
2026-02-22 19:07:31 +02:00
-
7f03cc1f37
chore: Trigger rebuild
Christian Gick
2026-02-22 19:02:56 +02:00
-
6c1073e79d
fix(vad): remove competing AudioStream that caused intermittent VAD failures
Christian Gick
2026-02-22 19:02:39 +02:00
-
a8d4663f10
fix(tts): revert to Jack Marlowe voice, vmVmHDKBkkCgbLVIOJRb not accessible
Christian Gick
2026-02-22 18:52:06 +02:00
-
06b588f313
fix(voice): add noise annotation filter to prompt + switch voice
Christian Gick
2026-02-22 18:49:31 +02:00
-
e926908af7
test: revert to base Agent to check if stt_node override breaks VAD
Christian Gick
2026-02-22 18:45:56 +02:00
-
fb09808a8c
fix(vad): lower activation threshold 0.60→0.50
Christian Gick
2026-02-22 18:42:21 +02:00
-
8f80e7d543
fix(tts): switch to Jack Marlowe - native German voice
Christian Gick
2026-02-22 18:37:05 +02:00
-
125b0f5d2e
fix(tts): spell out numbers in words for German TTS
Christian Gick
2026-02-22 18:35:52 +02:00
-
1b08683c17
fix(vad): lower activation threshold 0.75→0.60
Christian Gick
2026-02-22 18:15:06 +02:00
-
8445c9325c
revert(tts): remove pcm_24000 encoding, keep language=de
Christian Gick
2026-02-22 18:12:35 +02:00
-
e090c60c19
feat(tts): upgrade to pcm_24000 encoding + language=de
Christian Gick
2026-02-22 18:08:23 +02:00
-
1e1911995f
fix(stt): filter ElevenLabs noise annotations before LLM
Christian Gick
2026-02-22 17:59:17 +02:00
-
02a7c91eaf
fix(vad): raise activation threshold to reduce noise triggers
Christian Gick
2026-02-22 17:52:38 +02:00
-
39ef4e0054
fix(stt): pass http_session to ElevenLabs STT plugin
Christian Gick
2026-02-22 17:45:42 +02:00
-
2dce8419d4
fix(stt): set scribe_v2_realtime model with language_code for streaming STT
Christian Gick
2026-02-22 17:26:51 +02:00
-
382a98dd09
chore: Trigger rebuild
Christian Gick
2026-02-22 17:26:03 +02:00
-
9bd7f27a84
fix: Use LITELLM_MASTER_KEY for memory service
Christian Gick
2026-02-22 17:25:16 +02:00
-
4012950197
fix: Use scribe_v2_realtime model for ElevenLabs STT (streaming mode)
Christian Gick
2026-02-22 17:24:16 +02:00
-
045e5831a6
chore: Trigger rebuild
Christian Gick
2026-02-22 16:24:47 +02:00
-
52f8cb569c
feat(voice): add cross-call memory and Brave Search tool
Christian Gick
2026-02-22 15:27:59 +02:00
-
2b8744de6e
fix(voice): full E2EE bidirectional audio pipeline working
Christian Gick
2026-02-22 15:17:35 +02:00
-
c379064f80
fix(voice): set caller key in on_track_subscribed — frame cryptor must exist for HKDF to apply
Christian Gick
2026-02-22 14:05:54 +02:00
-
190b35945c
fix(voice): guard e2ee_manager access when E2EE disabled (diagnostic mode)
Christian Gick
2026-02-22 13:46:51 +02:00
-
c188a2daf6
test(voice): disable E2EE entirely — check if EC sends plaintext vs encrypted
Christian Gick
2026-02-22 13:34:26 +02:00
-
3d05b503c6
test(voice): pre-derive HKDF in Python, use set_shared_key to bypass Rust FFI HKDF
Christian Gick
2026-02-22 12:24:57 +02:00
-
7adeebfe05
fix(voice): restore set_shared_key fallback + failure_tolerance=10 from working commit
e3ede3f
Christian Gick
2026-02-22 11:46:32 +02:00
-
2a799f5760
fix(voice): set caller E2EE key on participant_connected + for all remote LK identities
Christian Gick
2026-02-22 11:30:23 +02:00
-
5d31886192
debug(voice): add VAD start/stop events to trace where audio pipeline breaks
Christian Gick
2026-02-22 11:18:51 +02:00
-
f74a11fde8
fix(voice): separate aiohttp sessions for STT and TTS
Christian Gick
2026-02-22 11:15:46 +02:00
-
475ab38f6f
chore: Trigger rebuild
Christian Gick
2026-02-22 11:09:17 +02:00
-
e3c1ded328
feat(voice): inject datetime into prompt, respond in DE/EN
Christian Gick
2026-02-22 11:02:56 +02:00
-
92ab906a21
chore(voice): switch default voice to George (multilingual DE/EN)
Christian Gick
2026-02-22 10:59:44 +02:00
-
7696ca68ee
chore: Remove debug logging and pipecat-poc after E2EE fix confirmed working
Christian Gick
2026-02-22 10:55:47 +02:00
-
ac8a8a177c
chore: Trigger rebuild
Christian Gick
2026-02-22 10:35:28 +02:00
-
63545f032e
fix(voice): set E2EE keys immediately after connect, before rotation wait
Christian Gick
2026-02-22 10:34:20 +02:00
-
4ab5486b5c
fix(voice): log remote participant identity and track count in E2EE poll
Christian Gick
2026-02-22 10:30:38 +02:00
-
c4581c2917
fix(voice): reduce key rotation wait to 2s, increase E2EE poll to every 10s
Christian Gick
2026-02-22 10:27:19 +02:00
-
5973ed1db3
fix(voice): revert to KDF_HKDF=1 with raw keys — proto value 0 is PBKDF2 not raw
Christian Gick
2026-02-22 09:26:44 +02:00
-
6b457a2aef
fix(voice): use correct HKDF info=128zeros, length=16 matching LiveKit JS SDK
Christian Gick
2026-02-22 09:09:34 +02:00
-
4f8bfbe479
fix(voice): pre-derive HKDF in Python, use KDF_NONE to bypass Rust FFI HKDF
Christian Gick
2026-02-22 08:47:41 +02:00
-
c330900a3a
fix(voice): wait for key rotation via nio sync, not HTTP fetch
Christian Gick
2026-02-22 08:23:17 +02:00
-
cf519595d6
fix(voice): poll for EC key rotation post-connect, set all key indices
Christian Gick
2026-02-22 08:20:44 +02:00
-
8b143a2ac4
debug(e2ee): poll frame_cryptors() every 30s for state diagnosis
Christian Gick
2026-02-22 08:14:19 +02:00
-
630a0de970
fix(e2ee): revert to per-participant mode with proper rotation handling
Christian Gick
2026-02-22 08:10:27 +02:00
-
295c0ed5cb
debug(e2ee): decode encryption state to human-readable names
Christian Gick
2026-02-22 08:00:28 +02:00
-
a6236a3817
debug(e2ee): update both shared+per-participant keys on rotation
Christian Gick
2026-02-22 07:53:40 +02:00
-
b22c4d48e9
debug(e2ee): add e2ee_state_changed event listener for diagnostics
Christian Gick
2026-02-22 07:50:12 +02:00
-
a8b30418c8
debug(e2ee): verify shared key + belt-suspenders per-participant key
Christian Gick
2026-02-22 07:47:09 +02:00
-
65340bf0ee
fix(e2ee): use set_shared_key for live key rotation updates
Christian Gick
2026-02-22 07:38:06 +02:00
-
9cf4afc928
fix(e2ee): pass caller_key as shared_key at connect time
Christian Gick
2026-02-22 07:31:14 +02:00
-
4875a7dc9b
fix(e2ee): add set_shared_key fallback for incoming audio decryption
Christian Gick
2026-02-22 07:25:26 +02:00
-
893e07a543
fix(e2ee): set caller keys at correct indices from timeline
Christian Gick
2026-02-22 07:19:28 +02:00
-
685218247a
fix: Use empty bytes instead of None for shared_key
Christian Gick
2026-02-22 07:02:33 +02:00
-
9ebf90c8bb
fix: Use per-participant E2EE mode (no shared_key)
Christian Gick
2026-02-22 07:00:22 +02:00
-
c290332a1e
fix: Disable close_on_disconnect to keep session alive
Christian Gick
2026-02-22 06:49:44 +02:00
-
b65d04389b
fix: Switch E2EE to per-participant keys instead of shared key
Christian Gick
2026-02-22 06:41:20 +02:00
-
ced2783a09
fix: Enable E2EE with caller's key as shared key
Christian Gick
2026-02-21 20:51:43 +02:00
-
4a93827de3
revert: Restore voice.py and bot.py to last known working state (
9aef846)
Christian Gick
2026-02-21 20:47:51 +02:00
-
463286a61e
revert: Disable E2EE at LiveKit level — shared key incompatible with Element Call
Christian Gick
2026-02-21 20:44:32 +02:00
-
2d8a7b4420
fix: Use same shared key for both directions (caller key reuse)
Christian Gick
2026-02-21 20:41:23 +02:00
-
2fa13c4958
fix: Use caller key as shared_key at connect time for immediate decryption
Christian Gick
2026-02-21 20:35:55 +02:00
-
5f3e733ba5
feat: Voice prompt with model transparency, datetime, auto language
Christian Gick
2026-02-21 20:28:13 +02:00
-
939324ca76
chore: Switch voice to George (warm, captivating)
Christian Gick
2026-02-21 20:20:27 +02:00
-
e3ede3fc2c
fix: Voice bot identifies as Agiliton Assistant, not Claude
Christian Gick
2026-02-21 19:40:24 +02:00
-
533847c952
fix: Switch E2EE from shared key to per-participant key mode
Christian Gick
2026-02-21 18:50:19 +02:00
-
9aef846619
fix: disable E2EE to get working voice pipeline, E2EE fix deferred
Christian Gick
2026-02-21 18:30:11 +02:00
-
67f4b8159e
fix: match Element Call HKDF params (ratchetWindowSize=10, keyringSize=256)
Christian Gick
2026-02-21 18:22:54 +02:00
-
96183a8ccd
test: temporarily disable E2EE to isolate audio pipeline issue
Christian Gick
2026-02-21 17:38:57 +02:00
-
1bc044eaae
fix: republish caller E2EE key as shared key, fallback to no-E2EE
Christian Gick
2026-02-21 17:35:31 +02:00
-
08f4e115b9
fix: filter own key events, fix RoomOptions None, wait for participant
Christian Gick
2026-02-21 17:33:12 +02:00
-
6e1e9839cc
fix: use timeline events for E2EE key exchange (not state events)
Christian Gick
2026-02-21 17:28:56 +02:00