Skip to content

Commit 1814833

Browse files
authored
Merge pull request #955 from Kyoungwoong/feature/story-line
feat: (vibe) NewViz Storyline UI 와 MCP 서버 연동
2 parents 01693d1 + 139d41b commit 1814833

16 files changed

Lines changed: 2215 additions & 174 deletions

packages/mcp/package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,20 @@
1919
"@modelcontextprotocol/sdk": "^1.12.1",
2020
"@octokit/rest": "^22.0.0",
2121
"cors": "^2.8.5",
22+
"d3": "^7.8.5",
2223
"dayjs": "^1.11.18",
2324
"express": "^5.1.0",
25+
"puppeteer": "^21.0.0",
26+
"react": "^18.2.0",
27+
"react-dom": "^18.2.0",
28+
"sharp": "^0.34.4",
2429
"zod": "^3.25.76"
2530
},
2631
"devDependencies": {
2732
"@smithery/cli": "^1.2.4",
33+
"@types/d3": "^7.4.3",
34+
"@types/react": "^18.2.0",
35+
"@types/react-dom": "^18.2.0",
2836
"copyfiles": "^2.4.1",
2937
"rimraf": "^6.0.1",
3038
"tsx": "^4.19.4"

packages/mcp/src/common/types.ts

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,6 @@ export interface ContributorRecommendation {
4242
notes: string[];
4343
}
4444

45-
export interface CommitInfo {
46-
sha: string;
47-
message: string;
48-
authorDate: string;
49-
changedFiles: string[];
50-
}
51-
52-
export interface FileChangeInfo {
53-
filename: string;
54-
additions?: number;
55-
deletions?: number;
56-
changes?: number;
57-
}
58-
5945
export interface CSMDictGeneratorInputs {
6046
repo: string;
6147
githubToken: string;
@@ -64,9 +50,49 @@ export interface CSMDictGeneratorInputs {
6450
debug?: boolean;
6551
}
6652

53+
export interface GitUser {
54+
name: string;
55+
email: string;
56+
}
57+
58+
export interface DifferenceStatistic {
59+
totalInsertionCount: number;
60+
totalDeletionCount: number;
61+
fileDictionary: { [filePath: string]: { insertionCount: number; deletionCount: number } };
62+
}
63+
64+
export interface CommitRaw {
65+
sequence: number;
66+
id: string;
67+
parents: string[];
68+
branches: string[];
69+
tags: string[];
70+
author: GitUser;
71+
authorDate: Date;
72+
committer: GitUser;
73+
committerDate: Date;
74+
message: string;
75+
differenceStatistic: DifferenceStatistic;
76+
commitMessageType: string;
77+
}
78+
79+
export interface CommitNode {
80+
stemId?: string;
81+
commit: CommitRaw;
82+
}
83+
84+
export interface CSMNode {
85+
base: CommitNode;
86+
source: CommitNode[];
87+
}
88+
89+
export interface CSMDictionary {
90+
[branch: string]: CSMNode[];
91+
}
92+
6793
export interface AnalysisResult {
6894
isPRSuccess: boolean;
69-
csmDict: Record<string, unknown[]>;
95+
csmDict: CSMDictionary;
7096
}
7197

7298
export interface CSMDictResult {
@@ -78,7 +104,7 @@ export interface CSMDictResult {
78104
isPRDataAvailable: boolean;
79105
branches: string[];
80106
totalClusters: number;
81-
csmDict: Record<string, unknown[]>;
107+
csmDict: CSMDictionary;
82108
};
83109
};
84110
metadata: {
@@ -89,7 +115,6 @@ export interface CSMDictResult {
89115
};
90116
}
91117

92-
// React Component Test Types
93118
export interface ReactComponentTestInputs {
94119
complexity?: "simple" | "medium" | "complex" | "all";
95120
componentType?: "basic" | "chart" | "form" | "data-display" | "interactive";
@@ -107,7 +132,6 @@ export interface ReactComponentTestResult {
107132
testQuestions: string[];
108133
}
109134

110-
// Data-driven React Component Types
111135
export interface DataDrivenComponentInputs {
112136
dataType?: "chart" | "table" | "list" | "card" | "all";
113137
sampleData?: boolean;

0 commit comments

Comments
 (0)