feat(cli): place environments and tasksets in a Project - #589
feat(cli): place environments and tasksets in a Project#589solvemproblr wants to merge 1 commit into
Conversation
a2ba5b6 to
cfead72
Compare
15a0089 to
46c5f09
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 46c5f09. Configure here.
| EnvironmentSource.open(), | ||
| flag=project, | ||
| console=hud_console, | ||
| ) |
There was a problem hiding this comment.
Writable check blocks sync no-ops
Medium Severity
resolve_writable_placement runs before the sync plan is known, so a pinned read-only project aborts the command even when nothing would be written. That blocks --dry-run and the “all tasks up to date” path for anyone whose .hud/config.json names a project they cannot create in, despite those flows only needing placement for display or for a later upload.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 46c5f09. Configure here.


Summary
Gives the CLI a way to say which HUD Project a new environment or taskset belongs to. Without this, everything the CLI creates lands in the team's default project, which is fine until a team starts separating work.
hud projectreports where a deploy from this directory would land,hud project listshows the projects you can see,hud project create <name>makes one, andhud project use <name>pins the directory by writingprojectIdto.hud/config.json.hud deployandhud sync taskstake--project <name-or-id>and otherwise follow the pinned directory. Both sendproject_idon create and write the resolved project back into.hud/config.json, so a teammate deploying the same directory places it the same way.HUD_PROJECTis a machine-wide fallback for directories that are not pinned. Precedence is the flag, then.hud/config.json, thenHUD_PROJECT, then the team default.An environment or taskset that already exists stays where it is; naming a different project fails rather than moving it, since the platform does not support moving a resource between projects.
Depends on the platform's Projects API (
/projects, andproject_idaccepted on environment and taskset create). Until that ships, the new commands return errors against production.Test plan
hud project list,hud project create,hud project use, and barehud projectagainst a control plane with the Projects APIhud deploywith--project, with a pinned directory, withHUD_PROJECT, and with none of the threehud sync tasksin the same four caseshud/cli/utils/tests/test_project.py,hud/cli/tests/test_deploy.py,hud/eval/tests/test_sync.pyMade with Cursor