@pkagentic/mcp 1.4.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 +68 -0
- package/dist/handlers/image-generation.d.ts +14 -0
- package/dist/handlers/image-generation.js +77 -0
- package/dist/handlers/image-generation.js.map +1 -0
- package/dist/handlers/index.d.ts +5 -0
- package/dist/handlers/index.js +6 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/pk-agent.d.ts +156 -0
- package/dist/handlers/pk-agent.js +500 -0
- package/dist/handlers/pk-agent.js.map +1 -0
- package/dist/handlers/tailwind.d.ts +11 -0
- package/dist/handlers/tailwind.js +93 -0
- package/dist/handlers/tailwind.js.map +1 -0
- package/dist/handlers/utility.d.ts +41 -0
- package/dist/handlers/utility.js +153 -0
- package/dist/handlers/utility.js.map +1 -0
- package/dist/handlers/web-crawler.d.ts +30 -0
- package/dist/handlers/web-crawler.js +101 -0
- package/dist/handlers/web-crawler.js.map +1 -0
- package/dist/handlers.d.ts +234 -0
- package/dist/handlers.js +855 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +745 -0
- package/dist/index.js.map +1 -0
- package/dist/tools.d.ts +2 -0
- package/dist/tools.js +806 -0
- package/dist/tools.js.map +1 -0
- package/dist/types.d.ts +329 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
import FormData from "form-data";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
export class PKAgentApi {
|
|
6
|
+
axiosInstance;
|
|
7
|
+
constructor(baseURL, key, email) {
|
|
8
|
+
this.axiosInstance = axios.create({
|
|
9
|
+
baseURL: baseURL.endsWith("/") ? baseURL : `${baseURL}/`,
|
|
10
|
+
headers: {
|
|
11
|
+
"X-PK-Agent-Key": key,
|
|
12
|
+
"X-PK-Agent-Email": email,
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
// Add interceptors for logging
|
|
17
|
+
this.axiosInstance.interceptors.request.use((config) => {
|
|
18
|
+
console.error(`[API Request] ${config.method?.toUpperCase()} ${config.url}`, config.params || config.data || "");
|
|
19
|
+
return config;
|
|
20
|
+
});
|
|
21
|
+
this.axiosInstance.interceptors.response.use((response) => {
|
|
22
|
+
const logData = typeof response.data === "string" ? response.data.substring(0, 200) : response.data;
|
|
23
|
+
console.error(`[API Response] ${response.status}`, logData);
|
|
24
|
+
return response;
|
|
25
|
+
}, (error) => {
|
|
26
|
+
console.error(`[API Error] ${error.config?.method?.toUpperCase()} ${error.config?.url}`, error.response?.data || error.message);
|
|
27
|
+
return Promise.reject(error);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
// ── Private helpers ──────────────────────────────────────────────────────
|
|
31
|
+
/**
|
|
32
|
+
* Ensure a directory exists and write JSON content to a file.
|
|
33
|
+
*/
|
|
34
|
+
writeJsonFile(filePath, content) {
|
|
35
|
+
const dir = path.dirname(filePath);
|
|
36
|
+
if (!fs.existsSync(dir)) {
|
|
37
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
fs.writeFileSync(filePath, JSON.stringify(content, null, 2), "utf-8");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Write downloaded code fields (html/css/js) from an API item to the
|
|
43
|
+
* correct workspace sub-directory derived from the item's virtual_path.
|
|
44
|
+
*
|
|
45
|
+
* Layout:
|
|
46
|
+
* template → workspace/templates/{slug}/{slug}.php .css .js
|
|
47
|
+
* script → workspace/scripts/{slug}/{slug}.php .css .js
|
|
48
|
+
* content → workspace/contents/{vp_parts}/{slug}.html .css .js
|
|
49
|
+
*
|
|
50
|
+
* Returns relative paths of every file that was written.
|
|
51
|
+
*/
|
|
52
|
+
writeItemFiles(data, baseDir = ".") {
|
|
53
|
+
const virtualPath = data.virtual_path || "";
|
|
54
|
+
if (!virtualPath)
|
|
55
|
+
return [];
|
|
56
|
+
const slug = data.slug;
|
|
57
|
+
const isTemplate = virtualPath.startsWith("/templates/");
|
|
58
|
+
const isScript = virtualPath.startsWith("/scripts/");
|
|
59
|
+
const isContent = !isTemplate && !isScript;
|
|
60
|
+
// Build local directory path
|
|
61
|
+
const vpParts = virtualPath.replace(/^\//, "").split("/"); // strip leading "/"
|
|
62
|
+
let dir;
|
|
63
|
+
if (isTemplate) {
|
|
64
|
+
dir = path.join(baseDir, "workspace", "templates", slug);
|
|
65
|
+
}
|
|
66
|
+
else if (isScript) {
|
|
67
|
+
dir = path.join(baseDir, "workspace", "scripts", slug);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// content: workspace/contents/pages/{slug} or workspace/contents/{cpt}/{slug}
|
|
71
|
+
dir = path.join(baseDir, "workspace", "contents", ...vpParts);
|
|
72
|
+
}
|
|
73
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
74
|
+
const htmlExt = isContent ? ".html" : ".php";
|
|
75
|
+
const filesWritten = [];
|
|
76
|
+
if (data.html !== undefined && data.html !== null) {
|
|
77
|
+
const fp = path.join(dir, `${slug}${htmlExt}`);
|
|
78
|
+
fs.writeFileSync(fp, data.html ?? "", "utf-8");
|
|
79
|
+
filesWritten.push(path.relative(baseDir, fp));
|
|
80
|
+
}
|
|
81
|
+
if (data.css !== undefined && data.css !== null) {
|
|
82
|
+
const fp = path.join(dir, `${slug}.css`);
|
|
83
|
+
fs.writeFileSync(fp, data.css ?? "", "utf-8");
|
|
84
|
+
filesWritten.push(path.relative(baseDir, fp));
|
|
85
|
+
}
|
|
86
|
+
if (data.js !== undefined && data.js !== null) {
|
|
87
|
+
const fp = path.join(dir, `${slug}.js`);
|
|
88
|
+
fs.writeFileSync(fp, data.js ?? "", "utf-8");
|
|
89
|
+
filesWritten.push(path.relative(baseDir, fp));
|
|
90
|
+
}
|
|
91
|
+
if (data.document_content !== undefined && data.document_content !== null) {
|
|
92
|
+
const fp = path.join(dir, `${slug}.md`);
|
|
93
|
+
fs.writeFileSync(fp, data.document_content ?? "", "utf-8");
|
|
94
|
+
filesWritten.push(path.relative(baseDir, fp));
|
|
95
|
+
}
|
|
96
|
+
return filesWritten;
|
|
97
|
+
}
|
|
98
|
+
readFileContent(filePath) {
|
|
99
|
+
if (!fs.existsSync(filePath)) {
|
|
100
|
+
throw new Error(`File not found: ${filePath}`);
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
return fs.readFileSync(filePath, "utf-8");
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw new Error(`Failed to read file at ${filePath}: ${error.message}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// ── API methods ───────────────────────────────────────────────────────────
|
|
110
|
+
async getSiteInfo() {
|
|
111
|
+
const response = await this.axiosInstance.get("site-info");
|
|
112
|
+
const result = response.data;
|
|
113
|
+
// Persist to .pk-agentic/site-info.json
|
|
114
|
+
this.writeJsonFile(".pk-agentic/site-info.json", result);
|
|
115
|
+
const d = result.data || {};
|
|
116
|
+
return {
|
|
117
|
+
success: true,
|
|
118
|
+
message: "Site info written to .pk-agentic/site-info.json. Read that file for the full response. Key values are summarised below.",
|
|
119
|
+
file_written: ".pk-agentic/site-info.json",
|
|
120
|
+
summary: {
|
|
121
|
+
site_name: d.site_name,
|
|
122
|
+
site_url: d.site_url,
|
|
123
|
+
plugin_version: d.plugin_version,
|
|
124
|
+
wordpress_version: d.wordpress_version,
|
|
125
|
+
php_version: d.php_version,
|
|
126
|
+
batch_file_limit: d.batch_file_limit,
|
|
127
|
+
css_framework: d.css_framework,
|
|
128
|
+
timezone: d.timezone,
|
|
129
|
+
language: d.language,
|
|
130
|
+
theme: d.theme,
|
|
131
|
+
permissions: d.permissions,
|
|
132
|
+
menu_locations: d.menu_locations,
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
async syncItems(args) {
|
|
137
|
+
const response = await this.axiosInstance.get("sync", { params: args });
|
|
138
|
+
const result = response.data;
|
|
139
|
+
const filePath = ".pk-agentic/file-list.json";
|
|
140
|
+
const page = args.page ?? 1;
|
|
141
|
+
if (page === 1) {
|
|
142
|
+
// First page — write fresh
|
|
143
|
+
this.writeJsonFile(filePath, result);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Subsequent pages — merge arrays into existing file
|
|
147
|
+
let existing = { data: { templates: [], scripts: [], content: [] } };
|
|
148
|
+
if (fs.existsSync(filePath)) {
|
|
149
|
+
try {
|
|
150
|
+
existing = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
151
|
+
}
|
|
152
|
+
catch { /**/ }
|
|
153
|
+
}
|
|
154
|
+
existing.data = existing.data || {};
|
|
155
|
+
existing.data.templates = [...(existing.data.templates ?? []), ...(result.data?.templates ?? [])];
|
|
156
|
+
existing.data.scripts = [...(existing.data.scripts ?? []), ...(result.data?.scripts ?? [])];
|
|
157
|
+
existing.data.content = [...(existing.data.content ?? []), ...(result.data?.content ?? [])];
|
|
158
|
+
existing.pagination = result.pagination; // update pagination to reflect latest page
|
|
159
|
+
this.writeJsonFile(filePath, existing);
|
|
160
|
+
}
|
|
161
|
+
const total = result.total || {};
|
|
162
|
+
const pagination = result.pagination || {};
|
|
163
|
+
return {
|
|
164
|
+
success: true,
|
|
165
|
+
message: `File list written to .pk-agentic/file-list.json. Read that file to get the full item inventory. ${pagination.has_more ? `More pages available — call sync(page=${(pagination.page ?? 1) + 1}) to continue fetching.` : "All items fetched."}`,
|
|
166
|
+
file_written: ".pk-agentic/file-list.json",
|
|
167
|
+
summary: {
|
|
168
|
+
page: pagination.page,
|
|
169
|
+
per_page: pagination.per_page,
|
|
170
|
+
total_items: pagination.total_items,
|
|
171
|
+
total_pages: pagination.total_pages,
|
|
172
|
+
has_more: pagination.has_more,
|
|
173
|
+
items_on_page: {
|
|
174
|
+
templates: total.templates ?? 0,
|
|
175
|
+
scripts: total.scripts ?? 0,
|
|
176
|
+
content: total.content ?? 0,
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
async getFile(args) {
|
|
182
|
+
const { id, from_line, to_line, ...params } = args;
|
|
183
|
+
const response = await this.axiosInstance.get(`files/${id}`, {
|
|
184
|
+
params: { ...params, ...(from_line !== undefined && { from_line }), ...(to_line !== undefined && { to_line }) },
|
|
185
|
+
});
|
|
186
|
+
const result = response.data;
|
|
187
|
+
const data = result.data || {};
|
|
188
|
+
const hasLineRange = from_line !== undefined || to_line !== undefined;
|
|
189
|
+
if (hasLineRange) {
|
|
190
|
+
// Partial / inspection download — return content inline, do NOT overwrite local file
|
|
191
|
+
return {
|
|
192
|
+
success: true,
|
|
193
|
+
partial_download: true,
|
|
194
|
+
message: `Partial content returned inline for '${data.title}' (id: ${id}), lines ${data.line_range?.from ?? from_line}–${data.line_range?.to ?? to_line}. File NOT written to disk (partial content would corrupt the local copy).`,
|
|
195
|
+
metadata: {
|
|
196
|
+
id: data.id,
|
|
197
|
+
type: data.type,
|
|
198
|
+
slug: data.slug,
|
|
199
|
+
virtual_path: data.virtual_path,
|
|
200
|
+
download_type: data.download_type,
|
|
201
|
+
total_lines: data.total_lines,
|
|
202
|
+
line_range: data.line_range,
|
|
203
|
+
},
|
|
204
|
+
content: {
|
|
205
|
+
...(data.html !== undefined && { html: data.html }),
|
|
206
|
+
...(data.css !== undefined && { css: data.css }),
|
|
207
|
+
...(data.js !== undefined && { js: data.js }),
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
// Full download — write to workspace and return summary
|
|
212
|
+
const filesWritten = this.writeItemFiles(data);
|
|
213
|
+
return {
|
|
214
|
+
success: true,
|
|
215
|
+
message: `'${data.title}' (id: ${id}) written to workspace. ${filesWritten.length} file(s) saved.`,
|
|
216
|
+
files_written: filesWritten,
|
|
217
|
+
files_count: filesWritten.length,
|
|
218
|
+
metadata: {
|
|
219
|
+
id: data.id,
|
|
220
|
+
type: data.type,
|
|
221
|
+
slug: data.slug,
|
|
222
|
+
virtual_path: data.virtual_path,
|
|
223
|
+
is_locked: data.is_locked,
|
|
224
|
+
status: data.status,
|
|
225
|
+
download_type: data.download_type,
|
|
226
|
+
total_lines: data.total_lines,
|
|
227
|
+
description: data.description,
|
|
228
|
+
document_content: data.document_content,
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
async getFilesBatch(args) {
|
|
233
|
+
const response = await this.axiosInstance.post("files/batch", args);
|
|
234
|
+
const result = response.data;
|
|
235
|
+
const items = Array.isArray(result.data) ? result.data : [];
|
|
236
|
+
const itemsSummary = [];
|
|
237
|
+
let totalFilesWritten = 0;
|
|
238
|
+
for (const item of items) {
|
|
239
|
+
const filesWritten = this.writeItemFiles(item);
|
|
240
|
+
totalFilesWritten += filesWritten.length;
|
|
241
|
+
itemsSummary.push({
|
|
242
|
+
id: item.id,
|
|
243
|
+
title: item.title,
|
|
244
|
+
slug: item.slug,
|
|
245
|
+
type: item.type,
|
|
246
|
+
virtual_path: item.virtual_path,
|
|
247
|
+
files_written: filesWritten,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
success: true,
|
|
252
|
+
message: `Batch download complete. ${items.length} item(s) downloaded, ${totalFilesWritten} file(s) written to workspace.`,
|
|
253
|
+
items_downloaded: items.length,
|
|
254
|
+
total_files_written: totalFilesWritten,
|
|
255
|
+
items: itemsSummary,
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
async getTemplateInfo(id) {
|
|
259
|
+
const response = await this.axiosInstance.get(`templates/${id}`);
|
|
260
|
+
return response.data;
|
|
261
|
+
}
|
|
262
|
+
async getScriptInfo(id) {
|
|
263
|
+
const response = await this.axiosInstance.get(`scripts/${id}`);
|
|
264
|
+
return response.data;
|
|
265
|
+
}
|
|
266
|
+
async getContentInfo(id) {
|
|
267
|
+
const response = await this.axiosInstance.get(`contents/${id}`);
|
|
268
|
+
return response.data;
|
|
269
|
+
}
|
|
270
|
+
async saveItem(args) {
|
|
271
|
+
const { type, id, html_path, css_path, js_path, document_content_path, ...rest } = args;
|
|
272
|
+
const data = { ...rest };
|
|
273
|
+
if (html_path)
|
|
274
|
+
data.html = this.readFileContent(html_path);
|
|
275
|
+
if (css_path)
|
|
276
|
+
data.css = this.readFileContent(css_path);
|
|
277
|
+
if (js_path)
|
|
278
|
+
data.js = this.readFileContent(js_path);
|
|
279
|
+
if (document_content_path)
|
|
280
|
+
data.document_content = this.readFileContent(document_content_path);
|
|
281
|
+
const response = await this.axiosInstance.post(`${type}/${id}/save`, data);
|
|
282
|
+
return response.data;
|
|
283
|
+
}
|
|
284
|
+
async publishItem(args) {
|
|
285
|
+
const { type, id } = args;
|
|
286
|
+
const response = await this.axiosInstance.post(`${type}/${id}/publish`);
|
|
287
|
+
return response.data;
|
|
288
|
+
}
|
|
289
|
+
async createItem(args) {
|
|
290
|
+
const { type, html_path, css_path, js_path, ...rest } = args;
|
|
291
|
+
const data = { ...rest };
|
|
292
|
+
if (html_path)
|
|
293
|
+
data.html = this.readFileContent(html_path);
|
|
294
|
+
if (css_path)
|
|
295
|
+
data.css = this.readFileContent(css_path);
|
|
296
|
+
if (js_path)
|
|
297
|
+
data.js = this.readFileContent(js_path);
|
|
298
|
+
const response = await this.axiosInstance.post(`${type}`, data);
|
|
299
|
+
return response.data;
|
|
300
|
+
}
|
|
301
|
+
async toggleItem(args) {
|
|
302
|
+
const { type, id, enabled } = args;
|
|
303
|
+
const response = await this.axiosInstance.post(`${type}/${id}/toggle`, { enabled });
|
|
304
|
+
return response.data;
|
|
305
|
+
}
|
|
306
|
+
async updateConditions(args) {
|
|
307
|
+
const { type, id, conditions } = args;
|
|
308
|
+
const response = await this.axiosInstance.post(`${type}/${id}/conditions`, { conditions });
|
|
309
|
+
return response.data;
|
|
310
|
+
}
|
|
311
|
+
async updateMetadata(args) {
|
|
312
|
+
const { type, id, ...data } = args;
|
|
313
|
+
const response = await this.axiosInstance.post(`${type}/${id}/update`, data);
|
|
314
|
+
return response.data;
|
|
315
|
+
}
|
|
316
|
+
async deleteItem(args) {
|
|
317
|
+
const { type, id } = args;
|
|
318
|
+
const response = await this.axiosInstance.delete(`${type}/${id}`);
|
|
319
|
+
return response.data;
|
|
320
|
+
}
|
|
321
|
+
async getRevisions(args) {
|
|
322
|
+
const { type, id } = args;
|
|
323
|
+
const response = await this.axiosInstance.get(`${type}/${id}/revisions`);
|
|
324
|
+
return response.data;
|
|
325
|
+
}
|
|
326
|
+
async restoreRevision(args) {
|
|
327
|
+
const { type, id, revision_id } = args;
|
|
328
|
+
const response = await this.axiosInstance.post(`${type}/${id}/revisions/${revision_id}/restore`);
|
|
329
|
+
return response.data;
|
|
330
|
+
}
|
|
331
|
+
async searchContents(args) {
|
|
332
|
+
const response = await this.axiosInstance.get("contents/search", { params: args });
|
|
333
|
+
return response.data;
|
|
334
|
+
}
|
|
335
|
+
async markContentEdit(args) {
|
|
336
|
+
const { post_id } = args;
|
|
337
|
+
const response = await this.axiosInstance.post(`posts/${post_id}/mark-edit`);
|
|
338
|
+
return response.data;
|
|
339
|
+
}
|
|
340
|
+
async searchMedia(args) {
|
|
341
|
+
const response = await this.axiosInstance.get("media/search", { params: args });
|
|
342
|
+
return response.data;
|
|
343
|
+
}
|
|
344
|
+
async uploadMedia(args) {
|
|
345
|
+
const { file_path, base64, filename, ...rest } = args;
|
|
346
|
+
if (file_path) {
|
|
347
|
+
if (!fs.existsSync(file_path)) {
|
|
348
|
+
throw new Error(`File not found: ${file_path}`);
|
|
349
|
+
}
|
|
350
|
+
const form = new FormData();
|
|
351
|
+
form.append("file", fs.createReadStream(file_path));
|
|
352
|
+
// Add other parameters
|
|
353
|
+
if (filename)
|
|
354
|
+
form.append("filename", filename);
|
|
355
|
+
if (rest.media_type)
|
|
356
|
+
form.append("media_type", rest.media_type);
|
|
357
|
+
if (rest.alt_text)
|
|
358
|
+
form.append("alt_text", rest.alt_text);
|
|
359
|
+
if (rest.title)
|
|
360
|
+
form.append("title", rest.title);
|
|
361
|
+
const response = await this.axiosInstance.post("media/upload", form, {
|
|
362
|
+
headers: {
|
|
363
|
+
...form.getHeaders(),
|
|
364
|
+
},
|
|
365
|
+
});
|
|
366
|
+
return response.data;
|
|
367
|
+
}
|
|
368
|
+
else if (base64 && filename) {
|
|
369
|
+
const response = await this.axiosInstance.post("media/upload", args);
|
|
370
|
+
return response.data;
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
throw new Error("Either file_path or both base64 and filename must be provided.");
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
async getImageSrcset(args) {
|
|
377
|
+
const response = await this.axiosInstance.get("media/srcset", { params: args });
|
|
378
|
+
return response.data;
|
|
379
|
+
}
|
|
380
|
+
async getAgentGuide(guide) {
|
|
381
|
+
const response = await this.axiosInstance.get("guide", { params: { guide } });
|
|
382
|
+
const result = response.data;
|
|
383
|
+
const content = result?.data?.data ?? "";
|
|
384
|
+
const version = result?.data?.version ?? "";
|
|
385
|
+
// Write to .pk-agentic/agent-guide/{guide}.md
|
|
386
|
+
const destDir = path.resolve(".pk-agentic/agent-guide");
|
|
387
|
+
if (!fs.existsSync(destDir)) {
|
|
388
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
389
|
+
}
|
|
390
|
+
const destFile = path.join(destDir, `${guide}.md`);
|
|
391
|
+
fs.writeFileSync(destFile, content, "utf8");
|
|
392
|
+
const relativePath = `.pk-agentic/agent-guide/${guide}.md`;
|
|
393
|
+
return {
|
|
394
|
+
success: true,
|
|
395
|
+
message: `Guide written to ${relativePath}. Read that file now to learn about '${guide}'.`,
|
|
396
|
+
guide,
|
|
397
|
+
version,
|
|
398
|
+
file_written: relativePath,
|
|
399
|
+
absolute_path: destFile,
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
async getRoles() {
|
|
403
|
+
const response = await this.axiosInstance.get("roles");
|
|
404
|
+
return response.data;
|
|
405
|
+
}
|
|
406
|
+
async getTailwindConfig() {
|
|
407
|
+
const response = await this.axiosInstance.get("tailwind-config");
|
|
408
|
+
return response.data;
|
|
409
|
+
}
|
|
410
|
+
async updateTailwindConfig(args) {
|
|
411
|
+
const response = await this.axiosInstance.post("tailwind-config", args);
|
|
412
|
+
return response.data;
|
|
413
|
+
}
|
|
414
|
+
// ── Global Library ──────────────────────────────────────────────────────
|
|
415
|
+
async listLibraries(args) {
|
|
416
|
+
const response = await this.axiosInstance.get("libraries", { params: args });
|
|
417
|
+
const result = response.data;
|
|
418
|
+
// Persist to .pk-agentic/library-info.json
|
|
419
|
+
const filePath = ".pk-agentic/library-info.json";
|
|
420
|
+
const page = args.page ?? 1;
|
|
421
|
+
if (page === 1) {
|
|
422
|
+
this.writeJsonFile(filePath, result);
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
let existing = { data: [] };
|
|
426
|
+
if (fs.existsSync(filePath)) {
|
|
427
|
+
try {
|
|
428
|
+
existing = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
429
|
+
}
|
|
430
|
+
catch {
|
|
431
|
+
/**/
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
existing.data = [...(existing.data ?? []), ...(result.data ?? [])];
|
|
435
|
+
existing.pagination = result.pagination;
|
|
436
|
+
this.writeJsonFile(filePath, existing);
|
|
437
|
+
}
|
|
438
|
+
return {
|
|
439
|
+
success: true,
|
|
440
|
+
message: `Global Libraries written to ${filePath}.`,
|
|
441
|
+
file_written: filePath,
|
|
442
|
+
data: result.data,
|
|
443
|
+
pagination: result.pagination,
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
async createLibrary(args) {
|
|
447
|
+
const response = await this.axiosInstance.post("libraries", args);
|
|
448
|
+
return response.data;
|
|
449
|
+
}
|
|
450
|
+
async updateLibrary(args) {
|
|
451
|
+
const { id, ...data } = args;
|
|
452
|
+
const response = await this.axiosInstance.post(`libraries/${id}/update`, data);
|
|
453
|
+
return response.data;
|
|
454
|
+
}
|
|
455
|
+
async deleteLibrary(args) {
|
|
456
|
+
const { id } = args;
|
|
457
|
+
const response = await this.axiosInstance.delete(`libraries/${id}`);
|
|
458
|
+
return response.data;
|
|
459
|
+
}
|
|
460
|
+
async searchLibraries(args) {
|
|
461
|
+
const response = await this.axiosInstance.get("libraries/search", { params: args });
|
|
462
|
+
return response.data;
|
|
463
|
+
}
|
|
464
|
+
async getLibrary(args) {
|
|
465
|
+
const { id } = args;
|
|
466
|
+
const response = await this.axiosInstance.get(`libraries/${id}`);
|
|
467
|
+
return response.data;
|
|
468
|
+
}
|
|
469
|
+
async cdnDownloadLibrary(args) {
|
|
470
|
+
const { id, urls } = args;
|
|
471
|
+
const response = await this.axiosInstance.post(`libraries/${id}/cdn-download`, { urls });
|
|
472
|
+
return response.data;
|
|
473
|
+
}
|
|
474
|
+
async saveLibraryFiles(args) {
|
|
475
|
+
const { id, files } = args;
|
|
476
|
+
const response = await this.axiosInstance.post(`libraries/${id}/save-files`, { files });
|
|
477
|
+
return response.data;
|
|
478
|
+
}
|
|
479
|
+
async restoreLibraryBackup(args) {
|
|
480
|
+
const { id, backup_key } = args;
|
|
481
|
+
const response = await this.axiosInstance.post(`libraries/${id}/restore-backup`, { backup_key });
|
|
482
|
+
return response.data;
|
|
483
|
+
}
|
|
484
|
+
async updateLibraryConditions(args) {
|
|
485
|
+
const { id, conditions } = args;
|
|
486
|
+
const response = await this.axiosInstance.post(`libraries/${id}/conditions`, { conditions });
|
|
487
|
+
return response.data;
|
|
488
|
+
}
|
|
489
|
+
async toggleLibrary(args) {
|
|
490
|
+
const { id, enabled } = args;
|
|
491
|
+
const response = await this.axiosInstance.post(`libraries/${id}/toggle`, { enabled });
|
|
492
|
+
return response.data;
|
|
493
|
+
}
|
|
494
|
+
async toggleLibraryLock(args) {
|
|
495
|
+
const { id, locked } = args;
|
|
496
|
+
const response = await this.axiosInstance.post(`libraries/${id}/lock`, { locked });
|
|
497
|
+
return response.data;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
//# sourceMappingURL=pk-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-agent.js","sourceRoot":"","sources":["../../src/handlers/pk-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TailwindOptimizeArgs } from "../types.js";
|
|
2
|
+
export declare class TailwindApi {
|
|
3
|
+
optimize(args: TailwindOptimizeArgs): Promise<{
|
|
4
|
+
success: boolean;
|
|
5
|
+
message: string;
|
|
6
|
+
input_css_path: string;
|
|
7
|
+
output_path: string;
|
|
8
|
+
log_path: string;
|
|
9
|
+
css_size: number;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import postcss from "postcss";
|
|
4
|
+
import tailwindcss from "@tailwindcss/postcss";
|
|
5
|
+
import cssnano from "cssnano";
|
|
6
|
+
import { glob } from "glob";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
// Resolve the directory of this compiled file
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = path.dirname(__filename);
|
|
11
|
+
export class TailwindApi {
|
|
12
|
+
async optimize(args) {
|
|
13
|
+
const { tailwind_config } = args; // tailwind_config is now the @theme CSS block string
|
|
14
|
+
const projectRoot = process.cwd();
|
|
15
|
+
// 1. Setup workspace directory
|
|
16
|
+
const workspaceDir = path.join(projectRoot, "workspace");
|
|
17
|
+
if (!fs.existsSync(workspaceDir)) {
|
|
18
|
+
fs.mkdirSync(workspaceDir, { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
const inputCssPath = path.join(workspaceDir, "tailwind.css");
|
|
21
|
+
const outputDir = path.join(workspaceDir, "optimize");
|
|
22
|
+
if (!fs.existsSync(outputDir)) {
|
|
23
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
const outputPath = path.join(outputDir, "optimized-tailwind.css");
|
|
26
|
+
// 2. Resolve absolute path to tailwindcss index.css in MCP node_modules
|
|
27
|
+
const mcpRoot = path.resolve(__dirname, "..", "..");
|
|
28
|
+
const tailwindIndexCss = path.join(mcpRoot, "node_modules", "tailwindcss", "index.css").replace(/\\/g, "/");
|
|
29
|
+
// 3. Discover all files manually for scanning
|
|
30
|
+
const workspaceFiles = await glob([
|
|
31
|
+
path.join(workspaceDir, "**/*.php").replace(/\\/g, "/"),
|
|
32
|
+
path.join(workspaceDir, "**/*.html").replace(/\\/g, "/"),
|
|
33
|
+
], { absolute: true });
|
|
34
|
+
const sourceDirectives = workspaceFiles
|
|
35
|
+
.map((f) => `@source "${f.replace(/\\/g, "/")}";`)
|
|
36
|
+
.join("\n");
|
|
37
|
+
// 4. Write tailwind.css (Input)
|
|
38
|
+
// Use absolute path for core import to avoid "Can't resolve" errors.
|
|
39
|
+
// prefix(pkt) maps to pkt: prefix in v4.
|
|
40
|
+
const cssContent = `
|
|
41
|
+
@import "${tailwindIndexCss}" prefix(pkt);
|
|
42
|
+
|
|
43
|
+
${tailwind_config}
|
|
44
|
+
|
|
45
|
+
${sourceDirectives}
|
|
46
|
+
`;
|
|
47
|
+
fs.writeFileSync(inputCssPath, cssContent.trim());
|
|
48
|
+
try {
|
|
49
|
+
// 6. Run PostCSS
|
|
50
|
+
const css = fs.readFileSync(inputCssPath, "utf-8");
|
|
51
|
+
const result = await postcss([
|
|
52
|
+
tailwindcss({
|
|
53
|
+
base: mcpRoot,
|
|
54
|
+
}),
|
|
55
|
+
cssnano({ preset: "default" })
|
|
56
|
+
]).process(css, {
|
|
57
|
+
from: inputCssPath,
|
|
58
|
+
to: outputPath
|
|
59
|
+
});
|
|
60
|
+
// 6. Write optimized CSS
|
|
61
|
+
fs.writeFileSync(outputPath, result.css);
|
|
62
|
+
// Write log file for debugging
|
|
63
|
+
const logPath = path.join(workspaceDir, "tailwind.log");
|
|
64
|
+
const logContent = `
|
|
65
|
+
[Tailwind Optimize Log - ${new Date().toISOString()}]
|
|
66
|
+
Approach: PostCSS
|
|
67
|
+
Project Root: ${projectRoot}
|
|
68
|
+
Workspace: ${workspaceDir}
|
|
69
|
+
Files Found: ${workspaceFiles.length}
|
|
70
|
+
Output Path: ${outputPath}
|
|
71
|
+
|
|
72
|
+
--- Input CSS ---
|
|
73
|
+
${cssContent.trim()}
|
|
74
|
+
|
|
75
|
+
--- Generated CSS Stats ---
|
|
76
|
+
Size: ${result.css.length} bytes
|
|
77
|
+
`;
|
|
78
|
+
fs.writeFileSync(logPath, logContent.trim());
|
|
79
|
+
return {
|
|
80
|
+
success: true,
|
|
81
|
+
message: `Tailwind CSS optimized successfully using PostCSS. Found ${workspaceFiles.length} source files. Prefix set to 'pkt:'.`,
|
|
82
|
+
input_css_path: path.relative(projectRoot, inputCssPath),
|
|
83
|
+
output_path: path.relative(projectRoot, outputPath),
|
|
84
|
+
log_path: path.relative(projectRoot, logPath),
|
|
85
|
+
css_size: result.css.length
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw new Error(`Tailwind Optimization Error (PostCSS): ${error.message}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=tailwind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../src/handlers/tailwind.ts"],"names":[],"mappings":"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"}
|