feat: Add Role Analysis Reviewer Agent and validation template

- Introduced Role Analysis Reviewer Agent to validate role analysis outputs against templates and quality standards.
- Created a detailed validation ruleset for the system-architect role, including mandatory and recommended sections.
- Added JSON validation report structure for output.
- Implemented execution command for validation process.

test: Add UX tests for HookCard component

- Created comprehensive tests for HookCard component, focusing on delete confirmation UX pattern.
- Verified confirmation dialog appearance, deletion functionality, and button interactions.
- Ensured proper handling of state updates and visual feedback for enabled/disabled status.

test: Add UX tests for ThemeSelector component

- Developed tests for ThemeSelector component, emphasizing delete confirmation UX pattern.
- Validated confirmation dialog display, deletion actions, and toast notifications for undo functionality.
- Ensured proper management of theme slots and state updates.

feat: Implement useDebounce hook

- Added useDebounce hook to delay expensive computations or API calls, enhancing performance.

feat: Create System Architect Analysis Template

- Developed a comprehensive template for system architect role analysis, covering required sections such as architecture overview, data model, state machine, error handling strategy, observability requirements, configuration model, and boundary scenarios.
- Included examples and templates for each section to guide users in producing SPEC.md-level precision modeling.
This commit is contained in:
catlog22
2026-03-05 19:58:10 +08:00
parent bc7a556985
commit 3fd55ebd4b
55 changed files with 4262 additions and 1138 deletions

View File

@@ -178,14 +178,19 @@ function buildIssueAutoPrompt(issue: Issue): string {
);
return lines.join('\n');
}
import { useNotificationStore } from '@/stores';
// ...
export function IssueBoardPanel() {
const { formatMessage } = useIntl();
const projectPath = useWorkflowStore(selectProjectPath);
const { addToast } = useNotificationStore();
const { issues, isLoading, error } = useIssues();
const { updateIssue } = useIssueMutations();
// ...
}
const [order, setOrder] = useState<BoardOrder>({});
const [selectedIssue, setSelectedIssue] = useState<Issue | null>(null);
const [drawerInitialTab, setDrawerInitialTab] = useState<'overview' | 'terminal'>('overview');
@@ -323,17 +328,19 @@ export function IssueBoardPanel() {
// Auto-open terminal panel to show execution output
useTerminalPanelStore.getState().openTerminal(created.session.sessionKey);
} catch (e) {
setOptimisticError(`Auto-start failed: ${e instanceof Error ? e.message : String(e)}`);
const errorMsg = `Auto-start failed: ${e instanceof Error ? e.message : String(e)}`;
setOptimisticError(errorMsg);
addToast('error', errorMsg);
}
}
}
} catch (e) {
setOptimisticError(e instanceof Error ? e.message : String(e));
}
}
},
[autoStart, issues, idsByStatus, projectPath, updateIssue]
);
}
}
} catch (e) {
setOptimisticError(e instanceof Error ? e.message : String(e));
}
}
},
[autoStart, issues, idsByStatus, projectPath, updateIssue, addToast]
);
if (error) {
return (