@@ -17,7 +17,31 @@ function Add-Finding {
1717 Rule = $Rule
1818 File = $File
1919 Message = $Message
20- })
20+ })
21+ }
22+
23+ function Resolve-RepoPath {
24+ param ([string ]$RelativePath )
25+
26+ $candidates = [System.Collections.Generic.List [string ]]::new()
27+ $candidates.Add ($RelativePath )
28+
29+ if ($RelativePath -match ' ^src[\\/](.+)$' ) {
30+ $candidates.Add (" lib/McpServer/src/$ ( $matches [1 ]) " )
31+ }
32+
33+ if ($RelativePath -match ' ^lib[\\/]McpServer[\\/]src[\\/](.+)$' ) {
34+ $candidates.Add (" src/$ ( $matches [1 ]) " )
35+ }
36+
37+ foreach ($candidate in $candidates | Select-Object - Unique) {
38+ $path = Join-Path $RepoRoot $candidate
39+ if (Test-Path - LiteralPath $path ) {
40+ return $path
41+ }
42+ }
43+
44+ return Join-Path $RepoRoot $RelativePath
2145}
2246
2347function Assert-ContainsPattern {
@@ -28,7 +52,7 @@ function Assert-ContainsPattern {
2852 [string ]$MissingMessage
2953 )
3054
31- $fullPath = Join-Path $RepoRoot $RelativePath
55+ $fullPath = Resolve-RepoPath $RelativePath
3256 if (-not (Test-Path - LiteralPath $fullPath )) {
3357 Add-Finding - Rule $Rule - File $RelativePath - Message " Required file not found."
3458 return
@@ -43,37 +67,37 @@ function Assert-ContainsPattern {
4367$adapterContracts = @ (
4468 @ {
4569 Rule = " ADP001"
46- File = " lib/McpServer/ src/McpServer.Director/TodoApiClientAdapter.cs"
70+ File = " src/McpServer.Director/TodoApiClientAdapter.cs"
4771 Pattern = " class\s+TodoApiClientAdapter\s*:\s*ITodoApiClient\b"
4872 Message = " Director TODO adapter must implement ITodoApiClient."
4973 },
5074 @ {
5175 Rule = " ADP002"
52- File = " lib/McpServer/ src/McpServer.Director/WorkspaceApiClientAdapter.cs"
76+ File = " src/McpServer.Director/WorkspaceApiClientAdapter.cs"
5377 Pattern = " class\s+WorkspaceApiClientAdapter\s*:\s*IWorkspaceApiClient\b"
5478 Message = " Director workspace adapter must implement IWorkspaceApiClient."
5579 },
5680 @ {
5781 Rule = " ADP003"
58- File = " lib/McpServer/ src/McpServer.Director/SessionLogApiClientAdapter.cs"
82+ File = " src/McpServer.Director/SessionLogApiClientAdapter.cs"
5983 Pattern = " class\s+SessionLogApiClientAdapter\s*:\s*ISessionLogApiClient\b"
6084 Message = " Director session log adapter must implement ISessionLogApiClient."
6185 },
6286 @ {
6387 Rule = " ADP004"
64- File = " lib/McpServer/ src/McpServer.Web/Adapters/TodoApiClientAdapter.cs"
88+ File = " src/McpServer.Web/Adapters/TodoApiClientAdapter.cs"
6589 Pattern = " class\s+TodoApiClientAdapter\s*:\s*ITodoApiClient\b"
6690 Message = " Web TODO adapter must implement ITodoApiClient."
6791 },
6892 @ {
6993 Rule = " ADP005"
70- File = " lib/McpServer/ src/McpServer.Web/Adapters/WorkspaceApiClientAdapter.cs"
94+ File = " src/McpServer.Web/Adapters/WorkspaceApiClientAdapter.cs"
7195 Pattern = " class\s+WorkspaceApiClientAdapter\s*:\s*IWorkspaceApiClient\b"
7296 Message = " Web workspace adapter must implement IWorkspaceApiClient."
7397 },
7498 @ {
7599 Rule = " ADP006"
76- File = " lib/McpServer/ src/McpServer.Web/Adapters/SessionLogApiClientAdapter.cs"
100+ File = " src/McpServer.Web/Adapters/SessionLogApiClientAdapter.cs"
77101 Pattern = " class\s+SessionLogApiClientAdapter\s*:\s*ISessionLogApiClient\b"
78102 Message = " Web session log adapter must implement ISessionLogApiClient."
79103 }
@@ -90,37 +114,37 @@ foreach ($contract in $adapterContracts) {
90114$registrationChecks = @ (
91115 @ {
92116 Rule = " ADP101"
93- File = " lib/McpServer/ src/McpServer.Director/DirectorServiceRegistration.cs"
117+ File = " src/McpServer.Director/DirectorServiceRegistration.cs"
94118 Pattern = " AddSingleton<ITodoApiClient>\s*\(_\s*=>\s*new\s+TodoApiClientAdapter\("
95119 Message = " Director service registration must wire ITodoApiClient to TodoApiClientAdapter."
96120 },
97121 @ {
98122 Rule = " ADP102"
99- File = " lib/McpServer/ src/McpServer.Director/DirectorServiceRegistration.cs"
123+ File = " src/McpServer.Director/DirectorServiceRegistration.cs"
100124 Pattern = " AddSingleton<IWorkspaceApiClient>\s*\(_\s*=>\s*new\s+WorkspaceApiClientAdapter\("
101125 Message = " Director service registration must wire IWorkspaceApiClient to WorkspaceApiClientAdapter."
102126 },
103127 @ {
104128 Rule = " ADP103"
105- File = " lib/McpServer/ src/McpServer.Director/DirectorServiceRegistration.cs"
129+ File = " src/McpServer.Director/DirectorServiceRegistration.cs"
106130 Pattern = " AddSingleton<ISessionLogApiClient>\s*\(_\s*=>\s*new\s+SessionLogApiClientAdapter\("
107131 Message = " Director service registration must wire ISessionLogApiClient to SessionLogApiClientAdapter."
108132 },
109133 @ {
110134 Rule = " ADP104"
111- File = " lib/McpServer/ src/McpServer.Web/WebServiceRegistration.cs"
135+ File = " src/McpServer.Web/WebServiceRegistration.cs"
112136 Pattern = " AddScoped<ITodoApiClient,\s*TodoApiClientAdapter>\s*\(\s*\)"
113137 Message = " Web service registration must wire ITodoApiClient to TodoApiClientAdapter."
114138 },
115139 @ {
116140 Rule = " ADP105"
117- File = " lib/McpServer/ src/McpServer.Web/WebServiceRegistration.cs"
141+ File = " src/McpServer.Web/WebServiceRegistration.cs"
118142 Pattern = " AddScoped<IWorkspaceApiClient,\s*WorkspaceApiClientAdapter>\s*\(\s*\)"
119143 Message = " Web service registration must wire IWorkspaceApiClient to WorkspaceApiClientAdapter."
120144 },
121145 @ {
122146 Rule = " ADP106"
123- File = " lib/McpServer/ src/McpServer.Web/WebServiceRegistration.cs"
147+ File = " src/McpServer.Web/WebServiceRegistration.cs"
124148 Pattern = " AddScoped<ISessionLogApiClient,\s*SessionLogApiClientAdapter>\s*\(\s*\)"
125149 Message = " Web service registration must wire ISessionLogApiClient to SessionLogApiClientAdapter."
126150 }
0 commit comments