feat(architecture): add multi-subproject awareness and automatic context resync
- Implemented subproject root resolution based on active editor hint - Added debounced event listener for active editor changes to trigger chip status updates - Updated sidebar provider to re-resolve active subproject root on every chip build - This ensures correct architecture context is injected when working in a monorepo or multi-root-style parent folder
This commit is contained in:
+18
-2
@@ -31,6 +31,7 @@ import {
|
||||
buildOrRefreshArchitectureDoc,
|
||||
architectureDocPathFor,
|
||||
formatArchitectureContextForPrompt,
|
||||
resolveActiveSubprojectRoot,
|
||||
scanProject,
|
||||
} from './features/projectArchitecture';
|
||||
import { detectProjectIntent, KnownProject } from './features/projectArchitecture/intentDetector';
|
||||
@@ -1217,8 +1218,14 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn
|
||||
* is free.
|
||||
*/
|
||||
async _ensureActiveProjectForWorkspace(): Promise<ProjectProfile | null> {
|
||||
const workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
||||
if (!workspaceRoot) return null;
|
||||
const wsRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
||||
if (!wsRoot) return null;
|
||||
// When the parent folder contains several subprojects, use the active
|
||||
// editor's location to pick the *effective* subproject root instead of
|
||||
// always reporting the parent.
|
||||
const hint = vscode.window.activeTextEditor?.document.uri.fsPath
|
||||
?? vscode.window.visibleTextEditors[0]?.document.uri.fsPath;
|
||||
const workspaceRoot = resolveActiveSubprojectRoot(wsRoot, hint);
|
||||
const projects = this._getChronicleProjects();
|
||||
const active = this._getActiveChronicleProject();
|
||||
const norm = (p: string | undefined) => (p || '').replace(/[\\/]+$/, '').toLowerCase();
|
||||
@@ -2484,6 +2491,15 @@ export class SidebarChatProvider implements vscode.WebviewViewProvider, BridgeIn
|
||||
logError('architecture: intent detection failed.', { error: e?.message ?? String(e) });
|
||||
}
|
||||
}
|
||||
// Re-resolve the active subproject from the currently-focused editor.
|
||||
// Without this, switching between subprojects (e.g. ConnectAI →
|
||||
// Datacollector) inside one VS Code window keeps loading the previous
|
||||
// subproject's architecture into the prompt.
|
||||
try {
|
||||
await this._ensureActiveProjectForWorkspace();
|
||||
} catch (e: any) {
|
||||
logError('architecture: workspace resync failed.', { error: e?.message ?? String(e) });
|
||||
}
|
||||
const projectArchitectureContext = this._buildProjectArchitectureContext();
|
||||
|
||||
// [File Processing v2] 파일 타입별 분류 처리
|
||||
|
||||
Reference in New Issue
Block a user