92594ea588
[loop-cycle] feat: implement source distinction in system prompts ( #463 ) ( #464 )
2026-03-19 14:49:31 -04:00
3590c1689e
fix: make _get_loop_agent singleton thread-safe ( #449 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 14:18:27 -04:00
3afb62afb7
fix: add self_reflect tool for past behavior review ( #417 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 09:39:14 -04:00
332fa373b8
fix: wire cognitive state to sensory bus (presence loop) ( #414 )
...
## Summary
- CognitiveTracker.update() now emits `cognitive_state_changed` events to the SensoryBus
- WorkshopHeartbeat (and other subscribers) react immediately to mood/engagement changes
- Closes the sense → memory → react loop described in the Workshop architecture
- Fire-and-forget emission — never blocks the chat response path
- Gracefully skips when no event loop is running (sync contexts/tests)
## Test plan
- [x] 3 new tests: event emission, mood change tracking, graceful skip without loop
- [x] All 1935 unit tests pass
- [x] Lint + format clean
Fixes #222
Co-authored-by: kimi <kimi@localhost>
Reviewed-on: http://localhost:3000/rockachopa/Timmy-time-dashboard/pulls/414
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 03:23:03 -04:00
9b8ad3629a
fix: wire Pip familiar into Workshop state pipeline ( #412 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 03:09:22 -04:00
4b617cfcd0
fix: deep focus mode — single-problem context for Timmy ( #409 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 02:54:19 -04:00
3571d528ad
feat: Workshop Phase 1 — State Schema v1 ( #404 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 02:24:13 -04:00
858264be0d
fix: deprecate ~/.tower/timmy-state.txt — consolidate on presence.json ( #388 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 01:18:52 -04:00
da43421d4e
feat: broadcast Timmy state changes via WS relay ( #380 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 00:25:11 -04:00
864be20dde
feat: Workshop state heartbeat for presence.json ( #377 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 22:07:32 -04:00
c1f939ef22
fix: add update_gitea_avatar capability ( #368 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 22:04:57 -04:00
c1af9e3905
[loop-cycle-154] refactor: extract _annotate_confidence helper — DRY 3x duplication ( #369 ) ( #376 )
2026-03-18 22:01:51 -04:00
996ccec170
feat: Pip the Familiar — behavioral state machine ( #367 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 21:50:36 -04:00
560aed78c3
fix: add cognitive state as observable signal for Matrix avatar ( #358 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 21:37:17 -04:00
ce658c841a
[loop-cycle-151] refactor: extract embedding functions to memory/embeddings.py ( #344 ) ( #355 )
2026-03-18 21:24:50 -04:00
243b1a656f
feat: give Timmy hands — artifact tools for conversation ( #337 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 20:36:38 -04:00
22e0d2d4b3
[loop-cycle-66] fix: replace language-model with inference-backend in error messages ( #334 )
2026-03-18 20:27:06 -04:00
bcc7b068a4
[loop-cycle-66] fix: remove language-model self-reference and add anti-assistant-speak guidance ( #323 ) ( #333 )
2026-03-18 20:21:03 -04:00
844923b16b
[loop-cycle-65] fix: validate file paths before filing thinking-engine issues ( #327 ) ( #329 )
2026-03-18 20:07:19 -04:00
8ef0ad1778
fix: pause thought counter during idle periods ( #319 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 19:12:14 -04:00
9a21a4b0ff
feat: SensoryEvent model + SensoryBus dispatcher ( #318 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 19:02:12 -04:00
ab71c71036
feat: time adapter — circadian awareness for Timmy ( #315 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 18:47:09 -04:00
39939270b7
fix: Gitea webhook adapter — normalize events to sensory bus ( #309 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 18:37:01 -04:00
0ab1ee9378
fix: proactive memory status check during thought tracking ( #313 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 18:36:59 -04:00
234187c091
fix: add periodic memory status checks during thought tracking ( #311 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-18 18:26:53 -04:00
f5a570c56d
fix: add real-time data disclaimer to welcome message ( #304 )
2026-03-18 16:56:21 -04:00
rockachopa
96e7961a0e
fix: make confidence visible to users when below 0.7 threshold ( #259 )
...
Co-authored-by: rockachopa <alexpaynex@gmail.com >
Co-committed-by: rockachopa <alexpaynex@gmail.com >
2026-03-15 19:36:52 -04:00
bcbdc7d7cb
feat: add thought_search tool for querying Timmy's thinking history ( #260 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-15 19:35:58 -04:00
80aba0bf6d
[loop-cycle-63] feat: session_history tool — Timmy searches past conversations ( #251 ) ( #258 )
2026-03-15 15:11:43 -04:00
dd34dc064f
[loop-cycle-62] fix: MEMORY.md corruption and hot memory staleness ( #252 ) ( #256 )
2026-03-15 15:01:19 -04:00
7bc355eed6
[loop-cycle-61] fix: strip think tags and harden fact parsing ( #237 ) ( #254 )
2026-03-15 14:50:09 -04:00
f9911c002c
[loop-cycle-60] fix: retry with backoff on Ollama GPU contention ( #70 ) ( #238 )
2026-03-15 14:28:47 -04:00
7f656fcf22
[loop-cycle-59] feat: gematria computation tool ( #234 ) ( #235 )
2026-03-15 14:14:38 -04:00
8c63dabd9d
[loop-cycle-57] fix: wire confidence estimation into chat flow ( #231 ) ( #232 )
2026-03-15 13:58:35 -04:00
a50af74ea2
[loop-cycle-56] fix: resolve 5 lint errors on main ( #203 ) ( #224 )
2026-03-15 13:40:40 -04:00
b4cb3e9975
[loop-cycle-54] refactor: consolidate three memory stores into single table ( #37 ) ( #223 )
2026-03-15 13:33:24 -04:00
4a68f6cb8b
[loop-cycle-53] refactor: break circular imports between packages ( #164 ) ( #193 )
2026-03-15 12:52:18 -04:00
b3840238cb
[loop-cycle-52] feat: response audit trail with inputs, confidence, errors ( #144 ) ( #191 )
2026-03-15 12:34:48 -04:00
96c7e6deae
[loop-cycle-52] fix: remove all qwen3.5 references ( #182 ) ( #190 )
2026-03-15 12:34:21 -04:00
f6d74b9f1d
[loop-cycle-51] refactor: remove dead code from memory_system.py ( #173 ) ( #185 )
2026-03-15 12:18:11 -04:00
5b57bf3dd0
[loop-cycle-50] fix: agent retry uses exponential backoff instead of fixed 1s delay ( #174 ) ( #181 )
2026-03-15 12:08:30 -04:00
bcd6d7e321
[loop-cycle-50] refactor: replace bare sqlite3.connect() with context managers batch 2 ( #157 ) ( #180 )
2026-03-15 11:58:43 -04:00
bea2749158
[loop-cycle-49] refactor: narrow broad except Exception catches — batch 1 ( #158 ) ( #178 )
2026-03-15 11:48:54 -04:00
204a6ed4e5
refactor: decompose _maybe_distill() into focused helpers ( #151 ) ( #160 )
2026-03-15 11:23:45 -04:00
f15ad3375a
[loop-cycle-47] feat: add confidence signaling module ( #143 ) ( #161 )
2026-03-15 11:20:30 -04:00
5aea8be223
[loop-cycle-47] refactor: replace bare sqlite3.connect() with context managers ( #148 ) ( #155 )
2026-03-15 11:05:39 -04:00
717dba9816
[loop-cycle-46] refactor: break up oversized functions in tools.py ( #151 ) ( #154 )
2026-03-15 10:56:33 -04:00
466db7aed2
[loop-cycle-44] refactor: remove dead code batch 2 — agent_core + test_agent_core ( #147 ) ( #150 )
2026-03-15 10:22:41 -04:00
d2c51763d0
[loop-cycle-43] refactor: remove 1035 lines of dead code ( #136 ) ( #146 )
2026-03-15 10:10:12 -04:00
48c8efb2fb
[loop-cycle-40] fix: use get_system_prompt() in cloud backends ( #135 ) ( #138 )
...
## What
Cloud backends (Grok, Claude, AirLLM) were importing SYSTEM_PROMPT directly, which is always SYSTEM_PROMPT_LITE and contains unformatted {model_name} and {session_id} placeholders.
## Changes
- backends.py: Replace `from timmy.prompts import SYSTEM_PROMPT` with `from timmy.prompts import get_system_prompt`
- AirLLM: uses `get_system_prompt(tools_enabled=False, session_id="airllm")` (LITE tier, correct)
- Grok: uses `get_system_prompt(tools_enabled=True, session_id="grok")` (FULL tier)
- Claude: uses `get_system_prompt(tools_enabled=True, session_id="claude")` (FULL tier)
- 9 new tests verify formatted model names, correct tier selection, and session_id formatting
## Tests
1508 passed, 0 failed (41 new tests this cycle)
Fixes #135
Co-authored-by: Kimi Agent <kimi@timmy.local >
Reviewed-on: http://localhost:3000/rockachopa/Timmy-time-dashboard/pulls/138
Reviewed-by: rockachopa <alexpaynex@gmail.com >
Co-authored-by: hermes <hermes@timmy.local >
Co-committed-by: hermes <hermes@timmy.local >
2026-03-15 09:44:43 -04:00