@chrischall/mcp-utils 0.19.2 → 0.19.3
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.
|
@@ -57,14 +57,34 @@ export interface RegisterCredentialHealthcheckToolArgs {
|
|
|
57
57
|
probePath?: string;
|
|
58
58
|
/**
|
|
59
59
|
* Resolve the credential the way the real tools do — same cache, same
|
|
60
|
-
* fallback order — so a passing healthcheck means real tools work.
|
|
61
|
-
*
|
|
62
|
-
*
|
|
60
|
+
* fallback order — so a passing healthcheck means real tools work.
|
|
61
|
+
*
|
|
62
|
+
* Throwing reports the throw's message and `resolved: false`. The ARM is
|
|
63
|
+
* `no_credential` by default — a resolver that cannot produce one has
|
|
64
|
+
* answered the question — but {@link
|
|
65
|
+
* RegisterCredentialHealthcheckToolArgs.classifyThrown} is consulted first,
|
|
66
|
+
* so a resolver that failed for some other reason (a bridge that is down, a
|
|
67
|
+
* rejected password) can say so instead of being told to set variables that
|
|
68
|
+
* are already set.
|
|
63
69
|
*/
|
|
64
70
|
resolveCredential: () => Promise<CredentialState>;
|
|
65
71
|
/** One authenticated round-trip. Only called when a credential resolved. */
|
|
66
72
|
probeFn: () => Promise<unknown>;
|
|
67
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Classify a thrown error into an arm, and optionally override the hint and
|
|
75
|
+
* carry structured detail. Consulted for a `probeFn` failure AND for a
|
|
76
|
+
* `resolveCredential` failure.
|
|
77
|
+
*
|
|
78
|
+
* The resolver case is the one worth knowing about: a resolver fails for
|
|
79
|
+
* reasons that are not "no credential" — a browser bridge that is down, an
|
|
80
|
+
* upstream that rejected a password, a store that will not decrypt — and
|
|
81
|
+
* without a classification all of those answer with the `no_credential`
|
|
82
|
+
* arm's advice, which tells someone to set variables that are already set.
|
|
83
|
+
* Returning `undefined` (or omitting this) keeps that fallback.
|
|
84
|
+
*
|
|
85
|
+
* A classification never changes `credential.resolved`: nothing resolved
|
|
86
|
+
* either way, and the classification explains why.
|
|
87
|
+
*/
|
|
68
88
|
classifyThrown?: (err: unknown) => {
|
|
69
89
|
kind: string;
|
|
70
90
|
hint?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/healthcheck/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAChC,IAAI,GACJ,eAAe,GACf,qBAAqB,GACrB,SAAS,GACT,MAAM,GACN,WAAW,GACX,SAAS,CAAC;AAEd,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qCAAqC;IACpD;;;;;;OAMG;IACH,MAAM,EAAE,SAAS,CAAC;IAClB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/healthcheck/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAChC,IAAI,GACJ,eAAe,GACf,qBAAqB,GACrB,SAAS,GACT,MAAM,GACN,WAAW,GACX,SAAS,CAAC;AAEd,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qCAAqC;IACpD;;;;;;OAMG;IACH,MAAM,EAAE,SAAS,CAAC;IAClB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAClD,4EAA4E;IAC5E,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,CACf,GAAG,EAAE,OAAO,KACT;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC;IACnF,8BAA8B;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC3F,KAAK,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC5E,IAAI,EAAE,MAAM,CAAC;CACd;AAiDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,qCAAqC,GAC1C,IAAI,CAkJN"}
|
|
@@ -7,6 +7,19 @@ function statusOf(err) {
|
|
|
7
7
|
err.statusCode;
|
|
8
8
|
return typeof s === 'number' ? s : undefined;
|
|
9
9
|
}
|
|
10
|
+
const CREDENTIAL_ARMS = new Set([
|
|
11
|
+
'ok',
|
|
12
|
+
'no_credential',
|
|
13
|
+
'credential_rejected',
|
|
14
|
+
'timeout',
|
|
15
|
+
'http',
|
|
16
|
+
'transport',
|
|
17
|
+
'unknown',
|
|
18
|
+
]);
|
|
19
|
+
/** True for a kind this module has copy for. A consumer may invent others. */
|
|
20
|
+
function isArm(kind) {
|
|
21
|
+
return kind !== undefined && CREDENTIAL_ARMS.has(kind);
|
|
22
|
+
}
|
|
10
23
|
function credentialHint(arm, prefix, hostLabel, source) {
|
|
11
24
|
switch (arm) {
|
|
12
25
|
case 'ok':
|
|
@@ -64,13 +77,41 @@ export function registerCredentialHealthcheckTool(args) {
|
|
|
64
77
|
state = await resolveCredential();
|
|
65
78
|
}
|
|
66
79
|
catch (e) {
|
|
80
|
+
// A resolver can fail for reasons that are NOT "no credential": a
|
|
81
|
+
// browser bridge that is down, an upstream that rejected a password,
|
|
82
|
+
// a store that will not decrypt. Flattening those into
|
|
83
|
+
// `no_credential` hands out that arm's advice — set the variables —
|
|
84
|
+
// to someone whose variables are already set. So the consumer's
|
|
85
|
+
// classifier is consulted here as it already is for a probe failure;
|
|
86
|
+
// declining it (or not supplying one) keeps the old behaviour exactly.
|
|
87
|
+
const classified = classifyThrown?.(e);
|
|
67
88
|
const result = {
|
|
68
89
|
ok: false,
|
|
90
|
+
// Still false, and still no source: a classification explains WHY
|
|
91
|
+
// nothing resolved, it does not invent a credential that did.
|
|
69
92
|
credential: { source: null, resolved: false },
|
|
70
93
|
// No `url`: nothing was probed, and naming one implies it was tried.
|
|
71
94
|
probe: { elapsed_ms: 0 },
|
|
72
|
-
error: {
|
|
73
|
-
|
|
95
|
+
error: {
|
|
96
|
+
kind: classified?.kind ?? 'no_credential',
|
|
97
|
+
message: truncateErrorMessage(messageOf(e)),
|
|
98
|
+
...(classified?.detail !== undefined ? { detail: classified.detail } : {}),
|
|
99
|
+
},
|
|
100
|
+
// The hint must follow the KIND beside it. Falling back to
|
|
101
|
+
// `no_credential`'s copy under a classified kind would state a cause
|
|
102
|
+
// the kind contradicts — the same disagreement this path exists to
|
|
103
|
+
// remove. So: an inline hint wins; else the classified arm's own
|
|
104
|
+
// copy (consumer override first); else, for a kind this module has
|
|
105
|
+
// no copy for, the neutral `unknown` text rather than one that
|
|
106
|
+
// asserts a cause; else the unclassified `no_credential` default.
|
|
107
|
+
hint: classified?.hint ??
|
|
108
|
+
(isArm(classified?.kind)
|
|
109
|
+
? (hints?.[classified.kind] ??
|
|
110
|
+
credentialHint(classified.kind, prefix, hostLabel, null))
|
|
111
|
+
: classified !== undefined
|
|
112
|
+
? credentialHint('unknown', prefix, hostLabel, null)
|
|
113
|
+
: (hints?.no_credential ??
|
|
114
|
+
credentialHint('no_credential', prefix, hostLabel, null))),
|
|
74
115
|
};
|
|
75
116
|
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
76
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/healthcheck/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/healthcheck/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chrischall/mcp-utils",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"description": "Shared scaffolding for the chrischall MCP fleet — server bootstrap, tool-result formatting, helpful errors, hardened env/config, a bearer API-client kit, zod atoms, session registries, a fetchproxy transport adapter, auth resolver skeletons, an in-memory test harness, and opt-in HTML helpers. The generic MCP glue hoisted out of ~19 sibling servers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|