1
0
This repository has been archived on 2026-03-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Timmy-time-dashboard/src/dashboard/routes/thinking.py

64 lines
1.8 KiB
Python

"""Thinking routes — Timmy's inner thought stream.
GET /thinking — render the thought stream page
GET /thinking/api — JSON list of recent thoughts
GET /thinking/api/{id}/chain — follow a thought chain
"""
import logging
from fastapi import APIRouter, Request
from fastapi.responses import HTMLResponse, JSONResponse
from dashboard.templating import templates
from timmy.thinking import thinking_engine
logger = logging.getLogger(__name__)
router = APIRouter(prefix="/thinking", tags=["thinking"])
@router.get("", response_class=HTMLResponse)
async def thinking_page(request: Request):
"""Render Timmy's thought stream page."""
thoughts = thinking_engine.get_recent_thoughts(limit=50)
return templates.TemplateResponse(
request,
"thinking.html",
{"thoughts": thoughts},
)
@router.get("/api", response_class=JSONResponse)
async def thinking_api(limit: int = 20):
"""Return recent thoughts as JSON."""
thoughts = thinking_engine.get_recent_thoughts(limit=limit)
return [
{
"id": t.id,
"content": t.content,
"seed_type": t.seed_type,
"parent_id": t.parent_id,
"created_at": t.created_at,
}
for t in thoughts
]
@router.get("/api/{thought_id}/chain", response_class=JSONResponse)
async def thought_chain_api(thought_id: str):
"""Follow a thought chain backward and return in chronological order."""
chain = thinking_engine.get_thought_chain(thought_id)
if not chain:
return JSONResponse({"error": "Thought not found"}, status_code=404)
return [
{
"id": t.id,
"content": t.content,
"seed_type": t.seed_type,
"parent_id": t.parent_id,
"created_at": t.created_at,
}
for t in chain
]