fix: dashboard bugs and clean up build artifacts (#145)

* chore: stop tracking runtime-generated self-modify reports

These 65 files in data/self_modify_reports/ are auto-generated at
runtime and already listed in .gitignore. Tracking them caused
conflicts when pulling from main.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: resolve 8 dashboard bugs from Round 4 testing report

- Fix Ollama timeout regression: request_timeout → timeout (agno API)
- Add Bootstrap JS to base.html (fixes creative UI tab switching)
- Send initial_state on Swarm Live WebSocket connect
- Add /api/queue/status endpoint (stops 404 log spam from chat panel)
- Populate agent tools from registry on /tools page
- Add notification bell dropdown with /api/notifications endpoint
- All 1157 tests pass

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Trip T <trip@local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Alexander Whitestone
2026-03-07 23:44:56 -05:00
committed by GitHub
parent e36a1dc939
commit 248af9ed03
73 changed files with 149 additions and 1940 deletions

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_223632
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc12345
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: PASSED
```
5 passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_223632
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_223632
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_223632
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_223632
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_224732
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260225_224733
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_224733
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_224733
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_224734
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_224734
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260225_225049
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_225049
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_225049
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_225049
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_225049
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_230304
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_230305
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc12345
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: PASSED
```
5 passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_230305
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_230305
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_230305
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_230306
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260225_230553
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_230553
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_230553
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_230554
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_230554
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_231440
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc12345
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: PASSED
```
5 passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_231440
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_231440
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_231440
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_231440
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_231441
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260225_231645
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_231645
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_231645
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_231645
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_231645
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260225_232402
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_232402
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260225_232402
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260225_232402
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260225_232402
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260225_232403
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_002427
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc12345
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: PASSED
```
5 passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_002427
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260226_002427
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260226_002427
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_002428
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260226_002428
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_004233
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc12345
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: PASSED
```
5 passed
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_004233
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260226_004233
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,48 +0,0 @@
# Self-Modify Report: 20260226_004234
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 2
**Autonomous cycles:** 0
## Attempt 1 -- syntax_validation
**Error:** src/foo.py: line 1: '(' was never closed
### LLM Response
```
bad llm
```
### Edits Written
#### src/foo.py
```python
def foo(
```
## Attempt 2 -- complete
### LLM Response
```
good llm
```
### Edits Written
#### src/foo.py
```python
def foo():
pass
```
### Test Result: PASSED
```
passed
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260226_004234
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260226_070455
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_070455
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260226_070455
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_070455
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260226_070455
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -1,19 +0,0 @@
# Self-Modify Report: 20260226_170416
**Instruction:** Add docstring
**Target files:** src/foo.py
**Dry run:** True
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- dry_run
### LLM Response
```
llm raw
```

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_170416
**Instruction:** Break it
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 1
```
### Test Result: FAILED
```
1 failed
```

View File

@@ -1,12 +0,0 @@
# Self-Modify Report: 20260226_170416
**Instruction:** do something vague
**Target files:** (auto-detected)
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** No target files identified. Specify target_files or use more specific language.
**Commit:** none
**Attempts:** 0
**Autonomous cycles:** 0

View File

@@ -1,31 +0,0 @@
# Self-Modify Report: 20260226_170416
**Instruction:** Fix foo
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** FAILED
**Error:** Tests failed after 1 attempt(s).
**Commit:** none
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: FAILED
```
FAILED
```

View File

@@ -1,34 +0,0 @@
# Self-Modify Report: 20260226_170416
**Instruction:** Fix foo
IMPORTANT CORRECTION from previous failure:
Fix: do X instead of Y
**Target files:** src/foo.py
**Dry run:** False
**Backend:** ollama
**Branch:** N/A
**Result:** SUCCESS
**Error:** none
**Commit:** abc123
**Attempts:** 1
**Autonomous cycles:** 0
## Attempt 1 -- complete
### LLM Response
```
llm raw
```
### Edits Written
#### src/foo.py
```python
x = 2
```
### Test Result: PASSED
```
PASSED
```

View File

@@ -77,6 +77,15 @@ async def swarm_ws(websocket: WebSocket):
"""WebSocket endpoint for live swarm updates."""
await ws_manager.connect(websocket)
try:
# Send initial state so frontend can clear loading placeholders
await websocket.send_json({
"type": "initial_state",
"data": {
"agents": {"total": 0, "active": 0, "list": []},
"tasks": {"active": 0},
"auctions": {"list": []},
},
})
while True:
await websocket.receive_text()
except WebSocketDisconnect:

View File

@@ -3,7 +3,7 @@
import logging
from fastapi import APIRouter, Request
from fastapi.responses import HTMLResponse
from fastapi.responses import HTMLResponse, JSONResponse
from dashboard.templating import templates
@@ -102,3 +102,21 @@ async def hands_page(request: Request):
@router.get("/creative/ui", response_class=HTMLResponse)
async def creative_ui(request: Request):
return templates.TemplateResponse(request, "creative.html", {})
@router.get("/api/notifications", response_class=JSONResponse)
async def api_notifications():
"""Return recent system events for the notification dropdown."""
try:
from spark.engine import spark_engine
events = spark_engine.get_timeline(limit=20)
return JSONResponse([
{
"event_type": e.event_type,
"title": getattr(e, "description", e.event_type),
"timestamp": str(getattr(e, "timestamp", "")),
}
for e in events
])
except Exception:
return JSONResponse([])

View File

@@ -373,3 +373,37 @@ async def api_delete_task(task_id: str):
if cursor.rowcount == 0:
raise HTTPException(404, "Task not found")
return JSONResponse({"success": True, "id": task_id})
# ---------------------------------------------------------------------------
# Queue status (polled by the chat panel every 10 seconds)
# ---------------------------------------------------------------------------
@router.get("/api/queue/status", response_class=JSONResponse)
async def queue_status(assigned_to: str = "default"):
"""Return queue status for the chat panel's agent status indicator."""
db = _get_db()
try:
running = db.execute(
"SELECT * FROM tasks WHERE status='running' AND assigned_to=? LIMIT 1",
(assigned_to,),
).fetchone()
ahead = db.execute(
"SELECT COUNT(*) as cnt FROM tasks WHERE status IN ('pending_approval','approved') AND assigned_to=?",
(assigned_to,),
).fetchone()
finally:
db.close()
if running:
return JSONResponse({
"is_working": True,
"current_task": {"id": running["id"], "title": running["title"]},
"tasks_ahead": 0,
})
return JSONResponse({
"is_working": False,
"current_task": None,
"tasks_ahead": ahead["cnt"] if ahead else 0,
})

View File

@@ -3,6 +3,8 @@
Shows available tools and usage statistics.
"""
from collections import namedtuple
from fastapi import APIRouter, Request
from fastapi.responses import HTMLResponse, JSONResponse
@@ -11,16 +13,32 @@ from dashboard.templating import templates
router = APIRouter(tags=["tools"])
_AgentView = namedtuple("AgentView", ["name", "status", "tools", "stats"])
_ToolView = namedtuple("ToolView", ["name", "description"])
_Stats = namedtuple("Stats", ["total_calls"])
def _build_agent_tools():
"""Build agent capability list from the available tools registry."""
available = get_all_available_tools()
if not available:
return []
tool_views = [
_ToolView(name=name, description=getattr(fn, "__doc__", "") or name)
for name, fn in available.items()
]
return [
_AgentView(name="Timmy", status="idle", tools=tool_views, stats=_Stats(total_calls=0))
]
@router.get("/tools", response_class=HTMLResponse)
async def tools_page(request: Request):
"""Render the tools dashboard page."""
available_tools = get_all_available_tools()
# Build agent tools list from the available tools
agent_tools = []
# Calculate total calls (placeholder — would come from brain memory)
agent_tools = _build_agent_tools()
total_calls = 0
return templates.TemplateResponse(

View File

@@ -63,7 +63,14 @@
<a href="/mobile/local" class="mc-test-link" title="Local AI on iPhone">LOCAL AI</a>
</div>
</div>
<button id="enable-notifications" class="mc-test-link" style="background:none;cursor:pointer;" title="Enable notifications">&#x1F514;</button>
<div class="mc-nav-dropdown" id="notif-dropdown">
<button id="enable-notifications" class="mc-test-link mc-dropdown-toggle" style="background:none;cursor:pointer;position:relative;" title="Notifications" aria-expanded="false">&#x1F514;<span id="notif-badge" class="notif-badge" style="display:none;"></span></button>
<div class="mc-dropdown-menu" style="right:0;left:auto;min-width:280px;max-height:350px;overflow-y:auto;">
<div id="notif-list" style="padding:6px;">
<div style="color:var(--text-dim);font-size:0.8rem;text-align:center;padding:12px;">Loading...</div>
</div>
</div>
</div>
<span class="mc-time" id="clock"></span>
</div>
@@ -150,25 +157,56 @@
}
});
// Desktop "More" dropdown toggle
var dropdownToggle = document.querySelector('.mc-dropdown-toggle');
if (dropdownToggle) {
dropdownToggle.addEventListener('click', function(e) {
// Desktop dropdown toggles (More menu + Notification bell)
document.querySelectorAll('.mc-dropdown-toggle').forEach(function(toggle) {
toggle.addEventListener('click', function(e) {
e.stopPropagation();
var dd = this.closest('.mc-nav-dropdown');
// Close other dropdowns first
document.querySelectorAll('.mc-nav-dropdown.open').forEach(function(other) {
if (other !== dd) {
other.classList.remove('open');
var btn = other.querySelector('.mc-dropdown-toggle');
if (btn) btn.setAttribute('aria-expanded', 'false');
}
});
var isOpen = dd.classList.toggle('open');
this.setAttribute('aria-expanded', isOpen);
// Load notifications when opening the bell
if (isOpen && dd.id === 'notif-dropdown') { loadNotifications(); }
});
document.addEventListener('click', function() {
var dd = document.querySelector('.mc-nav-dropdown');
if (dd) {
dd.classList.remove('open');
var btn = dd.querySelector('.mc-dropdown-toggle');
if (btn) btn.setAttribute('aria-expanded', 'false');
}
});
document.addEventListener('click', function() {
document.querySelectorAll('.mc-nav-dropdown.open').forEach(function(dd) {
dd.classList.remove('open');
var btn = dd.querySelector('.mc-dropdown-toggle');
if (btn) btn.setAttribute('aria-expanded', 'false');
});
});
// Notification loader
function loadNotifications() {
fetch('/api/notifications')
.then(function(r) { return r.json(); })
.then(function(data) {
var list = document.getElementById('notif-list');
if (!data.length) {
list.innerHTML = '<div style="color:var(--text-dim);font-size:0.8rem;text-align:center;padding:12px;">No recent notifications</div>';
return;
}
list.innerHTML = data.map(function(n) {
return '<div style="padding:6px 8px;border-bottom:1px solid var(--border);font-size:0.8rem;">'
+ '<div style="color:var(--text-bright);">' + (n.title || n.event_type || 'Event') + '</div>'
+ '<div style="color:var(--text-dim);font-size:0.7rem;">' + (n.timestamp || '') + '</div>'
+ '</div>';
}).join('');
var badge = document.getElementById('notif-badge');
if (badge) { badge.style.display = 'none'; }
})
.catch(function() {});
}
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
<script src="/static/notifications.js"></script>
</body>
</html>

View File

@@ -275,7 +275,7 @@ def create_timmy(
return Agent(
name="Agent",
model=Ollama(id=model_name, host=settings.ollama_url, request_timeout=300),
model=Ollama(id=model_name, host=settings.ollama_url, timeout=300),
db=SqliteDb(db_file=db_file),
description=full_prompt,
add_history_to_context=True,

View File

@@ -63,7 +63,7 @@ class BaseAgent(ABC):
return Agent(
name=self.name,
model=Ollama(id=settings.ollama_model, host=settings.ollama_url, request_timeout=300),
model=Ollama(id=settings.ollama_model, host=settings.ollama_url, timeout=300),
description=system_prompt,
tools=tool_instances if tool_instances else None,
add_history_to_context=True,

View File

@@ -1,14 +1,15 @@
"""Test that Ollama model is created with a generous request timeout.
"""Test that Ollama model is created with a generous timeout.
The default httpx timeout is too short for complex prompts (30-60s generation).
This caused socket read errors in production.
This caused socket read errors in production. The agno Ollama class uses
``timeout`` (not ``request_timeout``).
"""
from unittest.mock import patch, MagicMock
def test_base_agent_sets_request_timeout():
"""BaseAgent creates Ollama with request_timeout=300."""
def test_base_agent_sets_timeout():
"""BaseAgent creates Ollama with timeout=300."""
with patch("timmy.agents.base.Ollama") as mock_ollama, \
patch("timmy.agents.base.Agent"):
mock_ollama.return_value = MagicMock()
@@ -32,16 +33,16 @@ def test_base_agent_sets_request_timeout():
except Exception:
pass # MCP registry may not be available
# Verify Ollama was called with request_timeout
# Verify Ollama was called with timeout
if mock_ollama.called:
_, kwargs = mock_ollama.call_args
assert kwargs.get("request_timeout") == 300, (
f"Expected request_timeout=300, got {kwargs.get('request_timeout')}"
assert kwargs.get("timeout") == 300, (
f"Expected timeout=300, got {kwargs.get('timeout')}"
)
def test_main_agent_sets_request_timeout():
"""create_timmy() creates Ollama with request_timeout=300."""
def test_main_agent_sets_timeout():
"""create_timmy() creates Ollama with timeout=300."""
with patch("timmy.agent.Ollama") as mock_ollama, \
patch("timmy.agent.SqliteDb"), \
patch("timmy.agent.Agent"):
@@ -55,6 +56,6 @@ def test_main_agent_sets_request_timeout():
if mock_ollama.called:
_, kwargs = mock_ollama.call_args
assert kwargs.get("request_timeout") == 300, (
f"Expected request_timeout=300, got {kwargs.get('request_timeout')}"
assert kwargs.get("timeout") == 300, (
f"Expected timeout=300, got {kwargs.get('timeout')}"
)