hoangsonww / hoangsonww/Forge-Agentic-Coding-CLI

Feature: Multi-Project Workspace Mode for Cross-Repository Planning and Execution

Open
#6 0 comments 0 reactions 1 assignee Claimed by @hoangsonww View on GitHub
bug documentation enhancement feature help wanted question
Dominant language
TypeScript
Stars
23
Forks
9
PR merge metrics
No merged PRs in 30d

Description

## Summary

Add a multi-project workspace mode that lets Forge reason about, plan across, and safely execute tasks spanning multiple repositories while preserving per-project sandbox, permission, memory, and persistence boundaries.

## Problem / Opportunity

Forge currently has strong local-first project semantics: project roots are discovered, paths are confined, tasks and conversations are stored per project, and memory indexing is scoped to a project root. Many real engineering tasks are multi-repository by nature:

- Update a CLI package and matching docs site.
- Change an SDK and a sample app together.
- Coordinate a backend API change with a frontend consumer.
- Audit shared configuration across several checked-out repositories.
- Apply a migration plan across a monorepo-like workspace that is not a single Git root.

Without explicit workspace support, users must run separate Forge tasks and manually keep context synchronized.

## Proposed Feature

Introduce a workspace abstraction that can include multiple project roots and provide:

- `forge workspace init`, `forge workspace add`, `forge workspace list`, and `forge workspace run` commands.
- Per-project permission scopes and sandbox boundaries inside a single workspace task.
- Cross-project planning where the planner can produce a DAG with project-qualified steps.
- Memory retrieval that can search selected projects while preserving source attribution.
- Dashboard support for workspace task timelines grouped by project.
- Workspace-level summaries, but project-level durable task/session/conversation records.

## Scope

Expected implementation areas:

- `src/config/loader.ts` and `src/config/paths.ts` for workspace config and path resolution.
- `src/core/orchestrator.ts`, `src/core/loop.ts`, and `src/scheduler/dag.ts` for project-qualified steps.
- `src/sandbox/fs.ts` for multi-root confinement without weakening realpath protections.
- `src/permissions/manager.ts` for project-specific grants during workspace execution.
- `src/memory/retrieval.ts`, `src/memory/cold.ts`, and index persistence for scoped multi-project search.
- `src/cli/commands/` and `src/ui/server.ts` for workspace commands and views.
- Documentation in `docs/ARCHITECTURE.md`, `docs/SETUP.md`, and `docs/CLI-REFERENCE.md`.

## Acceptance Criteria

- [ ] Users can define a workspace with two or more project roots using CLI commands.
- [ ] Workspace tasks produce project-qualified plan steps and preserve each project's sandbox boundary.
- [ ] File/tool actions cannot cross from one project root into another unless the target project is explicitly part of the workspace.
- [ ] Permission grants are evaluated with the correct project id and never silently become global.
- [ ] Memory search can query all workspace projects or a selected subset with clear source attribution.
- [ ] The dashboard can show a workspace task grouped by project, including status and recent events.
- [ ] Tests cover cross-root path confinement, permission scoping, and workspace DAG execution.
- [ ] Documentation includes examples for multi-repo app/API changes and migration-style workflows.

## Non-Goals

- Replacing Git submodules or package manager workspaces.
- Allowing arbitrary filesystem roots outside explicit workspace membership.
- Implementing distributed execution across machines.
- Automatically committing or pushing changes across repositories.

## Dependencies / Risks

- This feature touches core invariants around project root discovery and sandbox confinement.
- Existing task state transitions in `src/persistence/tasks.ts` must remain legal and explicit.
- UI and CLI need consistent vocabulary for workspace, project, task, and step identifiers.
- Memory indexing could become expensive if workspace searches are not bounded.

## Open Questions

- Should workspace definitions live in a project-local file, global config, or both?
- Should workspace tasks have a top-level id in addition to per-project task ids?
- How should `forge resume` behave for a partially completed workspace task?
- Should the first version support nested repositories inside a parent repository?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.