Summary
Extend the monorepo package-aware command system to support non-JavaScript workspace managers including Rust (Cargo workspaces), Go (go.work), and Python (uv workspaces).
Context
The monorepo support introduced in #938 uses JavaScript package manager filter syntax (pnpm --filter, yarn workspace, npm --workspace) to scope commands. The architecture — agent sets metadata, il commands read and scope — is language-agnostic, but command scoping needs per-language adapters.
This is a tracking issue for future work. The core architecture from #938 should be designed to accommodate these extensions.
Scope
Rust — Cargo Workspaces
- Detection:
[workspace] members in Cargo.toml
- Scoping:
cargo test -p <crate>, cargo build -p <crate>
- Agent guidance: detection agent needs Cargo workspace awareness
Go — Multi-Module Workspaces
- Detection:
go.work file
- Scoping:
go test ./module/..., go build ./module/...
- Agent guidance: detection agent needs go.work awareness
Python — uv Workspaces
- Detection:
[tool.uv.workspace] in pyproject.toml
- Scoping:
pytest packages/foo/tests/, package-specific commands
- Agent guidance: detection agent needs uv workspace awareness
Design Considerations
- The
package.iloom.json scripts system already supports non-JS projects — this extends it with workspace awareness
- The detection agent's prompt needs per-language monorepo detection guidance
- The
"monorepo" capability and metadata fields (packagesToRun, packagesToValidate) are reused as-is
- Command scoping in il test/lint/compile/build needs language-aware filter syntax or delegation to
package.iloom.json scripts
Prerequisites
Summary
Extend the monorepo package-aware command system to support non-JavaScript workspace managers including Rust (Cargo workspaces), Go (go.work), and Python (uv workspaces).
Context
The monorepo support introduced in #938 uses JavaScript package manager filter syntax (pnpm
--filter, yarnworkspace, npm--workspace) to scope commands. The architecture — agent sets metadata, il commands read and scope — is language-agnostic, but command scoping needs per-language adapters.This is a tracking issue for future work. The core architecture from #938 should be designed to accommodate these extensions.
Scope
Rust — Cargo Workspaces
[workspace] membersinCargo.tomlcargo test -p <crate>,cargo build -p <crate>Go — Multi-Module Workspaces
go.workfilego test ./module/...,go build ./module/...Python — uv Workspaces
[tool.uv.workspace]inpyproject.tomlpytest packages/foo/tests/, package-specific commandsDesign Considerations
package.iloom.jsonscripts system already supports non-JS projects — this extends it with workspace awareness"monorepo"capability and metadata fields (packagesToRun,packagesToValidate) are reused as-ispackage.iloom.jsonscriptsPrerequisites