Commit History
-
Remove ~900 lines of dead code across agent, backend, and frontend (#318)
Unverified signature* Remove dead code across agent, backend, and frontend A vulture/knip audit with manual repo-wide verification found ~900 lines of dead code: - Delete agent/tools/private_hf_repo_tools.py (650 lines): disabled when hf_repo_files/hf_repo_git replaced it, never imported since. - Drop orphaned functions, constants, and type aliases across agent/ and backend/ (record_jobs_access_blocked, last_fetch_error, update_local_save_status, verify_session_access, OperationType aliases, OpType.INTERRUPT in both enums, etc.). - Trim unused Sandbox client surface (pause/restart/to_dict/ tool_definitions and unused constants); keep Sandbox.connect, which the live auth integration test uses. - Remove production code only its own tests kept alive: _needs_approval (tests retargeted to _base_needs_approval / production path), fetch_hf_user_plan, _cleanup_user_orphan_sandboxes (superseded by scripts/sweep_orphan_sandboxes.py), DEFAULT_MODEL_ID alias. - Drop unused boto3 dependency (still …7943555
-
Restore prompt caching for FAL router models (#286)
Unverified signature* Restore prompt caching for FAL router models Co-authored-by: OpenAI Codex <codex@openai.com> * Tune prompt caching hints for GPT-5.5 Co-authored-by: OpenAI Codex <codex@openai.com> * Address backlog prompt caching import review Co-authored-by: OpenAI Codex <codex@openai.com> --------- Co-authored-by: OpenAI Codex <codex@openai.com>e6f00a2
-
Route LLM inference through HF Router (#282)
Unverified signature* Route LLM inference through HF Router Co-authored-by: OpenAI Codex <codex@openai.com> * Address HF router PR review Co-authored-by: OpenAI Codex <codex@openai.com> * Address router cleanup review Remove no-op prompt caching and reasoning replay paths, genericize router model handling, and update docs/tests for HF Router-only setup. Co-authored-by: OpenAI Codex <codex@openai.com> * Fix READEM --------- Co-authored-by: OpenAI Codex <codex@openai.com>437a804
-
Add backlog prioritization report tooling (#222)
Unverified signature* Add backlog prioritization script Co-authored-by: OpenAI Codex <codex@openai.com> * Fix backlog prioritizer LLM output handling Co-authored-by: OpenAI Codex <codex@openai.com> * Add backlog resolved-in-main checks Co-authored-by: OpenAI Codex <codex@openai.com> * Add GitHub issue publishing for backlog reports Co-authored-by: OpenAI Codex <codex@openai.com> * Address backlog prioritization review Handle GitHub rate limits gracefully, validate publish tokens early, and tighten resolution-link detection. Co-authored-by: OpenAI Codex <codex@openai.com> * Exclude generated backlog reports Apply a default label to generated report issues and skip that label during future GitHub backlog collection. Co-authored-by: OpenAI Codex <codex@openai.com> --------- Co-authored-by: OpenAI Codex <codex@openai.com>6aebbdf
-
Add CI for tests and Ruff (#217)
Unverified signature* Add CI for tests and Ruff Co-authored-by: OpenAI Codex <codex@openai.com> * Enforce Ruff formatting in CI Co-authored-by: OpenAI Codex <codex@openai.com> * Document Ruff pre-commit checks Co-authored-by: OpenAI Codex <codex@openai.com> --------- Co-authored-by: OpenAI Codex <codex@openai.com>754345f -
Retry sandbox hardware requests (#210)
Unverified signature* Retry sandbox hardware requests Retry transient Hub errors when requesting hardware for a newly duplicated private sandbox Space. This covers the deployed OAuth path where duplicate succeeds but /hardware can briefly return 401/Repository Not Found before the private Space is manageable. Co-authored-by: OpenAI Codex <codex@openai.com> * Address sandbox retry review feedback Narrow transient hardware retry handling to 401 and 404, add coverage for timeout propagation, and fix top-level spacing. Co-authored-by: OpenAI Codex <codex@openai.com> * Ensure auto CPU sandboxes are cleaned up Persist sandbox identity on session records, clean stale sandboxes during restore, skip preloading when delete/teardown restores a session, and clean live sandboxes during backend shutdown. Add a scheduled orphan sweeper workflow as a backstop. Co-authored-by: OpenAI Codex <codex@openai.com> * Remove scheduled sandbox sweeper Delete the GitHub Actions cron workflow for orphan sandbox cleanup and…7636865
-
Track Pro conversions + credits top-up; emit user_id + new KPIs (#174)
Aksel Joonas ReediUnverified signatureAdds two telemetry events the dashboard needs to answer "how many users converted to Pro?" and "how many came back from a billing block?": - pro_conversion: per-user Pro state lives in a new Mongo `pro_users` collection. mark_pro_seen upserts on every authenticated request and uses an atomic find_one_and_update to fire at-most-once when a user first appears as Pro after having been seen as non-Pro. Wired through session_manager.create_session via the existing `is_pro` signal from /auth. - credits_topped_up: fires from jobs_tool when an hf_job submit succeeds in a session that previously hit a billing-required tool_state_change. Guarded against re-firing within a session. build_kpis aggregates both as plain count columns. CLI/local users with no Mongo silently skip via the NoopSessionStore stub.2715896 -
fix(sandbox): retry cleanup on transient failures + add backstop sweeper (#163)
Guillaume SalouUnverified signature* fix(sandbox): retry delete on transient failures + add backstop sweeper The agent creates a sandbox Space per session (template duplicated from burtenshaw/sandbox into the user's account). A scan on 2026-04-27 found 2,310 orphan sandbox-* Spaces — every sandbox ever created was still around. Two failure modes were causing the leak: 1. The cleanup in `_run_session.finally` doesn't fire if the pod is killed (OOM, deploy rollout, pre-emption) or if the WebSocket drops without a /shutdown. 2. When `sandbox.delete` itself failed (HF API 5xx, transient network blip, rate-limit), the previous code logged a warning and moved on. No retry, no recovery — the Space lived forever. This PR addresses both: - `_cleanup_sandbox` now retries 3× with exponential backoff (1s, 2s). Closes the transient-failure path. - New `scripts/sweep_orphan_sandboxes.py` is a standalone sweeper that finds sandbox-* forks of burtenshaw/sandbox older than N days and deletes them. Designed to run …1d50c78
-
feat(kpis): per-tool counts, research engagement, surface split (#160)
Aksel Joonas ReediUnverified signature* feat(kpis): per-tool counts, research engagement, surface split Adds intra-session telemetry to the KPI rollup so the observatory dashboard can answer "is the agent reaching for research?" and "which tools dropped out of the mix?". Production data (Apr 21->27, 21k+ sessions) shows the sessions-with-research rate dropped from ~78% on Apr 21 to ~56% on Apr 27 — without per-tool counts in the rollup, that signal was invisible to the dashboard. Also resolves the long-standing drift between this repo's scripts/build_kpis.py and the observatory's backend/build_kpis.py (both pipelines write to smolagents/ml-intern-kpis; whichever ran last dropped the other's columns). The observatory copy was the superset; this PR brings scripts/ up to it. Going forward both copies are byte-identical. Drift fix (incoming from observatory): - cost_per_session_mean / _p50 / _p95 - tool_calls_total / _succeeded / _failed counts - successful_sessions / errored_sessions / regenerated_sessions counts - sandbox…f9305f6
-
Run jobs under user or org accounts with upgrade / org-pick UX (#132)
Aksel Joonas ReediUnverified signature* agent/core/agent_loop.py: jobs access rewiring * agent/core/telemetry.py: jobs access rewiring * agent/tools/jobs_tool.py: jobs access rewiring * backend/dependencies.py: jobs access rewiring * backend/models.py: jobs access rewiring * backend/routes/agent.py: jobs access rewiring * frontend/src/components/Chat/ChatInput.tsx: jobs access rewiring * frontend/src/components/ClaudeCapDialog.tsx: jobs access rewiring * frontend/src/components/SessionChat.tsx: jobs access rewiring * frontend/src/hooks/useAgentChat.ts: jobs access rewiring * frontend/src/lib/sse-chat-transport.ts: jobs access rewiring * frontend/src/store/agentStore.ts: jobs access rewiring * frontend/src/types/agent.ts: jobs access rewiring * scripts/build_kpis.py: jobs access rewiring * tests/unit/test_build_kpis.py: jobs access rewiring * agent/core/hf_access.py: jobs access rewiring * frontend/src/components/JobsUpgradeDialog.tsx: jobs access rewiring * tests/unit/test_hf_access.py: jobs access rewirin…ff8c636
-
feat(observability)
Aksel Joonas ReediUnverified signature2a2e170