2c217104db
feat: real-time Spark visualization in Mission Control ( #615 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:22:15 -04:00
7452e8a4f0
fix: add missing tests for Tower route /tower ( #621 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:22:13 -04:00
9732c80892
feat: Real-time Spark Visualization in Tower Dashboard ( #612 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:10:42 -04:00
f3b3d1e648
[loop-cycle-1658] feat: provider health history endpoint ( #457 ) ( #611 )
2026-03-20 16:09:20 -04:00
4ba8d25749
feat: Lightning Network integration for tool usage ( #610 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 13:07:02 -04:00
2622f0a0fb
[loop-cycle-1242] fix: cycle_retro reads cycle_result.json ( #603 ) ( #609 )
2026-03-20 12:55:01 -04:00
e3d60b89a9
fix: remove model_size kwarg from create_timmy() CLI calls ( #606 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 12:48:49 -04:00
6214ad3225
refactor: extract helpers from run_self_tests() ( #601 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 12:40:44 -04:00
5f5da2163f
[loop-cycle] refactor: extract helpers from _handle_tool_confirmation ( #592 ) ( #600 )
2026-03-20 12:32:24 -04:00
0029c34bb1
refactor: break up search_thoughts() into focused helpers ( #597 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 12:26:51 -04:00
2577b71207
fix: capture thought timestamp at cycle start, not after LLM call ( #590 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 12:13:48 -04:00
1a8b8ecaed
[loop-cycle-1235] refactor: break up _migrate_schema() into focused helpers ( #591 ) ( #595 )
2026-03-20 12:07:15 -04:00
d821e76589
[loop-cycle-1234] refactor: break up _generate_avatar_image ( #563 ) ( #589 )
2026-03-20 11:57:53 -04:00
bc010ecfba
[loop-cycle-1233] refactor: add docstrings to calm.py route handlers ( #569 ) ( #585 )
2026-03-20 11:44:06 -04:00
faf6c1a5f1
[loop-cycle-1233] refactor: break up BaseAgent.run() ( #561 ) ( #584 )
2026-03-20 11:24:36 -04:00
48103bb076
[loop-cycle-956] refactor: break up _handle_message() into focused helpers ( #553 ) ( #574 )
2026-03-19 21:42:01 -04:00
9f244ffc70
refactor: break up _record_utterance() into focused helpers ( #572 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 21:37:32 -04:00
0162a604be
refactor: break up voice_loop.py::run() into focused helpers ( #567 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 21:33:59 -04:00
2326771c5a
[loop-cycle-953] refactor: DRY _import_creative_catalogs() ( #560 ) ( #565 )
2026-03-19 21:21:23 -04:00
8f6cf2681b
refactor: break up search_memories() into focused helpers ( #557 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 21:16:07 -04:00
f361893fdd
[loop-cycle-951] refactor: break up _migrate_schema() ( #552 ) ( #558 )
2026-03-19 21:11:02 -04:00
7ad0ee17b6
refactor: break up shell.py::run() into helpers ( #551 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 21:04:10 -04:00
29220b6bdd
refactor: break up api_chat() into helpers ( #547 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 21:02:04 -04:00
2849dba756
[loop-cycle-948] refactor: break up _gather_system_snapshot() into helpers ( #540 ) ( #549 )
2026-03-19 20:52:13 -04:00
e11e07f117
[loop-cycle-947] refactor: break up self_reflect() into focused helpers ( #505 ) ( #546 )
2026-03-19 20:49:18 -04:00
50c8a5428e
refactor: break up api_chat() into helpers ( #544 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:49:04 -04:00
7da434c85b
[loop-cycle-946] refactor: complete airllm removal ( #486 ) ( #545 )
2026-03-19 20:46:20 -04:00
88e59f7c17
refactor: break up chat_agent() into helpers ( #542 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:38:46 -04:00
aa5e9c3176
refactor: break up get_memory_status() into helpers ( #537 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:30:29 -04:00
1b4fe65650
fix: cache thinking agent and add timeouts to prevent loop pane death ( #535 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:27:25 -04:00
2d69f73d9d
fix: add timeout to thinking/loop-QA schedulers ( #530 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:18:31 -04:00
ff1e43c235
[loop-cycle-545] fix: queue auto-hygiene — filter closed issues on read ( #524 ) ( #529 )
2026-03-19 20:10:05 -04:00
b331aa6139
refactor: break up capture_error() into testable helpers ( #523 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:03:28 -04:00
b45b543f2d
refactor: break up create_timmy() into testable helpers ( #520 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:51:59 -04:00
7c823ab59c
refactor: break up think_once() into testable helpers ( #518 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:43:26 -04:00
9f2728f529
refactor: break up lifespan() into testable helpers ( #515 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:30:32 -04:00
cd3dc5d989
refactor: break up CascadeRouter.complete() into focused helpers ( #510 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:24:36 -04:00
e4de539bf3
fix: extract ollama_url normalization into shared utility ( #508 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 19:18:22 -04:00
b2057f72e1
[loop-cycle] refactor: break up run_agentic_loop into testable helpers ( #504 ) ( #509 )
2026-03-19 19:15:38 -04:00
5f52dd54c0
[loop-cycle-932] fix: add logging to bare except Exception blocks ( #484 ) ( #501 )
2026-03-19 19:05:02 -04:00
9ceffd61d1
[loop-cycle-544] fix: use settings.ollama_url fallback in _call_ollama ( #490 ) ( #498 )
2026-03-19 16:18:39 -04:00
015d858be5
fix: auto-detect issue number in cycle retro from git branch ( #495 )
...
## Summary
- `cycle_retro.py` now auto-detects issue number from the git branch name (e.g. `kimi/issue-492` → `492`) when `--issue` is not provided
- `backfill_retro.py` now skips the PR number suffix Gitea appends to titles so it does not confuse PR numbers with issue numbers
- Added tests for both fixes
Fixes #492
Co-authored-by: kimi <kimi@localhost>
Reviewed-on: http://localhost:3000/rockachopa/Timmy-time-dashboard/pulls/495
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 16:13:35 -04:00
b6d0b5f999
feat: epoch turnover notation for loopstat cycles ⟳WW.D:NNN ( #496 )
2026-03-19 16:12:10 -04:00
d70e4f810a
fix: use settings.ollama_url instead of hardcoded fallback in cascade router ( #491 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 16:02:20 -04:00
7f20742fcf
fix: replace hardcoded secret placeholder in CSRF middleware docstring ( #488 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 15:52:29 -04:00
15eb7c3b45
[loop-cycle-538] refactor: remove dead airllm provider from cascade router ( #459 ) ( #481 )
2026-03-19 15:44:10 -04:00
dbc2fd5b0f
[loop-cycle-536] fix: validate_startup checks CORS wildcard in production ( #472 ) ( #478 )
2026-03-19 15:29:26 -04:00
3c3aca57f1
[loop-cycle-535] perf: cache Timmy agent at startup ( #471 ) ( #476 )
...
## What
Cache the Timmy agent instance at app startup (in lifespan) instead of creating a new one per `/serve/chat` request.
## Changes
- `src/timmy_serve/app.py`: Create agent in lifespan, store in `app.state.timmy`
- `tests/timmy/test_timmy_serve_app.py`: Updated tests for lifespan-based caching, added `test_agent_cached_at_startup`
2085 unit tests pass. 2102 pre-push tests pass. 78.5% coverage.
Closes #471
Co-authored-by: Timmy <timmy@timmytime.ai >
Reviewed-on: http://localhost:3000/rockachopa/Timmy-time-dashboard/pulls/476
Co-authored-by: Timmy Time <timmy@Alexanderwhitestone.ai >
Co-committed-by: Timmy Time <timmy@Alexanderwhitestone.ai >
2026-03-19 15:28:57 -04:00
0ae00af3f8
fix: remove AirLLM config settings from config.py ( #475 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 15:24:43 -04:00
3df526f6ef
[loop-cycle-2] feat: hot-reload providers.yaml without restart ( #458 ) ( #470 )
2026-03-19 15:11:40 -04:00