chore: add agents/reports to gitignore and update agent infrastructure with timestamp streaming, write budget, and codename generation

- Add `agents/reports/` to `.gitignore` to prevent generated agent report files from being tracked
- Implement `_TimestampStream` class and `install_timestamps()` function in `agents/agent.py` for prefixing stdout/stderr with timestamps and elapsed time
- Export `install_timestamps`, `set_write_budget`, `clear_write_budget`, and `set_shell_restricted` from `agents/base.py`; add `_RUN_LOCK`, `AGENT_ICONS` dictionary, and `WRITE_BUDGET = 20` constant
- Add `report_codename()` function and `CODENAME_ADJECTIVES`/`CODENAME_ANIMALS` tuples to `agents/core/__init__.py` for generating random agent report codenames
- Expand `WRITE_TOOLS` tuple in `agents/core/__init__.py` to include `replace_lines`, `insert_lines`, and `delete_lines`; remove `SWARM_TOOLS` from `payloads_for` exclusion list
- Update `CLAUDE.md` and `AGENTS.md` documentation with dataset column initialization rules and new agent infrastructure details
- Reorder route table in `README.md` to list `/uploads` before `/messages` and document Swagger/ReDoc/OpenAPI schema endpoints
This commit is contained in:
2026-06-12 03:37:12 +00:00
parent 7fc9b0f715
commit 31841fece4
80 changed files with 2095 additions and 323 deletions
+5 -5
View File
@@ -106,13 +106,13 @@ class JobService(BaseService):
else:
self._finish_done(uid, task.result() or {}, duration_ms)
def _finish_done(self, uid: str, result_data: dict, duration_ms: int) -> None:
def _finish_done(self, uid: str, job_result: dict, duration_ms: int) -> None:
now = datetime.now(timezone.utc)
get_table("jobs").update(
{
"uid": uid,
"status": queue.DONE,
"result": json.dumps(result_data),
"result": json.dumps(job_result),
"error": "",
"completed_at": now.isoformat(),
"updated_at": now.isoformat(),
@@ -121,9 +121,9 @@ class JobService(BaseService):
"expires_at": (
now + timedelta(seconds=self.retention_seconds())
).isoformat(),
"bytes_in": int(result_data.get("bytes_in", 0)),
"bytes_out": int(result_data.get("bytes_out", 0)),
"item_count": int(result_data.get("item_count", 0)),
"bytes_in": int(job_result.get("bytes_in", 0)),
"bytes_out": int(job_result.get("bytes_out", 0)),
"item_count": int(job_result.get("item_count", 0)),
},
["uid"],
)