@majkapp/plugin-kit 1.3.5 → 1.3.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-kit.d.ts","sourceRoot":"","sources":["../src/plugin-kit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-kit.d.ts","sourceRoot":"","sources":["../src/plugin-kit.ts"],"names":[],"mappings":"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"}
@@ -398,17 +398,49 @@ function serveSpa(ui, req, res, ctx) {
398
398
  `window.__MAJK_IFRAME_BASE__=${JSON.stringify(ui.base)};` +
399
399
  `window.__MAJK_PLUGIN_ID__=${JSON.stringify(ctx.pluginId)};` +
400
400
  `</script>`;
401
+ // Inject html2canvas library (inline from node_modules)
402
+ const html2canvasScript = BuiltPlugin.html2canvasScript
403
+ ? `<script>${BuiltPlugin.html2canvasScript}</script>`
404
+ : '';
401
405
  // Inject MCP DOM Agent script
402
406
  const mcpScript = BuiltPlugin.mcpDomAgentScript
403
407
  ? `<script>${BuiltPlugin.mcpDomAgentScript}</script>`
404
408
  : '';
405
- const allInjections = configInject + mcpScript;
409
+ const allInjections = configInject + html2canvasScript + mcpScript;
406
410
  const injected = html.replace('</head>', `${allInjections}</head>`);
407
411
  content = Buffer.from(injected, 'utf-8');
408
412
  }
409
413
  res.writeHead(200, corsHeaders({ 'Content-Type': getContentType(targetFile) }));
410
414
  res.end(content);
411
415
  }
416
+ /**
417
+ * Load html2canvas library from node_modules
418
+ */
419
+ function loadHtml2CanvasScript() {
420
+ try {
421
+ // Try multiple possible paths for html2canvas
422
+ const possiblePaths = [
423
+ // When running from dist/ (after build)
424
+ path_1.default.join(__dirname, '..', 'node_modules', 'html2canvas', 'dist', 'html2canvas.min.js'),
425
+ // When running from src/ (development)
426
+ path_1.default.join(__dirname, '..', '..', 'node_modules', 'html2canvas', 'dist', 'html2canvas.min.js'),
427
+ // When installed as a dependency in user's project
428
+ path_1.default.join(__dirname, '..', '..', '..', 'html2canvas', 'dist', 'html2canvas.min.js'),
429
+ ];
430
+ for (const scriptPath of possiblePaths) {
431
+ if (fs_1.default.existsSync(scriptPath)) {
432
+ log(`[html2canvas] Loaded from: ${scriptPath}`);
433
+ return fs_1.default.readFileSync(scriptPath, 'utf-8');
434
+ }
435
+ }
436
+ log('[html2canvas] Script file not found in any expected location');
437
+ return '';
438
+ }
439
+ catch (error) {
440
+ log(`[html2canvas] Failed to load script: ${error.message}`);
441
+ return '';
442
+ }
443
+ }
412
444
  /**
413
445
  * Load MCP DOM Agent script
414
446
  */
