11import { Tool } from '@modelcontextprotocol/sdk/types.js' ;
22import { StorybookClient } from '../utils/storybook-client.js' ;
3- import { handleError , formatSuccessResponse , handleErrorWithContext } from '../utils/error-handler.js' ;
3+ import { formatSuccessResponse , handleErrorWithContext } from '../utils/error-handler.js' ;
44import { validateGetComponentByPurposeInput } from '../utils/validators.js' ;
55import { ComponentByPurpose } from '../types/storybook.js' ;
66import { applyPagination , formatPaginationMessage } from '../utils/pagination.js' ;
@@ -156,8 +156,9 @@ const PURPOSE_PATTERNS: Record<string, { patterns: RegExp[]; description: string
156156} ;
157157
158158export async function handleGetComponentByPurpose ( input : any ) {
159+ let validatedInput : any ;
159160 try {
160- const validatedInput = validateGetComponentByPurposeInput ( input ) ;
161+ validatedInput = validateGetComponentByPurposeInput ( input ) ;
161162 const purposeLower = validatedInput . purpose . toLowerCase ( ) ;
162163 const client = new StorybookClient ( ) ;
163164
@@ -180,24 +181,24 @@ export async function handleGetComponentByPurpose(input: any) {
180181 } else {
181182 // Create patterns from the purpose string
182183 const words = purposeLower . split ( / \s + / ) ;
183- patterns = words . map ( word => new RegExp ( word , 'i' ) ) ;
184+ patterns = words . map ( ( word : string ) => new RegExp ( word , 'i' ) ) ;
184185 description = `Components related to ${ validatedInput . purpose } ` ;
185186 }
186187
187188 // Create filter function for purpose matching
188189 const filterFn = ( story : any , componentName : string ) => {
189190 const componentTitle = story . title || '' ;
190191 const storyName = story . name || story . story || '' ;
191-
192+
192193 return patterns . some (
193194 pattern =>
194195 pattern . test ( componentTitle ) || pattern . test ( storyName ) || pattern . test ( componentName )
195196 ) ;
196197 } ;
197198
198- const componentMap = mapStoriesToComponents ( stories , {
199+ const componentMap = mapStoriesToComponents ( stories , {
199200 filterFn,
200- useComponentKey : 'title'
201+ useComponentKey : 'title' ,
201202 } ) ;
202203 const allComponents = getComponentsArray ( componentMap ) ;
203204
@@ -221,12 +222,8 @@ export async function handleGetComponentByPurpose(input: any) {
221222
222223 return formatSuccessResponse ( result , message ) ;
223224 } catch ( error ) {
224- return handleErrorWithContext (
225- error ,
226- 'get components by purpose' ,
227- {
228- resource : 'components by purpose'
229- }
230- ) ;
225+ return handleErrorWithContext ( error , 'get components by purpose' , {
226+ resource : 'components by purpose' ,
227+ } ) ;
231228 }
232229}
0 commit comments