hermes
2a4f6228c7
fix: resolve endpoint before execution in CSRF middleware ( #626 )
...
Tests / lint (pull_request) Has been cancelled
Tests / test (pull_request) Has been cancelled
Previously, when CSRF validation failed and the path wasn't in the exempt
list, the middleware called call_next() to execute the endpoint BEFORE
checking the @csrf_exempt decorator. This caused side effects (DB writes,
API calls, etc.) to occur on protected endpoints even when CSRF validation
failed.
Now the middleware resolves the route endpoint by walking the FastAPI/
Starlette router WITHOUT executing it, checks @csrf_exempt, and only
then either allows the request through or returns 403.
- Add _resolve_endpoint() method to walk middleware chain and match routes
- Remove call_next() before @csrf_exempt check (5 lines deleted)
- Add regression test proving endpoints don't execute before CSRF check
- Add test confirming @csrf_exempt endpoints still execute normally
2026-03-20 19:04:52 -04:00
d2a5866650
[loop-cycle-1] fix: use config for xAI base URL ( #647 ) ( #655 )
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
2026-03-20 22:47:05 +00:00
2381d0b6d0
refactor: break up _create_bug_report — extract helpers ( #645 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Tests / lint (pull_request) Has been cancelled
Tests / test (pull_request) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 22:03:40 +00:00
03ad2027a4
refactor: break up _load_config into helpers ( #656 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:48:08 -04:00
2bfc44ea1b
[loop-cycle-1] refactor: extract _try_prune helper and fix f-string logging ( #653 ) ( #657 )
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
2026-03-20 17:44:32 -04:00
fe1fa78ef1
refactor: break up _create_default — extract template constant ( #650 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:39:17 -04:00
3c46a1b202
refactor: extract _create_default template to module constant ( #649 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:36:29 -04:00
001358c64f
refactor: break up create_gitea_issue_via_mcp into helpers ( #647 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:29:55 -04:00
faad0726a2
[loop-cycle-1666] fix: replace remaining deprecated utcnow() in calm.py ( #633 ) ( #644 )
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
2026-03-20 17:22:35 -04:00
dd4410fe57
refactor: break up create_gitea_issue_via_mcp into helpers ( #646 )
...
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:22:33 -04:00
ef7f31070b
refactor: break up self_reflect into helpers ( #643 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:09:28 -04:00
6f66670396
[loop-cycle-1664] fix: replace deprecated datetime.utcnow() ( #633 ) ( #636 )
Tests / lint (push) Successful in 6s
Tests / test (push) Successful in 1m32s
2026-03-20 17:01:19 -04:00
4cdd82818b
refactor: break up get_state_dict into helpers ( #632 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 17:01:16 -04:00
99ad672e4d
refactor: break up delegate_to_kimi into helpers ( #637 )
...
Tests / lint (push) Successful in 9s
Tests / test (push) Successful in 1m59s
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:52:21 -04:00
a3f61c67d3
refactor: break up post_morning_ritual into helpers ( #631 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m29s
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:43:14 -04:00
32dbdc68c8
refactor: break up should_use_tools into helpers ( #624 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m17s
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:31:34 -04:00
84302aedac
fix: pass max_tokens to Ollama provider in cascade router ( #622 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m11s
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-20 16:27:24 -04:00
2c217104db
feat: real-time Spark visualization in Mission Control ( #615 )
...
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m19s
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 )
...
Tests / lint (push) Has been cancelled
Tests / test (push) Has been cancelled
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 )
...
Tests / lint (push) Successful in 19s
Tests / test (push) Successful in 1m24s
Tests / lint (pull_request) Successful in 3s
Tests / test (pull_request) Successful in 1m9s
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 )
Tests / lint (push) Successful in 3s
Tests / test (push) Has been cancelled
2026-03-20 16:09:20 -04:00
4ba8d25749
feat: Lightning Network integration for tool usage ( #610 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m16s
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 )
Tests / lint (push) Successful in 4s
Tests / test (push) Successful in 1m2s
2026-03-20 12:55:01 -04:00
e3d60b89a9
fix: remove model_size kwarg from create_timmy() CLI calls ( #606 )
...
Tests / lint (push) Successful in 4s
Tests / test (push) Successful in 1m8s
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 )
...
Tests / lint (push) Successful in 7s
Tests / test (push) Successful in 1m45s
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 )
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m7s
2026-03-20 12:32:24 -04:00
0029c34bb1
refactor: break up search_thoughts() into focused helpers ( #597 )
...
Tests / lint (push) Successful in 4s
Tests / test (push) Successful in 1m20s
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 )
...
Tests / lint (push) Failing after 4s
Tests / test (push) Has been skipped
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 )
Tests / lint (push) Failing after 2s
Tests / test (push) Has been skipped
2026-03-20 12:07:15 -04:00
d821e76589
[loop-cycle-1234] refactor: break up _generate_avatar_image ( #563 ) ( #589 )
Tests / lint (push) Failing after 2s
Tests / test (push) Has been skipped
2026-03-20 11:57:53 -04:00
bc010ecfba
[loop-cycle-1233] refactor: add docstrings to calm.py route handlers ( #569 ) ( #585 )
Tests / lint (push) Failing after 5s
Tests / test (push) Has been skipped
2026-03-20 11:44:06 -04:00
faf6c1a5f1
[loop-cycle-1233] refactor: break up BaseAgent.run() ( #561 ) ( #584 )
Tests / lint (push) Failing after 3s
Tests / test (push) Has been skipped
2026-03-20 11:24:36 -04:00
48103bb076
[loop-cycle-956] refactor: break up _handle_message() into focused helpers ( #553 ) ( #574 )
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m10s
2026-03-19 21:42:01 -04:00
9f244ffc70
refactor: break up _record_utterance() into focused helpers ( #572 )
...
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m50s
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 )
...
Tests / lint (push) Successful in 4s
Tests / test (push) Successful in 1m42s
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 )
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m10s
2026-03-19 21:21:23 -04:00
8f6cf2681b
refactor: break up search_memories() into focused helpers ( #557 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m34s
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 )
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m30s
2026-03-19 21:11:02 -04:00
7ad0ee17b6
refactor: break up shell.py::run() into helpers ( #551 )
...
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m13s
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 )
...
Tests / lint (push) Successful in 5s
Tests / test (push) Has been cancelled
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 )
Tests / lint (push) Successful in 8s
Tests / test (push) Successful in 1m48s
2026-03-19 20:52:13 -04:00
e11e07f117
[loop-cycle-947] refactor: break up self_reflect() into focused helpers ( #505 ) ( #546 )
Tests / lint (push) Successful in 3s
Tests / test (push) Has been cancelled
2026-03-19 20:49:18 -04:00
50c8a5428e
refactor: break up api_chat() into helpers ( #544 )
...
Tests / lint (push) Successful in 2s
Tests / test (push) Has been cancelled
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 )
Tests / lint (push) Successful in 3s
Tests / test (push) Has been cancelled
2026-03-19 20:46:20 -04:00
88e59f7c17
refactor: break up chat_agent() into helpers ( #542 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m27s
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 )
...
Tests / lint (push) Successful in 4s
Tests / test (push) Successful in 1m41s
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 )
...
Tests / lint (push) Successful in 3s
Tests / test (push) Successful in 1m9s
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 )
...
Tests / lint (push) Successful in 4s
Tests / test (push) Successful in 1m28s
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 )
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m36s
2026-03-19 20:10:05 -04:00
b331aa6139
refactor: break up capture_error() into testable helpers ( #523 )
...
Tests / lint (push) Successful in 2s
Tests / test (push) Successful in 1m25s
Co-authored-by: Kimi Agent <kimi@timmy.local >
Co-committed-by: Kimi Agent <kimi@timmy.local >
2026-03-19 20:03:28 -04:00