feat(FN-3508): resolve node-specific working dirs and align runtime surfaces

- Add canonical working-directory resolution with node mapping support in core and engine paths
- Update runtime/multi-project documentation and include published-package changesets for the merged work
- Migrate roadmap dashboard surface to the bundled plugin registry flow and adjust lazy-view integration/tests
- Default non-ephemeral agents to active state and extend related agent/route/executor test coverage

Fusion-Task-Id: FN-3508
This commit is contained in:
Fusion
2026-05-08 17:04:14 -07:00
committed by gsxdsm
parent 7e749ae1f4
commit 6a6cb07d2c
10 changed files with 128 additions and 12 deletions

View File

@@ -114,7 +114,7 @@ export interface HybridExecutorOptions {
*
* await executor.addProject({
* projectId: project.id,
* workingDirectory: project.path,
* workingDirectory: await central.resolveLocalProjectWorkingDirectory(project.id),
* isolationMode: "in-process",
* maxConcurrent: 2,
* maxWorktrees: 4,
@@ -178,9 +178,13 @@ export class HybridExecutor extends EventEmitter<HybridExecutorEvents> {
for (const project of projects) {
if (project.status === "active" || project.status === "initializing") {
try {
const workingDirectory = await this.centralCore.resolveLocalProjectWorkingDirectory(
project.id,
);
await this.addProject({
projectId: project.id,
workingDirectory: project.path,
workingDirectory,
isolationMode: project.isolationMode,
maxConcurrent: project.settings?.maxConcurrent ?? 2,
maxWorktrees: project.settings?.maxWorktrees ?? 4,
@@ -275,11 +279,14 @@ export class HybridExecutor extends EventEmitter<HybridExecutorEvents> {
);
const project = await this.centralCore.getProject(projectId);
const workingDirectory = config.workingDirectory ?? project?.path;
if (!workingDirectory) {
if (!project) {
throw new Error(`Project not found in CentralCore: ${projectId}`);
}
const workingDirectory =
config.workingDirectory ??
(await this.centralCore.resolveLocalProjectWorkingDirectory(projectId));
// Stop old runtime
await this.projectManager.removeProject(projectId);