fix: better home assistant integration, refs NOISSUE

This commit is contained in:
2026-04-11 12:45:56 +02:00
parent 3e40338bbf
commit 2943fc79ab
8 changed files with 586 additions and 74 deletions

View File

@@ -62,9 +62,7 @@ async def lifespan(_app: FastAPI):
print(
f"Runtime configuration: database_backend={runtime['backend']} target={runtime['target']}"
)
queue_worker = None
if database_module.settings.prompt_queue_enabled and database_module.settings.prompt_queue_auto_process:
queue_worker = asyncio.create_task(_prompt_queue_worker())
queue_worker = asyncio.create_task(_prompt_queue_worker())
try:
yield
finally:
@@ -124,6 +122,12 @@ class LLMPromptSettingUpdateRequest(BaseModel):
value: str = Field(default='')
class RuntimeSettingUpdateRequest(BaseModel):
"""Request body for persisting one editable runtime setting override."""
value: str | bool | int | float | None = None
class GiteaRepositoryOnboardRequest(BaseModel):
"""Request body for onboarding a manually created Gitea repository."""
@@ -681,10 +685,11 @@ async def _prompt_queue_worker() -> None:
"""Background worker that drains the prompt queue when the energy gate opens."""
while True:
try:
await _process_prompt_queue_batch(
limit=database_module.settings.prompt_queue_max_batch_size,
force=database_module.settings.prompt_queue_force_process,
)
if database_module.settings.prompt_queue_enabled and database_module.settings.prompt_queue_auto_process:
await _process_prompt_queue_batch(
limit=database_module.settings.prompt_queue_max_batch_size,
force=database_module.settings.prompt_queue_force_process,
)
except Exception as exc:
db = database_module.get_db_sync()
try:
@@ -719,6 +724,8 @@ def read_api_info():
'/llm/runtime',
'/llm/prompts',
'/llm/prompts/{prompt_key}',
'/settings/runtime',
'/settings/runtime/{setting_key}',
'/generate',
'/generate/text',
'/queue',
@@ -815,6 +822,32 @@ def reset_llm_prompt_setting(prompt_key: str, db: DbSession):
return result
@app.get('/settings/runtime')
def get_runtime_settings(db: DbSession):
"""Return editable runtime settings with DB overrides merged over environment defaults."""
return {'settings': DatabaseManager(db).get_runtime_settings()}
@app.put('/settings/runtime/{setting_key}')
def update_runtime_setting(setting_key: str, request: RuntimeSettingUpdateRequest, db: DbSession):
"""Persist one editable runtime setting override into the database."""
database_module.init_db()
result = DatabaseManager(db).save_runtime_setting(setting_key, request.value, actor='api')
if result.get('status') == 'error':
raise HTTPException(status_code=400, detail=result.get('message', 'Runtime setting save failed'))
return result
@app.delete('/settings/runtime/{setting_key}')
def reset_runtime_setting(setting_key: str, db: DbSession):
"""Reset one editable runtime setting override back to the environment/default value."""
database_module.init_db()
result = DatabaseManager(db).reset_runtime_setting(setting_key, actor='api')
if result.get('status') == 'error':
raise HTTPException(status_code=400, detail=result.get('message', 'Runtime setting reset failed'))
return result
@app.post('/generate')
async def generate_software(request: SoftwareRequest, db: DbSession):
"""Create and record a software-generation request."""