@respira/wordpress-mcp-server 7.3.0 → 7.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.
Files changed (88) hide show
  1. package/dist/acf-tools.d.ts +0 -10
  2. package/dist/acf-tools.d.ts.map +1 -1
  3. package/dist/acf-tools.js +0 -15
  4. package/dist/acf-tools.js.map +1 -1
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +31 -36
  7. package/dist/config.js.map +1 -1
  8. package/dist/server.d.ts +0 -47
  9. package/dist/server.d.ts.map +1 -1
  10. package/dist/server.js +404 -462
  11. package/dist/server.js.map +1 -1
  12. package/dist/wordpress-client.d.ts +26 -29
  13. package/dist/wordpress-client.d.ts.map +1 -1
  14. package/dist/wordpress-client.js +115 -148
  15. package/dist/wordpress-client.js.map +1 -1
  16. package/package.json +2 -2
  17. package/skills/activity-report-composer/README.md +38 -0
  18. package/skills/activity-report-composer/SKILL.md +167 -0
  19. package/skills/activity-report-composer/metadata.json +42 -0
  20. package/skills/brand-voice-synthesizer/README.md +43 -0
  21. package/skills/brand-voice-synthesizer/SKILL.md +259 -0
  22. package/skills/brand-voice-synthesizer/metadata.json +46 -0
  23. package/skills/build-oxygen6-page/SKILL.md +59 -0
  24. package/skills/conversion-audit/README.md +37 -0
  25. package/skills/conversion-audit/SKILL.md +185 -0
  26. package/skills/conversion-audit/metadata.json +46 -0
  27. package/skills/custom-post-type-architect/README.md +34 -0
  28. package/skills/custom-post-type-architect/SKILL.md +158 -0
  29. package/skills/custom-post-type-architect/metadata.json +39 -0
  30. package/skills/design-system-synthesizer/README.md +46 -0
  31. package/skills/design-system-synthesizer/SKILL.md +395 -0
  32. package/skills/design-system-synthesizer/metadata.json +57 -0
  33. package/skills/figma-to-elementor/SKILL.md +204 -0
  34. package/skills/html-to-bricks/README.md +43 -0
  35. package/skills/html-to-bricks/SKILL.md +135 -0
  36. package/skills/html-to-bricks/metadata.json +41 -0
  37. package/skills/internal-link-builder/SKILL.md +258 -0
  38. package/skills/internal-link-builder/metadata.json +46 -0
  39. package/skills/migrate-beaver-builder-to-bricks/SKILL.md +251 -0
  40. package/skills/migrate-beaver-builder-to-gutenberg/SKILL.md +248 -0
  41. package/skills/migrate-brizy-to-gutenberg/SKILL.md +248 -0
  42. package/skills/migrate-divi-to-breakdance/SKILL.md +312 -0
  43. package/skills/migrate-divi-to-bricks/SKILL.md +321 -0
  44. package/skills/migrate-divi-to-gutenberg/SKILL.md +328 -0
  45. package/skills/migrate-elementor-to-breakdance/SKILL.md +287 -0
  46. package/skills/migrate-elementor-to-bricks/SKILL.md +289 -0
  47. package/skills/migrate-elementor-to-gutenberg/SKILL.md +327 -0
  48. package/skills/migrate-elementor-to-oxygen/SKILL.md +300 -0
  49. package/skills/migrate-oxygen-to-breakdance/SKILL.md +235 -0
  50. package/skills/migrate-oxygen-to-bricks/SKILL.md +237 -0
  51. package/skills/migrate-thrive-architect-to-gutenberg/SKILL.md +257 -0
  52. package/skills/migrate-visual-composer-to-gutenberg/SKILL.md +261 -0
  53. package/skills/migrate-wpbakery-to-bricks/SKILL.md +336 -0
  54. package/skills/migrate-wpbakery-to-gutenberg/SKILL.md +345 -0
  55. package/skills/mobile-experience-report/SKILL.md +719 -0
  56. package/skills/mobile-experience-report/telemetry.ts +137 -0
  57. package/skills/page-template-library/README.md +41 -0
  58. package/skills/page-template-library/SKILL.md +175 -0
  59. package/skills/page-template-library/metadata.json +44 -0
  60. package/skills/prime-the-agent/README.md +49 -0
  61. package/skills/prime-the-agent/SKILL.md +225 -0
  62. package/skills/prime-the-agent/metadata.json +46 -0
  63. package/skills/respira-setup-assistant/SKILL.md +386 -0
  64. package/skills/respira-setup-assistant/metadata.json +36 -0
  65. package/skills/seo-aeo-amplifier/README.md +61 -0
  66. package/skills/seo-aeo-amplifier/SKILL.md +277 -0
  67. package/skills/seo-aeo-amplifier/metadata.json +62 -0
  68. package/skills/stale-content-detector/README.md +41 -0
  69. package/skills/stale-content-detector/SKILL.md +156 -0
  70. package/skills/stale-content-detector/metadata.json +43 -0
  71. package/skills/technical-debt-audit/SKILL.md +691 -0
  72. package/skills/technical-debt-audit/telemetry.ts +142 -0
  73. package/skills/woocommerce-health-check/SKILL.md +719 -0
  74. package/skills/woocommerce-health-check/telemetry.ts +137 -0
  75. package/skills/wordpress-ai-image-optimizer/README.md +49 -0
  76. package/skills/wordpress-ai-image-optimizer/SKILL.md +232 -0
  77. package/skills/wordpress-ai-image-optimizer/metadata.json +63 -0
  78. package/skills/wordpress-site-dna/README.md +81 -0
  79. package/skills/wordpress-site-dna/SKILL.md +669 -0
  80. package/skills/wordpress-site-dna/telemetry.ts +137 -0
  81. package/dist/__tests__/acf-tool-routing.test.d.ts +0 -2
  82. package/dist/__tests__/acf-tool-routing.test.d.ts.map +0 -1
  83. package/dist/__tests__/acf-tool-routing.test.js +0 -37
  84. package/dist/__tests__/acf-tool-routing.test.js.map +0 -1
  85. package/dist/__tests__/cowork-bootstrap.test.d.ts +0 -2
  86. package/dist/__tests__/cowork-bootstrap.test.d.ts.map +0 -1
  87. package/dist/__tests__/cowork-bootstrap.test.js +0 -61
  88. package/dist/__tests__/cowork-bootstrap.test.js.map +0 -1
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Technical Debt Audit — Telemetry helper
3
+ * Fire-and-forget usage tracking to respira.press/api/skills/track-usage
4
+ * Never blocks skill execution.
5
+ */
6
+
7
+ export interface TechnicalDebtAuditTelemetry {
8
+ session_id: string;
9
+ user_id?: string | null;
10
+ wordpress_site_url?: string;
11
+ wordpress_version?: string;
12
+ php_version?: string;
13
+ started_at: string;
14
+ completed_at?: string;
15
+ duration_ms?: number;
16
+ success: boolean;
17
+ error_message?: string | null;
18
+ issues_found?: number;
19
+ issues_by_severity?: {
20
+ critical: number;
21
+ high: number;
22
+ medium: number;
23
+ low: number;
24
+ };
25
+ health_score?: number;
26
+ mcp_tools_used?: string[];
27
+ findings_summary?: {
28
+ orphaned_shortcodes: number;
29
+ unused_plugins: number;
30
+ database_bloat_mb: number;
31
+ unused_media_files: number;
32
+ inactive_builders: number;
33
+ };
34
+ had_respira_before?: boolean;
35
+ installed_respira_after?: boolean;
36
+ assistant_client?: string;
37
+ assistant_version?: string;
38
+ assistant_transport?: string;
39
+ telemetry_source?: string;
40
+ }
41
+
42
+ const TELEMETRY_ENDPOINT = 'https://www.respira.press/api/skills/track-usage';
43
+
44
+ function detectAssistantTelemetry(): {
45
+ assistant_client?: string;
46
+ assistant_version?: string;
47
+ assistant_transport?: string;
48
+ telemetry_source?: string;
49
+ } {
50
+ const env: Record<string, string | undefined> =
51
+ typeof process !== 'undefined' && process?.env ? (process.env as Record<string, string | undefined>) : {};
52
+
53
+ const explicitClient = env.RESPIRA_AGENT_CLIENT || env.MCP_AGENT_CLIENT || env.AI_AGENT_CLIENT;
54
+ const explicitTransport = env.RESPIRA_AGENT_TRANSPORT || env.MCP_AGENT_TRANSPORT;
55
+ const explicitVersion = env.RESPIRA_AGENT_VERSION || env.MCP_AGENT_VERSION || env.AI_AGENT_VERSION;
56
+
57
+ const fingerprint = [
58
+ explicitClient,
59
+ env.CURSOR_AGENT,
60
+ env.CURSOR_TRACE_ID,
61
+ env.CLAUDECODE,
62
+ env.CLAUDE_CODE_ENTRYPOINT,
63
+ env.CODEIUM_ENV,
64
+ env.TERM_PROGRAM,
65
+ env.TERM_PROGRAM_VERSION,
66
+ typeof navigator !== 'undefined' ? navigator.userAgent : '',
67
+ ]
68
+ .filter(Boolean)
69
+ .join(' ')
70
+ .toLowerCase();
71
+
72
+ const inferredClient = (() => {
73
+ if (explicitClient) return explicitClient.toLowerCase();
74
+ if (fingerprint.includes('cursor')) return 'cursor';
75
+ if (fingerprint.includes('claude')) return 'claude-code';
76
+ if (fingerprint.includes('codex')) return 'codex';
77
+ if (fingerprint.includes('windsurf') || fingerprint.includes('codeium')) return 'windsurf';
78
+ if (fingerprint.includes('copilot')) return 'copilot';
79
+ if (fingerprint.includes('gemini')) return 'gemini';
80
+ return undefined;
81
+ })();
82
+
83
+ return {
84
+ assistant_client: inferredClient,
85
+ assistant_version: explicitVersion?.toLowerCase(),
86
+ assistant_transport: (explicitTransport || 'desktop-mcp').toLowerCase(),
87
+ telemetry_source: explicitClient ? 'env' : inferredClient ? 'heuristic' : 'skill-fetch',
88
+ };
89
+ }
90
+
91
+ /**
92
+ * Send skill usage telemetry.
93
+ * Non-blocking: errors are swallowed, never thrown.
94
+ * Call after the skill completes — success or failure.
95
+ */
96
+ export function trackSkillUsage(data: TechnicalDebtAuditTelemetry): void {
97
+ const detected = detectAssistantTelemetry();
98
+ const payload = {
99
+ skill_slug: 'technical-debt-audit',
100
+ had_respira_before: true,
101
+ ...detected,
102
+ ...data,
103
+ };
104
+
105
+ const headers: Record<string, string> = {
106
+ 'Content-Type': 'application/json',
107
+ };
108
+
109
+ if (payload.assistant_client) {
110
+ headers['X-Respira-Agent-Client'] = payload.assistant_client;
111
+ }
112
+ if (payload.assistant_version) {
113
+ headers['X-Respira-Agent-Version'] = payload.assistant_version;
114
+ }
115
+ if (payload.assistant_transport) {
116
+ headers['X-Respira-Agent-Transport'] = payload.assistant_transport;
117
+ }
118
+
119
+ // Fire and forget — intentionally not awaited
120
+ fetch(TELEMETRY_ENDPOINT, {
121
+ method: 'POST',
122
+ headers,
123
+ body: JSON.stringify(payload),
124
+ }).catch(() => {
125
+ // Silently swallow all errors — telemetry must never break the skill
126
+ });
127
+ }
128
+
129
+ /**
130
+ * Generate a session ID for tracking a single skill run.
131
+ */
132
+ export function generateSessionId(): string {
133
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
134
+ return crypto.randomUUID();
135
+ }
136
+ // Fallback for environments without crypto.randomUUID
137
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
138
+ const r = (Math.random() * 16) | 0;
139
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
140
+ return v.toString(16);
141
+ });
142
+ }