@respira/wordpress-mcp-server 6.19.11 → 7.1.1

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 (45) hide show
  1. package/README.md +17 -5
  2. package/certs/mozilla-ca.pem +3228 -0
  3. package/dist/__tests__/startup-guard.test.d.ts +2 -0
  4. package/dist/__tests__/startup-guard.test.d.ts.map +1 -0
  5. package/dist/__tests__/startup-guard.test.js +49 -0
  6. package/dist/__tests__/startup-guard.test.js.map +1 -0
  7. package/dist/__tests__/system-ca.test.d.ts +2 -0
  8. package/dist/__tests__/system-ca.test.d.ts.map +1 -0
  9. package/dist/__tests__/system-ca.test.js +232 -0
  10. package/dist/__tests__/system-ca.test.js.map +1 -0
  11. package/dist/bricks-tools.d.ts.map +1 -1
  12. package/dist/bricks-tools.js +121 -0
  13. package/dist/bricks-tools.js.map +1 -1
  14. package/dist/config.d.ts +1 -7
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +4 -10
  17. package/dist/config.js.map +1 -1
  18. package/dist/index.js +25 -2
  19. package/dist/index.js.map +1 -1
  20. package/dist/install-skills.d.ts +20 -0
  21. package/dist/install-skills.d.ts.map +1 -0
  22. package/dist/install-skills.js +206 -0
  23. package/dist/install-skills.js.map +1 -0
  24. package/dist/server.d.ts.map +1 -1
  25. package/dist/server.js +348 -6
  26. package/dist/server.js.map +1 -1
  27. package/dist/startup-guard.d.ts +73 -0
  28. package/dist/startup-guard.d.ts.map +1 -0
  29. package/dist/startup-guard.js +169 -0
  30. package/dist/startup-guard.js.map +1 -0
  31. package/dist/system-ca.d.ts +30 -0
  32. package/dist/system-ca.d.ts.map +1 -0
  33. package/dist/system-ca.js +195 -0
  34. package/dist/system-ca.js.map +1 -0
  35. package/dist/types/index.d.ts +3 -2
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/wordpress-client.d.ts +23 -6
  38. package/dist/wordpress-client.d.ts.map +1 -1
  39. package/dist/wordpress-client.js +74 -23
  40. package/dist/wordpress-client.js.map +1 -1
  41. package/package.json +4 -3
  42. package/skills/respira-builder-edits/SKILL.md +100 -0
  43. package/skills/respira-setup/SKILL.md +36 -18
  44. package/skills/respira-site-audit/SKILL.md +113 -0
  45. package/skills/respira-woocommerce/SKILL.md +135 -0
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Startup guard — fail loud, never wedge silently.
3
+ *
4
+ * Two protections, both aimed at the same failure class: an installed connector
5
+ * that is too old for the setup code it was handed, or one that stalls on
6
+ * startup for any reason. Before this guard, an outdated Claude Desktop bundle
7
+ * (e.g. a 6.x build fed a newer dashboard setup code) would start, accept the
8
+ * connect handshake, then hang until the host killed it ~7s later with no error
9
+ * shown to the user. Reported by a MaxAd customer 2026-06-04: "i cannot connect
10
+ * the 5th site you have changed everything" — the bundled build silently died on
11
+ * every retry. The fix on their side is to reinstall, but the connector should
12
+ * have said so instead of dying quietly.
13
+ *
14
+ * 1. assertConnectorMeetsConfig — if the setup code declares a minimum connector
15
+ * version newer than this build, throw a clear, actionable error (reinstall
16
+ * from the dashboard) instead of attempting to run with a config it can't
17
+ * fully understand.
18
+ * 2. installStartupWatchdog — a timer that, if the server has not finished
19
+ * connecting within a budget, writes a diagnostic file and exits with a clear
20
+ * message. Robust to ANY stall cause (config, network, certificate), since it
21
+ * does not depend on knowing why startup hung.
22
+ *
23
+ * Both paths write ~/.respira/last-startup-error.txt so Cowork, the doctor
24
+ * command, or the user can read what went wrong after the host swallows stderr.
25
+ */
26
+ /**
27
+ * Read this connector's own version from package.json. Mirrors the read in
28
+ * server.ts but kept self-contained so the entry point can compare versions
29
+ * without importing the (large) server module.
30
+ */
31
+ export declare function getConnectorVersion(): string;
32
+ /**
33
+ * Compare two semver-ish versions. Returns -1 if a < b, 1 if a > b, 0 if equal
34
+ * or either is unparseable (unknown versions compare equal so they never block).
35
+ */
36
+ export declare function compareVersions(a: string, b: string): number;
37
+ /**
38
+ * Pull the declared minimum connector version out of a loaded config, if the
39
+ * dashboard stamped one. Stored under metadata.minConnectorVersion so older
40
+ * builds that don't know the field simply ignore it (forward compatible).
41
+ */
42
+ export declare function getConfiguredMinConnectorVersion(config: unknown): string | null;
43
+ /** Error thrown when the installed connector is older than the config requires. */
44
+ export declare class OutdatedConnectorError extends Error {
45
+ readonly code = "respira_outdated_connector";
46
+ readonly requiredVersion: string;
47
+ readonly currentVersion: string;
48
+ constructor(requiredVersion: string, currentVersion: string);
49
+ }
50
+ /**
51
+ * Throw a clear, actionable error if the config declares a minimum connector
52
+ * version newer than this build. No-op when the field is absent or this build
53
+ * is new enough. Call right after loadConfig(), before connecting.
54
+ */
55
+ export declare function assertConnectorMeetsConfig(config: unknown, connectorVersion: string): void;
56
+ /**
57
+ * Best-effort write of a single diagnostic file the user / Cowork / doctor can
58
+ * read after the host swallows stderr. Never throws.
59
+ */
60
+ export declare function writeStartupDiagnostic(message: string): void;
61
+ export type StartupWatchdog = {
62
+ clear: () => void;
63
+ };
64
+ /**
65
+ * Arm a watchdog that fires if startup has not signalled completion within the
66
+ * budget. On fire it writes a diagnostic and exits, turning a silent stall into
67
+ * a clear, recorded failure. Call clear() once the transport is connected.
68
+ *
69
+ * The timer is intentionally NOT unref()'d: during a stall some pending promise
70
+ * keeps the loop alive, and we want the watchdog to reliably win that race.
71
+ */
72
+ export declare function installStartupWatchdog(connectorVersion: string): StartupWatchdog;
73
+ //# sourceMappingURL=startup-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-guard.d.ts","sourceRoot":"","sources":["../src/startup-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAkBH;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAY5C;AAWD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/E;AAED,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEpB,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAW5D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAQ1F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAU5D;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC;AAEpD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,eAAe,CA0BhF"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Startup guard — fail loud, never wedge silently.
3
+ *
4
+ * Two protections, both aimed at the same failure class: an installed connector
5
+ * that is too old for the setup code it was handed, or one that stalls on
6
+ * startup for any reason. Before this guard, an outdated Claude Desktop bundle
7
+ * (e.g. a 6.x build fed a newer dashboard setup code) would start, accept the
8
+ * connect handshake, then hang until the host killed it ~7s later with no error
9
+ * shown to the user. Reported by a MaxAd customer 2026-06-04: "i cannot connect
10
+ * the 5th site you have changed everything" — the bundled build silently died on
11
+ * every retry. The fix on their side is to reinstall, but the connector should
12
+ * have said so instead of dying quietly.
13
+ *
14
+ * 1. assertConnectorMeetsConfig — if the setup code declares a minimum connector
15
+ * version newer than this build, throw a clear, actionable error (reinstall
16
+ * from the dashboard) instead of attempting to run with a config it can't
17
+ * fully understand.
18
+ * 2. installStartupWatchdog — a timer that, if the server has not finished
19
+ * connecting within a budget, writes a diagnostic file and exits with a clear
20
+ * message. Robust to ANY stall cause (config, network, certificate), since it
21
+ * does not depend on knowing why startup hung.
22
+ *
23
+ * Both paths write ~/.respira/last-startup-error.txt so Cowork, the doctor
24
+ * command, or the user can read what went wrong after the host swallows stderr.
25
+ */
26
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
27
+ import { join, dirname, resolve } from 'node:path';
28
+ import { homedir } from 'node:os';
29
+ import { fileURLToPath } from 'node:url';
30
+ const CONFIG_DIR = join(homedir(), '.respira');
31
+ const STARTUP_ERROR_FILE = join(CONFIG_DIR, 'last-startup-error.txt');
32
+ const DASHBOARD_URL = 'https://respira.press/dashboard/mcp';
33
+ /** Default startup budget. Healthy startup connects in well under a second; the
34
+ * host typically kills a stalled server around 7s, so a 6s budget leaves a
35
+ * diagnostic breadcrumb just before that happens without false-tripping on a
36
+ * cold start. Override with RESPIRA_STARTUP_BUDGET_MS. */
37
+ const DEFAULT_STARTUP_BUDGET_MS = 6000;
38
+ const MIN_STARTUP_BUDGET_MS = 2000;
39
+ /**
40
+ * Read this connector's own version from package.json. Mirrors the read in
41
+ * server.ts but kept self-contained so the entry point can compare versions
42
+ * without importing the (large) server module.
43
+ */
44
+ export function getConnectorVersion() {
45
+ try {
46
+ const currentDir = dirname(fileURLToPath(import.meta.url));
47
+ const pkgPath = resolve(currentDir, '../package.json');
48
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
49
+ if (typeof pkg.version === 'string' && pkg.version.trim()) {
50
+ return pkg.version.trim();
51
+ }
52
+ }
53
+ catch {
54
+ // Fall through.
55
+ }
56
+ return 'unknown';
57
+ }
58
+ /** Parse a semver-ish string to [major, minor, patch]; null if unparseable. */
59
+ function parseVersion(version) {
60
+ const match = String(version).match(/(\d+)\.(\d+)\.(\d+)/);
61
+ if (!match) {
62
+ return null;
63
+ }
64
+ return [Number(match[1]), Number(match[2]), Number(match[3])];
65
+ }
66
+ /**
67
+ * Compare two semver-ish versions. Returns -1 if a < b, 1 if a > b, 0 if equal
68
+ * or either is unparseable (unknown versions compare equal so they never block).
69
+ */
70
+ export function compareVersions(a, b) {
71
+ const pa = parseVersion(a);
72
+ const pb = parseVersion(b);
73
+ if (!pa || !pb) {
74
+ return 0;
75
+ }
76
+ for (let i = 0; i < 3; i++) {
77
+ if (pa[i] !== pb[i]) {
78
+ return pa[i] < pb[i] ? -1 : 1;
79
+ }
80
+ }
81
+ return 0;
82
+ }
83
+ /**
84
+ * Pull the declared minimum connector version out of a loaded config, if the
85
+ * dashboard stamped one. Stored under metadata.minConnectorVersion so older
86
+ * builds that don't know the field simply ignore it (forward compatible).
87
+ */
88
+ export function getConfiguredMinConnectorVersion(config) {
89
+ const meta = config?.metadata;
90
+ const raw = meta?.minConnectorVersion;
91
+ return typeof raw === 'string' && raw.trim() ? raw.trim() : null;
92
+ }
93
+ /** Error thrown when the installed connector is older than the config requires. */
94
+ export class OutdatedConnectorError extends Error {
95
+ code = 'respira_outdated_connector';
96
+ requiredVersion;
97
+ currentVersion;
98
+ constructor(requiredVersion, currentVersion) {
99
+ super(`This Respira setup code needs connector v${requiredVersion} or newer, but the ` +
100
+ `installed connector is v${currentVersion}. Reinstall the current connector from ` +
101
+ `${DASHBOARD_URL} . In Claude Desktop, remove the old "Respira for WordPress" item ` +
102
+ `that shows Failed first, then install the fresh download and restart Claude.`);
103
+ this.name = 'OutdatedConnectorError';
104
+ this.requiredVersion = requiredVersion;
105
+ this.currentVersion = currentVersion;
106
+ }
107
+ }
108
+ /**
109
+ * Throw a clear, actionable error if the config declares a minimum connector
110
+ * version newer than this build. No-op when the field is absent or this build
111
+ * is new enough. Call right after loadConfig(), before connecting.
112
+ */
113
+ export function assertConnectorMeetsConfig(config, connectorVersion) {
114
+ const required = getConfiguredMinConnectorVersion(config);
115
+ if (!required) {
116
+ return;
117
+ }
118
+ if (compareVersions(connectorVersion, required) < 0) {
119
+ throw new OutdatedConnectorError(required, connectorVersion);
120
+ }
121
+ }
122
+ /**
123
+ * Best-effort write of a single diagnostic file the user / Cowork / doctor can
124
+ * read after the host swallows stderr. Never throws.
125
+ */
126
+ export function writeStartupDiagnostic(message) {
127
+ try {
128
+ if (!existsSync(CONFIG_DIR)) {
129
+ mkdirSync(CONFIG_DIR, { recursive: true });
130
+ }
131
+ const ts = new Date().toISOString();
132
+ writeFileSync(STARTUP_ERROR_FILE, `[${ts}] ${message}\n`, 'utf8');
133
+ }
134
+ catch {
135
+ // Diagnostic write is best-effort.
136
+ }
137
+ }
138
+ /**
139
+ * Arm a watchdog that fires if startup has not signalled completion within the
140
+ * budget. On fire it writes a diagnostic and exits, turning a silent stall into
141
+ * a clear, recorded failure. Call clear() once the transport is connected.
142
+ *
143
+ * The timer is intentionally NOT unref()'d: during a stall some pending promise
144
+ * keeps the loop alive, and we want the watchdog to reliably win that race.
145
+ */
146
+ export function installStartupWatchdog(connectorVersion) {
147
+ if (process.env.RESPIRA_DISABLE_STARTUP_WATCHDOG === '1') {
148
+ return { clear: () => { } };
149
+ }
150
+ const parsed = Number.parseInt(process.env.RESPIRA_STARTUP_BUDGET_MS || '', 10);
151
+ const budgetMs = Number.isFinite(parsed) && parsed > 0
152
+ ? Math.max(MIN_STARTUP_BUDGET_MS, parsed)
153
+ : DEFAULT_STARTUP_BUDGET_MS;
154
+ const timer = setTimeout(() => {
155
+ const message = `Respira connector v${connectorVersion} did not finish connecting within ${budgetMs}ms ` +
156
+ `and was stopped. The most common cause is an outdated installed build that cannot read a ` +
157
+ `newer setup code. Reinstall the current connector from ${DASHBOARD_URL} (in Claude Desktop, ` +
158
+ `remove the old "Respira for WordPress" item that shows Failed, then install the fresh ` +
159
+ `download and restart Claude). If it still stalls, reply to your Respira support thread and ` +
160
+ `attach this file.`;
161
+ writeStartupDiagnostic(message);
162
+ console.error(`[respira-mcp] startup-watchdog: ${message}`);
163
+ process.exit(1);
164
+ }, budgetMs);
165
+ return {
166
+ clear: () => clearTimeout(timer),
167
+ };
168
+ }
169
+ //# sourceMappingURL=startup-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup-guard.js","sourceRoot":"","sources":["../src/startup-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Agent as HttpsAgent, type AgentOptions as HttpsAgentOptions } from 'node:https';
2
+ import type { WordPressSiteConfig } from './types/index.js';
3
+ type PlatformReader = () => string[];
4
+ export interface SystemCertificateTrustState {
5
+ initialized: boolean;
6
+ platform: NodeJS.Platform;
7
+ rootCertificateCount: number;
8
+ osCertificateCount: number;
9
+ customCertificateCount: number;
10
+ bundledCertificateCount: number;
11
+ mergedCertificateCount: number;
12
+ caCertificates: string[];
13
+ warnings: string[];
14
+ }
15
+ export interface SystemCertificateTrustOptions {
16
+ env?: NodeJS.ProcessEnv;
17
+ log?: (message: string) => void;
18
+ platform?: NodeJS.Platform;
19
+ rootCertificates?: readonly string[];
20
+ readers?: Partial<Record<NodeJS.Platform, PlatformReader>>;
21
+ customCaPath?: string | null;
22
+ bundledCaPath?: string | null;
23
+ }
24
+ export declare function splitPemCertificates(pem: string): string[];
25
+ export declare function resetSystemCertificateTrustForTests(): void;
26
+ export declare function initializeSystemCertificateTrust(options?: SystemCertificateTrustOptions): SystemCertificateTrustState;
27
+ export declare function isTlsInsecureForSite(siteConfig: Pick<WordPressSiteConfig, 'insecureTLS'>, env?: NodeJS.ProcessEnv): boolean;
28
+ export declare function makeHttpsAgent(siteConfig: Pick<WordPressSiteConfig, 'insecureTLS'>, options?: HttpsAgentOptions): HttpsAgent;
29
+ export {};
30
+ //# sourceMappingURL=system-ca.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-ca.d.ts","sourceRoot":"","sources":["../src/system-ca.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,KAAK,YAAY,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAMzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,KAAK,cAAc,GAAG,MAAM,MAAM,EAAE,CAAC;AAErC,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,6BAA6B;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAC3D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAQD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAE1D;AAkHD,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,6BAAkC,GAAG,2BAA2B,CAwEzH;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAExI;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAWhI"}
@@ -0,0 +1,195 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { existsSync, readFileSync } from 'node:fs';
3
+ import { Agent as HttpsAgent } from 'node:https';
4
+ import { homedir, platform as osPlatform } from 'node:os';
5
+ import { dirname, join, resolve } from 'node:path';
6
+ import { rootCertificates } from 'node:tls';
7
+ import { fileURLToPath } from 'node:url';
8
+ import { isTlsInsecureEnv } from './config.js';
9
+ let trustState = null;
10
+ function defaultLog(message) {
11
+ process.stderr.write(`[respira-mcp] ${message}\n`);
12
+ }
13
+ export function splitPemCertificates(pem) {
14
+ return pem.match(/-----BEGIN CERTIFICATE-----[\s\S]+?-----END CERTIFICATE-----/g) || [];
15
+ }
16
+ function normalizeCertificate(cert) {
17
+ return cert.replace(/\r\n/g, '\n').trim();
18
+ }
19
+ function uniqueCertificates(certificates) {
20
+ const seen = new Set();
21
+ const out = [];
22
+ for (const cert of certificates) {
23
+ const normalized = normalizeCertificate(cert);
24
+ if (!normalized || seen.has(normalized)) {
25
+ continue;
26
+ }
27
+ seen.add(normalized);
28
+ out.push(normalized);
29
+ }
30
+ return out;
31
+ }
32
+ function readPemFile(path) {
33
+ if (!path || !existsSync(path)) {
34
+ return [];
35
+ }
36
+ return splitPemCertificates(readFileSync(path, 'utf8'));
37
+ }
38
+ function defaultBundledCaPath() {
39
+ const here = dirname(fileURLToPath(import.meta.url));
40
+ const candidate = resolve(here, '..', 'certs', 'mozilla-ca.pem');
41
+ return existsSync(candidate) ? candidate : null;
42
+ }
43
+ function loadMacOsCertificates() {
44
+ const keychains = [
45
+ '/System/Library/Keychains/SystemRootCertificates.keychain',
46
+ '/Library/Keychains/System.keychain',
47
+ join(homedir(), 'Library/Keychains/login.keychain-db'),
48
+ ].filter((path) => existsSync(path));
49
+ const certs = [];
50
+ for (const keychain of keychains) {
51
+ try {
52
+ const pem = execFileSync('/usr/bin/security', ['find-certificate', '-a', '-p', keychain], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 10000 });
53
+ certs.push(...splitPemCertificates(pem));
54
+ }
55
+ catch {
56
+ // Missing or locked keychains are ignored.
57
+ }
58
+ }
59
+ return certs;
60
+ }
61
+ function loadLinuxCertificates() {
62
+ const bundlePaths = [
63
+ '/etc/ssl/certs/ca-certificates.crt',
64
+ '/etc/pki/tls/certs/ca-bundle.crt',
65
+ '/etc/ssl/ca-bundle.pem',
66
+ '/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem',
67
+ '/etc/ssl/cert.pem',
68
+ ];
69
+ return bundlePaths.flatMap((path) => readPemFile(path));
70
+ }
71
+ function loadWindowsCertificates() {
72
+ const script = [
73
+ '$ErrorActionPreference = "SilentlyContinue"',
74
+ '$stores = "Cert:\\LocalMachine\\Root","Cert:\\CurrentUser\\Root"',
75
+ 'foreach ($store in $stores) {',
76
+ ' Get-ChildItem -Path $store | ForEach-Object {',
77
+ ' $bytes = $_.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert)',
78
+ ' "-----BEGIN CERTIFICATE-----"',
79
+ ' [Convert]::ToBase64String($bytes, [System.Base64FormattingOptions]::InsertLineBreaks)',
80
+ ' "-----END CERTIFICATE-----"',
81
+ ' }',
82
+ '}',
83
+ ].join('; ');
84
+ for (const command of ['powershell.exe', 'pwsh']) {
85
+ try {
86
+ const pem = execFileSync(command, ['-NoProfile', '-NonInteractive', '-Command', script], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 15000 });
87
+ const certs = splitPemCertificates(pem);
88
+ if (certs.length > 0) {
89
+ return certs;
90
+ }
91
+ }
92
+ catch {
93
+ // Try the next shell.
94
+ }
95
+ }
96
+ return [];
97
+ }
98
+ function loadPlatformCertificates(platform) {
99
+ if (platform === 'darwin') {
100
+ return loadMacOsCertificates();
101
+ }
102
+ if (platform === 'win32') {
103
+ return loadWindowsCertificates();
104
+ }
105
+ if (platform === 'linux') {
106
+ return loadLinuxCertificates();
107
+ }
108
+ return [];
109
+ }
110
+ export function resetSystemCertificateTrustForTests() {
111
+ trustState = null;
112
+ }
113
+ export function initializeSystemCertificateTrust(options = {}) {
114
+ if (trustState && options.env === undefined && options.rootCertificates === undefined && options.platform === undefined && options.readers === undefined) {
115
+ return trustState;
116
+ }
117
+ const env = options.env || process.env;
118
+ const log = options.log || defaultLog;
119
+ const platform = options.platform || osPlatform();
120
+ const baseRoots = uniqueCertificates(options.rootCertificates || rootCertificates);
121
+ const warnings = [];
122
+ let osRoots = [];
123
+ try {
124
+ const reader = options.readers?.[platform];
125
+ osRoots = uniqueCertificates(reader ? reader() : loadPlatformCertificates(platform));
126
+ }
127
+ catch (error) {
128
+ const message = error instanceof Error ? error.message : String(error);
129
+ warnings.push(`system CA load skipped on ${platform}: ${message}`);
130
+ }
131
+ const configuredCaPath = options.customCaPath === null
132
+ ? ''
133
+ : (options.customCaPath || env.RESPIRA_CUSTOM_CA_PATH || env.NODE_EXTRA_CA_CERTS || '').trim();
134
+ let customRoots = [];
135
+ if (configuredCaPath) {
136
+ try {
137
+ customRoots = uniqueCertificates(readPemFile(configuredCaPath));
138
+ if (!env.NODE_EXTRA_CA_CERTS) {
139
+ env.NODE_EXTRA_CA_CERTS = configuredCaPath;
140
+ }
141
+ }
142
+ catch (error) {
143
+ const message = error instanceof Error ? error.message : String(error);
144
+ warnings.push(`custom CA load skipped: ${message}`);
145
+ }
146
+ }
147
+ const bundledPath = options.bundledCaPath === undefined ? defaultBundledCaPath() : options.bundledCaPath;
148
+ let bundledRoots = [];
149
+ if (bundledPath) {
150
+ try {
151
+ bundledRoots = uniqueCertificates(readPemFile(bundledPath));
152
+ if (!env.NODE_EXTRA_CA_CERTS) {
153
+ env.NODE_EXTRA_CA_CERTS = bundledPath;
154
+ }
155
+ }
156
+ catch (error) {
157
+ const message = error instanceof Error ? error.message : String(error);
158
+ warnings.push(`bundled CA load skipped: ${message}`);
159
+ }
160
+ }
161
+ const caCertificates = uniqueCertificates([...baseRoots, ...osRoots, ...customRoots, ...bundledRoots]);
162
+ const state = {
163
+ initialized: true,
164
+ platform,
165
+ rootCertificateCount: baseRoots.length,
166
+ osCertificateCount: osRoots.length,
167
+ customCertificateCount: customRoots.length,
168
+ bundledCertificateCount: bundledRoots.length,
169
+ mergedCertificateCount: caCertificates.length,
170
+ caCertificates,
171
+ warnings,
172
+ };
173
+ for (const warning of warnings) {
174
+ log(`TLS trust ${warning}`);
175
+ }
176
+ if (options.env === undefined && options.rootCertificates === undefined && options.platform === undefined && options.readers === undefined) {
177
+ trustState = state;
178
+ }
179
+ return state;
180
+ }
181
+ export function isTlsInsecureForSite(siteConfig, env = process.env) {
182
+ return siteConfig.insecureTLS === true || isTlsInsecureEnv(env);
183
+ }
184
+ export function makeHttpsAgent(siteConfig, options = {}) {
185
+ if (isTlsInsecureForSite(siteConfig)) {
186
+ return new HttpsAgent({ ...options, rejectUnauthorized: false });
187
+ }
188
+ const state = initializeSystemCertificateTrust();
189
+ return new HttpsAgent({
190
+ ...options,
191
+ rejectUnauthorized: true,
192
+ ca: state.caCertificates,
193
+ });
194
+ }
195
+ //# sourceMappingURL=system-ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-ca.js","sourceRoot":"","sources":["../src/system-ca.ts"],"names":[],"mappings":"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"}
@@ -26,8 +26,9 @@ export interface WordPressSiteConfig {
26
26
  * for machines where local antivirus "HTTPS scanning" or a corporate proxy
27
27
  * intercepts TLS with a root Node does not trust, producing
28
28
  * UNABLE_TO_VERIFY_LEAF_SIGNATURE / SELF_SIGNED_CERT_IN_CHAIN against a cert
29
- * that is actually valid. Prefer NODE_EXTRA_CA_CERTS, which keeps
30
- * verification on. Also settable per-process via RESPIRA_TLS_INSECURE=1.
29
+ * that is actually valid. The connector already trusts the system
30
+ * certificate store with verification on, so prefer that or NODE_EXTRA_CA_CERTS.
31
+ * Also settable per-process via RESPIRA_TLS_INSECURE=1.
31
32
  * Logs a loud warning on every boot when active.
32
33
  */
33
34
  insecureTLS?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,WAAW,EAAE;QACX,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,EAAE,OAAO,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iBAAiB,EAAE,cAAc,EAAE,CAAC;IACpC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,CAAC;IACT,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE;YACZ,SAAS,EAAE,OAAO,CAAC;YACnB,QAAQ,EAAE,OAAO,CAAC;SACnB,CAAC;QACF,GAAG,CAAC,EAAE;YACJ,SAAS,EAAE,OAAO,CAAC;YACnB,GAAG,CAAC,EAAE,OAAO,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,CAAC;KACH,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,IAAK,SAAQ,IAAI;CAAG;AAErC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,wBAAwB,CAAC;QACnC,QAAQ,CAAC,EAAE,yBAAyB,CAAC;QACrC,QAAQ,CAAC,EAAE;YACT,MAAM,CAAC,EAAE;gBACP,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,aAAa,CAAC,EAAE,MAAM,CAAC;gBACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;aAChC,CAAC;SACH,CAAC;QACF,IAAI,CAAC,EAAE;YACL,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC3B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,GAAG,CAAC;CACZ"}
@@ -117,12 +117,6 @@ export declare class WordPressClient {
117
117
  * @since 6.19.3
118
118
  */
119
119
  abortInFlightRequests(): void;
120
- /**
121
- * Build the per-client HTTPS agent. Leaves rejectUnauthorized at Node's
122
- * default (verification on, honoring NODE_TLS_REJECT_UNAUTHORIZED) unless
123
- * this.insecureTLS is set, in which case verification is turned off.
124
- */
125
- private makeHttpsAgent;
126
120
  getSiteSummary(isDefault?: boolean): SiteSummary;
127
121
  /**
128
122
  * Determine whether site supports respira/v2 and cache the result.
@@ -156,6 +150,18 @@ export declare class WordPressClient {
156
150
  * Returns null if checkCompatibility() has not been called yet or found no issues.
157
151
  */
158
152
  getVersionWarning(): string | null;
153
+ /**
154
+ * Generic v1 REST caller for endpoints under /wp-json/respira/v1/.
155
+ * Mirror of callRestV2 but for the existing v1 surface — useful for new tools
156
+ * that target v1 routes without needing a dedicated wrapper method on this client.
157
+ * No compatibility check (v1 has always been there); no ensureV2() gate.
158
+ */
159
+ callRestV1(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, data?: any): Promise<any>;
160
+ /**
161
+ * Builder-agnostic responsive inference: generate tablet + mobile breakpoint
162
+ * overrides for a desktop-only page. Auto-detects the active builder server-side.
163
+ */
164
+ makeResponsive(pageId: number, dryRun?: boolean): Promise<any>;
159
165
  /**
160
166
  * Generic v2 REST caller for new Elemental endpoints.
161
167
  * Ensures the site supports v2 and routes to the correct path.
@@ -383,6 +389,17 @@ export declare class WordPressClient {
383
389
  private detectDiviVersion;
384
390
  /**
385
391
  * Inspect simplified builder content format for Divi generation hints.
392
+ *
393
+ * B3 / N20 follow-up (2026-05-25, v6.19.0): also accepts the wrapped
394
+ * `{content: [...]}` shape that round-tripped `extractBuilderContent`
395
+ * returns. Pre-fix the detector ran a plain `Array.isArray` check, missed
396
+ * the wrapper, returned `unknown`, and on pre-v6.18.7 builds hard-failed
397
+ * with "Divi content format could not be detected." The v6.18.7 B-7 fix
398
+ * made `unknown` non-fatal when an explicit `divi_version` was supplied,
399
+ * but the detector still misclassified wrapped extracts as `unknown` —
400
+ * so genuine mixed payloads inside the wrapper slipped through unflagged.
401
+ * Now the detector unwraps first via the shared helper, then walks the
402
+ * tree, so wrapped extracts hit the same prefix detection as bare arrays.
386
403
  */
387
404
  private detectDiviContentFormat;
388
405
  /**