@ggui-ai/mcp-server 0.1.0-rc.3 → 0.2.0-alpha.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.
- package/README.md +1 -1
- package/dist/build-mcp.d.ts +8 -8
- package/dist/build-mcp.d.ts.map +1 -1
- package/dist/build-mcp.js +53 -12
- package/dist/console-auth.d.ts +7 -7
- package/dist/console-auth.d.ts.map +1 -1
- package/dist/console-auth.js +4 -4
- package/dist/console-cache.d.ts +2 -2
- package/dist/console-cache.d.ts.map +1 -1
- package/dist/console-cache.js +10 -10
- package/dist/console-headers.d.ts +2 -2
- package/dist/console-headers.js +2 -2
- package/dist/console-payloads.d.ts +3 -3
- package/dist/console-payloads.d.ts.map +1 -1
- package/dist/console-payloads.js +10 -10
- package/dist/console-timeline.d.ts +12 -30
- package/dist/console-timeline.d.ts.map +1 -1
- package/dist/console-timeline.js +44 -45
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/instructions-presets.d.ts +1 -1
- package/dist/instructions-presets.d.ts.map +1 -1
- package/dist/instructions-presets.js +40 -22
- package/dist/llm-backed-negotiator.d.ts +6 -6
- package/dist/llm-backed-negotiator.d.ts.map +1 -1
- package/dist/llm-backed-negotiator.js +92 -91
- package/dist/mcp-apps-inbound.d.ts +3 -3
- package/dist/mcp-apps-inbound.d.ts.map +1 -1
- package/dist/mcp-apps-inbound.js +28 -23
- package/dist/mcp-apps-outbound.d.ts +136 -121
- package/dist/mcp-apps-outbound.d.ts.map +1 -1
- package/dist/mcp-apps-outbound.js +384 -414
- package/dist/mcp-mounts.d.ts +21 -20
- package/dist/mcp-mounts.d.ts.map +1 -1
- package/dist/mcp-mounts.js +25 -29
- package/dist/{session-channel.d.ts → render-channel.d.ts} +145 -102
- package/dist/render-channel.d.ts.map +1 -0
- package/dist/{session-channel.js → render-channel.js} +481 -462
- package/dist/schema-compat.d.ts +11 -11
- package/dist/schema-compat.d.ts.map +1 -1
- package/dist/schema-compat.js +6 -6
- package/dist/server.d.ts +224 -219
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1498 -1963
- package/dist/storage.d.ts +7 -7
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +12 -12
- package/package.json +12 -11
- package/dist/render-gate.d.ts +0 -87
- package/dist/render-gate.d.ts.map +0 -1
- package/dist/render-gate.js +0 -77
- package/dist/render-rate-limit.d.ts +0 -59
- package/dist/render-rate-limit.d.ts.map +0 -1
- package/dist/render-rate-limit.js +0 -73
- package/dist/render-signing.d.ts +0 -98
- package/dist/render-signing.d.ts.map +0 -1
- package/dist/render-signing.js +0 -113
- package/dist/session-channel.d.ts.map +0 -1
package/dist/render-signing.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HMAC-signed render URL helpers (capability-URL hardening).
|
|
3
|
-
*
|
|
4
|
-
* The shortCode IS the credential under the capability-URL model.
|
|
5
|
-
* Signed render URLs add three properties on top of the base model
|
|
6
|
-
* (entropy + revoke + parity gate):
|
|
7
|
-
*
|
|
8
|
-
* 1. **Time-bound.** Each minted URL carries `?exp=<unix>`. Past
|
|
9
|
-
* that timestamp, the gate refuses even if the binding still
|
|
10
|
-
* exists. A leaked URL stops working without operator action.
|
|
11
|
-
* 2. **Tamper-evident.** Each minted URL carries `?sig=<hmac>` over
|
|
12
|
-
* `(shortCode, exp)`. Changing either invalidates the sig.
|
|
13
|
-
* Attackers who learn ONE valid shortCode can't generate URLs
|
|
14
|
-
* for shortCodes they're guessing.
|
|
15
|
-
* 3. **Nuclear revoke (operational).** Rotating the signing secret
|
|
16
|
-
* invalidates every outstanding URL across the whole server in
|
|
17
|
-
* one move. Useful for incident response.
|
|
18
|
-
*
|
|
19
|
-
* **Threat model — what this is NOT.** The signature does not bind
|
|
20
|
-
* the URL to a user, IP, or session. Anyone with the URL still has
|
|
21
|
-
* full access until it expires. That's the Google-Docs-share-link
|
|
22
|
-
* model. It's the only viable model when the URL must be embeddable
|
|
23
|
-
* in cross-origin iframes (claude.ai), which can't attach auth
|
|
24
|
-
* headers — see plan audit dated 2026-05-15.
|
|
25
|
-
*
|
|
26
|
-
* **Key lifecycle.** Operators set `--render-signing-secret <hex>` to
|
|
27
|
-
* pin a stable key (URLs survive restarts; rotation is opt-in). When
|
|
28
|
-
* omitted, the secret is auto-generated at boot — restart = every
|
|
29
|
-
* outstanding URL dies. Document both behaviors so operators choose
|
|
30
|
-
* deliberately.
|
|
31
|
-
*
|
|
32
|
-
* **Opt-out.** `--no-render-signing` (operator boots without a signer)
|
|
33
|
-
* disables the layer entirely. The gate skips the verify step and
|
|
34
|
-
* behavior reverts to plain (unsigned) capability URLs. Useful for
|
|
35
|
-
* legacy hosts that strip query strings or tooling that pre-records
|
|
36
|
-
* URLs.
|
|
37
|
-
*/
|
|
38
|
-
import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
39
|
-
/** Default TTL when the operator doesn't override. 24h matches the
|
|
40
|
-
* cloud pod's ShortCode row TTL — long enough for a back-to-the-tab
|
|
41
|
-
* user pattern, short enough that a leaked URL doesn't outlive a
|
|
42
|
-
* reasonable incident-response window. */
|
|
43
|
-
const DEFAULT_TTL_SECONDS = 24 * 60 * 60;
|
|
44
|
-
/**
|
|
45
|
-
* Build a {@link RenderSigner}. Memoize the result on the server-boot
|
|
46
|
-
* scope; the secret rotates only when the operator restarts (or sets
|
|
47
|
-
* a new explicit `--render-signing-secret`).
|
|
48
|
-
*/
|
|
49
|
-
export function createRenderSigner(input = {}) {
|
|
50
|
-
const secret = input.secret !== undefined && input.secret.length > 0
|
|
51
|
-
? input.secret
|
|
52
|
-
: randomBytes(32).toString('hex');
|
|
53
|
-
const ttl = input.ttlSeconds !== undefined && input.ttlSeconds > 0
|
|
54
|
-
? Math.floor(input.ttlSeconds)
|
|
55
|
-
: DEFAULT_TTL_SECONDS;
|
|
56
|
-
const now = input.now ?? (() => Date.now());
|
|
57
|
-
const secretBuffer = Buffer.from(secret, 'utf8');
|
|
58
|
-
function computeSig(shortCode, exp) {
|
|
59
|
-
// HMAC-SHA256 over `<shortCode>.<exp>`. Fixed separator + numeric
|
|
60
|
-
// exp keeps the input unambiguous (no length-extension or
|
|
61
|
-
// collision risk via overloaded encoding). Hex output stays
|
|
62
|
-
// URL-safe without percent-encoding.
|
|
63
|
-
return createHmac('sha256', secretBuffer)
|
|
64
|
-
.update(`${shortCode}.${exp}`)
|
|
65
|
-
.digest('hex');
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
sign(shortCode, expSecondsOverride) {
|
|
69
|
-
const ttlForCall = expSecondsOverride !== undefined && expSecondsOverride > 0
|
|
70
|
-
? Math.floor(expSecondsOverride)
|
|
71
|
-
: ttl;
|
|
72
|
-
const exp = Math.floor(now() / 1000) + ttlForCall;
|
|
73
|
-
return { sig: computeSig(shortCode, exp), exp };
|
|
74
|
-
},
|
|
75
|
-
verify({ shortCode, sig, exp }) {
|
|
76
|
-
if (typeof sig !== 'string' ||
|
|
77
|
-
typeof exp !== 'string' ||
|
|
78
|
-
sig.length === 0 ||
|
|
79
|
-
exp.length === 0) {
|
|
80
|
-
return { ok: false, code: 'malformed' };
|
|
81
|
-
}
|
|
82
|
-
const expNum = Number.parseInt(exp, 10);
|
|
83
|
-
if (!Number.isFinite(expNum) || expNum <= 0) {
|
|
84
|
-
return { ok: false, code: 'malformed' };
|
|
85
|
-
}
|
|
86
|
-
// Expired? Check BEFORE the HMAC compare. Expiry is a cheap
|
|
87
|
-
// numeric compare; bailing here on stale URLs avoids the more
|
|
88
|
-
// expensive constant-time sig compare on every drive-by stale
|
|
89
|
-
// hit. Information-leak concern: an attacker can probe `exp`
|
|
90
|
-
// independently of sig — but `exp` is already in the URL and
|
|
91
|
-
// not secret.
|
|
92
|
-
const nowSeconds = Math.floor(now() / 1000);
|
|
93
|
-
if (expNum < nowSeconds) {
|
|
94
|
-
return { ok: false, code: 'expired' };
|
|
95
|
-
}
|
|
96
|
-
const expected = computeSig(shortCode, expNum);
|
|
97
|
-
// Constant-time compare. Buffer length mismatch → fail without
|
|
98
|
-
// exposing length information via `timingSafeEqual` (which
|
|
99
|
-
// throws on length mismatch).
|
|
100
|
-
const a = Buffer.from(sig, 'hex');
|
|
101
|
-
const b = Buffer.from(expected, 'hex');
|
|
102
|
-
if (a.length !== b.length || a.length === 0) {
|
|
103
|
-
return { ok: false, code: 'invalid_signature' };
|
|
104
|
-
}
|
|
105
|
-
return timingSafeEqual(a, b)
|
|
106
|
-
? { ok: true }
|
|
107
|
-
: { ok: false, code: 'invalid_signature' };
|
|
108
|
-
},
|
|
109
|
-
toQuerySuffix({ sig, exp }) {
|
|
110
|
-
return `sig=${sig}&exp=${exp}`;
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-channel.d.ts","sourceRoot":"","sources":["../src/session-channel.ts"],"names":[],"mappings":"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"}
|