diff --git a/agent/prompts/system_prompt_v3.yaml b/agent/prompts/system_prompt_v3.yaml index 4543048f..ae668e85 100644 --- a/agent/prompts/system_prompt_v3.yaml +++ b/agent/prompts/system_prompt_v3.yaml @@ -66,7 +66,7 @@ system_prompt: | report_to="trackio" run_name="" # e.g. "sft_qwen3-4b_lr2e-5_bs128" project="" # keeps related runs grouped so you can compare them - trackio_space_id="/mlintern-<8-char-id>" # creates a public dashboard Space + trackio_space_id="/ml-intern-<8-char-id>" # creates a public dashboard Space `project` and `trackio_space_id` can also be set via TRACKIO_PROJECT / TRACKIO_SPACE_ID env vars. Alerts are how iterations decide what to change. Use trackio.alert(title, text, level) at every decision point in training. Levels: diff --git a/agent/tools/jobs_tool.py b/agent/tools/jobs_tool.py index 29d6b301..c0b793f5 100644 --- a/agent/tools/jobs_tool.py +++ b/agent/tools/jobs_tool.py @@ -1116,7 +1116,7 @@ async def _resume_scheduled_job(self, args: Dict[str, Any]) -> ToolResult: "Job storage is EPHEMERAL — all files are deleted when the job ends. Without push_to_hub, trained models are lost permanently.\n" "- Include trackio monitoring and provide the dashboard URL to the user. " "When the script uses report_to='trackio', also pass `trackio_space_id` " - "(e.g. '/mlintern-<8char>') and `trackio_project` as tool args — " + "(e.g. '/ml-intern-<8char>') and `trackio_project` as tool args — " "they are injected as TRACKIO_SPACE_ID/TRACKIO_PROJECT env vars and let the UI embed the live dashboard.\n\n" "BATCH/ABLATION JOBS: Submit ONE job first. Check logs to confirm it starts training successfully. " "Only then submit the remaining jobs. Never submit all at once — if there's a bug, all jobs fail.\n\n" @@ -1204,7 +1204,7 @@ async def _resume_scheduled_job(self, args: Dict[str, Any]) -> ToolResult: "type": "string", "description": ( "Optional. The HF Space hosting the trackio dashboard for this run " - "(e.g. '/mlintern-<8char>', under YOUR HF namespace). " + "(e.g. '/ml-intern-<8char>', under YOUR HF namespace). " "Injected as TRACKIO_SPACE_ID env var and used by the UI to embed " "the live dashboard. Set this whenever the script uses " "report_to='trackio'. The Space is auto-created and seeded with the " diff --git a/agent/tools/sandbox_tool.py b/agent/tools/sandbox_tool.py index fbc6a41f..0631194f 100644 --- a/agent/tools/sandbox_tool.py +++ b/agent/tools/sandbox_tool.py @@ -542,7 +542,7 @@ async def teardown_session_sandbox(session: Any) -> None: "Common picks: t4-small (16GB VRAM, fits ≤1-3B), a10g-small (24GB, ≤7B), a100-large (80GB, ≤30B). " "If the model won't fit, pick larger hardware upfront — OOM on a sandbox wastes time.\n\n" "If you intend to run a training script in this sandbox that uses report_to='trackio', " - "pass `trackio_space_id` (e.g. '/mlintern-<8char>') and `trackio_project` so they " + "pass `trackio_space_id` (e.g. '/ml-intern-<8char>') and `trackio_project` so they " "are set as TRACKIO_SPACE_ID/TRACKIO_PROJECT secrets in the sandbox and the UI can embed the live dashboard.\n\n" "Hardware: " + ", ".join([e.value for e in SpaceHardware]) + ".\n" ), @@ -563,7 +563,7 @@ async def teardown_session_sandbox(session: Any) -> None: "type": "string", "description": ( "Optional. The HF Space hosting the trackio dashboard for runs in this sandbox " - "(e.g. '/mlintern-<8char>', under YOUR HF namespace). Injected as " + "(e.g. '/ml-intern-<8char>', under YOUR HF namespace). Injected as " "TRACKIO_SPACE_ID secret and surfaced to the UI. The Space is auto-created and " "seeded with the trackio dashboard — DO NOT pre-create it via hf_repo_git, " "that produces an empty Space that breaks the embed." diff --git a/tests/unit/test_trackio_space_ids.py b/tests/unit/test_trackio_space_ids.py new file mode 100644 index 00000000..c73a2a05 --- /dev/null +++ b/tests/unit/test_trackio_space_ids.py @@ -0,0 +1,16 @@ +import json +from pathlib import Path + +from agent.tools.jobs_tool import HF_JOBS_TOOL_SPEC +from agent.tools.sandbox_tool import SANDBOX_CREATE_TOOL_SPEC + + +def test_trackio_space_examples_use_hyphenated_ml_intern_prefix(): + prompt = Path("agent/prompts/system_prompt_v3.yaml").read_text() + tool_specs = json.dumps([HF_JOBS_TOOL_SPEC, SANDBOX_CREATE_TOOL_SPEC]) + legacy_prefix = "ml" + "intern" + + assert "/ml-intern-<8-char-id>" in prompt + assert "/ml-intern-<8char>" in tool_specs + assert legacy_prefix not in prompt + assert legacy_prefix not in tool_specs