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

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions