mcp-wordpress 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +210 -182
- package/dist/cache/CacheInvalidation.d.ts +3 -3
- package/dist/cache/CacheInvalidation.d.ts.map +1 -1
- package/dist/cache/CacheInvalidation.js +119 -119
- package/dist/cache/CacheInvalidation.js.map +1 -1
- package/dist/cache/CacheManager.d.ts +5 -0
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +26 -16
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts +1 -1
- package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
- package/dist/cache/HttpCacheWrapper.js +29 -29
- package/dist/cache/HttpCacheWrapper.js.map +1 -1
- package/dist/cache/__tests__/CacheInvalidation.test.js +96 -94
- package/dist/cache/__tests__/CacheInvalidation.test.js.map +1 -1
- package/dist/cache/__tests__/CacheManager.test.js +113 -113
- package/dist/cache/__tests__/CacheManager.test.js.map +1 -1
- package/dist/cache/__tests__/CachedWordPressClient.test.js +102 -99
- package/dist/cache/__tests__/CachedWordPressClient.test.js.map +1 -1
- package/dist/cache/__tests__/HttpCacheWrapper.test.js +98 -95
- package/dist/cache/__tests__/HttpCacheWrapper.test.js.map +1 -1
- package/dist/cache/index.d.ts +7 -7
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +4 -4
- package/dist/cache/index.js.map +1 -1
- package/dist/client/CachedWordPressClient.d.ts +4 -4
- package/dist/client/CachedWordPressClient.d.ts.map +1 -1
- package/dist/client/CachedWordPressClient.js +55 -51
- package/dist/client/CachedWordPressClient.js.map +1 -1
- package/dist/client/api.d.ts +10 -10
- package/dist/client/api.js +158 -158
- package/dist/client/api.js.map +1 -1
- package/dist/client/auth.d.ts +2 -2
- package/dist/client/auth.js +72 -72
- package/dist/client/managers/AuthenticationManager.d.ts +2 -2
- package/dist/client/managers/AuthenticationManager.js +46 -46
- package/dist/client/managers/BaseManager.d.ts +1 -1
- package/dist/client/managers/BaseManager.js +9 -9
- package/dist/client/managers/RequestManager.d.ts +5 -3
- package/dist/client/managers/RequestManager.d.ts.map +1 -1
- package/dist/client/managers/RequestManager.js +39 -19
- package/dist/client/managers/RequestManager.js.map +1 -1
- package/dist/client/managers/index.d.ts +3 -3
- package/dist/client/managers/index.js +3 -3
- package/dist/config/ConfigurationSchema.d.ts +2 -2
- package/dist/config/ConfigurationSchema.d.ts.map +1 -1
- package/dist/config/ConfigurationSchema.js +40 -40
- package/dist/config/ConfigurationSchema.js.map +1 -1
- package/dist/config/ServerConfiguration.d.ts +2 -2
- package/dist/config/ServerConfiguration.js +35 -35
- package/dist/config/ServerConfiguration.js.map +1 -1
- package/dist/docs/DocumentationGenerator.d.ts.map +1 -1
- package/dist/docs/DocumentationGenerator.js +296 -255
- package/dist/docs/DocumentationGenerator.js.map +1 -1
- package/dist/docs/MarkdownFormatter.d.ts +1 -1
- package/dist/docs/MarkdownFormatter.d.ts.map +1 -1
- package/dist/docs/MarkdownFormatter.js +60 -51
- package/dist/docs/MarkdownFormatter.js.map +1 -1
- package/dist/docs/index.d.ts +3 -3
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -16
- package/dist/index.js.map +1 -1
- package/dist/mcp-wordpress-1.3.0.tgz +0 -0
- package/dist/performance/MetricsCollector.d.ts +3 -3
- package/dist/performance/MetricsCollector.d.ts.map +1 -1
- package/dist/performance/MetricsCollector.js +33 -27
- package/dist/performance/MetricsCollector.js.map +1 -1
- package/dist/performance/PerformanceAnalytics.d.ts +12 -12
- package/dist/performance/PerformanceAnalytics.d.ts.map +1 -1
- package/dist/performance/PerformanceAnalytics.js +200 -154
- package/dist/performance/PerformanceAnalytics.js.map +1 -1
- package/dist/performance/PerformanceMonitor.d.ts +5 -5
- package/dist/performance/PerformanceMonitor.d.ts.map +1 -1
- package/dist/performance/PerformanceMonitor.js +53 -52
- package/dist/performance/PerformanceMonitor.js.map +1 -1
- package/dist/performance/index.d.ts +6 -6
- package/dist/performance/index.d.ts.map +1 -1
- package/dist/performance/index.js +3 -3
- package/dist/security/InputValidator.d.ts +1 -1
- package/dist/security/InputValidator.d.ts.map +1 -1
- package/dist/security/InputValidator.js +111 -88
- package/dist/security/InputValidator.js.map +1 -1
- package/dist/security/SecurityConfig.d.ts +5 -5
- package/dist/security/SecurityConfig.js +92 -92
- package/dist/security/SecurityConfig.js.map +1 -1
- package/dist/server/ConnectionTester.d.ts +1 -1
- package/dist/server/ConnectionTester.d.ts.map +1 -1
- package/dist/server/ConnectionTester.js +4 -4
- package/dist/server/ConnectionTester.js.map +1 -1
- package/dist/server/ToolRegistry.d.ts +2 -2
- package/dist/server/ToolRegistry.d.ts.map +1 -1
- package/dist/server/ToolRegistry.js +35 -32
- package/dist/server/ToolRegistry.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/dist/tools/BaseToolManager.js +5 -5
- package/dist/tools/auth.d.ts +2 -2
- package/dist/tools/auth.d.ts.map +1 -1
- package/dist/tools/auth.js +32 -31
- package/dist/tools/auth.js.map +1 -1
- package/dist/tools/cache.d.ts +1 -1
- package/dist/tools/cache.d.ts.map +1 -1
- package/dist/tools/cache.js +71 -71
- package/dist/tools/cache.js.map +1 -1
- package/dist/tools/comments.d.ts +2 -2
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +79 -79
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/index.d.ts +10 -10
- package/dist/tools/index.js +10 -10
- package/dist/tools/media.d.ts +2 -2
- package/dist/tools/media.js +80 -80
- package/dist/tools/pages.d.ts +2 -2
- package/dist/tools/pages.d.ts.map +1 -1
- package/dist/tools/pages.js +75 -75
- package/dist/tools/pages.js.map +1 -1
- package/dist/tools/performance.d.ts +1 -1
- package/dist/tools/performance.d.ts.map +1 -1
- package/dist/tools/performance.js +311 -287
- package/dist/tools/performance.js.map +1 -1
- package/dist/tools/posts.d.ts +2 -2
- package/dist/tools/posts.d.ts.map +1 -1
- package/dist/tools/posts.js +94 -94
- package/dist/tools/posts.js.map +1 -1
- package/dist/tools/site.d.ts +2 -2
- package/dist/tools/site.d.ts.map +1 -1
- package/dist/tools/site.js +60 -60
- package/dist/tools/site.js.map +1 -1
- package/dist/tools/taxonomies.d.ts +2 -2
- package/dist/tools/taxonomies.js +89 -89
- package/dist/tools/users.d.ts +2 -2
- package/dist/tools/users.js +68 -68
- package/dist/tools/users.js.map +1 -1
- package/dist/types/client.d.ts +13 -13
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client.js +12 -12
- package/dist/types/client.js.map +1 -1
- package/dist/types/index.d.ts +19 -19
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -3
- package/dist/types/mcp.d.ts +7 -7
- package/dist/types/wordpress.d.ts +21 -21
- package/dist/types/wordpress.d.ts.map +1 -1
- package/dist/utils/debug.d.ts +2 -2
- package/dist/utils/debug.js +28 -28
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.js +13 -13
- package/dist/utils/error.js.map +1 -1
- package/dist/utils/toolWrapper.d.ts.map +1 -1
- package/dist/utils/toolWrapper.js +5 -5
- package/dist/utils/toolWrapper.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +41 -31
- package/dist/utils/validation.js.map +1 -1
- package/docs/CACHING.md +36 -2
- package/docs/DOCKER.md +24 -18
- package/docs/PERFORMANCE_MONITORING.md +49 -1
- package/docs/SECURITY_TESTING.md +30 -1
- package/docs/api/README.md +9 -1
- package/docs/api/summary.json +1 -1
- package/docs/contract-testing.md +24 -3
- package/docs/developer/GITHUB_ACTIONS_SETUP.md +8 -2
- package/docs/developer/MAINTENANCE.md +29 -3
- package/docs/developer/MIGRATION_GUIDE.md +13 -1
- package/docs/developer/NPM_AUTH_SETUP.md +13 -2
- package/docs/developer/REFACTORING.md +31 -1
- package/docs/releases/COMMUNITY_ANNOUNCEMENT_v1.1.2.md +18 -7
- package/docs/releases/RELEASE_NOTES_v1.1.2.md +31 -5
- package/docs/user-guides/DOCKER_SETUP.md +264 -0
- package/docs/user-guides/DTX_SETUP.md +327 -0
- package/docs/user-guides/NPM_SETUP.md +109 -0
- package/docs/user-guides/NPX_SETUP.md +281 -0
- package/docs/wordpress-rest-api-authentication-troubleshooting.md +13 -2
- package/package.json +27 -8
- package/src/cache/CacheInvalidation.ts +140 -132
- package/src/cache/CacheManager.ts +40 -29
- package/src/cache/HttpCacheWrapper.ts +105 -68
- package/src/cache/__tests__/CacheInvalidation.test.ts +123 -118
- package/src/cache/__tests__/CacheManager.test.ts +156 -152
- package/src/cache/__tests__/CachedWordPressClient.test.ts +131 -116
- package/src/cache/__tests__/HttpCacheWrapper.test.ts +118 -115
- package/src/cache/index.ts +13 -13
- package/src/client/CachedWordPressClient.ts +90 -80
- package/src/client/api.ts +205 -205
- package/src/client/auth.ts +80 -80
- package/src/client/managers/AuthenticationManager.ts +61 -61
- package/src/client/managers/BaseManager.ts +11 -11
- package/src/client/managers/RequestManager.ts +79 -47
- package/src/client/managers/index.ts +3 -3
- package/src/config/ConfigurationSchema.ts +44 -44
- package/src/config/ServerConfiguration.ts +39 -39
- package/src/docs/DocumentationGenerator.ts +402 -295
- package/src/docs/MarkdownFormatter.ts +94 -69
- package/src/docs/index.ts +4 -4
- package/src/index.ts +24 -21
- package/src/performance/MetricsCollector.ts +90 -58
- package/src/performance/PerformanceAnalytics.ts +386 -262
- package/src/performance/PerformanceMonitor.ts +152 -118
- package/src/performance/index.ts +9 -9
- package/src/security/InputValidator.ts +148 -91
- package/src/security/SecurityConfig.ts +94 -94
- package/src/server/ConnectionTester.ts +21 -15
- package/src/server/ToolRegistry.ts +64 -51
- package/src/server.ts +2 -2
- package/src/tools/BaseToolManager.ts +6 -6
- package/src/tools/auth.ts +42 -37
- package/src/tools/cache.ts +85 -81
- package/src/tools/comments.ts +93 -91
- package/src/tools/index.ts +10 -10
- package/src/tools/media.ts +89 -89
- package/src/tools/pages.ts +89 -87
- package/src/tools/performance.ts +443 -352
- package/src/tools/posts.ts +109 -107
- package/src/tools/site.ts +86 -77
- package/src/tools/taxonomies.ts +102 -102
- package/src/tools/users.ts +77 -77
- package/src/types/client.ts +157 -60
- package/src/types/index.ts +49 -27
- package/src/types/mcp.ts +15 -15
- package/src/types/wordpress.ts +57 -29
- package/src/utils/debug.ts +37 -37
- package/src/utils/error.ts +47 -25
- package/src/utils/toolWrapper.ts +12 -8
- package/src/utils/validation.ts +116 -65
- package/dist/client/WordPressClient.d.ts +0 -81
- package/dist/client/WordPressClient.d.ts.map +0 -1
- package/dist/client/WordPressClient.js +0 -354
- package/dist/client/WordPressClient.js.map +0 -1
- package/dist/performance/AnomalyDetector.d.ts +0 -63
- package/dist/performance/AnomalyDetector.d.ts.map +0 -1
- package/dist/performance/AnomalyDetector.js +0 -222
- package/dist/performance/AnomalyDetector.js.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.d.ts +0 -67
- package/dist/performance/BenchmarkAnalyzer.d.ts.map +0 -1
- package/dist/performance/BenchmarkAnalyzer.js +0 -301
- package/dist/performance/BenchmarkAnalyzer.js.map +0 -1
- package/dist/performance/TrendAnalyzer.d.ts +0 -69
- package/dist/performance/TrendAnalyzer.d.ts.map +0 -1
- package/dist/performance/TrendAnalyzer.js +0 -203
- package/dist/performance/TrendAnalyzer.js.map +0 -1
- package/dist/tools/BaseToolClass.d.ts +0 -76
- package/dist/tools/BaseToolClass.d.ts.map +0 -1
- package/dist/tools/BaseToolClass.js +0 -104
- package/dist/tools/BaseToolClass.js.map +0 -1
- package/dist/tools/base.d.ts +0 -37
- package/dist/tools/base.d.ts.map +0 -1
- package/dist/tools/base.js +0 -60
- package/dist/tools/base.js.map +0 -1
- package/docs/user-guides/CLAUDE_DESKTOP_SETUP.md +0 -187
package/src/types/client.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WordPress API Client Types
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* TypeScript definitions for the WordPress REST API client
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import type {
|
|
8
|
-
WordPressPost,
|
|
9
|
-
WordPressPage,
|
|
10
|
-
WordPressMedia,
|
|
11
|
-
WordPressUser,
|
|
7
|
+
import type {
|
|
8
|
+
WordPressPost,
|
|
9
|
+
WordPressPage,
|
|
10
|
+
WordPressMedia,
|
|
11
|
+
WordPressUser,
|
|
12
12
|
WordPressComment,
|
|
13
13
|
WordPressCategory,
|
|
14
14
|
WordPressTag,
|
|
@@ -31,11 +31,16 @@ import type {
|
|
|
31
31
|
CreateTagRequest,
|
|
32
32
|
UpdateTagRequest,
|
|
33
33
|
UploadMediaRequest,
|
|
34
|
-
UpdateMediaRequest
|
|
35
|
-
} from
|
|
34
|
+
UpdateMediaRequest,
|
|
35
|
+
} from "./wordpress.js";
|
|
36
36
|
|
|
37
37
|
// Authentication Configuration
|
|
38
|
-
export type AuthMethod =
|
|
38
|
+
export type AuthMethod =
|
|
39
|
+
| "app-password"
|
|
40
|
+
| "jwt"
|
|
41
|
+
| "basic"
|
|
42
|
+
| "api-key"
|
|
43
|
+
| "cookie";
|
|
39
44
|
|
|
40
45
|
export interface AuthConfig {
|
|
41
46
|
method: AuthMethod;
|
|
@@ -64,7 +69,7 @@ export interface WordPressClientConfig {
|
|
|
64
69
|
}
|
|
65
70
|
|
|
66
71
|
// HTTP Method Types
|
|
67
|
-
export type HTTPMethod =
|
|
72
|
+
export type HTTPMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
68
73
|
|
|
69
74
|
// Request Options
|
|
70
75
|
export interface RequestOptions {
|
|
@@ -115,71 +120,151 @@ export interface IWordPressClient {
|
|
|
115
120
|
disconnect(): Promise<void>;
|
|
116
121
|
|
|
117
122
|
// Generic HTTP Methods
|
|
118
|
-
request<T = any>(
|
|
123
|
+
request<T = any>(
|
|
124
|
+
method: HTTPMethod,
|
|
125
|
+
endpoint: string,
|
|
126
|
+
data?: any,
|
|
127
|
+
options?: RequestOptions,
|
|
128
|
+
): Promise<T>;
|
|
119
129
|
get<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
120
|
-
post<T = any>(
|
|
121
|
-
|
|
122
|
-
|
|
130
|
+
post<T = any>(
|
|
131
|
+
endpoint: string,
|
|
132
|
+
data?: any,
|
|
133
|
+
options?: RequestOptions,
|
|
134
|
+
): Promise<T>;
|
|
135
|
+
put<T = any>(
|
|
136
|
+
endpoint: string,
|
|
137
|
+
data?: any,
|
|
138
|
+
options?: RequestOptions,
|
|
139
|
+
): Promise<T>;
|
|
140
|
+
patch<T = any>(
|
|
141
|
+
endpoint: string,
|
|
142
|
+
data?: any,
|
|
143
|
+
options?: RequestOptions,
|
|
144
|
+
): Promise<T>;
|
|
123
145
|
delete<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
124
146
|
|
|
125
147
|
// Posts
|
|
126
148
|
getPosts(params?: PostQueryParams): Promise<WordPressPost[]>;
|
|
127
|
-
getPost(
|
|
149
|
+
getPost(
|
|
150
|
+
id: number,
|
|
151
|
+
context?: "view" | "embed" | "edit",
|
|
152
|
+
): Promise<WordPressPost>;
|
|
128
153
|
createPost(data: CreatePostRequest): Promise<WordPressPost>;
|
|
129
154
|
updatePost(data: UpdatePostRequest): Promise<WordPressPost>;
|
|
130
|
-
deletePost(
|
|
155
|
+
deletePost(
|
|
156
|
+
id: number,
|
|
157
|
+
force?: boolean,
|
|
158
|
+
): Promise<{ deleted: boolean; previous?: WordPressPost }>;
|
|
131
159
|
getPostRevisions(id: number): Promise<WordPressPost[]>;
|
|
132
160
|
|
|
133
161
|
// Pages
|
|
134
162
|
getPages(params?: PostQueryParams): Promise<WordPressPage[]>;
|
|
135
|
-
getPage(
|
|
163
|
+
getPage(
|
|
164
|
+
id: number,
|
|
165
|
+
context?: "view" | "embed" | "edit",
|
|
166
|
+
): Promise<WordPressPage>;
|
|
136
167
|
createPage(data: CreatePageRequest): Promise<WordPressPage>;
|
|
137
168
|
updatePage(data: UpdatePageRequest): Promise<WordPressPage>;
|
|
138
|
-
deletePage(
|
|
169
|
+
deletePage(
|
|
170
|
+
id: number,
|
|
171
|
+
force?: boolean,
|
|
172
|
+
): Promise<{ deleted: boolean; previous?: WordPressPage }>;
|
|
139
173
|
getPageRevisions(id: number): Promise<WordPressPage[]>;
|
|
140
174
|
|
|
141
175
|
// Media
|
|
142
176
|
getMedia(params?: MediaQueryParams): Promise<WordPressMedia[]>;
|
|
143
|
-
getMediaItem(
|
|
177
|
+
getMediaItem(
|
|
178
|
+
id: number,
|
|
179
|
+
context?: "view" | "embed" | "edit",
|
|
180
|
+
): Promise<WordPressMedia>;
|
|
144
181
|
uploadMedia(data: UploadMediaRequest): Promise<WordPressMedia>;
|
|
145
|
-
uploadFile(
|
|
182
|
+
uploadFile(
|
|
183
|
+
fileData: Buffer,
|
|
184
|
+
filename: string,
|
|
185
|
+
mimeType: string,
|
|
186
|
+
meta?: Partial<UploadMediaRequest>,
|
|
187
|
+
options?: RequestOptions,
|
|
188
|
+
): Promise<WordPressMedia>;
|
|
146
189
|
updateMedia(data: UpdateMediaRequest): Promise<WordPressMedia>;
|
|
147
|
-
deleteMedia(
|
|
190
|
+
deleteMedia(
|
|
191
|
+
id: number,
|
|
192
|
+
force?: boolean,
|
|
193
|
+
): Promise<{ deleted: boolean; previous?: WordPressMedia }>;
|
|
148
194
|
|
|
149
195
|
// Users
|
|
150
196
|
getUsers(params?: UserQueryParams): Promise<WordPressUser[]>;
|
|
151
|
-
getUser(
|
|
197
|
+
getUser(
|
|
198
|
+
id: number | "me",
|
|
199
|
+
context?: "view" | "embed" | "edit",
|
|
200
|
+
): Promise<WordPressUser>;
|
|
152
201
|
createUser(data: CreateUserRequest): Promise<WordPressUser>;
|
|
153
202
|
updateUser(data: UpdateUserRequest): Promise<WordPressUser>;
|
|
154
|
-
deleteUser(
|
|
203
|
+
deleteUser(
|
|
204
|
+
id: number,
|
|
205
|
+
reassign?: number,
|
|
206
|
+
): Promise<{ deleted: boolean; previous?: WordPressUser }>;
|
|
155
207
|
getCurrentUser(): Promise<WordPressUser>;
|
|
156
208
|
|
|
157
209
|
// Comments
|
|
158
210
|
getComments(params?: CommentQueryParams): Promise<WordPressComment[]>;
|
|
159
|
-
getComment(
|
|
211
|
+
getComment(
|
|
212
|
+
id: number,
|
|
213
|
+
context?: "view" | "embed" | "edit",
|
|
214
|
+
): Promise<WordPressComment>;
|
|
160
215
|
createComment(data: CreateCommentRequest): Promise<WordPressComment>;
|
|
161
216
|
updateComment(data: UpdateCommentRequest): Promise<WordPressComment>;
|
|
162
|
-
deleteComment(
|
|
217
|
+
deleteComment(
|
|
218
|
+
id: number,
|
|
219
|
+
force?: boolean,
|
|
220
|
+
): Promise<{ deleted: boolean; previous?: WordPressComment }>;
|
|
163
221
|
approveComment(id: number): Promise<WordPressComment>;
|
|
164
222
|
rejectComment(id: number): Promise<WordPressComment>;
|
|
165
223
|
spamComment(id: number): Promise<WordPressComment>;
|
|
166
224
|
|
|
167
225
|
// Taxonomies
|
|
168
|
-
getCategories(params?: {
|
|
226
|
+
getCategories(params?: {
|
|
227
|
+
search?: string;
|
|
228
|
+
exclude?: number[];
|
|
229
|
+
include?: number[];
|
|
230
|
+
order?: "asc" | "desc";
|
|
231
|
+
orderby?: string;
|
|
232
|
+
hide_empty?: boolean;
|
|
233
|
+
parent?: number;
|
|
234
|
+
post?: number;
|
|
235
|
+
slug?: string;
|
|
236
|
+
}): Promise<WordPressCategory[]>;
|
|
169
237
|
getCategory(id: number): Promise<WordPressCategory>;
|
|
170
238
|
createCategory(data: CreateCategoryRequest): Promise<WordPressCategory>;
|
|
171
239
|
updateCategory(data: UpdateCategoryRequest): Promise<WordPressCategory>;
|
|
172
|
-
deleteCategory(
|
|
173
|
-
|
|
174
|
-
|
|
240
|
+
deleteCategory(
|
|
241
|
+
id: number,
|
|
242
|
+
force?: boolean,
|
|
243
|
+
): Promise<{ deleted: boolean; previous?: WordPressCategory }>;
|
|
244
|
+
|
|
245
|
+
getTags(params?: {
|
|
246
|
+
search?: string;
|
|
247
|
+
exclude?: number[];
|
|
248
|
+
include?: number[];
|
|
249
|
+
order?: "asc" | "desc";
|
|
250
|
+
orderby?: string;
|
|
251
|
+
hide_empty?: boolean;
|
|
252
|
+
post?: number;
|
|
253
|
+
slug?: string;
|
|
254
|
+
}): Promise<WordPressTag[]>;
|
|
175
255
|
getTag(id: number): Promise<WordPressTag>;
|
|
176
256
|
createTag(data: CreateTagRequest): Promise<WordPressTag>;
|
|
177
257
|
updateTag(data: UpdateTagRequest): Promise<WordPressTag>;
|
|
178
|
-
deleteTag(
|
|
258
|
+
deleteTag(
|
|
259
|
+
id: number,
|
|
260
|
+
force?: boolean,
|
|
261
|
+
): Promise<{ deleted: boolean; previous?: WordPressTag }>;
|
|
179
262
|
|
|
180
263
|
// Site Management
|
|
181
264
|
getSiteSettings(): Promise<WordPressSiteSettings>;
|
|
182
|
-
updateSiteSettings(
|
|
265
|
+
updateSiteSettings(
|
|
266
|
+
settings: Partial<WordPressSiteSettings>,
|
|
267
|
+
): Promise<WordPressSiteSettings>;
|
|
183
268
|
getSiteInfo(): Promise<{
|
|
184
269
|
name: string;
|
|
185
270
|
description: string;
|
|
@@ -193,18 +278,33 @@ export interface IWordPressClient {
|
|
|
193
278
|
}>;
|
|
194
279
|
|
|
195
280
|
// Application Passwords
|
|
196
|
-
getApplicationPasswords(
|
|
197
|
-
|
|
198
|
-
|
|
281
|
+
getApplicationPasswords(
|
|
282
|
+
userId?: number | "me",
|
|
283
|
+
): Promise<WordPressApplicationPassword[]>;
|
|
284
|
+
createApplicationPassword(
|
|
285
|
+
userId: number | "me",
|
|
286
|
+
name: string,
|
|
287
|
+
appId?: string,
|
|
288
|
+
): Promise<WordPressApplicationPassword>;
|
|
289
|
+
deleteApplicationPassword(
|
|
290
|
+
userId: number | "me",
|
|
291
|
+
uuid: string,
|
|
292
|
+
): Promise<{ deleted: boolean }>;
|
|
199
293
|
|
|
200
294
|
// Search
|
|
201
|
-
search(
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
295
|
+
search(
|
|
296
|
+
query: string,
|
|
297
|
+
types?: string[],
|
|
298
|
+
subtype?: string,
|
|
299
|
+
): Promise<
|
|
300
|
+
Array<{
|
|
301
|
+
id: number;
|
|
302
|
+
title: string;
|
|
303
|
+
url: string;
|
|
304
|
+
type: string;
|
|
305
|
+
subtype: string;
|
|
306
|
+
}>
|
|
307
|
+
>;
|
|
208
308
|
|
|
209
309
|
// Utility Methods
|
|
210
310
|
ping(): Promise<boolean>;
|
|
@@ -228,14 +328,9 @@ export class WordPressAPIError extends Error {
|
|
|
228
328
|
public readonly code?: string;
|
|
229
329
|
public data?: any;
|
|
230
330
|
|
|
231
|
-
constructor(
|
|
232
|
-
message: string,
|
|
233
|
-
statusCode?: number,
|
|
234
|
-
code?: string,
|
|
235
|
-
data?: any
|
|
236
|
-
) {
|
|
331
|
+
constructor(message: string, statusCode?: number, code?: string, data?: any) {
|
|
237
332
|
super(message);
|
|
238
|
-
this.name =
|
|
333
|
+
this.name = "WordPressAPIError";
|
|
239
334
|
if (statusCode !== undefined) this.statusCode = statusCode;
|
|
240
335
|
if (code !== undefined) this.code = code;
|
|
241
336
|
if (data !== undefined) this.data = data;
|
|
@@ -244,24 +339,24 @@ export class WordPressAPIError extends Error {
|
|
|
244
339
|
|
|
245
340
|
export class AuthenticationError extends WordPressAPIError {
|
|
246
341
|
constructor(message: string, method: AuthMethod) {
|
|
247
|
-
super(message, 401,
|
|
248
|
-
this.name =
|
|
342
|
+
super(message, 401, "authentication_failed");
|
|
343
|
+
this.name = "AuthenticationError";
|
|
249
344
|
this.data = { method };
|
|
250
345
|
}
|
|
251
346
|
}
|
|
252
347
|
|
|
253
348
|
export class RateLimitError extends WordPressAPIError {
|
|
254
349
|
constructor(message: string, resetTime: number) {
|
|
255
|
-
super(message, 429,
|
|
256
|
-
this.name =
|
|
350
|
+
super(message, 429, "rate_limit_exceeded");
|
|
351
|
+
this.name = "RateLimitError";
|
|
257
352
|
this.data = { resetTime };
|
|
258
353
|
}
|
|
259
354
|
}
|
|
260
355
|
|
|
261
356
|
export class ValidationError extends WordPressAPIError {
|
|
262
357
|
constructor(message: string, field?: string) {
|
|
263
|
-
super(message, 400,
|
|
264
|
-
this.name =
|
|
358
|
+
super(message, 400, "validation_failed");
|
|
359
|
+
this.name = "ValidationError";
|
|
265
360
|
this.data = { field };
|
|
266
361
|
}
|
|
267
362
|
}
|
|
@@ -271,7 +366,9 @@ export function isWordPressAPIError(error: any): error is WordPressAPIError {
|
|
|
271
366
|
return error instanceof WordPressAPIError;
|
|
272
367
|
}
|
|
273
368
|
|
|
274
|
-
export function isAuthenticationError(
|
|
369
|
+
export function isAuthenticationError(
|
|
370
|
+
error: any,
|
|
371
|
+
): error is AuthenticationError {
|
|
275
372
|
return error instanceof AuthenticationError;
|
|
276
373
|
}
|
|
277
374
|
|
|
@@ -285,21 +382,21 @@ export function isValidationError(error: any): error is ValidationError {
|
|
|
285
382
|
|
|
286
383
|
// Response Type Guards
|
|
287
384
|
export function isWordPressPost(obj: any): obj is WordPressPost {
|
|
288
|
-
return obj && typeof obj.id ===
|
|
385
|
+
return obj && typeof obj.id === "number" && obj.type === "post";
|
|
289
386
|
}
|
|
290
387
|
|
|
291
388
|
export function isWordPressPage(obj: any): obj is WordPressPage {
|
|
292
|
-
return obj && typeof obj.id ===
|
|
389
|
+
return obj && typeof obj.id === "number" && obj.type === "page";
|
|
293
390
|
}
|
|
294
391
|
|
|
295
392
|
export function isWordPressMedia(obj: any): obj is WordPressMedia {
|
|
296
|
-
return obj && typeof obj.id ===
|
|
393
|
+
return obj && typeof obj.id === "number" && obj.media_type;
|
|
297
394
|
}
|
|
298
395
|
|
|
299
396
|
export function isWordPressUser(obj: any): obj is WordPressUser {
|
|
300
|
-
return obj && typeof obj.id ===
|
|
397
|
+
return obj && typeof obj.id === "number" && obj.username;
|
|
301
398
|
}
|
|
302
399
|
|
|
303
400
|
export function isWordPressComment(obj: any): obj is WordPressComment {
|
|
304
|
-
return obj && typeof obj.id ===
|
|
401
|
+
return obj && typeof obj.id === "number" && typeof obj.post === "number";
|
|
305
402
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type Exports
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Central export point for all TypeScript types
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
// WordPress API Types
|
|
8
|
-
export * from
|
|
8
|
+
export * from "./wordpress.js";
|
|
9
9
|
|
|
10
10
|
// MCP Types
|
|
11
|
-
export * from
|
|
11
|
+
export * from "./mcp.js";
|
|
12
12
|
|
|
13
13
|
// Client Types
|
|
14
|
-
export * from
|
|
14
|
+
export * from "./client.js";
|
|
15
15
|
|
|
16
16
|
// Common Utility Types
|
|
17
17
|
export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
@@ -74,16 +74,16 @@ export interface DatabaseConfig {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
export interface LoggingConfig {
|
|
77
|
-
level:
|
|
77
|
+
level: "debug" | "info" | "warn" | "error";
|
|
78
78
|
file?: string;
|
|
79
79
|
console?: boolean;
|
|
80
|
-
format?:
|
|
80
|
+
format?: "json" | "text";
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
export interface ServerConfig {
|
|
84
84
|
host: string;
|
|
85
85
|
port: number;
|
|
86
|
-
env:
|
|
86
|
+
env: "development" | "production" | "test";
|
|
87
87
|
debug: boolean;
|
|
88
88
|
logging: LoggingConfig;
|
|
89
89
|
}
|
|
@@ -104,7 +104,16 @@ export interface Environment {
|
|
|
104
104
|
|
|
105
105
|
// Validation Schema Types
|
|
106
106
|
export interface ValidationRule {
|
|
107
|
-
type:
|
|
107
|
+
type:
|
|
108
|
+
| "required"
|
|
109
|
+
| "string"
|
|
110
|
+
| "number"
|
|
111
|
+
| "boolean"
|
|
112
|
+
| "email"
|
|
113
|
+
| "url"
|
|
114
|
+
| "enum"
|
|
115
|
+
| "array"
|
|
116
|
+
| "object";
|
|
108
117
|
message?: string;
|
|
109
118
|
min?: number;
|
|
110
119
|
max?: number;
|
|
@@ -127,7 +136,7 @@ export interface CacheEntry<T> {
|
|
|
127
136
|
export interface CacheOptions {
|
|
128
137
|
ttl?: number; // time to live in milliseconds
|
|
129
138
|
maxSize?: number;
|
|
130
|
-
strategy?:
|
|
139
|
+
strategy?: "lru" | "fifo" | "ttl";
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
// Event Types
|
|
@@ -149,13 +158,16 @@ export interface PerformanceMetric {
|
|
|
149
158
|
|
|
150
159
|
// Health Check Types
|
|
151
160
|
export interface HealthStatus {
|
|
152
|
-
status:
|
|
161
|
+
status: "healthy" | "degraded" | "unhealthy";
|
|
153
162
|
timestamp: number;
|
|
154
|
-
checks: Record<
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
163
|
+
checks: Record<
|
|
164
|
+
string,
|
|
165
|
+
{
|
|
166
|
+
status: "pass" | "fail" | "warn";
|
|
167
|
+
message?: string;
|
|
168
|
+
duration?: number;
|
|
169
|
+
}
|
|
170
|
+
>;
|
|
159
171
|
uptime: number;
|
|
160
172
|
version: string;
|
|
161
173
|
}
|
|
@@ -163,7 +175,7 @@ export interface HealthStatus {
|
|
|
163
175
|
// Debugging Types
|
|
164
176
|
export interface DebugInfo {
|
|
165
177
|
timestamp: number;
|
|
166
|
-
level:
|
|
178
|
+
level: "debug" | "info" | "warn" | "error";
|
|
167
179
|
message: string;
|
|
168
180
|
context?: Record<string, any>;
|
|
169
181
|
stack?: string;
|
|
@@ -187,21 +199,31 @@ export type Awaited<T> = T extends Promise<infer U> ? U : T;
|
|
|
187
199
|
// Brand types for better type safety
|
|
188
200
|
export type Brand<T, B> = T & { __brand: B };
|
|
189
201
|
|
|
190
|
-
export type WordPressID = Brand<number,
|
|
191
|
-
export type UserID = Brand<number,
|
|
192
|
-
export type PostID = Brand<number,
|
|
193
|
-
export type MediaID = Brand<number,
|
|
194
|
-
export type CommentID = Brand<number,
|
|
195
|
-
export type CategoryID = Brand<number,
|
|
196
|
-
export type TagID = Brand<number,
|
|
202
|
+
export type WordPressID = Brand<number, "WordPressID">;
|
|
203
|
+
export type UserID = Brand<number, "UserID">;
|
|
204
|
+
export type PostID = Brand<number, "PostID">;
|
|
205
|
+
export type MediaID = Brand<number, "MediaID">;
|
|
206
|
+
export type CommentID = Brand<number, "CommentID">;
|
|
207
|
+
export type CategoryID = Brand<number, "CategoryID">;
|
|
208
|
+
export type TagID = Brand<number, "TagID">;
|
|
197
209
|
|
|
198
210
|
// Function Types
|
|
199
|
-
export type AsyncFunction<TArgs extends any[] = any[], TReturn = any> = (
|
|
200
|
-
|
|
201
|
-
|
|
211
|
+
export type AsyncFunction<TArgs extends any[] = any[], TReturn = any> = (
|
|
212
|
+
...args: TArgs
|
|
213
|
+
) => Promise<TReturn>;
|
|
214
|
+
export type SyncFunction<TArgs extends any[] = any[], TReturn = any> = (
|
|
215
|
+
...args: TArgs
|
|
216
|
+
) => TReturn;
|
|
217
|
+
export type AnyFunction<TArgs extends any[] = any[], TReturn = any> =
|
|
218
|
+
| SyncFunction<TArgs, TReturn>
|
|
219
|
+
| AsyncFunction<TArgs, TReturn>;
|
|
202
220
|
|
|
203
221
|
// Conditional Types
|
|
204
222
|
export type If<C extends boolean, T, F> = C extends true ? T : F;
|
|
205
223
|
export type IsEqual<T, U> = T extends U ? (U extends T ? true : false) : false;
|
|
206
224
|
export type IsArray<T> = T extends any[] ? true : false;
|
|
207
|
-
export type IsObject<T> = T extends object
|
|
225
|
+
export type IsObject<T> = T extends object
|
|
226
|
+
? T extends any[]
|
|
227
|
+
? false
|
|
228
|
+
: true
|
|
229
|
+
: false;
|
package/src/types/mcp.ts
CHANGED
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
|
|
7
7
|
import type {
|
|
8
8
|
CallToolRequestSchema,
|
|
9
|
-
ListToolsRequestSchema
|
|
10
|
-
} from
|
|
9
|
+
ListToolsRequestSchema,
|
|
10
|
+
} from "@modelcontextprotocol/sdk/types.js";
|
|
11
11
|
|
|
12
12
|
// MCP Tool Schema Types
|
|
13
13
|
export interface MCPToolSchema {
|
|
14
|
-
type:
|
|
14
|
+
type: "object";
|
|
15
15
|
properties: Record<string, JSONSchemaProperty>;
|
|
16
16
|
required?: string[];
|
|
17
17
|
additionalProperties?: boolean;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export interface JSONSchemaProperty {
|
|
21
|
-
type:
|
|
21
|
+
type: "string" | "number" | "boolean" | "array" | "object";
|
|
22
22
|
description?: string;
|
|
23
23
|
enum?: (string | number)[];
|
|
24
24
|
items?: JSONSchemaProperty;
|
|
@@ -41,18 +41,18 @@ export interface MCPTool {
|
|
|
41
41
|
|
|
42
42
|
// MCP Content Types
|
|
43
43
|
export interface MCPTextContent {
|
|
44
|
-
type:
|
|
44
|
+
type: "text";
|
|
45
45
|
text: string;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
export interface MCPImageContent {
|
|
49
|
-
type:
|
|
49
|
+
type: "image";
|
|
50
50
|
data: string;
|
|
51
51
|
mimeType: string;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
export interface MCPResourceContent {
|
|
55
|
-
type:
|
|
55
|
+
type: "resource";
|
|
56
56
|
resource: {
|
|
57
57
|
uri: string;
|
|
58
58
|
mimeType?: string;
|
|
@@ -94,14 +94,14 @@ export type MCPCallToolRequest = typeof CallToolRequestSchema;
|
|
|
94
94
|
|
|
95
95
|
// Tool Categories for Organization
|
|
96
96
|
export type MCPToolCategory =
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
97
|
+
| "authentication"
|
|
98
|
+
| "posts"
|
|
99
|
+
| "pages"
|
|
100
|
+
| "media"
|
|
101
|
+
| "users"
|
|
102
|
+
| "comments"
|
|
103
|
+
| "taxonomies"
|
|
104
|
+
| "site";
|
|
105
105
|
|
|
106
106
|
// Enhanced Tool Definition with Category
|
|
107
107
|
export interface CategorizedMCPTool extends MCPTool {
|