feat: add audit log tables, indexes, and CLI/content recording hooks

This commit is contained in:
2026-06-11 20:28:17 +00:00
parent 3862958fae
commit 78d70d9b08
58 changed files with 4456 additions and 25 deletions
@@ -12,6 +12,27 @@ from .store import TaskStore
logger = logging.getLogger("devii.tasks.scheduler")
def _audit_task_execute(row: dict[str, Any], result: str, error: str | None) -> None:
from devplacepy.services.audit import record as audit
owner_kind = row.get("owner_kind") or "user"
owner_id = row.get("owner_id") or ""
audit.record_system(
"devii.task.execute",
actor_kind="user" if owner_kind == "user" else owner_kind,
actor_uid=owner_id if owner_kind == "user" else None,
actor_role="user" if owner_kind == "user" else owner_kind,
origin="scheduler",
via_agent=1,
result="failure" if error else "success",
target_type="task",
target_uid=row.get("uid"),
summary=f"Devii task {row.get('uid')} for {owner_id or owner_kind} executed",
metadata={"run_count": row.get("run_count"), "error": error, "result": (result or "")[:140]},
links=[audit.task(row.get("uid"))],
)
PromptExecutor = Callable[[str], Awaitable[str]]
EventCallback = Callable[[str, dict[str, Any], str], None]
@@ -84,7 +105,9 @@ class Scheduler:
},
)
self._on_event("error", row, str(exc))
_audit_task_execute(row, "", str(exc))
return
self._store.update(uid, changes)
self._on_event("done" if not finished else "finished", row, result)
_audit_task_execute(row, result, None)