@wootsup/yt-builder-mcp 1.3.0 → 1.4.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.
- package/README.md +1 -1
- package/dist/cli/doctor-command.d.ts +21 -0
- package/dist/cli/doctor-command.d.ts.map +1 -0
- package/dist/cli/doctor-command.js +111 -0
- package/dist/cli/doctor-command.js.map +1 -0
- package/dist/cli/invocation-decision.d.ts.map +1 -1
- package/dist/cli/invocation-decision.js +2 -0
- package/dist/cli/invocation-decision.js.map +1 -1
- package/dist/client.d.ts +14 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -0
- package/dist/client.js.map +1 -1
- package/dist/diagnostics/ca-trust.d.ts +16 -0
- package/dist/diagnostics/ca-trust.d.ts.map +1 -0
- package/dist/diagnostics/ca-trust.js +54 -0
- package/dist/diagnostics/ca-trust.js.map +1 -0
- package/dist/diagnostics/diagnose-network-error.d.ts +37 -0
- package/dist/diagnostics/diagnose-network-error.d.ts.map +1 -0
- package/dist/diagnostics/diagnose-network-error.js +158 -0
- package/dist/diagnostics/diagnose-network-error.js.map +1 -0
- package/dist/diagnostics/doctor.d.ts +62 -0
- package/dist/diagnostics/doctor.d.ts.map +1 -0
- package/dist/diagnostics/doctor.js +165 -0
- package/dist/diagnostics/doctor.js.map +1 -0
- package/dist/gateway/essentials.d.ts +1 -1
- package/dist/gateway/essentials.d.ts.map +1 -1
- package/dist/gateway/essentials.js +5 -0
- package/dist/gateway/essentials.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -1
- package/dist/install-skill.d.ts +1 -1
- package/dist/install-skill.js +1 -1
- package/dist/net/extra-headers.d.ts +66 -0
- package/dist/net/extra-headers.d.ts.map +1 -0
- package/dist/net/extra-headers.js +164 -0
- package/dist/net/extra-headers.js.map +1 -0
- package/dist/net/internal-host.d.ts +45 -0
- package/dist/net/internal-host.d.ts.map +1 -0
- package/dist/net/internal-host.js +164 -0
- package/dist/net/internal-host.js.map +1 -0
- package/dist/net/proxy-dispatcher.d.ts +40 -0
- package/dist/net/proxy-dispatcher.d.ts.map +1 -0
- package/dist/net/proxy-dispatcher.js +65 -0
- package/dist/net/proxy-dispatcher.js.map +1 -0
- package/dist/proxy/bridge.d.ts +45 -13
- package/dist/proxy/bridge.d.ts.map +1 -1
- package/dist/proxy/bridge.js +113 -7
- package/dist/proxy/bridge.js.map +1 -1
- package/dist/setup-ca-env.d.ts +40 -0
- package/dist/setup-ca-env.d.ts.map +1 -0
- package/dist/setup-ca-env.js +58 -0
- package/dist/setup-ca-env.js.map +1 -0
- package/dist/setup-ca-reprobe.d.ts +38 -0
- package/dist/setup-ca-reprobe.d.ts.map +1 -0
- package/dist/setup-ca-reprobe.js +68 -0
- package/dist/setup-ca-reprobe.js.map +1 -0
- package/dist/setup-cli.d.ts +37 -2
- package/dist/setup-cli.d.ts.map +1 -1
- package/dist/setup-cli.js +178 -4
- package/dist/setup-cli.js.map +1 -1
- package/dist/setup-npx-spec.d.ts +44 -0
- package/dist/setup-npx-spec.d.ts.map +1 -0
- package/dist/setup-npx-spec.js +66 -0
- package/dist/setup-npx-spec.js.map +1 -0
- package/dist/setup-prompts.d.ts +14 -1
- package/dist/setup-prompts.d.ts.map +1 -1
- package/dist/setup-prompts.js +53 -1
- package/dist/setup-prompts.js.map +1 -1
- package/dist/setup-wizard-defaults.d.ts.map +1 -1
- package/dist/setup-wizard-defaults.js +29 -5
- package/dist/setup-wizard-defaults.js.map +1 -1
- package/dist/setup-wizard-handshake.d.ts +4 -4
- package/dist/setup-wizard-handshake.d.ts.map +1 -1
- package/dist/setup-wizard-handshake.js +46 -12
- package/dist/setup-wizard-handshake.js.map +1 -1
- package/dist/setup-wizard-types.d.ts +81 -0
- package/dist/setup-wizard-types.d.ts.map +1 -1
- package/dist/setup-wizard.d.ts +2 -2
- package/dist/setup-wizard.d.ts.map +1 -1
- package/dist/setup-wizard.js +133 -18
- package/dist/setup-wizard.js.map +1 -1
- package/dist/sites/client-pool.d.ts +8 -1
- package/dist/sites/client-pool.d.ts.map +1 -1
- package/dist/sites/client-pool.js +13 -1
- package/dist/sites/client-pool.js.map +1 -1
- package/dist/tools/elements/builders.d.ts.map +1 -1
- package/dist/tools/elements/builders.js +4 -2
- package/dist/tools/elements/builders.js.map +1 -1
- package/dist/tools/elements/handlers.d.ts +2 -1
- package/dist/tools/elements/handlers.d.ts.map +1 -1
- package/dist/tools/elements/handlers.js +3 -22
- package/dist/tools/elements/handlers.js.map +1 -1
- package/dist/tools/format/health-format.d.ts +3 -0
- package/dist/tools/format/health-format.d.ts.map +1 -1
- package/dist/tools/format/health-format.js +21 -4
- package/dist/tools/format/health-format.js.map +1 -1
- package/dist/tools/health.d.ts.map +1 -1
- package/dist/tools/health.js +32 -0
- package/dist/tools/health.js.map +1 -1
- package/dist/tools/pages/builders.d.ts.map +1 -1
- package/dist/tools/pages/builders.js +78 -27
- package/dist/tools/pages/builders.js.map +1 -1
- package/dist/tools/pages/handlers-read.d.ts +36 -5
- package/dist/tools/pages/handlers-read.d.ts.map +1 -1
- package/dist/tools/pages/handlers-read.js +217 -34
- package/dist/tools/pages/handlers-read.js.map +1 -1
- package/dist/tools/pages/schemas.d.ts +20 -5
- package/dist/tools/pages/schemas.d.ts.map +1 -1
- package/dist/tools/pages/schemas.js +44 -6
- package/dist/tools/pages/schemas.js.map +1 -1
- package/dist/tools/shared-schemas.d.ts +3 -0
- package/dist/tools/shared-schemas.d.ts.map +1 -1
- package/dist/tools/shared-schemas.js +28 -0
- package/dist/tools/shared-schemas.js.map +1 -1
- package/dist/tools/sources/builders.d.ts.map +1 -1
- package/dist/tools/sources/builders.js +30 -5
- package/dist/tools/sources/builders.js.map +1 -1
- package/dist/tools/sources/handlers.d.ts +9 -1
- package/dist/tools/sources/handlers.d.ts.map +1 -1
- package/dist/tools/sources/handlers.js +62 -12
- package/dist/tools/sources/handlers.js.map +1 -1
- package/dist/tools/sparse-fields.d.ts +50 -0
- package/dist/tools/sparse-fields.d.ts.map +1 -1
- package/dist/tools/sparse-fields.js +107 -0
- package/dist/tools/sparse-fields.js.map +1 -1
- package/dist/update/update-check.d.ts +56 -0
- package/dist/update/update-check.d.ts.map +1 -0
- package/dist/update/update-check.js +155 -0
- package/dist/update/update-check.js.map +1 -0
- package/manifest.json +1 -1
- package/package.json +2 -1
- package/skills/yt-builder-mcp/SKILL.md +13 -12
|
@@ -7,10 +7,27 @@
|
|
|
7
7
|
* @license MIT
|
|
8
8
|
*/
|
|
9
9
|
import { RestClient } from './client.js';
|
|
10
|
+
import { isCaTrustError } from './diagnostics/ca-trust.js';
|
|
11
|
+
import { diagnoseNetworkError } from './diagnostics/diagnose-network-error.js';
|
|
10
12
|
// Placeholder Bearer used only for the unauthenticated /health probe;
|
|
11
13
|
// constructed dynamically so the secret-grep-gate doesn't flag the
|
|
12
14
|
// call-site as a hardcoded credential.
|
|
13
15
|
const HEALTH_PROBE_PLACEHOLDER_TOKEN = ['health', 'probe', 'no-auth'].join('-');
|
|
16
|
+
/**
|
|
17
|
+
* Turn a probe failure into a message that carries an actionable fix when the
|
|
18
|
+
* cause is recognised (TLS-inspection CA, proxy, DNS, timeout, bad bearer).
|
|
19
|
+
* The Glöckle stress-test died on an opaque probe failure that looked like an
|
|
20
|
+
* auth problem when it was really a corporate TLS-inspection root CA.
|
|
21
|
+
*/
|
|
22
|
+
function describeProbeError(e) {
|
|
23
|
+
const base = e instanceof Error ? e.message : String(e);
|
|
24
|
+
const diag = diagnoseNetworkError(e);
|
|
25
|
+
return diag !== null ? `${base}\n→ ${diag.fix}` : base;
|
|
26
|
+
}
|
|
27
|
+
/** True when `extraHeaders` carries at least one corporate header to attach. */
|
|
28
|
+
function hasHeaders(extraHeaders) {
|
|
29
|
+
return extraHeaders !== undefined && Object.keys(extraHeaders).length > 0;
|
|
30
|
+
}
|
|
14
31
|
function extractPluginVersion(raw) {
|
|
15
32
|
if (raw === null || typeof raw !== 'object')
|
|
16
33
|
return undefined;
|
|
@@ -21,14 +38,21 @@ function extractPluginVersion(raw) {
|
|
|
21
38
|
return obj.version;
|
|
22
39
|
return undefined;
|
|
23
40
|
}
|
|
24
|
-
export async function defaultProbeHealth(wpUrl) {
|
|
41
|
+
export async function defaultProbeHealth(wpUrl, fetchImpl, extraHeaders) {
|
|
25
42
|
try {
|
|
26
|
-
const client = new RestClient({
|
|
43
|
+
const client = new RestClient({
|
|
44
|
+
baseUrl: wpUrl,
|
|
45
|
+
bearerToken: HEALTH_PROBE_PLACEHOLDER_TOKEN,
|
|
46
|
+
...(fetchImpl !== undefined ? { fetch: fetchImpl } : {}),
|
|
47
|
+
...(hasHeaders(extraHeaders) ? { extraHeaders } : {}),
|
|
48
|
+
});
|
|
27
49
|
const pluginVersion = extractPluginVersion(await client.get('/health'));
|
|
28
50
|
return pluginVersion !== undefined ? { ok: true, pluginVersion } : { ok: true };
|
|
29
51
|
}
|
|
30
52
|
catch (e) {
|
|
31
|
-
|
|
53
|
+
// Classify the raw error BEFORE stringifying so the wizard can offer
|
|
54
|
+
// the corporate-CA prompt (G-D #6) on a TLS chain-of-trust failure.
|
|
55
|
+
return { ok: false, error: describeProbeError(e), ...(isCaTrustError(e) ? { caTrust: true } : {}) };
|
|
32
56
|
}
|
|
33
57
|
}
|
|
34
58
|
/**
|
|
@@ -40,9 +64,14 @@ export async function defaultProbeHealth(wpUrl) {
|
|
|
40
64
|
* Soft-failure on 404 keeps back-compat with pre-6.5 plugins — the
|
|
41
65
|
* wizard falls through to the existing /health-only probe path.
|
|
42
66
|
*/
|
|
43
|
-
export async function defaultProbeIdentity(wpUrl) {
|
|
67
|
+
export async function defaultProbeIdentity(wpUrl, fetchImpl, extraHeaders) {
|
|
44
68
|
try {
|
|
45
|
-
const client = new RestClient({
|
|
69
|
+
const client = new RestClient({
|
|
70
|
+
baseUrl: wpUrl,
|
|
71
|
+
bearerToken: HEALTH_PROBE_PLACEHOLDER_TOKEN,
|
|
72
|
+
...(fetchImpl !== undefined ? { fetch: fetchImpl } : {}),
|
|
73
|
+
...(hasHeaders(extraHeaders) ? { extraHeaders } : {}),
|
|
74
|
+
});
|
|
46
75
|
const raw = await client.get('/identity');
|
|
47
76
|
if (raw === null || typeof raw !== 'object') {
|
|
48
77
|
return { ok: false, error: 'unexpected response shape (not an object)' };
|
|
@@ -62,17 +91,22 @@ export async function defaultProbeIdentity(wpUrl) {
|
|
|
62
91
|
return result;
|
|
63
92
|
}
|
|
64
93
|
catch (e) {
|
|
65
|
-
return { ok: false, error:
|
|
94
|
+
return { ok: false, error: describeProbeError(e) };
|
|
66
95
|
}
|
|
67
96
|
}
|
|
68
|
-
export async function defaultProbeAuth(wpUrl, bearer) {
|
|
97
|
+
export async function defaultProbeAuth(wpUrl, bearer, fetchImpl, extraHeaders) {
|
|
69
98
|
try {
|
|
70
|
-
const client = new RestClient({
|
|
99
|
+
const client = new RestClient({
|
|
100
|
+
baseUrl: wpUrl,
|
|
101
|
+
bearerToken: bearer,
|
|
102
|
+
...(fetchImpl !== undefined ? { fetch: fetchImpl } : {}),
|
|
103
|
+
...(hasHeaders(extraHeaders) ? { extraHeaders } : {}),
|
|
104
|
+
});
|
|
71
105
|
await client.get('/etag');
|
|
72
106
|
return { ok: true };
|
|
73
107
|
}
|
|
74
108
|
catch (e) {
|
|
75
|
-
return { ok: false, error: e
|
|
109
|
+
return { ok: false, error: describeProbeError(e), ...(isCaTrustError(e) ? { caTrust: true } : {}) };
|
|
76
110
|
}
|
|
77
111
|
}
|
|
78
112
|
/** Extract `major.minor` from a semver-like string (`0.1.0-alpha.1` → `0.1`); `''` on malformed input. */
|
|
@@ -80,11 +114,11 @@ export function majorMinor(version) {
|
|
|
80
114
|
const m = version.match(/^(\d+)\.(\d+)/);
|
|
81
115
|
return m ? `${m[1]}.${m[2]}` : '';
|
|
82
116
|
}
|
|
83
|
-
export async function defaultHandshake(wpUrl, bearer, packageVersion) {
|
|
84
|
-
const health = await defaultProbeHealth(wpUrl);
|
|
117
|
+
export async function defaultHandshake(wpUrl, bearer, packageVersion, extraHeaders) {
|
|
118
|
+
const health = await defaultProbeHealth(wpUrl, undefined, extraHeaders);
|
|
85
119
|
if (!health.ok)
|
|
86
120
|
return { ok: false, error: health.error ?? 'health probe failed' };
|
|
87
|
-
const auth = await defaultProbeAuth(wpUrl, bearer);
|
|
121
|
+
const auth = await defaultProbeAuth(wpUrl, bearer, undefined, extraHeaders);
|
|
88
122
|
if (!auth.ok)
|
|
89
123
|
return { ok: false, error: auth.error ?? 'auth probe failed' };
|
|
90
124
|
if (health.pluginVersion === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard-handshake.js","sourceRoot":"","sources":["../src/setup-wizard-handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-wizard-handshake.js","sourceRoot":"","sources":["../src/setup-wizard-handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,31 @@ export interface WizardAnswers {
|
|
|
23
23
|
* `site_id` field (see `src/sites/schema.ts`).
|
|
24
24
|
*/
|
|
25
25
|
readonly siteId?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Path to a corporate/proxy root CA `.pem` (from `--ca <path>` or the
|
|
28
|
+
* wizard's CA prompt). When set, the generated server entry's env block
|
|
29
|
+
* gets `NODE_EXTRA_CA_CERTS=<path>` so the server trusts a TLS-inspection
|
|
30
|
+
* chain. Never disables verification. Mutually exclusive with
|
|
31
|
+
* {@link caMode}.
|
|
32
|
+
*/
|
|
33
|
+
readonly caCertPath?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Corporate-CA trust strategy (from `--ca=system` / `--use-system-ca` or
|
|
36
|
+
* the wizard's CA prompt). `'system'` writes `NODE_OPTIONS=--use-system-ca`
|
|
37
|
+
* into the env block so Node reads the OS trust store (Windows CryptoAPI /
|
|
38
|
+
* macOS Keychain) — the zero-export path on Node ≥ 22.15. Mutually
|
|
39
|
+
* exclusive with {@link caCertPath}.
|
|
40
|
+
*/
|
|
41
|
+
readonly caMode?: 'system';
|
|
42
|
+
/**
|
|
43
|
+
* Glöckle gap #15 — optional version pin (from `--pin <version>` or the
|
|
44
|
+
* `YTB_MCP_VERSION` env var). When set to an exact semver / dist-tag, the
|
|
45
|
+
* generated client config runs `npx -y @wootsup/yt-builder-mcp@<version>`
|
|
46
|
+
* (reproducible / air-gapped) instead of the default floating
|
|
47
|
+
* `@latest`. `'latest'` / empty = float (default, auto-updating). For a
|
|
48
|
+
* fully npx-free install, the `.dxt` Desktop build is the alternative.
|
|
49
|
+
*/
|
|
50
|
+
readonly versionPin?: string;
|
|
26
51
|
}
|
|
27
52
|
/**
|
|
28
53
|
* Decoded payload of a Bearer key. The plugin signs `kid`, `scope`, `iss`
|
|
@@ -83,11 +108,36 @@ export interface HealthProbeResult {
|
|
|
83
108
|
readonly pluginVersion?: string;
|
|
84
109
|
/** Error message if `ok=false`. */
|
|
85
110
|
readonly error?: string;
|
|
111
|
+
/**
|
|
112
|
+
* True when the failure was a TLS chain-of-trust error (the corporate
|
|
113
|
+
* TLS-inspection signature). The wizard uses this to offer the CA prompt
|
|
114
|
+
* instead of the generic "continue anyway?" path. Set by the probe via
|
|
115
|
+
* {@link isCaTrustError}; absent/false means "not a CA problem".
|
|
116
|
+
*/
|
|
117
|
+
readonly caTrust?: boolean;
|
|
86
118
|
}
|
|
87
119
|
export interface AuthProbeResult {
|
|
88
120
|
readonly ok: boolean;
|
|
89
121
|
readonly error?: string;
|
|
122
|
+
/** See {@link HealthProbeResult.caTrust}. */
|
|
123
|
+
readonly caTrust?: boolean;
|
|
90
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* The user's answer to the wizard's corporate-CA prompt (G-D #6).
|
|
127
|
+
* - `system` → trust the OS store (`--use-system-ca`), offered only on a
|
|
128
|
+
* supporting Node.
|
|
129
|
+
* - `file` → a `.pem` path the user provides.
|
|
130
|
+
* - `skip` → proceed without configuring a CA (falls back to the generic
|
|
131
|
+
* "continue anyway?" decision).
|
|
132
|
+
*/
|
|
133
|
+
export type CaPromptChoice = {
|
|
134
|
+
readonly choice: 'system';
|
|
135
|
+
} | {
|
|
136
|
+
readonly choice: 'file';
|
|
137
|
+
readonly path: string;
|
|
138
|
+
} | {
|
|
139
|
+
readonly choice: 'skip';
|
|
140
|
+
};
|
|
91
141
|
export interface HandshakeResult {
|
|
92
142
|
readonly ok: boolean;
|
|
93
143
|
readonly pluginVersion?: string;
|
|
@@ -144,6 +194,37 @@ export interface WizardDeps {
|
|
|
144
194
|
* clear "pickup not supported by this WizardDeps" error.
|
|
145
195
|
*/
|
|
146
196
|
fetchPickup?: (pickupUrl: string, nonce: string) => Promise<PickupResult>;
|
|
197
|
+
/**
|
|
198
|
+
* G-D #6/#7 — Node version string (default `process.version`) used to gate
|
|
199
|
+
* the OS-trust-store (`--use-system-ca`) CA option: the wizard only offers
|
|
200
|
+
* it on Node ≥ 22.15. Injectable so tests pin a version deterministically.
|
|
201
|
+
*/
|
|
202
|
+
nodeVersion?: string;
|
|
203
|
+
/**
|
|
204
|
+
* G-D #6 — prompt the user for a corporate-CA trust strategy when a probe
|
|
205
|
+
* fails with a TLS-inspection error. `systemCaSupported` tells the prompt
|
|
206
|
+
* whether to offer the OS-trust-store option. Optional for back-compat:
|
|
207
|
+
* when absent the wizard falls through to the generic "continue anyway?"
|
|
208
|
+
* path (pre-G-D behaviour).
|
|
209
|
+
*/
|
|
210
|
+
promptCa?: (input: {
|
|
211
|
+
readonly systemCaSupported: boolean;
|
|
212
|
+
}) => Promise<CaPromptChoice | null>;
|
|
213
|
+
/**
|
|
214
|
+
* G-D #6/#8 — apply the chosen CA at runtime and RE-PROBE health + auth so
|
|
215
|
+
* the wizard can confirm the fix worked before finalising (a real live
|
|
216
|
+
* validation, not a silent first-tool-call timeout). Optional: when absent
|
|
217
|
+
* the wizard re-runs the ordinary `probeHealth`/`probeAuth` deps after
|
|
218
|
+
* recording the choice.
|
|
219
|
+
*/
|
|
220
|
+
applyAndReProbe?: (input: {
|
|
221
|
+
readonly wpUrl: string;
|
|
222
|
+
readonly bearer: string;
|
|
223
|
+
readonly choice: CaPromptChoice;
|
|
224
|
+
}) => Promise<{
|
|
225
|
+
readonly health: HealthProbeResult;
|
|
226
|
+
readonly auth: AuthProbeResult;
|
|
227
|
+
}>;
|
|
147
228
|
/** Optional sink for human-facing status lines. */
|
|
148
229
|
log?: (line: string) => void;
|
|
149
230
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard-types.d.ts","sourceRoot":"","sources":["../src/setup-wizard-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACR,cAAc,EACd,eAAe,EAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-wizard-types.d.ts","sourceRoot":"","sources":["../src/setup-wizard-types.ts"],"names":[],"mappings":"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"}
|
package/dist/setup-wizard.d.ts
CHANGED
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @license MIT
|
|
15
15
|
*/
|
|
16
|
-
import type { AuthProbeResult, HandshakeResult, HealthProbeResult, WizardAnswers, WizardDeps, WriteResult } from './setup-wizard-types.js';
|
|
16
|
+
import type { AuthProbeResult, CaPromptChoice, HandshakeResult, HealthProbeResult, WizardAnswers, WizardDeps, WriteResult } from './setup-wizard-types.js';
|
|
17
17
|
export { DEFAULT_WIZARD_DEPS, majorMinor } from './setup-wizard-defaults.js';
|
|
18
|
-
export type { AuthProbeResult, HandshakeResult, HealthProbeResult, WizardAnswers, WizardDeps, WriteResult, };
|
|
18
|
+
export type { AuthProbeResult, CaPromptChoice, HandshakeResult, HealthProbeResult, WizardAnswers, WizardDeps, WriteResult, };
|
|
19
19
|
/**
|
|
20
20
|
* Run the interactive setup wizard. Returns a process exit-code so the
|
|
21
21
|
* outer dispatcher can `process.exit(rc)` cleanly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,OAAO,KAAK,EACR,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,WAAW,EACd,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7E,YAAY,EACR,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,WAAW,GACd,CAAC;AAsBF;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC3B,IAAI,GAAE,UAAgC,GACvC,OAAO,CAAC,MAAM,CAAC,CAkSjB"}
|
package/dist/setup-wizard.js
CHANGED
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
* @license MIT
|
|
15
15
|
*/
|
|
16
16
|
import { cancel, log, note, outro, spinner } from '@clack/prompts';
|
|
17
|
+
import { supportsSystemCa } from './diagnostics/ca-trust.js';
|
|
17
18
|
import { SERVER_NAME, SERVER_VERSION } from './server.js';
|
|
19
|
+
import { buildCaEnv } from './setup-ca-env.js';
|
|
20
|
+
import { buildNpxSpec } from './setup-npx-spec.js';
|
|
18
21
|
import { DEFAULT_WIZARD_DEPS, rollbackWrites, } from './setup-wizard-defaults.js';
|
|
19
22
|
// Re-export the public surface so `import { runWizard, WizardDeps } from
|
|
20
23
|
// './setup-wizard.js'` continues to work without touching the split files.
|
|
@@ -28,6 +31,14 @@ export { DEFAULT_WIZARD_DEPS, majorMinor } from './setup-wizard-defaults.js';
|
|
|
28
31
|
// the legacy `yootheme-builder` entry stays dormant (harmless, points
|
|
29
32
|
// at the same npm package).
|
|
30
33
|
const SERVER_KEY = 'yt-builder-mcp';
|
|
34
|
+
/**
|
|
35
|
+
* G-E #6 — the honest outcome message when the operator chose the OS trust store
|
|
36
|
+
* (`--use-system-ca`). Node only consults that store when (re)started with the
|
|
37
|
+
* flag, which the WRITTEN config does but the setup process did NOT — so we can
|
|
38
|
+
* never validate it in-process. We say so plainly instead of reporting a false ❌.
|
|
39
|
+
*/
|
|
40
|
+
const SYSTEM_CA_DEFERRED_MESSAGE = '✅ Configured to use the OS trust store (--use-system-ca) — this takes effect when ' +
|
|
41
|
+
"your AI client next launches the server. The current setup process can't validate it in-process.";
|
|
31
42
|
/**
|
|
32
43
|
* Run the interactive setup wizard. Returns a process exit-code so the
|
|
33
44
|
* outer dispatcher can `process.exit(rc)` cleanly.
|
|
@@ -75,10 +86,24 @@ export async function runWizard(deps = DEFAULT_WIZARD_DEPS) {
|
|
|
75
86
|
log.warn(`Identity probe: ${identity.error ?? 'unknown'} (continuing — older plugins lack this endpoint).`);
|
|
76
87
|
}
|
|
77
88
|
}
|
|
89
|
+
// The CA choice the wizard ends up writing into the env block. Seeded from
|
|
90
|
+
// any non-interactive `--ca` / `--ca=system` answer, then possibly set by
|
|
91
|
+
// the interactive CA prompt (G-D #6) when a probe hits a TLS-trust error.
|
|
92
|
+
let caChoice = {
|
|
93
|
+
...(answers.caCertPath !== undefined ? { caCertPath: answers.caCertPath } : {}),
|
|
94
|
+
...(answers.caMode !== undefined ? { caMode: answers.caMode } : {}),
|
|
95
|
+
};
|
|
96
|
+
const nodeVersion = deps.nodeVersion ?? process.version;
|
|
78
97
|
// 2b. Health probe (no auth).
|
|
79
98
|
const healthSpinner = spinner();
|
|
80
99
|
healthSpinner.start('Probing plugin health…');
|
|
81
|
-
|
|
100
|
+
let health = await deps.probeHealth(answers.wpUrl);
|
|
101
|
+
let auth;
|
|
102
|
+
// Set once the operator picked the OS trust store (--use-system-ca) and the
|
|
103
|
+
// post-CA re-probe failed: the OS store can't be validated in THIS process,
|
|
104
|
+
// so we defer validation to the next server launch instead of treating the
|
|
105
|
+
// (false-negative) failure as a reason to discard the correct config.
|
|
106
|
+
let systemCaDeferred = false;
|
|
82
107
|
if (health.ok) {
|
|
83
108
|
healthSpinner.stop(health.pluginVersion !== undefined
|
|
84
109
|
? `Plugin reachable (v${health.pluginVersion}).`
|
|
@@ -86,24 +111,91 @@ export async function runWizard(deps = DEFAULT_WIZARD_DEPS) {
|
|
|
86
111
|
}
|
|
87
112
|
else {
|
|
88
113
|
healthSpinner.stop('Plugin probe failed.');
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
114
|
+
// G-D #6/#8 — a TLS chain-of-trust failure is the corporate
|
|
115
|
+
// TLS-inspection signature. Offer to self-configure the CA (OS trust
|
|
116
|
+
// store on a supporting Node, or a .pem path), write it into the env
|
|
117
|
+
// block, and RE-PROBE so the operator sees ✅/❌ now instead of a silent
|
|
118
|
+
// first-tool-call timeout. Only when a CA prompt is wired AND none was
|
|
119
|
+
// already supplied non-interactively.
|
|
120
|
+
const caAlreadyChosen = caChoice.caCertPath !== undefined || caChoice.caMode !== undefined;
|
|
121
|
+
if (health.caTrust === true && deps.promptCa !== undefined && !caAlreadyChosen) {
|
|
122
|
+
log.warn(`Corporate TLS-inspection detected: ${health.error ?? 'the TLS certificate could not be verified'}`);
|
|
123
|
+
const systemCaSupported = supportsSystemCa(nodeVersion);
|
|
124
|
+
const picked = await deps.promptCa({ systemCaSupported });
|
|
125
|
+
if (picked === null) {
|
|
126
|
+
cancel('Setup cancelled.');
|
|
127
|
+
return 130;
|
|
128
|
+
}
|
|
129
|
+
if (picked.choice !== 'skip') {
|
|
130
|
+
caChoice =
|
|
131
|
+
picked.choice === 'system'
|
|
132
|
+
? { caMode: 'system' }
|
|
133
|
+
: { caCertPath: picked.path };
|
|
134
|
+
// Re-probe with the CA applied at runtime. When no dedicated
|
|
135
|
+
// re-prober is wired, fall back to the ordinary probes (the
|
|
136
|
+
// choice is still recorded into the env block either way).
|
|
137
|
+
const reSpinner = spinner();
|
|
138
|
+
reSpinner.start('Re-checking the connection with the CA applied…');
|
|
139
|
+
if (deps.applyAndReProbe !== undefined) {
|
|
140
|
+
const re = await deps.applyAndReProbe({ wpUrl: answers.wpUrl, bearer: answers.bearer, choice: picked });
|
|
141
|
+
health = re.health;
|
|
142
|
+
auth = re.auth;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
health = await deps.probeHealth(answers.wpUrl);
|
|
146
|
+
auth = await deps.probeAuth(answers.wpUrl, answers.bearer);
|
|
147
|
+
}
|
|
148
|
+
// G-E #6 honesty fix: the OS trust store is consulted ONLY when
|
|
149
|
+
// Node is (re)started with --use-system-ca — which the WRITTEN
|
|
150
|
+
// config does, but THIS setup process was not. So an in-process
|
|
151
|
+
// re-probe in system mode is a guaranteed false-negative: a ❌
|
|
152
|
+
// here would (on decline) discard the CORRECT config. Treat a
|
|
153
|
+
// system-mode re-probe failure as "configured, validates at next
|
|
154
|
+
// launch" — write the config and skip the generic/auth/handshake
|
|
155
|
+
// in-process checks (which would hit the same untrusted CA). File
|
|
156
|
+
// (.pem) mode DOES validate in-process (undici Agent trusts the
|
|
157
|
+
// CA), so it keeps the honest ✅/❌ verdict.
|
|
158
|
+
if (picked.choice === 'system' && !health.ok) {
|
|
159
|
+
systemCaDeferred = true;
|
|
160
|
+
reSpinner.stop('OS trust store configured (--use-system-ca).');
|
|
161
|
+
logFn(SYSTEM_CA_DEFERRED_MESSAGE);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
reSpinner.stop(health.ok ? '✅ connected — CA trusted.' : `❌ still failing: ${health.error ?? 'unknown'}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// If the connection is still down after the (optional) CA step, fall
|
|
169
|
+
// through to the generic continue-anyway decision — UNLESS system-CA was
|
|
170
|
+
// configured, where validation is deferred to next launch and the (false-
|
|
171
|
+
// negative) in-process failure must not discard the config.
|
|
172
|
+
if (!health.ok && !systemCaDeferred) {
|
|
173
|
+
log.error(`Could not reach the plugin: ${health.error ?? 'unknown'}`);
|
|
174
|
+
const cont = await deps.confirmContinue('Continue anyway and write the config? (You can fix this later.)');
|
|
175
|
+
if (!cont) {
|
|
176
|
+
cancel('Setup cancelled.');
|
|
177
|
+
return 2;
|
|
178
|
+
}
|
|
94
179
|
}
|
|
95
180
|
}
|
|
96
|
-
// 3. Auth probe (Bearer).
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
authSpinner.
|
|
181
|
+
// 3. Auth probe (Bearer). Skip when the CA re-probe already produced an
|
|
182
|
+
// auth result (avoids a redundant round-trip on the corporate path), or
|
|
183
|
+
// when system-CA validation is deferred (an in-process auth probe would
|
|
184
|
+
// hit the same untrusted-CA false-negative and discard the config).
|
|
185
|
+
if (auth === undefined && !systemCaDeferred) {
|
|
186
|
+
const authSpinner = spinner();
|
|
187
|
+
authSpinner.start('Verifying Bearer key…');
|
|
188
|
+
auth = await deps.probeAuth(answers.wpUrl, answers.bearer);
|
|
189
|
+
if (auth.ok) {
|
|
190
|
+
authSpinner.stop('Bearer key accepted.');
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
authSpinner.stop('Bearer probe failed.');
|
|
194
|
+
}
|
|
103
195
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
log.warn(`Auth probe failed: ${auth
|
|
196
|
+
const authOk = auth?.ok ?? false;
|
|
197
|
+
if (!authOk && !systemCaDeferred) {
|
|
198
|
+
log.warn(`Auth probe failed: ${auth?.error ?? 'unknown'}`);
|
|
107
199
|
const cont = await deps.confirmContinue('Continue anyway and write the config?');
|
|
108
200
|
if (!cont) {
|
|
109
201
|
cancel('Setup cancelled.');
|
|
@@ -123,14 +215,34 @@ export async function runWizard(deps = DEFAULT_WIZARD_DEPS) {
|
|
|
123
215
|
// (${site}/wp-json/yt-builder-mcp/mcp). resolveMode() reads YTB_MCP_SITE_URL
|
|
124
216
|
// + YTB_MCP_BEARER_TOKEN verbatim; the legacy WP_URL key is harmless (read
|
|
125
217
|
// only by the fat loader). Flip YTB_MCP_MODE off to fall back to fat.
|
|
218
|
+
// Corporate TLS-inspection: trust the chosen root CA natively. `buildCaEnv`
|
|
219
|
+
// resolves the right key for the strategy + Node version: a `.pem` path →
|
|
220
|
+
// NODE_EXTRA_CA_CERTS (any Node); OS trust store → NODE_OPTIONS=--use-system-ca
|
|
221
|
+
// (Node ≥ 22.15, else warn to use a .pem). Never disables verification.
|
|
222
|
+
// Pass an empty `currentEnv` so the WRITTEN config's NODE_OPTIONS is a clean
|
|
223
|
+
// `--use-system-ca` for the MCP server's own runtime — not the operator's
|
|
224
|
+
// current shell NODE_OPTIONS (which is irrelevant to the spawned server).
|
|
225
|
+
const caEnv = buildCaEnv(caChoice, nodeVersion, {});
|
|
226
|
+
for (const w of caEnv.warnings)
|
|
227
|
+
log.warn(w);
|
|
228
|
+
// Glöckle gap #15 — pin the npx version when requested (`--pin` /
|
|
229
|
+
// YTB_MCP_VERSION); default is the floating @latest the update-notifier
|
|
230
|
+
// expects. A malformed pin degrades to floating with a warning.
|
|
231
|
+
const npx = buildNpxSpec(SERVER_NAME, answers.versionPin);
|
|
232
|
+
if (npx.error !== undefined)
|
|
233
|
+
log.warn(npx.error);
|
|
234
|
+
if (npx.pinned) {
|
|
235
|
+
log.info(`Pinning the MCP server to ${npx.spec} (air-gapped / reproducible). Re-run setup without --pin to float to the latest.`);
|
|
236
|
+
}
|
|
126
237
|
const serverConfig = {
|
|
127
238
|
command: 'npx',
|
|
128
|
-
args: ['-y',
|
|
239
|
+
args: ['-y', npx.spec],
|
|
129
240
|
env: {
|
|
130
241
|
YTB_MCP_SITE_URL: answers.wpUrl,
|
|
131
242
|
YTB_MCP_WP_URL: answers.wpUrl,
|
|
132
243
|
YTB_MCP_BEARER_TOKEN: answers.bearer,
|
|
133
244
|
YTB_MCP_MODE: 'proxy',
|
|
245
|
+
...caEnv.env,
|
|
134
246
|
},
|
|
135
247
|
};
|
|
136
248
|
const writes = [];
|
|
@@ -174,6 +286,9 @@ export async function runWizard(deps = DEFAULT_WIZARD_DEPS) {
|
|
|
174
286
|
hsSpinner.stop('Handshake OK.');
|
|
175
287
|
}
|
|
176
288
|
}
|
|
289
|
+
else if (systemCaDeferred) {
|
|
290
|
+
log.info('Skipping the live handshake — the OS trust store is validated when the MCP server next launches.');
|
|
291
|
+
}
|
|
177
292
|
else {
|
|
178
293
|
log.warn('Skipping handshake because the Bearer probe failed.');
|
|
179
294
|
}
|
|
@@ -195,7 +310,7 @@ export async function runWizard(deps = DEFAULT_WIZARD_DEPS) {
|
|
|
195
310
|
// Operator just sees the warning + can retry with `add-site`.
|
|
196
311
|
}
|
|
197
312
|
}
|
|
198
|
-
if (writes.every((r) => r.ok) && authOk) {
|
|
313
|
+
if (writes.every((r) => r.ok) && (authOk || systemCaDeferred)) {
|
|
199
314
|
outro('Done — restart your AI client to load the new MCP server.');
|
|
200
315
|
}
|
|
201
316
|
else {
|
package/dist/setup-wizard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACH,mBAAmB,EACnB,cAAc,GACjB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,7 +100,14 @@ export declare class ClientPool {
|
|
|
100
100
|
* `null` = no override (registry default in effect).
|
|
101
101
|
*/
|
|
102
102
|
private activeOverride;
|
|
103
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Corporate extra headers (Glöckle gap #14) attached to EVERY client this
|
|
105
|
+
* pool constructs. Parsed once from `YTB_MCP_EXTRA_HEADERS` (default) or
|
|
106
|
+
* injected by a caller/test. Bearer always wins on collision (enforced in
|
|
107
|
+
* {@link RestClient}).
|
|
108
|
+
*/
|
|
109
|
+
private readonly extraHeaders;
|
|
110
|
+
constructor(_registry: SiteRegistry, secretResolver: SecretResolver, timeoutMs?: number, extraHeaders?: Record<string, string>);
|
|
104
111
|
/**
|
|
105
112
|
* The current runtime active-site override, or `null` when none is
|
|
106
113
|
* set (the registry default is in effect). Read-only peek — does not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-pool.d.ts","sourceRoot":"","sources":["../../src/sites/client-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client-pool.d.ts","sourceRoot":"","sources":["../../src/sites/client-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IACzC,SAAgB,IAAI,EAAG,iBAAiB,CAAU;gBAG9C,OAAO,SAG6E;CAK3F;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;aAInB,MAAM,EAAE,MAAM;aACd,SAAS,EAAE,SAAS,MAAM,EAAE;IAJhD,SAAgB,IAAI,EAAG,cAAc,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,MAAM,EAAE;CAQnD;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IA4Bf,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS;IA7B9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IAEvD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,cAAc,CAAuB;IAE7C;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;gBAGjC,SAAS,EAAE,YAAY,EACvB,cAAc,EAAE,cAAc,EAC9B,SAAS,GAAE,MAAe,EAC3C,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAA+B;IAKtE;;;;OAIG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;;;;;;;;;OAUG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAW1C;;;;;;;;;;;;OAYG;IACH,IAAI,QAAQ,IAAI,YAAY,CAE3B;IAED;;;;;;;;;;OAUG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuEvD;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGnC"}
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
* @license MIT
|
|
38
38
|
*/
|
|
39
39
|
import { RestClient } from '../client.js';
|
|
40
|
+
import { parseExtraHeaders } from '../net/extra-headers.js';
|
|
40
41
|
/**
|
|
41
42
|
* Thrown when `resolve()` is called without a `siteId` AND the
|
|
42
43
|
* registry has no default configured (neither `default_site_id` nor a
|
|
@@ -100,10 +101,18 @@ export class ClientPool {
|
|
|
100
101
|
* `null` = no override (registry default in effect).
|
|
101
102
|
*/
|
|
102
103
|
activeOverride = null;
|
|
103
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Corporate extra headers (Glöckle gap #14) attached to EVERY client this
|
|
106
|
+
* pool constructs. Parsed once from `YTB_MCP_EXTRA_HEADERS` (default) or
|
|
107
|
+
* injected by a caller/test. Bearer always wins on collision (enforced in
|
|
108
|
+
* {@link RestClient}).
|
|
109
|
+
*/
|
|
110
|
+
extraHeaders;
|
|
111
|
+
constructor(_registry, secretResolver, timeoutMs = 15_000, extraHeaders = parseExtraHeaders().headers) {
|
|
104
112
|
this._registry = _registry;
|
|
105
113
|
this.secretResolver = secretResolver;
|
|
106
114
|
this.timeoutMs = timeoutMs;
|
|
115
|
+
this.extraHeaders = extraHeaders;
|
|
107
116
|
}
|
|
108
117
|
/**
|
|
109
118
|
* The current runtime active-site override, or `null` when none is
|
|
@@ -207,6 +216,9 @@ export class ClientPool {
|
|
|
207
216
|
platform,
|
|
208
217
|
bearerToken: bearer.token,
|
|
209
218
|
timeoutMs: this.timeoutMs,
|
|
219
|
+
...(Object.keys(this.extraHeaders).length > 0
|
|
220
|
+
? { extraHeaders: this.extraHeaders }
|
|
221
|
+
: {}),
|
|
210
222
|
});
|
|
211
223
|
this.cache.set(id, client);
|
|
212
224
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-pool.js","sourceRoot":"","sources":["../../src/sites/client-pool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client-pool.js","sourceRoot":"","sources":["../../src/sites/client-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/elements/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGH,KAAK,mBAAmB,EAS3B,MAAM,eAAe,CAAC;AAEvB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,SAAS,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/tools/elements/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAI7D,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGH,KAAK,mBAAmB,EAS3B,MAAM,eAAe,CAAC;AAEvB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,SAAS,iBAAiB,EAAE,CA0R9B"}
|