wmcp-annotate 1.0.3

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.
@@ -0,0 +1,178 @@
1
+ import { chromium } from 'playwright';
2
+ import AjvModule from 'ajv';
3
+ const Ajv = AjvModule.default || AjvModule;
4
+ const ajv = new Ajv();
5
+ class Validator {
6
+ browser = null;
7
+ async validate(url) {
8
+ await this.ensureBrowser();
9
+ const page = await this.browser.newPage();
10
+ try {
11
+ // Navigate with WebMCP flag (Chrome 146+)
12
+ await page.goto(url, { waitUntil: 'networkidle' });
13
+ // Query registered tools
14
+ const tools = await page.evaluate(() => {
15
+ // @ts-ignore - WebMCP API
16
+ if (typeof navigator.modelContext?.getTools === 'function') {
17
+ // @ts-ignore
18
+ return navigator.modelContext.getTools();
19
+ }
20
+ return [];
21
+ });
22
+ const validations = [];
23
+ let validCount = 0;
24
+ let warningCount = 0;
25
+ let errorCount = 0;
26
+ for (const tool of tools) {
27
+ const validation = this.validateTool(tool);
28
+ validations.push(validation);
29
+ if (validation.status === 'valid')
30
+ validCount++;
31
+ else if (validation.status === 'warning')
32
+ warningCount++;
33
+ else
34
+ errorCount++;
35
+ }
36
+ return {
37
+ url,
38
+ validatedAt: new Date().toISOString(),
39
+ summary: {
40
+ total: tools.length,
41
+ valid: validCount,
42
+ warnings: warningCount,
43
+ errors: errorCount,
44
+ },
45
+ tools: validations,
46
+ };
47
+ }
48
+ finally {
49
+ await page.close();
50
+ }
51
+ }
52
+ validateTool(tool) {
53
+ const checks = {};
54
+ const issues = [];
55
+ // Check name format (camelCase)
56
+ if (this.isCamelCase(tool.name)) {
57
+ checks.nameConvention = 'pass';
58
+ }
59
+ else {
60
+ checks.nameConvention = 'fail';
61
+ issues.push({
62
+ level: 'error',
63
+ code: 'NAME_FORMAT',
64
+ message: 'Tool name must be camelCase',
65
+ suggestion: `Rename to: ${this.toCamelCase(tool.name)}`,
66
+ });
67
+ }
68
+ // Check description
69
+ if (!tool.description) {
70
+ checks.descriptionPresent = 'fail';
71
+ issues.push({
72
+ level: 'error',
73
+ code: 'DESCRIPTION_MISSING',
74
+ message: 'Description is required',
75
+ });
76
+ }
77
+ else if (tool.description.length < 20) {
78
+ checks.descriptionPresent = 'warning';
79
+ issues.push({
80
+ level: 'warning',
81
+ code: 'DESCRIPTION_TOO_SHORT',
82
+ message: 'Description should be at least 20 characters',
83
+ suggestion: 'Add more detail about what this tool does',
84
+ });
85
+ }
86
+ else {
87
+ checks.descriptionPresent = 'pass';
88
+ }
89
+ // Check schema validity
90
+ if (tool.inputSchema) {
91
+ try {
92
+ ajv.compile(tool.inputSchema);
93
+ checks.schemaValid = 'pass';
94
+ // Check for property descriptions
95
+ const props = tool.inputSchema.properties || {};
96
+ const missingDesc = Object.entries(props).filter(([_, prop]) => !prop.description);
97
+ if (missingDesc.length > 0) {
98
+ checks.schemaDescriptions = 'warning';
99
+ issues.push({
100
+ level: 'warning',
101
+ code: 'SCHEMA_NO_DESCRIPTION',
102
+ message: `Properties missing descriptions: ${missingDesc.map(([k]) => k).join(', ')}`,
103
+ });
104
+ }
105
+ else {
106
+ checks.schemaDescriptions = 'pass';
107
+ }
108
+ }
109
+ catch (error) {
110
+ checks.schemaValid = 'fail';
111
+ issues.push({
112
+ level: 'error',
113
+ code: 'SCHEMA_INVALID',
114
+ message: `Invalid JSON Schema: ${error instanceof Error ? error.message : 'Unknown error'}`,
115
+ });
116
+ }
117
+ }
118
+ // Check handler
119
+ if (typeof tool.execute === 'function') {
120
+ checks.handlerPresent = 'pass';
121
+ // Check if async
122
+ if (tool.execute.constructor.name === 'AsyncFunction') {
123
+ checks.handlerAsync = 'pass';
124
+ }
125
+ else {
126
+ checks.handlerAsync = 'fail';
127
+ issues.push({
128
+ level: 'error',
129
+ code: 'HANDLER_NOT_ASYNC',
130
+ message: 'Execute handler must be an async function',
131
+ });
132
+ }
133
+ }
134
+ else {
135
+ checks.handlerPresent = 'fail';
136
+ issues.push({
137
+ level: 'error',
138
+ code: 'HANDLER_MISSING',
139
+ message: 'Execute handler is required',
140
+ });
141
+ }
142
+ // Determine overall status
143
+ let status = 'valid';
144
+ if (issues.some(i => i.level === 'error')) {
145
+ status = 'error';
146
+ }
147
+ else if (issues.some(i => i.level === 'warning')) {
148
+ status = 'warning';
149
+ }
150
+ return {
151
+ name: tool.name,
152
+ status,
153
+ checks,
154
+ issues: issues.length > 0 ? issues : undefined,
155
+ };
156
+ }
157
+ isCamelCase(str) {
158
+ return /^[a-z][a-zA-Z0-9]*$/.test(str);
159
+ }
160
+ toCamelCase(str) {
161
+ return str
162
+ .replace(/[-_\s]+(.)?/g, (_, c) => (c ? c.toUpperCase() : ''))
163
+ .replace(/^./, c => c.toLowerCase());
164
+ }
165
+ async ensureBrowser() {
166
+ if (!this.browser) {
167
+ this.browser = await chromium.launch({ headless: true });
168
+ }
169
+ }
170
+ async close() {
171
+ if (this.browser) {
172
+ await this.browser.close();
173
+ this.browser = null;
174
+ }
175
+ }
176
+ }
177
+ export const validator = new Validator();
178
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/lib/validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ // Core types for wmcp-annotate
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+BAA+B"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "wmcp-annotate",
3
+ "version": "1.0.3",
4
+ "description": "Make any website AI-agent ready with WebMCP annotations",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "wmcp-annotate": "dist/index.js"
8
+ },
9
+ "type": "module",
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsx src/index.ts",
13
+ "test": "vitest",
14
+ "test:coverage": "vitest --coverage",
15
+ "lint": "eslint src --ext .ts",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "webmcp",
20
+ "ai",
21
+ "agents",
22
+ "automation",
23
+ "browser",
24
+ "cli",
25
+ "w3c",
26
+ "mcp",
27
+ "model-context-protocol"
28
+ ],
29
+ "author": "Satyan Avatara <rsatyan@gmail.com>",
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/rsatyan/wmcp-annotate.git"
34
+ },
35
+ "homepage": "https://github.com/rsatyan/wmcp-annotate#readme",
36
+ "bugs": {
37
+ "url": "https://github.com/rsatyan/wmcp-annotate/issues"
38
+ },
39
+ "engines": {
40
+ "node": ">=18.0.0"
41
+ },
42
+ "dependencies": {
43
+ "ajv": "^8.17.0",
44
+ "chalk": "^5.3.0",
45
+ "cheerio": "^1.0.0",
46
+ "commander": "^12.1.0",
47
+ "handlebars": "^4.7.8",
48
+ "ora": "^8.0.0"
49
+ },
50
+ "optionalDependencies": {
51
+ "playwright": "^1.48.0"
52
+ },
53
+ "devDependencies": {
54
+ "@anthropic-ai/sdk": "^0.30.0",
55
+ "@types/node": "^22.0.0",
56
+ "eslint": "^9.0.0",
57
+ "tsx": "^4.19.0",
58
+ "typescript": "^5.6.0",
59
+ "vitest": "^2.1.0"
60
+ }
61
+ }