Skip to content

Extend monorepo support to non-JS workspaces (Rust, Go, Python) #946

@acreeger

Description

@acreeger

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions