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 5d226a28ab
commit ea34afaff6
10 changed files with 128 additions and 12 deletions

View File

@@ -1779,6 +1779,40 @@ export class CentralCore extends EventEmitter<CentralCoreEvents> {
return row?.path;
}
async resolveProjectWorkingDirectory(projectId: string, nodeId: string): Promise<string> {
this.ensureInitialized();
const project = await this.getProject(projectId);
if (!project) {
throw new Error(`Project not found: ${projectId}`);
}
const node = await this.getNode(nodeId);
if (!node) {
throw new Error(`Node not found: ${nodeId}`);
}
const mappedPath = await this.getProjectNodePath(projectId, nodeId);
if (!mappedPath) {
throw new Error(
`Project/node path mapping not found for projectId=${projectId} nodeId=${nodeId}`,
);
}
return mappedPath;
}
async resolveLocalProjectWorkingDirectory(projectId: string): Promise<string> {
this.ensureInitialized();
const localNode = await this.getLocalNode();
if (!localNode) {
throw new Error("Local node not found");
}
return this.resolveProjectWorkingDirectory(projectId, localNode.id);
}
async listProjectNodePathMappings(filters?: {
projectId?: string;
nodeId?: string;