@chrischall/mcp-utils 0.10.4 → 0.11.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.
- package/README.md +123 -17
- package/dist/auth/cached-token.d.ts +45 -0
- package/dist/auth/cached-token.d.ts.map +1 -0
- package/dist/auth/cached-token.js +53 -0
- package/dist/auth/cached-token.js.map +1 -0
- package/dist/auth/es256.d.ts +23 -0
- package/dist/auth/es256.d.ts.map +1 -0
- package/dist/auth/es256.js +27 -0
- package/dist/auth/es256.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/concurrency/index.d.ts +1 -0
- package/dist/concurrency/index.d.ts.map +1 -1
- package/dist/concurrency/index.js +1 -0
- package/dist/concurrency/index.js.map +1 -1
- package/dist/concurrency/single-flight.d.ts +48 -0
- package/dist/concurrency/single-flight.d.ts.map +1 -0
- package/dist/concurrency/single-flight.js +76 -0
- package/dist/concurrency/single-flight.js.map +1 -0
- package/dist/config/index.d.ts +36 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +41 -0
- package/dist/config/index.js.map +1 -1
- package/dist/dates/index.d.ts +28 -0
- package/dist/dates/index.d.ts.map +1 -1
- package/dist/dates/index.js +48 -0
- package/dist/dates/index.js.map +1 -1
- package/dist/errors/index.d.ts +28 -3
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +52 -4
- package/dist/errors/index.js.map +1 -1
- package/dist/fetchproxy/index.d.ts +26 -1
- package/dist/fetchproxy/index.d.ts.map +1 -1
- package/dist/fetchproxy/index.js +38 -13
- package/dist/fetchproxy/index.js.map +1 -1
- package/dist/fs/index.d.ts +1 -0
- package/dist/fs/index.d.ts.map +1 -1
- package/dist/fs/index.js +1 -0
- package/dist/fs/index.js.map +1 -1
- package/dist/fs/output.d.ts +57 -0
- package/dist/fs/output.d.ts.map +1 -0
- package/dist/fs/output.js +106 -0
- package/dist/fs/output.js.map +1 -0
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +58 -6
- package/dist/html/index.js.map +1 -1
- package/dist/http/index.d.ts +35 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +30 -2
- package/dist/http/index.js.map +1 -1
- package/dist/http/net-atoms.d.ts +54 -0
- package/dist/http/net-atoms.d.ts.map +1 -0
- package/dist/http/net-atoms.js +76 -0
- package/dist/http/net-atoms.js.map +1 -0
- package/dist/http/response-cache.d.ts +55 -0
- package/dist/http/response-cache.d.ts.map +1 -0
- package/dist/http/response-cache.js +84 -0
- package/dist/http/response-cache.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/response/index.d.ts +17 -0
- package/dist/response/index.d.ts.map +1 -1
- package/dist/response/index.js +28 -0
- package/dist/response/index.js.map +1 -1
- package/dist/scrape/index.d.ts +144 -0
- package/dist/scrape/index.d.ts.map +1 -0
- package/dist/scrape/index.js +460 -0
- package/dist/scrape/index.js.map +1 -0
- package/dist/session/index.d.ts +43 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +44 -6
- package/dist/session/index.js.map +1 -1
- package/dist/zod/index.d.ts +1 -0
- package/dist/zod/index.d.ts.map +1 -1
- package/dist/zod/index.js +1 -0
- package/dist/zod/index.js.map +1 -1
- package/dist/zod/parse-lenient.d.ts +36 -0
- package/dist/zod/parse-lenient.d.ts.map +1 -0
- package/dist/zod/parse-lenient.js +37 -0
- package/dist/zod/parse-lenient.js.map +1 -0
- package/package.json +1 -1
package/dist/config/index.d.ts
CHANGED
|
@@ -149,4 +149,40 @@ export interface LoadDotenvOptions {
|
|
|
149
149
|
* @returns `true` if a `.env` file was loaded without error, `false` otherwise.
|
|
150
150
|
*/
|
|
151
151
|
export declare function loadDotenvSafely(opts?: LoadDotenvOptions): Promise<boolean>;
|
|
152
|
+
/** Options for {@link readIntEnv}. */
|
|
153
|
+
export interface ReadIntEnvOptions {
|
|
154
|
+
/** The source to read from. Defaults to {@link process.env}. */
|
|
155
|
+
env?: EnvSource;
|
|
156
|
+
/** Result when the variable is unset, junk, or out of range. */
|
|
157
|
+
default?: number;
|
|
158
|
+
/** Inclusive lower bound. Defaults to `0` — the fleet's env ints (timeouts, counts) are non-negative. */
|
|
159
|
+
min?: number;
|
|
160
|
+
/** Inclusive upper bound. Unbounded when omitted. */
|
|
161
|
+
max?: number;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Read an integer from an environment variable, hardened like {@link readEnvVar}
|
|
165
|
+
* (trim, treat blank / `'undefined'` / `'null'` / unsubstituted `${...}` as
|
|
166
|
+
* unset) PLUS a strict integer parse (`12abc`, `1.5`, `0x10` are rejected) and
|
|
167
|
+
* an optional `[min, max]` range check.
|
|
168
|
+
*
|
|
169
|
+
* Returns `opts.default` (or `undefined`) when unset, junk, or out of range.
|
|
170
|
+
* Consolidates the hand-rolled numeric env readers across the fleet
|
|
171
|
+
* (alltrails `getRequestTimeoutMs`, getyourguide `requestTimeoutMs`, …) the way
|
|
172
|
+
* {@link readPortEnv} consolidated the port variant.
|
|
173
|
+
*/
|
|
174
|
+
export declare function readIntEnv(key: string, opts?: ReadIntEnvOptions): number | undefined;
|
|
175
|
+
/**
|
|
176
|
+
* Read a TTL expressed in **seconds** from an environment variable and return
|
|
177
|
+
* **milliseconds** — the `<SVC>_CACHE_TTL` / `<SVC>_STATIC_CACHE_TTL` reader
|
|
178
|
+
* triplicated across flightaware / viator / tripadvisor.
|
|
179
|
+
*
|
|
180
|
+
* Semantics (matching all three donors):
|
|
181
|
+
* - unset / placeholder / junk / negative → `defaultMs`,
|
|
182
|
+
* - an explicit `'0'` → `0` (caching disabled) — NOT the default,
|
|
183
|
+
* - a non-negative integer → `n * 1000`.
|
|
184
|
+
*/
|
|
185
|
+
export declare function readTtlMsEnv(key: string, defaultMs: number, opts?: {
|
|
186
|
+
env?: EnvSource;
|
|
187
|
+
}): number;
|
|
152
188
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE3D,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,GAAG,SAAS,CAerF;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAO/E;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAQjF;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5C;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAShG;AAED,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEtD,uDAAuD;AACvD,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oEAAoE;IACpE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,4BAA4B,GAAG,MAAM,MAAM,EAAE,CAoD9F;AAED,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBrF"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE3D,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,GAAG,SAAS,CAerF;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAO/E;AAED,wCAAwC;AACxC,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAQjF;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5C;AAED,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,MAAM,CAShG;AAED,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEtD,uDAAuD;AACvD,MAAM,WAAW,4BAA4B;IAC3C,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,oEAAoE;IACpE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,4BAA4B,GAAG,MAAM,MAAM,EAAE,CAoD9F;AAED,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBrF;AAED,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,gEAAgE;IAChE,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yGAAyG;IACzG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,GAAG,SAAS,CAUxF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,SAAS,CAAA;CAAO,GAC7B,MAAM,CAGR"}
|
package/dist/config/index.js
CHANGED
|
@@ -215,4 +215,45 @@ export async function loadDotenvSafely(opts = {}) {
|
|
|
215
215
|
return false;
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* Read an integer from an environment variable, hardened like {@link readEnvVar}
|
|
220
|
+
* (trim, treat blank / `'undefined'` / `'null'` / unsubstituted `${...}` as
|
|
221
|
+
* unset) PLUS a strict integer parse (`12abc`, `1.5`, `0x10` are rejected) and
|
|
222
|
+
* an optional `[min, max]` range check.
|
|
223
|
+
*
|
|
224
|
+
* Returns `opts.default` (or `undefined`) when unset, junk, or out of range.
|
|
225
|
+
* Consolidates the hand-rolled numeric env readers across the fleet
|
|
226
|
+
* (alltrails `getRequestTimeoutMs`, getyourguide `requestTimeoutMs`, …) the way
|
|
227
|
+
* {@link readPortEnv} consolidated the port variant.
|
|
228
|
+
*/
|
|
229
|
+
export function readIntEnv(key, opts = {}) {
|
|
230
|
+
const raw = readEnvVar(key, opts.env ? { env: opts.env } : {});
|
|
231
|
+
if (raw === undefined)
|
|
232
|
+
return opts.default;
|
|
233
|
+
if (!/^-?\d+$/.test(raw))
|
|
234
|
+
return opts.default;
|
|
235
|
+
const n = Number(raw);
|
|
236
|
+
if (!Number.isSafeInteger(n))
|
|
237
|
+
return opts.default;
|
|
238
|
+
const min = opts.min ?? 0;
|
|
239
|
+
if (n < min)
|
|
240
|
+
return opts.default;
|
|
241
|
+
if (opts.max !== undefined && n > opts.max)
|
|
242
|
+
return opts.default;
|
|
243
|
+
return n;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Read a TTL expressed in **seconds** from an environment variable and return
|
|
247
|
+
* **milliseconds** — the `<SVC>_CACHE_TTL` / `<SVC>_STATIC_CACHE_TTL` reader
|
|
248
|
+
* triplicated across flightaware / viator / tripadvisor.
|
|
249
|
+
*
|
|
250
|
+
* Semantics (matching all three donors):
|
|
251
|
+
* - unset / placeholder / junk / negative → `defaultMs`,
|
|
252
|
+
* - an explicit `'0'` → `0` (caching disabled) — NOT the default,
|
|
253
|
+
* - a non-negative integer → `n * 1000`.
|
|
254
|
+
*/
|
|
255
|
+
export function readTtlMsEnv(key, defaultMs, opts = {}) {
|
|
256
|
+
const seconds = readIntEnv(key, { ...(opts.env ? { env: opts.env } : {}), min: 0 });
|
|
257
|
+
return seconds === undefined ? defaultMs : seconds * 1000;
|
|
258
|
+
}
|
|
218
259
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/dates/index.d.ts
CHANGED
|
@@ -16,4 +16,32 @@ export declare function dmyToIso(date: string): string;
|
|
|
16
16
|
* anything else is trimmed and passed through.
|
|
17
17
|
*/
|
|
18
18
|
export declare function isoToCompactTimestamp(value: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Today's date in the **local** timezone as ISO `yyyy-MM-dd`. This is the one
|
|
21
|
+
* place a `Date` is deliberately read with local getters — "today" for a user
|
|
22
|
+
* booking a reservation means their wall-clock date, not UTC (resy's
|
|
23
|
+
* `todayYMD`). Pass a `Date` to pin the clock (tests).
|
|
24
|
+
*/
|
|
25
|
+
export declare function todayIso(now?: Date): string;
|
|
26
|
+
/**
|
|
27
|
+
* A `Date`'s **UTC** calendar date as ISO `yyyy-MM-dd` — the UTC counterpart of
|
|
28
|
+
* {@link todayIso} for APIs whose day boundaries are UTC (creditkarma's
|
|
29
|
+
* `utcDateString`).
|
|
30
|
+
*/
|
|
31
|
+
export declare function toIsoDateUtc(d: Date): string;
|
|
32
|
+
/**
|
|
33
|
+
* Shift an ISO `yyyy-MM-dd` date by `days` (negative to go back), staying
|
|
34
|
+
* calendar-correct across month/year boundaries and leap days. The arithmetic
|
|
35
|
+
* runs entirely in UTC so a behind-UTC local zone can't shift the result (the
|
|
36
|
+
* classic date-only off-by-one). Non-ISO input is trimmed and passed through,
|
|
37
|
+
* matching the module convention.
|
|
38
|
+
*/
|
|
39
|
+
export declare function shiftIsoDate(date: string, days: number): string;
|
|
40
|
+
/**
|
|
41
|
+
* Normalize a time to `HH:MM:SS`: a bare `HH:MM` gains `:00`, an `HH:MM:SS`
|
|
42
|
+
* passes through, anything else is trimmed and passed through. The inverse
|
|
43
|
+
* direction of the zod module's `extractTime` (which trims seconds OFF), for
|
|
44
|
+
* upstreams that require the seconds field (resy's `padSeconds`).
|
|
45
|
+
*/
|
|
46
|
+
export declare function ensureSeconds(time: string): string;
|
|
19
47
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO3D"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,oFAAoF;AACpF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO3D;AAID;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/D;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKlD"}
|
package/dist/dates/index.js
CHANGED
|
@@ -40,4 +40,52 @@ export function isoToCompactTimestamp(value) {
|
|
|
40
40
|
return `${dt[1]}${dt[2]}${dt[3]}${dt[4]}${dt[5]}${dt[6] ?? '00'}`;
|
|
41
41
|
return v;
|
|
42
42
|
}
|
|
43
|
+
const pad2 = (n) => String(n).padStart(2, '0');
|
|
44
|
+
/**
|
|
45
|
+
* Today's date in the **local** timezone as ISO `yyyy-MM-dd`. This is the one
|
|
46
|
+
* place a `Date` is deliberately read with local getters — "today" for a user
|
|
47
|
+
* booking a reservation means their wall-clock date, not UTC (resy's
|
|
48
|
+
* `todayYMD`). Pass a `Date` to pin the clock (tests).
|
|
49
|
+
*/
|
|
50
|
+
export function todayIso(now = new Date()) {
|
|
51
|
+
return `${now.getFullYear()}-${pad2(now.getMonth() + 1)}-${pad2(now.getDate())}`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A `Date`'s **UTC** calendar date as ISO `yyyy-MM-dd` — the UTC counterpart of
|
|
55
|
+
* {@link todayIso} for APIs whose day boundaries are UTC (creditkarma's
|
|
56
|
+
* `utcDateString`).
|
|
57
|
+
*/
|
|
58
|
+
export function toIsoDateUtc(d) {
|
|
59
|
+
return `${d.getUTCFullYear()}-${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Shift an ISO `yyyy-MM-dd` date by `days` (negative to go back), staying
|
|
63
|
+
* calendar-correct across month/year boundaries and leap days. The arithmetic
|
|
64
|
+
* runs entirely in UTC so a behind-UTC local zone can't shift the result (the
|
|
65
|
+
* classic date-only off-by-one). Non-ISO input is trimmed and passed through,
|
|
66
|
+
* matching the module convention.
|
|
67
|
+
*/
|
|
68
|
+
export function shiftIsoDate(date, days) {
|
|
69
|
+
const m = ISO_DATE.exec(date.trim());
|
|
70
|
+
if (!m)
|
|
71
|
+
return date.trim();
|
|
72
|
+
const shifted = new Date(Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3]) + days));
|
|
73
|
+
return toIsoDateUtc(shifted);
|
|
74
|
+
}
|
|
75
|
+
const HM_TIME = /^(\d{2}):(\d{2})$/;
|
|
76
|
+
const HMS_TIME = /^\d{2}:\d{2}:\d{2}$/;
|
|
77
|
+
/**
|
|
78
|
+
* Normalize a time to `HH:MM:SS`: a bare `HH:MM` gains `:00`, an `HH:MM:SS`
|
|
79
|
+
* passes through, anything else is trimmed and passed through. The inverse
|
|
80
|
+
* direction of the zod module's `extractTime` (which trims seconds OFF), for
|
|
81
|
+
* upstreams that require the seconds field (resy's `padSeconds`).
|
|
82
|
+
*/
|
|
83
|
+
export function ensureSeconds(time) {
|
|
84
|
+
const t = time.trim();
|
|
85
|
+
if (HM_TIME.test(t))
|
|
86
|
+
return `${t}:00`;
|
|
87
|
+
if (HMS_TIME.test(t))
|
|
88
|
+
return t;
|
|
89
|
+
return t;
|
|
90
|
+
}
|
|
43
91
|
//# sourceMappingURL=index.js.map
|
package/dist/dates/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,yFAAyF;AACzF,sFAAsF;AACtF,uFAAuF;AACvF,uFAAuF;AACvF,2FAA2F;AAC3F,4EAA4E;AAC5E,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAC7C,MAAM,QAAQ,GAAG,2BAA2B,CAAC;AAC7C,MAAM,YAAY,GAAG,2DAA2D,CAAC;AAEjF,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5C,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,EAAE;QAAE,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1E,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dates/index.ts"],"names":[],"mappings":"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"}
|
package/dist/errors/index.d.ts
CHANGED
|
@@ -41,7 +41,11 @@ export declare class SessionNotAuthenticatedError extends McpToolError {
|
|
|
41
41
|
export declare class BotWallError extends McpToolError {
|
|
42
42
|
/** Suggested seconds to wait before retrying the blocked request(s). */
|
|
43
43
|
readonly retryAfterSeconds: number;
|
|
44
|
-
|
|
44
|
+
/** The wall vendor when the classifier identified one (e.g. `'DataDome'`, `'Cloudflare'`). */
|
|
45
|
+
readonly vendor?: string;
|
|
46
|
+
constructor(path: string, retryAfterSeconds?: number, opts?: {
|
|
47
|
+
vendor?: string;
|
|
48
|
+
});
|
|
45
49
|
}
|
|
46
50
|
/** Upstream returned HTTP 429 (or an equivalent rate-limit signal). */
|
|
47
51
|
export declare class RateLimitError extends McpToolError {
|
|
@@ -74,8 +78,11 @@ export declare function createHelpfulError(message: string, opts?: {
|
|
|
74
78
|
* is surfaced to a client: `Bearer <token>` / `Authorization: Basic <…>` headers,
|
|
75
79
|
* `Cookie:` / `Set-Cookie:` header values (cookie names stay visible), standalone
|
|
76
80
|
* JWTs, well-known API-key shapes (OpenAI/Anthropic `sk-…`, GitHub `ghp_…`,
|
|
77
|
-
* Slack `xox?-…`, Google `AIza…`, AWS `AKIA…`, `whsec_…`),
|
|
78
|
-
* URL query params (`access_token`, `api_key`, `token`, `key`, `sig`, …)
|
|
81
|
+
* Slack `xox?-…`, Google `AIza…`, AWS `AKIA…`, `whsec_…`), secret-bearing
|
|
82
|
+
* URL query params (`access_token`, `api_key`, `token`, `key`, `sig`, …), and
|
|
83
|
+
* quote-wrapped JSON secret values (`"refresh_token":"…"` in an OAuth/error
|
|
84
|
+
* body — the key must be an exact secret name, so `"token_type":"Bearer"` and
|
|
85
|
+
* other non-secret keys stay visible).
|
|
79
86
|
*
|
|
80
87
|
* Exported so fleet repos can redact custom strings (log lines, debug payloads)
|
|
81
88
|
* without taking on {@link truncateErrorMessage}'s length cap.
|
|
@@ -99,4 +106,22 @@ export declare function messageOf(err: unknown): string;
|
|
|
99
106
|
* an already-prefixed error does not double-prefix.
|
|
100
107
|
*/
|
|
101
108
|
export declare function wrapToolError(toolName: string, err: unknown): McpToolError;
|
|
109
|
+
/** Options for {@link maskSecret}. */
|
|
110
|
+
export interface MaskSecretOptions {
|
|
111
|
+
/** Leading characters kept visible. Defaults to 8. */
|
|
112
|
+
head?: number;
|
|
113
|
+
/** Trailing characters kept visible. Defaults to 4. */
|
|
114
|
+
tail?: number;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Mask a credential for display in a confirmation message: keep the first
|
|
118
|
+
* `head` and last `tail` characters with an ellipsis between
|
|
119
|
+
* (`abcdefgh…wxyz`). A value too short to mask safely (≤ `head + tail` chars)
|
|
120
|
+
* is fully hidden as `…` — a partial reveal of a short secret would leak most
|
|
121
|
+
* of it.
|
|
122
|
+
*
|
|
123
|
+
* Consolidates onehome's `fingerprint()` — for `<svc>_set_session`-style tools
|
|
124
|
+
* that echo back WHICH credential they stored without echoing the credential.
|
|
125
|
+
*/
|
|
126
|
+
export declare function maskSecret(value: string, opts?: MaskSecretOptions): string;
|
|
102
127
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,qFAAqF;AACrF,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,+EAA+E;AAC/E,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAOvE;AAED;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,YAAY;gBAChD,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAUlD;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,qFAAqF;AACrF,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,+EAA+E;AAC/E,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAOvE;AAED;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,YAAY;gBAChD,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAUlD;AAED;;;;;GAKG;AACH,qBAAa,YAAa,SAAQ,YAAY;IAC5C,wEAAwE;IACxE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,8FAA8F;IAC9F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAGvB,IAAI,EAAE,MAAM,EACZ,iBAAiB,GAAE,MAAuC,EAC1D,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAa7B;AAED,uEAAuE;AACvE,qBAAa,cAAe,SAAQ,YAAY;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;CAOxD;AAED,kFAAkF;AAClF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAQ7C;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IAE/C,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAFf,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM;CAS3B;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAE1F;AA2DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAelD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkC,GAAG,MAAM,CAKlG;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAG9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,CAM1E;AAED,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,GAAG,MAAM,CAK9E"}
|
package/dist/errors/index.js
CHANGED
|
@@ -56,11 +56,17 @@ export class SessionNotAuthenticatedError extends McpToolError {
|
|
|
56
56
|
export class BotWallError extends McpToolError {
|
|
57
57
|
/** Suggested seconds to wait before retrying the blocked request(s). */
|
|
58
58
|
retryAfterSeconds;
|
|
59
|
-
|
|
59
|
+
/** The wall vendor when the classifier identified one (e.g. `'DataDome'`, `'Cloudflare'`). */
|
|
60
|
+
vendor;
|
|
61
|
+
constructor(path, retryAfterSeconds = DEFAULT_BOT_WALL_RETRY_AFTER_S, opts) {
|
|
62
|
+
// Keep the historical no-vendor message byte-identical ("an anti-bot …").
|
|
63
|
+
const wall = opts?.vendor ? `a ${opts.vendor} anti-bot CAPTCHA wall` : 'an anti-bot CAPTCHA wall';
|
|
60
64
|
const hint = `Back off and retry (suggested wait: ${retryAfterSeconds}s). If it persists, open the site in your browser, clear the CAPTCHA, then retry with a smaller batch.`;
|
|
61
|
-
super(`Served
|
|
65
|
+
super(`Served ${wall} for ${path} — the request was rate-limited, not a missing resource. ${hint}`, { hint });
|
|
62
66
|
this.name = 'BotWallError';
|
|
63
67
|
this.retryAfterSeconds = retryAfterSeconds;
|
|
68
|
+
if (opts?.vendor !== undefined)
|
|
69
|
+
this.vendor = opts.vendor;
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
/** Upstream returned HTTP 429 (or an equivalent rate-limit signal). */
|
|
@@ -141,13 +147,35 @@ const API_KEY_RE = new RegExp([
|
|
|
141
147
|
// Anchored on `?`/`&` so plain prose like `key=primary` (no URL context) never
|
|
142
148
|
// matches; that constraint is what makes short names like `key`/`sig` safe.
|
|
143
149
|
const QUERY_SECRET_RE = /([?&](?:access_token|refresh_token|client_secret|api_?key|signature|token|key|sig)=)[^&#\s"'<>`]+/gi;
|
|
150
|
+
// AWS SigV4 presigned-URL credential params. Their `X-Amz-` prefix defeats the
|
|
151
|
+
// short-name anchoring in QUERY_SECRET_RE (`&X-Amz-Security-Token=` has `-`, not
|
|
152
|
+
// `&`, before `token`), so match the full param names explicitly — an S3 error
|
|
153
|
+
// body can echo a presigned URL carrying a temporary STS security token.
|
|
154
|
+
const AWS_SIGV4_RE = /([?&]X-Amz-(?:Signature|Security-Token|Credential)=)[^&#\s"'<>`]+/gi;
|
|
155
|
+
// Secret-bearing JSON values — `"refresh_token": "…"` in a token-endpoint or
|
|
156
|
+
// upstream error body. The KEY must be a quote-wrapped exact secret name (so
|
|
157
|
+
// `"token_type":"Bearer"` and other non-secret keys are untouched), and only
|
|
158
|
+
// the string VALUE is redacted. Covers the OAuth/login bodies the query-param
|
|
159
|
+
// redactor misses (they arrive as JSON, not a URL).
|
|
160
|
+
//
|
|
161
|
+
// Two variants — double- vs single-quoted — because the value char class must
|
|
162
|
+
// stop at the SAME quote that opened it: a shared `[^"']*` would halt at an
|
|
163
|
+
// apostrophe inside a double-quoted value (`"password":"hunter's2"` → leaks
|
|
164
|
+
// `'s2`). `client_id` is deliberately NOT in the key set: RFC 6749 §2.2 treats
|
|
165
|
+
// it as a public identifier, not a credential (QUERY_SECRET_RE omits it too).
|
|
166
|
+
const JSON_SECRET_KEYS = 'access_token|refresh_token|client_secret|api_?key|password|passwd|secret|token';
|
|
167
|
+
const JSON_SECRET_DQ_RE = new RegExp(`("(?:${JSON_SECRET_KEYS})"\\s*:\\s*")[^"]*(")`, 'gi');
|
|
168
|
+
const JSON_SECRET_SQ_RE = new RegExp(`('(?:${JSON_SECRET_KEYS})'\\s*:\\s*')[^']*(')`, 'gi');
|
|
144
169
|
/**
|
|
145
170
|
* Redact secrets that commonly leak into upstream error bodies before the text
|
|
146
171
|
* is surfaced to a client: `Bearer <token>` / `Authorization: Basic <…>` headers,
|
|
147
172
|
* `Cookie:` / `Set-Cookie:` header values (cookie names stay visible), standalone
|
|
148
173
|
* JWTs, well-known API-key shapes (OpenAI/Anthropic `sk-…`, GitHub `ghp_…`,
|
|
149
|
-
* Slack `xox?-…`, Google `AIza…`, AWS `AKIA…`, `whsec_…`),
|
|
150
|
-
* URL query params (`access_token`, `api_key`, `token`, `key`, `sig`, …)
|
|
174
|
+
* Slack `xox?-…`, Google `AIza…`, AWS `AKIA…`, `whsec_…`), secret-bearing
|
|
175
|
+
* URL query params (`access_token`, `api_key`, `token`, `key`, `sig`, …), and
|
|
176
|
+
* quote-wrapped JSON secret values (`"refresh_token":"…"` in an OAuth/error
|
|
177
|
+
* body — the key must be an exact secret name, so `"token_type":"Bearer"` and
|
|
178
|
+
* other non-secret keys stay visible).
|
|
151
179
|
*
|
|
152
180
|
* Exported so fleet repos can redact custom strings (log lines, debug payloads)
|
|
153
181
|
* without taking on {@link truncateErrorMessage}'s length cap.
|
|
@@ -160,6 +188,9 @@ export function redactSecrets(text) {
|
|
|
160
188
|
.replace(COOKIE_HEADER_RE, (_m, prefix, pairs) => `${prefix}${pairs.replace(/=[^;,\s]*/g, '=[REDACTED]')}`)
|
|
161
189
|
.replace(API_KEY_RE, '[REDACTED]')
|
|
162
190
|
.replace(QUERY_SECRET_RE, '$1[REDACTED]')
|
|
191
|
+
.replace(AWS_SIGV4_RE, '$1[REDACTED]')
|
|
192
|
+
.replace(JSON_SECRET_DQ_RE, '$1[REDACTED]$2')
|
|
193
|
+
.replace(JSON_SECRET_SQ_RE, '$1[REDACTED]$2')
|
|
163
194
|
.replace(JWT_RE, '[REDACTED]');
|
|
164
195
|
}
|
|
165
196
|
/**
|
|
@@ -196,4 +227,21 @@ export function wrapToolError(toolName, err) {
|
|
|
196
227
|
const hint = err instanceof McpToolError ? err.hint : undefined;
|
|
197
228
|
return new McpToolError(truncateErrorMessage(message), { hint, cause: err });
|
|
198
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Mask a credential for display in a confirmation message: keep the first
|
|
232
|
+
* `head` and last `tail` characters with an ellipsis between
|
|
233
|
+
* (`abcdefgh…wxyz`). A value too short to mask safely (≤ `head + tail` chars)
|
|
234
|
+
* is fully hidden as `…` — a partial reveal of a short secret would leak most
|
|
235
|
+
* of it.
|
|
236
|
+
*
|
|
237
|
+
* Consolidates onehome's `fingerprint()` — for `<svc>_set_session`-style tools
|
|
238
|
+
* that echo back WHICH credential they stored without echoing the credential.
|
|
239
|
+
*/
|
|
240
|
+
export function maskSecret(value, opts = {}) {
|
|
241
|
+
const head = opts.head ?? 8;
|
|
242
|
+
const tail = opts.tail ?? 4;
|
|
243
|
+
if (value.length <= head + tail)
|
|
244
|
+
return '…';
|
|
245
|
+
return `${value.slice(0, head)}…${value.slice(value.length - tail)}`;
|
|
246
|
+
}
|
|
199
247
|
//# sourceMappingURL=index.js.map
|
package/dist/errors/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,wEAAwE;AACxE,qFAAqF;AACrF,iFAAiF;AACjF,gFAAgF;AAChF,yBAAyB;AAEzB,qFAAqF;AACrF,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,qDAAqD;IAC5C,IAAI,CAAU;IAEvB,YAAY,OAAe,EAAE,IAAyC;QACpE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACpD,8DAA8D;QAC9D,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,4BAA6B,SAAQ,YAAY;IAC5D,YAAY,OAAgB,EAAE,UAAmB;QAC/C,MAAM,IAAI,GAAG,OAAO,IAAI,aAAa,CAAC;QACtC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,UAAU,+CAA+C,CAAC,CAAC,CAAC,0CAA0C,CAAC;QAC1I,KAAK,CACH,oBAAoB,IAAI,KAAK,KAAK,GAAG;YACnC,kFAAkF,EACpF,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IAC5C,wEAAwE;IAC/D,iBAAiB,CAAS;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -289,7 +289,12 @@ export interface BridgeHealthcheckResult {
|
|
|
289
289
|
body_length?: number;
|
|
290
290
|
};
|
|
291
291
|
error?: {
|
|
292
|
-
|
|
292
|
+
/**
|
|
293
|
+
* The classified error kind. Normally one of `BridgeErrorInfo['type']`;
|
|
294
|
+
* a consumer-supplied {@link RegisterBridgeHealthcheckToolArgs.classifyThrown}
|
|
295
|
+
* can introduce site-specific kinds (e.g. workday's `'session_expired'`).
|
|
296
|
+
*/
|
|
297
|
+
kind: string;
|
|
293
298
|
message: string;
|
|
294
299
|
/** Server-authored next-step hint (`FetchproxyBridgeDownError.hint`), when present. */
|
|
295
300
|
bridge_hint?: string;
|
|
@@ -297,6 +302,8 @@ export interface BridgeHealthcheckResult {
|
|
|
297
302
|
/** Plain-English next-step suggestion derived from the result. */
|
|
298
303
|
hint: string;
|
|
299
304
|
}
|
|
305
|
+
/** The hint-ladder arms whose copy {@link RegisterBridgeHealthcheckToolArgs.hints} can override. */
|
|
306
|
+
export type HealthcheckHintArm = 'ok' | 'bridge_down' | 'no_role' | 'timeout' | 'protocol' | 'unknown';
|
|
300
307
|
/** Options for {@link registerBridgeHealthcheckTool}. */
|
|
301
308
|
export interface RegisterBridgeHealthcheckToolArgs {
|
|
302
309
|
/** The `McpServer` to register the tool on. */
|
|
@@ -322,6 +329,24 @@ export interface RegisterBridgeHealthcheckToolArgs {
|
|
|
322
329
|
* client path real tools use (sign-in guards and all).
|
|
323
330
|
*/
|
|
324
331
|
probeFn: (path: string) => Promise<string>;
|
|
332
|
+
/**
|
|
333
|
+
* Map the error the probe THREW to a site-specific `{ kind, hint? }` —
|
|
334
|
+
* e.g. workday classifies its `SessionNotAuthenticatedError` as
|
|
335
|
+
* `session_expired` with SSO re-sign-in copy. Return `undefined` to keep the
|
|
336
|
+
* default classification. A returned `hint` wins the whole result hint.
|
|
337
|
+
* Absorbs the error-kind special cases that kept workday / zillow / etix on
|
|
338
|
+
* hand-rolled healthchecks.
|
|
339
|
+
*/
|
|
340
|
+
classifyThrown?: (err: unknown) => {
|
|
341
|
+
kind: string;
|
|
342
|
+
hint?: string;
|
|
343
|
+
} | undefined;
|
|
344
|
+
/**
|
|
345
|
+
* Per-arm overrides for the default hint copy (e.g. etix replacing the
|
|
346
|
+
* generic timeout hint with DataDome-specific guidance). A
|
|
347
|
+
* {@link classifyThrown} hint takes precedence over these.
|
|
348
|
+
*/
|
|
349
|
+
hints?: Partial<Record<HealthcheckHintArm, string>>;
|
|
325
350
|
}
|
|
326
351
|
/**
|
|
327
352
|
* Register a `<prefix>_healthcheck` MCP tool that round-trips `probePath`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetchproxy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,gBAAgB,EAGhB,KAAK,oBAAoB,EAGzB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAIlB,KAAK,EACL,KAAK,EACL,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAO5B,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AA2B5B;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAEjD,2DAA2D;AAC3D,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,0EAA0E;IAC1E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;;;OAKG;IACH,MAAM,IAAI,UAAU,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjE;;;;;OAKG;IACH,WAAW,CAAC,CAAC,GAAG,OAAO,EACrB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,yBAAyB,GAC/B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,qBAAqB,CAAA;KAAE,CAAC,CAAC;IAC9D;;;;OAIG;IACH,QAAQ,CACN,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAC3C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED,qDAAqD;AACrD,MAAM,MAAM,gCAAgC,GAAG,oBAAoB,GAAG;IACpE;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,gBAAgB,CAAC;CACjE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,mBAAmB,EAC/D,IAAI,EAAE,gCAAgC,GACrC,CAAC,CA2FH;AAMD,iFAAiF;AACjF,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,wFAAwF;IACxF,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC5C,4FAA4F;IAC5F,sBAAsB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC9C,6EAA6E;IAC7E,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACrC,oDAAoD;IACpD,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACxC;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,uBAAuB,GAC5B,IAAI,CACL,oBAAoB,EAClB,SAAS,GACT,cAAc,GACd,YAAY,GACZ,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,GACtB,wBAAwB,GACxB,gBAAgB,GAChB,iBAAiB,CACpB,CAwCA;AAOD,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CA+B7D;AAeD,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG;QACpC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1C,CAAC;IACF,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetchproxy/index.ts"],"names":[],"mappings":"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"}
|
package/dist/fetchproxy/index.js
CHANGED
|
@@ -323,7 +323,7 @@ function healthcheckHint(args) {
|
|
|
323
323
|
* });
|
|
324
324
|
*/
|
|
325
325
|
export function registerBridgeHealthcheckTool(args) {
|
|
326
|
-
const { server, prefix, probePath, hostLabel, transport, probeFn } = args;
|
|
326
|
+
const { server, prefix, probePath, hostLabel, transport, probeFn, classifyThrown, hints } = args;
|
|
327
327
|
const probeUrl = `https://${hostLabel}${probePath}`;
|
|
328
328
|
server.registerTool(`${prefix}_healthcheck`, {
|
|
329
329
|
title: 'Verify the fetchproxy bridge end-to-end',
|
|
@@ -359,6 +359,7 @@ export function registerBridgeHealthcheckTool(args) {
|
|
|
359
359
|
: { url: probeUrl, elapsed_ms: probeResult.elapsed_ms };
|
|
360
360
|
let error;
|
|
361
361
|
let bridgeHint;
|
|
362
|
+
let customHint;
|
|
362
363
|
if (probeResult.error) {
|
|
363
364
|
// `runProbe` already classified the throw into `probeResult.error.kind`
|
|
364
365
|
// (fetchproxy's raw vocabulary). Trust that as the discriminator —
|
|
@@ -366,9 +367,18 @@ export function registerBridgeHealthcheckTool(args) {
|
|
|
366
367
|
// re-classifying a plain `{kind,message}` object. Use the typed `thrown`
|
|
367
368
|
// (set by our probe wrapper) only to lift the server-authored
|
|
368
369
|
// `FetchproxyBridgeDownError.hint`.
|
|
369
|
-
|
|
370
|
+
let kind = probeResult.error.kind === 'other' ? 'unknown' : probeResult.error.kind;
|
|
370
371
|
bridgeHint =
|
|
371
372
|
thrown instanceof FetchproxyBridgeDownError ? thrown.hint : undefined;
|
|
373
|
+
// A consumer classifier can re-kind the thrown error (e.g. workday's
|
|
374
|
+
// session_expired) and supply site-specific next-step copy.
|
|
375
|
+
if (thrown !== undefined && classifyThrown) {
|
|
376
|
+
const custom = classifyThrown(thrown);
|
|
377
|
+
if (custom) {
|
|
378
|
+
kind = custom.kind;
|
|
379
|
+
customHint = custom.hint;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
372
382
|
error = {
|
|
373
383
|
kind,
|
|
374
384
|
message: probeResult.error.message,
|
|
@@ -378,6 +388,30 @@ export function registerBridgeHealthcheckTool(args) {
|
|
|
378
388
|
// The post-probe bridge projection omits `lastExtensionMessageAt`; read it
|
|
379
389
|
// off the live status snapshot (same call, so it's current).
|
|
380
390
|
const lastExtensionMessageAt = transport.status().lastExtensionMessageAt;
|
|
391
|
+
// Which ladder arm applies — mirrors healthcheckHint's precedence order —
|
|
392
|
+
// so per-arm `hints` overrides land on the same arm the default copy would.
|
|
393
|
+
const arm = ok
|
|
394
|
+
? 'ok'
|
|
395
|
+
: error?.kind === 'bridge_down'
|
|
396
|
+
? 'bridge_down'
|
|
397
|
+
: probeResult.bridge.role === null
|
|
398
|
+
? 'no_role'
|
|
399
|
+
: error?.kind === 'timeout'
|
|
400
|
+
? 'timeout'
|
|
401
|
+
: error?.kind === 'protocol' || error?.kind === 'http'
|
|
402
|
+
? 'protocol'
|
|
403
|
+
: 'unknown';
|
|
404
|
+
const defaultHint = healthcheckHint({
|
|
405
|
+
ok,
|
|
406
|
+
role: probeResult.bridge.role,
|
|
407
|
+
// FIX: the real configured port from bridgeHealth(), not a literal 37149.
|
|
408
|
+
port: probeResult.bridge.port,
|
|
409
|
+
hostLabel,
|
|
410
|
+
prefix,
|
|
411
|
+
probePath,
|
|
412
|
+
errorKind: error?.kind,
|
|
413
|
+
bridgeHint: error?.kind === 'bridge_down' ? bridgeHint : undefined,
|
|
414
|
+
});
|
|
381
415
|
const result = {
|
|
382
416
|
ok,
|
|
383
417
|
bridge: {
|
|
@@ -386,17 +420,8 @@ export function registerBridgeHealthcheckTool(args) {
|
|
|
386
420
|
},
|
|
387
421
|
probe,
|
|
388
422
|
...(error ? { error } : {}),
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
role: probeResult.bridge.role,
|
|
392
|
-
// FIX: the real configured port from bridgeHealth(), not a literal 37149.
|
|
393
|
-
port: probeResult.bridge.port,
|
|
394
|
-
hostLabel,
|
|
395
|
-
prefix,
|
|
396
|
-
probePath,
|
|
397
|
-
errorKind: error?.kind,
|
|
398
|
-
bridgeHint: error?.kind === 'bridge_down' ? bridgeHint : undefined,
|
|
399
|
-
}),
|
|
423
|
+
// Precedence: classifyThrown's hint > per-arm override > default ladder.
|
|
424
|
+
hint: customHint ?? hints?.[arm] ?? defaultHint,
|
|
400
425
|
};
|
|
401
426
|
return {
|
|
402
427
|
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|