ci: dev version includes UTC time (dev-YYYYMMDD-HHmm)
Build & Push Docker Image / build (push) Successful in 2m36s
Build & Push Docker Image / build (push) Successful in 2m36s
Phase 1: browse power-up - faceted filters: tags + features (array containment) and min rating on listTools; new ?tags=?features=?minRating= URL params with chips - global Cmd+K command palette (cmdk) with tool search + navigation - mini usefulness/usability bars on grid cards, wide cards and table rows
This commit is contained in:
@@ -338,6 +338,20 @@ export type ListToolsParams = {
|
||||
category?: string;
|
||||
search?: string;
|
||||
sort?: ListToolsSort;
|
||||
/**
|
||||
* Comma-separated tags; tool must include all of them
|
||||
*/
|
||||
tags?: string;
|
||||
/**
|
||||
* Comma-separated features; tool must include all of them
|
||||
*/
|
||||
features?: string;
|
||||
/**
|
||||
* Minimum average combined rating (0-5)
|
||||
* @minimum 0
|
||||
* @maximum 5
|
||||
*/
|
||||
minRating?: number;
|
||||
};
|
||||
|
||||
export type ListToolsSort = typeof ListToolsSort[keyof typeof ListToolsSort];
|
||||
|
||||
@@ -73,6 +73,26 @@ paths:
|
||||
schema:
|
||||
type: string
|
||||
enum: [newest, top_rated, most_reviewed, name_asc, name_desc, recently_updated]
|
||||
- name: tags
|
||||
in: query
|
||||
required: false
|
||||
description: Comma-separated tags; tool must include all of them
|
||||
schema:
|
||||
type: string
|
||||
- name: features
|
||||
in: query
|
||||
required: false
|
||||
description: Comma-separated features; tool must include all of them
|
||||
schema:
|
||||
type: string
|
||||
- name: minRating
|
||||
in: query
|
||||
required: false
|
||||
description: Minimum average combined rating (0-5)
|
||||
schema:
|
||||
type: number
|
||||
minimum: 0
|
||||
maximum: 5
|
||||
responses:
|
||||
"200":
|
||||
description: List of tools
|
||||
|
||||
@@ -32,10 +32,18 @@ export const GetVersionResponse = zod.object({
|
||||
/**
|
||||
* @summary List all tools
|
||||
*/
|
||||
export const listToolsQueryMinRatingMin = 0;
|
||||
export const listToolsQueryMinRatingMax = 5;
|
||||
|
||||
|
||||
|
||||
export const ListToolsQueryParams = zod.object({
|
||||
"category": zod.coerce.string().optional(),
|
||||
"search": zod.coerce.string().optional(),
|
||||
"sort": zod.enum(['newest', 'top_rated', 'most_reviewed', 'name_asc', 'name_desc', 'recently_updated']).optional()
|
||||
"sort": zod.enum(['newest', 'top_rated', 'most_reviewed', 'name_asc', 'name_desc', 'recently_updated']).optional(),
|
||||
"tags": zod.coerce.string().optional().describe('Comma-separated tags; tool must include all of them'),
|
||||
"features": zod.coerce.string().optional().describe('Comma-separated features; tool must include all of them'),
|
||||
"minRating": zod.coerce.number().min(listToolsQueryMinRatingMin).max(listToolsQueryMinRatingMax).optional().describe('Minimum average combined rating (0-5)')
|
||||
})
|
||||
|
||||
export const ListToolsResponseItem = zod.object({
|
||||
|
||||
@@ -11,4 +11,18 @@ export type ListToolsParams = {
|
||||
category?: string;
|
||||
search?: string;
|
||||
sort?: ListToolsSort;
|
||||
/**
|
||||
* Comma-separated tags; tool must include all of them
|
||||
*/
|
||||
tags?: string;
|
||||
/**
|
||||
* Comma-separated features; tool must include all of them
|
||||
*/
|
||||
features?: string;
|
||||
/**
|
||||
* Minimum average combined rating (0-5)
|
||||
* @minimum 0
|
||||
* @maximum 5
|
||||
*/
|
||||
minRating?: number;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user