@@ -584,7 +616,16 @@ class BuiltPlugin {
584
616
  context.logger.info(`🌐 HTTP Port: ${context.http.port}`);
585
617
  context.logger.info(`🔗 Base URL: ${context.http.baseUrl}`);
586
618
  context.logger.info('═══════════════════════════════════════════════════════');
587
- // Load MCP DOM Agent script once for all plugins
619
+ // Load html2canvas and MCP DOM Agent scripts once for all plugins
620
+ if (!BuiltPlugin.html2canvasScript) {
621
+ BuiltPlugin.html2canvasScript = loadHtml2CanvasScript();
622
+ if (BuiltPlugin.html2canvasScript) {
623
+ context.logger.info('✅ html2canvas library loaded - screenshot support enabled');
624
+ }
625
+ else {
626
+ context.logger.warn('⚠️ html2canvas not found - screenshots will use fallback mode');
627
+ }
628
+ }
588
629
  if (!BuiltPlugin.mcpDomAgentScript) {
589
630
  BuiltPlugin.mcpDomAgentScript = loadMcpDomAgentScript();
590
631
  if (BuiltPlugin.mcpDomAgentScript) {
@@ -879,7 +920,13 @@ class BuiltPlugin {
879
920
  timestamp: new Date().toISOString(),
880
921
  size: buffer.length
881
922
  }, null, 2));
882
- this.context.logger.info(`📸 Screenshot saved: ${filepath}`);
923
+ // Log with full details
924
+ const absolutePath = path_1.default.resolve(filepath);
925
+ const absoluteMetadataPath = path_1.default.resolve(metadataPath);
926
+ this.context.logger.info(`📸 Screenshot saved successfully:`);
927
+ this.context.logger.info(` Image: ${absolutePath}`);
928
+ this.context.logger.info(` Metadata: ${absoluteMetadataPath}`);
929
+ this.context.logger.info(` Size: ${(buffer.length / 1024).toFixed(2)} KB`);
883
930
  res.writeHead(200, corsHeaders({ 'Content-Type': 'application/json' }));
884
931
  res.end(JSON.stringify({
885
932
  success: true,
@@ -943,18 +990,22 @@ class BuiltPlugin {
943
990
  return;
944
991
  }
945
992
  }
946
- // Inject MCP DOM Agent script into HTML screens
993
+ // Inject html2canvas and MCP DOM Agent script into HTML screens
947
994
  if (BuiltPlugin.mcpDomAgentScript) {
995
+ const html2canvasScript = BuiltPlugin.html2canvasScript
996
+ ? `<script>${BuiltPlugin.html2canvasScript}</script>`
997
+ : '';
948
998
  const mcpScript = `<script>${BuiltPlugin.mcpDomAgentScript}</script>`;
999
+ const allScripts = html2canvasScript + mcpScript;
949
1000
  // Try to inject before </body>, fallback to </head>, fallback to end of HTML
950
1001
  if (htmlContent.includes('</body>')) {
951
- htmlContent = htmlContent.replace('</body>', `${mcpScript}</body>`);
1002
+ htmlContent = htmlContent.replace('</body>', `${allScripts}</body>`);
952
1003
  }
953
1004
  else if (htmlContent.includes('</head>')) {
954
- htmlContent = htmlContent.replace('</head>', `${mcpScript}</head>`);
1005
+ htmlContent = htmlContent.replace('</head>', `${allScripts}</head>`);
955
1006
  }
956
1007
  else {
957
- htmlContent += mcpScript;
1008
+ htmlContent += allScripts;
958
1009
  }
959
1010
  }
960
1011
  res.end(htmlContent);
@@ -1108,6 +1159,7 @@ class BuiltPlugin {
1108
1159
  }
1109
1160
  // MCP DOM Agent script (loaded once at startup, accessible to serveSpa function)
1110
1161
  BuiltPlugin.mcpDomAgentScript = null;
1162
+ BuiltPlugin.html2canvasScript = null;
1111
1163
  /**
1112
1164
  * Group tools by scope
1113
1165
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@majkapp/plugin-kit",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Fluent builder framework for creating robust MAJK plugins",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,7 +21,7 @@
21
21
  "README.md"
22
22
  ],
23
23
  "scripts": {
24
- "build": "tsc && cp src/mcp-dom-agent.js dist/mcp-dom-agent.js",
24
+ "build": "tsc && cp src/mcp-dom-agent.js dist/",
25
25
  "watch": "tsc --watch",
26
26
  "clean": "rm -rf dist"
27
27
  },
@@ -33,7 +33,8 @@
33
33
  ],
34
34
  "author": "Majk Contributors",
35
35
  "dependencies": {
36
- "commander": "^11.1.0"
36
+ "commander": "^11.1.0",
37
+ "html2canvas": "^1.4.1"
37
38
  },
38
39
  "devDependencies": {
39
40
  "@types/node": "^20.19.24",