Spaces:
Sleeping
Sleeping
Commit History
-
Use user token for LLM health checks
6a1ff53 -
Remove ml-agent-explorers org gate from Space copy
a5f4867 -
Configure Space OAuth and HF model defaults
1f8a1fb -
Add Hugging Face Space metadata
1a47088 -
Title gen: swap Llama-3.1-8B for gpt-oss-120b via Cerebras (#58)
Aksel Joonas ReediUnverified signaturef30ed48 -
Title generation: pin to Llama-3.1-8B-Instruct via Cerebras, plain-text output (#53)
Aksel Joonas ReediUnverified signature* Hardcode title generation to gpt-oss-20b via Groq, strip markdown The chat tab headline renders the returned string as plain text, so any markdown characters in the LLM's response render as literal garbage. Pins the title endpoint to openai/gpt-oss-20b:groq on the HF router (bypassing the shared resolver, which routes openai/ prefixes to the native OpenAI API), tightens the system prompt to forbid markdown, and strips common formatting characters on the way out as a safety net. * Fix title gen: double-prefix model id, enable reasoning, widen budget Verified end-to-end against the HF router: - LiteLLM strips its provider prefix before dispatch, so passing 'openai/gpt-oss-20b:groq' sent 'gpt-oss-20b:groq' to the router and got back 'model does not exist'. Double-prefixing to 'openai/openai/gpt-oss-20b:groq' leaves the correct HF id on the wire. - gpt-oss-20b is a reasoning model; with max_tokens=20 it used the whole budget on reasoning and returned empty content. Setting …849c88c -
Make X-HF-Bill-To configurable via HF_BILL_TO env (default smolagents) (#57)
Aksel Joonas ReediUnverified signature0b64e00 -
Restore expired sessions via summary-based catch-up (#52)
Aksel Joonas ReediUnverified signatureWhen the backend loses a session (typically: HF Space restarted), the chat now shows a small inline banner instead of silently erroring: Where were we? Let me skim the conversation so far and pick up right where we left off — or we can start something new. [ Catch me up ] [ Start fresh ] Flow, in one pass: * Frontend stashes the raw backend messages in localStorage on every mount-hydrate and turn_complete. When the backend 404s for the session id, the SSE transport and the mount effect both fire onSessionDead → the session is flagged `expired` in sessionStore; the sidebar marks it "needs a catch-up". * Catch me up → POST /api/session/restore-summary with the cached messages. Backend creates a fresh session, runs the existing summarizer (factored into summarize_messages() and shared with in-session compaction) with a restore-specific prompt that preserves the tool-call trail, and seeds the new session with that summary wrapped in a [SYS…962191f -
Read max context from litellm + compact at 90% (#54)
Aksel Joonas ReediUnverified signature* Read max context from litellm.get_model_info + compact at 90% The local _MAX_TOKENS_MAP had Claude Opus 4.6 pinned at 200k, triggering compaction at ~20% of its real 1M window. Swap the hand-maintained table for litellm.get_model_info()['max_input_tokens'], which LiteLLM keeps in sync upstream (Opus 4.6=1M, GPT-5=272k, Sonnet 4.5=200k, etc.). HF router-only ids (MiniMax, Kimi, GLM) aren't in litellm's catalog and fall through to the 200k default — close enough to their advertised ranges and safe if the model lies. Also shifts compaction to fire at 90% of max_context instead of >100%. The old condition waited until context had already overshot, risking the next LLM call hitting ContextWindowExceededError before the compact finished. 90% gives headroom for the summary call + one more turn. * Drop the legacy -10k buffer — the 90% ratio is the headroom now ContextManager was subtracting a fixed 10k tokens from max_context on top of the new 90% compaction threshold, so a 1M-window Opu…28b8f2b -
Fix parallel-research display: per-call stats in CLI and web UI (#49)
Aksel Joonas Reedi +1: lee101 Unverified signatureWhen multiple research sub-agents ran concurrently, the CLI collapsed them into a single flickering slot and every web-UI tool card showed the aggregate across all agents — so 3 parallel calls looked like 1. CLI (agent/utils/terminal_display.py): - Replace the global SubAgentDisplay singleton with SubAgentDisplayManager that tracks each agent by agent_id and renders one block per agent with independent (tool count · tokens · elapsed). - 4 rolling tool-call lines per agent (was 2). - When 2+ agents are live, switch to a compact one-line-per-agent layout (label + stats + most-recent tool). Detailed 4-line rolling view only when a single agent is active. Keeps the live region small enough to fit on one terminal page so cursor-up/erase doesn't drift when content would otherwise scroll into scrollback. - Clip every live-region line to terminal width (ANSI-aware) so a wrapped line can't corrupt the cursor-up math on narrow terminals. - On completion, erase the live block and f…5ab7c4e -
Merge pull request #50 from huggingface/fix/ctrl-c-and-streaming-rework
Aksel Joonas ReediUnverified signatureCLI: global Ctrl+C, progressive streaming, headless cleanup1481358 -
Merge pull request #51 from huggingface/feat/hf-auto-routing
Aksel Joonas ReediUnverified signatureRoute HF inference through /v1 auto-router + reasoning effort knobdc35197 -
Fix CLI particle logo text: ML AGENT → ML INTERN (#46)
Aksel Joonas ReediUnverified signature8b5b1bf -
Scope model selection per session instead of globally
Sessions now clone the config on creation, so switching model in one tab only affects that tab. SessionInfo carries a `model` field the selector reads on session change; writes go to a new POST /api/session/{id}/model endpoint. The global /api/config/model route still controls the default for new sessions. Unblocks running Claude in one chat and GLM 5.1 in another concurrently.bf564b6 -
Drop 'Via' prefix from provider subtitles
f0db8ab -
Show default provider under each HF-routed model in selector
Matches the 'Via Fireworks / Via Novita' convention the selector already had before the bare-id switch. Providers taken from the router's current :fastest ordering (live, tool-capable): Novita for MiniMax M2.7 and Kimi K2.6, Together for GLM 5.1.4c14bc5 -
Use model maker as subtitle in selector, not routing mechanic
'HF auto-routed' read as a plumbing detail. Matching the Claude row's 'Anthropic' convention, show who built the model — MiniMax, Moonshot AI, Z.ai — which is what users actually recognize.84d6f33 -
Strip provider_specific_fields from research sub-agent messages
LiteLLM's response Message carries internal fields (provider_specific_fields, reasoning_content) that the HF router's strict OpenAI schema rejects when echoed back in a follow-up request. Rebuild the assistant Message with only role / content / tool_calls before appending to the research history. Reproduced on MiniMaxAI/MiniMax-M2.7 (the reported failure) and verified the fix across MiniMax, Kimi, GLM, Claude Opus, and GPT-5 in a multi-turn tool-calling loop.a2e8010 -
Route HF inference through /v1 auto-router + add reasoning_effort knob
Users paste bare HF model ids (MiniMaxAI/MiniMax-M2.7, moonshotai/Kimi-K2.6) with an optional :fastest|cheapest|preferred|<provider> suffix; the router picks a provider and handles failover. /model does a live preflight against /v1/models and prints providers, pricing, context, tool support — warn-and- allow for unknowns with fuzzy suggestions. Friendly messages replace LiteLLM's raw traceback for model/provider mismatches, and the noisy 'Give Feedback' banner is suppressed. Adds a reasoning_effort config + /effort command (default high). OpenAI and Anthropic get the top-level param natively; HF router gets it via extra_body with minimal->low normalization for models like MiniMax M2 that require reasoning. Frontend + backend model selectors updated to the bare-id format.0a9e96d -
CLI: global Ctrl+C handling, progressive streaming, headless cleanup
Ctrl+C: - Install a SIGINT handler via loop.add_signal_handler, re-armed each loop iteration since prompt_toolkit wipes it on prompt_async exit. - First press cancels the current turn (session.cancel() sets the asyncio Event the agent loop already checks between tokens and tool boundaries). - Second press within 1s exits the CLI. Hint is shown on first press. - Approval prompt Ctrl+C/EOF rejects remaining items instead of crashing the event listener (which used to deadlock the main loop). Streaming: - print_markdown is async and uses asyncio.sleep for the typewriter, so the event loop can service signal handlers between characters. The old time.sleep loop was blocking SIGINT delivery during a full response. - On Ctrl+C mid-render, stop cleanly (no dumping the remainder) and emit an ANSI reset so half-open color state doesn't bleed onto the next line. - _StreamBuffer renders block-by-block (paragraphs split on \\n\\n) as the LLM produces them, rather than buffering the wh…f08efb1
-
CLI /model: accept any inference-provider model id
Aksel Joonas ReediUnverified signature1c0de34 -
Fall back to user HF token for router when INFERENCE_TOKEN is unset (#39)
Aksel Joonas Reedi +1: Claude Opus 4.7 (1M context)Unverified signatureThe HF router code path only read INFERENCE_TOKEN, which is the shared server-side key set on the hosted Space so inference is free for users. On the CLI / self-hosted path that env var is absent, so requests went out with no bearer token and the router returned 401 — surfaced to users as "Authentication failed" even with a valid HF_TOKEN (issue #36). Resolve api_key in this order: 1. INFERENCE_TOKEN env (unchanged Space behavior — shared billing) 2. session.hf_token (user's OAuth / CLI token) 3. HF_TOKEN env (belt-and-suspenders for CLI) Applied to _resolve_hf_router_params, research_tool._resolve_llm_params, and ContextManager.compact. Fixes #36 Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>182ddee -
Change project title to 'ML Intern' and update description (#35)
Unverified signatureUpdated project title and description in README.md.d0a9a6f
-
Update README CLI examples for ml-intern rename
bb47b16 -
Rename CLI entry and Space assets from ml-agent to ml-intern
ae4a534 -
Add smolagents logo to README
dc638e9 -
Raise MAX_SESSIONS to 200 for 8 vCPU / 32 GB Space
feadff1
-
Rename product to ML Intern in frontend
Update page title, app header, welcome screen title, and the iframe 'Open' step labels from ML Agent to ML Intern.658b046 -
Rebrand frontend to ML Agent
Replace HF Agent branding and Hugging Face logo with ML Agent and the smolagents icon across the welcome screen, app header, favicon, and page title. Refresh the welcome screen tagline.a67b60f
-
Rewrite research workflow to lead with literature mining
Research sub-agent now starts from papers, not docs. Default workflow: anchor paper → citation graph crawl → read methodology sections → extract result-attributed recipes → validate datasets → then code. Output format requires ranked recipe table linking results to the exact dataset + method + hyperparams that produced them.3bf831e
-
Update README.md
Aksel Joonas ReediUnverified signature714ad5a -
Update README.md
Aksel Joonas ReediUnverified signatureb4cbee6 -
Remove HF Spaces frontmatter from GitHub README
a0149d1 -
Suppress whoosh SyntaxWarning noise on startup
18ac8bd -
Restore HF Spaces YAML frontmatter in README
6a4671a -
Update README.md
5a224e7 -
Update README.md
Aksel Joonas ReediUnverified signature96aa5ea -
Update README.md
Aksel Joonas ReediUnverified signature46e343d -
Update particle logo text to ML AGENT
b3993a3 -
Restore HF Spaces YAML frontmatter in README
8df001f -
Remove stale tests directory
54049e9 -
Update README.md
Aksel Joonas ReediUnverified signatureee20af8 -
Update README.md
Aksel Joonas ReediUnverified signaturea8621eb -
Update README.md
Aksel Joonas ReediUnverified signaturee19b961 -
Add ml-agent CLI entry point and update README
- Add [project.scripts] entry point so ml-agent can be installed globally via uv tool install and run from any directory - Extract cli() function from __main__ block for the entry point - Fix load_dotenv to also check project root .env when running from other directories - Rewrite README: installation, usage, architecture diagrams, events list to match current codebase275319a
-
4 steps shown
fdc5e27 -
Fix sandbox HF_TOKEN not available inside container
Secret was injected after the Space was already running, so the env var was never present in the container. Move secret injection to before the build/start cycle. Also bump OAuth token lifetime to 30 days.45e517a
-
removing extra agent tag
3605afc
-
Enhance terminal display with new markdown emphasis styles
Add support for various markdown emphasis styles in the terminal display, including strong, emphasis, code, code block, and headers. Update the Console configuration to ensure ANSI styles are preserved during rendering.e76b3d1
-
Refactor approval handling and enhance markdown table styles
4501765