@mcp-index/sdk 0.4.0 → 0.6.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/CHANGELOG.md +30 -0
- package/README.md +31 -0
- package/dist/src/driftQuery.d.ts +51 -0
- package/dist/src/driftQuery.d.ts.map +1 -0
- package/dist/src/driftQuery.js +122 -0
- package/dist/src/driftQuery.js.map +1 -0
- package/dist/src/driftTelemetry.d.ts +89 -0
- package/dist/src/driftTelemetry.d.ts.map +1 -0
- package/dist/src/driftTelemetry.js +262 -0
- package/dist/src/driftTelemetry.js.map +1 -0
- package/dist/src/gate.d.ts.map +1 -1
- package/dist/src/gate.js +21 -3
- package/dist/src/gate.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/preflight.d.ts +10 -1
- package/dist/src/preflight.d.ts.map +1 -1
- package/dist/src/preflight.js +0 -0
- package/dist/src/preflight.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,36 @@
|
|
|
3
3
|
All notable changes to the TypeScript SDK. Versioning is semver (0.x: minor =
|
|
4
4
|
additive feature, patch = fix). Backward-compatible additions only in 0.2.0.
|
|
5
5
|
|
|
6
|
+
## [Unreleased]
|
|
7
|
+
|
|
8
|
+
Staged for the next publish — `npm publish` packs the current `README.md`, so these
|
|
9
|
+
ride out automatically with the next version bump (no ad-hoc republish needed).
|
|
10
|
+
|
|
11
|
+
## 0.6.0 — 2026-06-09
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **Fleet drift query (M3, "warns you on call 1").** On first pin the gate fire-and-forgets a
|
|
15
|
+
query to the public fleet; if a tool's contract has CORROBORATED drift for others (the central
|
|
16
|
+
crawl saw it, or >=2 installs did), the verdict carries a `fleetAdvisory` so you're warned
|
|
17
|
+
*before* the tool drifts on you. Opt-in (same `MCPINDEX_DRIFT_TELEMETRY` gate; the queried
|
|
18
|
+
fingerprint is the one already emitted), fail-open, AD-6-safe (never moves PROCEED/HOLD;
|
|
19
|
+
redirects hard-off). Exported: `driftQuery`, `FleetAdvisory`; surfaced by `renderVerdict`.
|
|
20
|
+
|
|
21
|
+
## 0.5.0 — 2026-06-09
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- **Drift telemetry (M1, opt-in, OFF by default).** On a tool pin or a contract drift the
|
|
25
|
+
gate can emit one one-way signal — salted (HMAC) fingerprints of the server/tool id, the
|
|
26
|
+
contract hashes, the change type, a safety flag, an hour-rounded time, and a random install
|
|
27
|
+
id. Never a schema, argument, description, URL, or server/tool name. Enable with
|
|
28
|
+
`MCPINDEX_DRIFT_TELEMETRY=detection`; fail-open (never blocks or changes a tool call). The
|
|
29
|
+
consent string is exported as `DRIFT_TELEMETRY_NOTICE`.
|
|
30
|
+
|
|
31
|
+
### Docs
|
|
32
|
+
- README "What it does" now documents the default-on blast-radius grade (Tier-0a action
|
|
33
|
+
classification) shipped in 0.4.0, with the `MCPINDEX_ACTION_CLASSIFICATION_ENABLED=0`
|
|
34
|
+
opt-out. (0.4.0 published before the README caught up.)
|
|
35
|
+
|
|
6
36
|
## 0.4.0 — 2026-06-08
|
|
7
37
|
|
|
8
38
|
### Added
|
package/README.md
CHANGED
|
@@ -36,6 +36,11 @@ const guarded = wrap(session); // pins each tool's contract on first use (TOFU
|
|
|
36
36
|
on a benign change (no false alarm).
|
|
37
37
|
- Postures: `Monitor` (notify + proceed) / `Guard` (default; hold dangerous) /
|
|
38
38
|
`Strict` (hold any drift).
|
|
39
|
+
- Grades each call's **blast radius** (Tier-0a action classification) on the verdict:
|
|
40
|
+
action type (read / write / delete / send / …), reversibility, egress, and a static
|
|
41
|
+
autonomy ceiling, computed locally from the live contract. **Advisory** — it rides
|
|
42
|
+
alongside the decision and never moves HOLD/PROCEED. On by default; opt out with
|
|
43
|
+
`MCPINDEX_ACTION_CLASSIFICATION_ENABLED=0`.
|
|
39
44
|
|
|
40
45
|
## What it is NOT
|
|
41
46
|
|
|
@@ -43,6 +48,32 @@ The verdict is a **contract-diff, not a safety oracle** — it tells you the con
|
|
|
43
48
|
*changed* versus your pin, not that the new contract is safe. It does not "block attacks"
|
|
44
49
|
or "guarantee safe." You decide what a HOLD means for your agent.
|
|
45
50
|
|
|
51
|
+
## Drift telemetry (opt-in, OFF by default)
|
|
52
|
+
|
|
53
|
+
The SDK can report **that** a tool's contract drifted — so mcpindex can track drift on servers
|
|
54
|
+
it can't crawl itself (private / auth-gated). It is **off by default and sends nothing** unless
|
|
55
|
+
you turn it on:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
export MCPINDEX_DRIFT_TELEMETRY=detection # off (default) | detection | contribute
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
When enabled, each tool you pin and each contract drift sends **one one-way signal**:
|
|
62
|
+
|
|
63
|
+
- **What it sends:** salted (HMAC) fingerprints of the server/tool id, the contract hashes, the
|
|
64
|
+
change type (the fixed ChangeKind vocabulary), a safety flag, an **hour-rounded** timestamp,
|
|
65
|
+
and a random install id (a token that links one machine's signals so distinct installs can be
|
|
66
|
+
counted — not derived from you).
|
|
67
|
+
- **What it NEVER sends:** tool schemas, arguments, descriptions, URLs, server/tool **names**, or
|
|
68
|
+
any of your data. The payload has no free-text field by construction, and the ingest rejects
|
|
69
|
+
anything that isn't the closed shape.
|
|
70
|
+
- **Fail-open:** telemetry never blocks, slows, or changes a tool call. Losing a signal is always
|
|
71
|
+
preferred to perturbing the gate.
|
|
72
|
+
|
|
73
|
+
`detection` enables the closed signal above; `contribute` is reserved for a future, separately
|
|
74
|
+
opt-in richer tier (it behaves identically today). The full notice is exported as
|
|
75
|
+
`DRIFT_TELEMETRY_NOTICE`. Unset the variable any time to stop.
|
|
76
|
+
|
|
46
77
|
## License
|
|
47
78
|
|
|
48
79
|
PolyForm Noncommercial 1.0.0 — © Bhartis LLC. Free for noncommercial use; commercial use
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fleet drift query (M3, SDK side) — the "warns you on call 1" client.
|
|
3
|
+
*
|
|
4
|
+
* On the FIRST pin of a tool (`observe`, i.e. list_tools), fire-and-forget a GET to the public
|
|
5
|
+
* `/api/v1/drift/any?fp=<tool_fp>` asking whether the fleet has CORROBORATED drift for this tool
|
|
6
|
+
* (the central crawl saw a contract/safety drift, or >=2 installs did). Cache the answer; the
|
|
7
|
+
* gate reads it at `evaluate` time and attaches it as an ADVISORY on the verdict. Because pins
|
|
8
|
+
* happen at session start and calls come later, the cache is warm by the first call — so a user
|
|
9
|
+
* is warned about a tool that drifted for OTHERS before they're ever burned themselves.
|
|
10
|
+
*
|
|
11
|
+
* Discipline (mirrors driftTelemetry):
|
|
12
|
+
* - Opt-in: gated on the SAME `MCPINDEX_DRIFT_TELEMETRY` switch. The queried `tool_fp` is the
|
|
13
|
+
* exact salted fingerprint the SDK already emits under telemetry-on, so querying adds no new
|
|
14
|
+
* exposure for an opted-in user; an opted-OUT user sends nothing (no fleet egress either).
|
|
15
|
+
* - Fail-OPEN + never blocks: the query is async/off-thread; the gate never awaits it. A miss
|
|
16
|
+
* or error caches nothing (retried next session). `drifted:null` ("unknown") is never a warn.
|
|
17
|
+
* - AD-6-safe: the advisory rides ALONGSIDE the decision and never moves PROCEED/HOLD. It is a
|
|
18
|
+
* contract-diff observation ("this tool's contract drifted for the fleet"), not a safety claim.
|
|
19
|
+
*/
|
|
20
|
+
/** The advisory the gate attaches to a verdict when the fleet has corroborated drift. */
|
|
21
|
+
export interface FleetAdvisory {
|
|
22
|
+
readonly drifted: true;
|
|
23
|
+
readonly sources: number;
|
|
24
|
+
readonly safetyRelevant: boolean;
|
|
25
|
+
}
|
|
26
|
+
interface AnyResponse {
|
|
27
|
+
drifted: boolean | null;
|
|
28
|
+
sources?: number;
|
|
29
|
+
safety_relevant?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export type FleetTransport = (fp: string) => Promise<AnyResponse | null>;
|
|
32
|
+
/** Process-wide singleton. The Gate calls prefetch (on pin) + lookup (on evaluate). */
|
|
33
|
+
declare class DriftQuery {
|
|
34
|
+
private cache;
|
|
35
|
+
private inflight;
|
|
36
|
+
private transport;
|
|
37
|
+
/** Fire-and-forget: query the fleet for this tool's fp and cache the result. Never blocks,
|
|
38
|
+
* never throws. Gated on telemetry-enabled (same opt-in surface as the emitter). */
|
|
39
|
+
prefetch(serverId: string, toolName: string): void;
|
|
40
|
+
private fetch;
|
|
41
|
+
/** Sync cache read used by the gate at evaluate time. Returns the advisory ONLY for a
|
|
42
|
+
* corroborated-drifted tool; null otherwise (clean, unknown, or query disabled). */
|
|
43
|
+
lookup(serverId: string, toolName: string): FleetAdvisory | null;
|
|
44
|
+
_setTransport(t: FleetTransport): void;
|
|
45
|
+
_reset(): void;
|
|
46
|
+
/** Await all in-flight fetches (test only — production never awaits). */
|
|
47
|
+
_settle(): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export declare const driftQuery: DriftQuery;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=driftQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driftQuery.d.ts","sourceRoot":"","sources":["../../src/driftQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AAuBzE,uFAAuF;AACvF,cAAM,UAAU;IAEd,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAA2B;IAE5C;wFACoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;YAYpC,KAAK;IAsBnB;wFACoF;IACpF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAUhE,aAAa,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI;IAGtC,MAAM,IAAI,IAAI;IAId,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fleet drift query (M3, SDK side) — the "warns you on call 1" client.
|
|
3
|
+
*
|
|
4
|
+
* On the FIRST pin of a tool (`observe`, i.e. list_tools), fire-and-forget a GET to the public
|
|
5
|
+
* `/api/v1/drift/any?fp=<tool_fp>` asking whether the fleet has CORROBORATED drift for this tool
|
|
6
|
+
* (the central crawl saw a contract/safety drift, or >=2 installs did). Cache the answer; the
|
|
7
|
+
* gate reads it at `evaluate` time and attaches it as an ADVISORY on the verdict. Because pins
|
|
8
|
+
* happen at session start and calls come later, the cache is warm by the first call — so a user
|
|
9
|
+
* is warned about a tool that drifted for OTHERS before they're ever burned themselves.
|
|
10
|
+
*
|
|
11
|
+
* Discipline (mirrors driftTelemetry):
|
|
12
|
+
* - Opt-in: gated on the SAME `MCPINDEX_DRIFT_TELEMETRY` switch. The queried `tool_fp` is the
|
|
13
|
+
* exact salted fingerprint the SDK already emits under telemetry-on, so querying adds no new
|
|
14
|
+
* exposure for an opted-in user; an opted-OUT user sends nothing (no fleet egress either).
|
|
15
|
+
* - Fail-OPEN + never blocks: the query is async/off-thread; the gate never awaits it. A miss
|
|
16
|
+
* or error caches nothing (retried next session). `drifted:null` ("unknown") is never a warn.
|
|
17
|
+
* - AD-6-safe: the advisory rides ALONGSIDE the decision and never moves PROCEED/HOLD. It is a
|
|
18
|
+
* contract-diff observation ("this tool's contract drifted for the fleet"), not a safety claim.
|
|
19
|
+
*/
|
|
20
|
+
import { driftTelemetry, toolFp } from "./driftTelemetry.js";
|
|
21
|
+
const QUERY_URL = "https://mcpindex.ai/api/v1/drift/any";
|
|
22
|
+
const QUERY_TIMEOUT_MS = 4_000;
|
|
23
|
+
const MAX_CACHE = 4_096; // bound the per-process cache
|
|
24
|
+
async function httpGet(fp) {
|
|
25
|
+
const ctl = new AbortController();
|
|
26
|
+
const t = setTimeout(() => ctl.abort(), QUERY_TIMEOUT_MS);
|
|
27
|
+
try {
|
|
28
|
+
const res = await fetch(`${QUERY_URL}?fp=${fp}`, {
|
|
29
|
+
method: "GET",
|
|
30
|
+
headers: { "user-agent": "mcpindex-sdk" },
|
|
31
|
+
signal: ctl.signal,
|
|
32
|
+
// Hard-off redirects: a 3xx off mcpindex's origin must never forward the fp elsewhere.
|
|
33
|
+
// An opaque redirect has ok=false, so it's treated as a miss.
|
|
34
|
+
redirect: "manual",
|
|
35
|
+
});
|
|
36
|
+
if (!res.ok)
|
|
37
|
+
return null;
|
|
38
|
+
return (await res.json());
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
clearTimeout(t);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Process-wide singleton. The Gate calls prefetch (on pin) + lookup (on evaluate). */
|
|
48
|
+
class DriftQuery {
|
|
49
|
+
// fp -> advisory (drifted) | "clean" sentinel. Absent = not yet known / unknown.
|
|
50
|
+
cache = new Map();
|
|
51
|
+
inflight = new Set();
|
|
52
|
+
transport = httpGet;
|
|
53
|
+
/** Fire-and-forget: query the fleet for this tool's fp and cache the result. Never blocks,
|
|
54
|
+
* never throws. Gated on telemetry-enabled (same opt-in surface as the emitter). */
|
|
55
|
+
prefetch(serverId, toolName) {
|
|
56
|
+
try {
|
|
57
|
+
if (!driftTelemetry.enabled())
|
|
58
|
+
return;
|
|
59
|
+
const fp = toolFp(serverId, toolName);
|
|
60
|
+
if (this.cache.has(fp) || this.inflight.has(fp))
|
|
61
|
+
return;
|
|
62
|
+
this.inflight.add(fp);
|
|
63
|
+
void this.fetch(fp);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
/* fail-open */
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async fetch(fp) {
|
|
70
|
+
try {
|
|
71
|
+
const res = await this.transport(fp);
|
|
72
|
+
if (res && res.drifted === true) {
|
|
73
|
+
if (this.cache.size >= MAX_CACHE)
|
|
74
|
+
this.cache.clear();
|
|
75
|
+
this.cache.set(fp, {
|
|
76
|
+
drifted: true,
|
|
77
|
+
sources: typeof res.sources === "number" && res.sources >= 1 ? res.sources : 2,
|
|
78
|
+
safetyRelevant: res.safety_relevant === true,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else if (res && res.drifted === false) {
|
|
82
|
+
if (this.cache.size >= MAX_CACHE)
|
|
83
|
+
this.cache.clear();
|
|
84
|
+
this.cache.set(fp, "clean");
|
|
85
|
+
}
|
|
86
|
+
// drifted:null (unknown) => cache nothing; retry on a later session
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
/* fail-open */
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
this.inflight.delete(fp);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Sync cache read used by the gate at evaluate time. Returns the advisory ONLY for a
|
|
96
|
+
* corroborated-drifted tool; null otherwise (clean, unknown, or query disabled). */
|
|
97
|
+
lookup(serverId, toolName) {
|
|
98
|
+
try {
|
|
99
|
+
const hit = this.cache.get(toolFp(serverId, toolName));
|
|
100
|
+
return hit && hit !== "clean" ? hit : null;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ---- test seams ----
|
|
107
|
+
_setTransport(t) {
|
|
108
|
+
this.transport = t;
|
|
109
|
+
}
|
|
110
|
+
_reset() {
|
|
111
|
+
this.cache.clear();
|
|
112
|
+
this.inflight.clear();
|
|
113
|
+
}
|
|
114
|
+
/** Await all in-flight fetches (test only — production never awaits). */
|
|
115
|
+
async _settle() {
|
|
116
|
+
// the fetches resolve via microtasks; a couple of turns drains them in tests
|
|
117
|
+
await Promise.resolve();
|
|
118
|
+
await Promise.resolve();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export const driftQuery = new DriftQuery();
|
|
122
|
+
//# sourceMappingURL=driftQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driftQuery.js","sourceRoot":"","sources":["../../src/driftQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift telemetry — the detection-tier emit (M1 of the usage-log drift flywheel).
|
|
3
|
+
*
|
|
4
|
+
* Opt-in (`MCPINDEX_DRIFT_TELEMETRY` ∈ {off,detection,contribute}, default off),
|
|
5
|
+
* fire-and-forget, fail-OPEN. On a TOFU pin (coverage) or a classified drift (outcome),
|
|
6
|
+
* emit a CLOSED, privacy-by-construction signal: salted fingerprints + change enums +
|
|
7
|
+
* content hashes ONLY — NEVER a schema, an argument, a URL, or a plaintext server/tool
|
|
8
|
+
* name. Mirrors the `outcomes.ts` discipline: the only thing that ever leaves the device
|
|
9
|
+
* is a safe projection built by construction, not a redaction of a richer record.
|
|
10
|
+
*
|
|
11
|
+
* PRIVACY INVARIANT (enforced by construction + the leak test): the DriftSignal has no
|
|
12
|
+
* field that can hold a raw string from the tool's schema/args/description.
|
|
13
|
+
* - server_fp / tool_fp are HMAC-SHA256 fingerprints under a GLOBAL salt. Global salt =>
|
|
14
|
+
* a public server_id is de-anonymizable by anyone who can guess it (ACCEPTED — public
|
|
15
|
+
* servers are public); a private/internal server_id is unreversible (PROTECTED).
|
|
16
|
+
* - prev_hash / new_hash are the gate's own `definition_hash` — already a SHA over the
|
|
17
|
+
* canonical contract, public-by-design (it is what the verdict is keyed on).
|
|
18
|
+
* - change_kinds is the closed `ChangeKind` enum vocabulary; safety_relevant is a bool.
|
|
19
|
+
* - at_hour is coarsened to the hour (no sub-hour timing fingerprint).
|
|
20
|
+
*
|
|
21
|
+
* The emit path NEVER blocks on the network and NEVER throws: it appends to a bounded ring
|
|
22
|
+
* buffer and returns; a single unref'd timer flushes batches in the background. A flush
|
|
23
|
+
* failure DROPS the batch (no retry) — losing telemetry is always preferable to perturbing
|
|
24
|
+
* a tool call. Telemetry is a SINGLETON across every Gate (one buffer, one timer).
|
|
25
|
+
*
|
|
26
|
+
* Byte-identical fingerprints to the Python port `tooling/cse/drift_telemetry.py` — the
|
|
27
|
+
* cross-language parity test pins this.
|
|
28
|
+
*/
|
|
29
|
+
import type { Change } from "./schemaDiff.js";
|
|
30
|
+
export type DriftMode = "off" | "detection" | "contribute";
|
|
31
|
+
/** The canonical human-readable consent notice — the single source of truth for the README
|
|
32
|
+
* and the future first-run prompt (M5). Byte-identical to the Python `DRIFT_TELEMETRY_NOTICE`. */
|
|
33
|
+
export declare const DRIFT_TELEMETRY_NOTICE: string;
|
|
34
|
+
/** The CLOSED wire payload. Every field is a fingerprint, a content hash, a closed enum,
|
|
35
|
+
* a bool, an hour-stamp, or the opaque install id — never a raw tool string. */
|
|
36
|
+
export interface DriftSignal {
|
|
37
|
+
readonly v: 1;
|
|
38
|
+
readonly event: "pin" | "drift";
|
|
39
|
+
readonly server_fp: string;
|
|
40
|
+
readonly tool_fp: string;
|
|
41
|
+
readonly prev_hash: string | null;
|
|
42
|
+
readonly new_hash: string;
|
|
43
|
+
readonly change_kinds: string[] | null;
|
|
44
|
+
readonly safety_relevant: boolean;
|
|
45
|
+
readonly at_hour: string;
|
|
46
|
+
readonly sdk: string;
|
|
47
|
+
readonly install_id: string;
|
|
48
|
+
}
|
|
49
|
+
export type DriftTransport = (batch: DriftSignal[]) => Promise<void>;
|
|
50
|
+
/** HMAC-SHA256(GLOBAL_SALT, msg) hex, truncated to 16 bytes (32 hex chars). Byte-identical
|
|
51
|
+
* to the Python `_fingerprint`. */
|
|
52
|
+
export declare function fingerprint(msg: string): string;
|
|
53
|
+
export declare function serverFp(serverId: string): string;
|
|
54
|
+
export declare function toolFp(serverId: string, toolName: string): string;
|
|
55
|
+
/** Coarsen an ISO-8601 stamp to the hour: "2026-06-09T05:09:46.123Z" → "2026-06-09T05:00:00Z".
|
|
56
|
+
* Returns "" on any unexpected shape (never leaks sub-hour precision; never throws). Mirrors
|
|
57
|
+
* the Python `_at_hour`. */
|
|
58
|
+
export declare function atHour(nowIso: string): string;
|
|
59
|
+
/** Build the coverage (pin) signal. Pure — exported for the leak/parity tests. */
|
|
60
|
+
export declare function buildPinSignal(serverId: string, toolName: string, definitionHash: string, nowIso: string, installId: string): DriftSignal;
|
|
61
|
+
/** Build the outcome (drift) signal. Pure — exported for the leak/parity tests. The change
|
|
62
|
+
* details (path/detail strings, which CAN carry tool text) are DROPPED here by construction;
|
|
63
|
+
* only the closed `kind` enum and the `safetyRelevant` bool survive. */
|
|
64
|
+
export declare function buildDriftSignal(serverId: string, toolName: string, prevHash: string, newHash: string, changes: readonly Change[], nowIso: string, installId: string): DriftSignal;
|
|
65
|
+
/** The singleton emit engine. One per process; every Gate shares it. */
|
|
66
|
+
declare class DriftTelemetry {
|
|
67
|
+
private buffer;
|
|
68
|
+
private timer;
|
|
69
|
+
private flushing;
|
|
70
|
+
private mode;
|
|
71
|
+
private cachedInstallId;
|
|
72
|
+
private transport;
|
|
73
|
+
private resolveMode;
|
|
74
|
+
enabled(): boolean;
|
|
75
|
+
private installId;
|
|
76
|
+
private enqueue;
|
|
77
|
+
/** Drain the buffer and POST it. Best-effort: a transport failure drops the batch with no
|
|
78
|
+
* retry (fail-open). Never throws. */
|
|
79
|
+
flush(): Promise<void>;
|
|
80
|
+
recordPin(serverId: string, toolName: string, definitionHash: string, nowIso: string): void;
|
|
81
|
+
recordDrift(serverId: string, toolName: string, prevHash: string, newHash: string, changes: readonly Change[], nowIso: string): void;
|
|
82
|
+
_setTransport(t: DriftTransport): void;
|
|
83
|
+
_reset(): void;
|
|
84
|
+
_drainForTest(): DriftSignal[];
|
|
85
|
+
}
|
|
86
|
+
/** Process-wide singleton. The Gate calls `driftTelemetry.recordPin/recordDrift`. */
|
|
87
|
+
export declare const driftTelemetry: DriftTelemetry;
|
|
88
|
+
export {};
|
|
89
|
+
//# sourceMappingURL=driftTelemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driftTelemetry.d.ts","sourceRoot":"","sources":["../../src/driftTelemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drift telemetry — the detection-tier emit (M1 of the usage-log drift flywheel).
|
|
3
|
+
*
|
|
4
|
+
* Opt-in (`MCPINDEX_DRIFT_TELEMETRY` ∈ {off,detection,contribute}, default off),
|
|
5
|
+
* fire-and-forget, fail-OPEN. On a TOFU pin (coverage) or a classified drift (outcome),
|
|
6
|
+
* emit a CLOSED, privacy-by-construction signal: salted fingerprints + change enums +
|
|
7
|
+
* content hashes ONLY — NEVER a schema, an argument, a URL, or a plaintext server/tool
|
|
8
|
+
* name. Mirrors the `outcomes.ts` discipline: the only thing that ever leaves the device
|
|
9
|
+
* is a safe projection built by construction, not a redaction of a richer record.
|
|
10
|
+
*
|
|
11
|
+
* PRIVACY INVARIANT (enforced by construction + the leak test): the DriftSignal has no
|
|
12
|
+
* field that can hold a raw string from the tool's schema/args/description.
|
|
13
|
+
* - server_fp / tool_fp are HMAC-SHA256 fingerprints under a GLOBAL salt. Global salt =>
|
|
14
|
+
* a public server_id is de-anonymizable by anyone who can guess it (ACCEPTED — public
|
|
15
|
+
* servers are public); a private/internal server_id is unreversible (PROTECTED).
|
|
16
|
+
* - prev_hash / new_hash are the gate's own `definition_hash` — already a SHA over the
|
|
17
|
+
* canonical contract, public-by-design (it is what the verdict is keyed on).
|
|
18
|
+
* - change_kinds is the closed `ChangeKind` enum vocabulary; safety_relevant is a bool.
|
|
19
|
+
* - at_hour is coarsened to the hour (no sub-hour timing fingerprint).
|
|
20
|
+
*
|
|
21
|
+
* The emit path NEVER blocks on the network and NEVER throws: it appends to a bounded ring
|
|
22
|
+
* buffer and returns; a single unref'd timer flushes batches in the background. A flush
|
|
23
|
+
* failure DROPS the batch (no retry) — losing telemetry is always preferable to perturbing
|
|
24
|
+
* a tool call. Telemetry is a SINGLETON across every Gate (one buffer, one timer).
|
|
25
|
+
*
|
|
26
|
+
* Byte-identical fingerprints to the Python port `tooling/cse/drift_telemetry.py` — the
|
|
27
|
+
* cross-language parity test pins this.
|
|
28
|
+
*/
|
|
29
|
+
import { createHmac } from "node:crypto";
|
|
30
|
+
import { homedir } from "node:os";
|
|
31
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
32
|
+
import { join } from "node:path";
|
|
33
|
+
import { randomBytes } from "node:crypto";
|
|
34
|
+
const GLOBAL_SALT = "mcpindex-drift-v1";
|
|
35
|
+
const SEP = "\x1f";
|
|
36
|
+
const INGEST_URL = "https://mcpindex.ai/api/v1/drift";
|
|
37
|
+
const FLUSH_THRESHOLD = 16; // flush eagerly once the buffer reaches this depth
|
|
38
|
+
const FLUSH_INTERVAL_MS = 30_000; // …else the timer flushes a partial batch
|
|
39
|
+
const MAX_BUFFER = 256; // hard ring-buffer cap; oldest dropped on overflow
|
|
40
|
+
const POST_TIMEOUT_MS = 5_000;
|
|
41
|
+
const SDK_TAG = "ts";
|
|
42
|
+
const VALID_MODES = new Set(["off", "detection", "contribute"]);
|
|
43
|
+
/** The canonical human-readable consent notice — the single source of truth for the README
|
|
44
|
+
* and the future first-run prompt (M5). Byte-identical to the Python `DRIFT_TELEMETRY_NOTICE`. */
|
|
45
|
+
export const DRIFT_TELEMETRY_NOTICE = "mcpindex drift telemetry is OFF by default (zero egress). When you enable it " +
|
|
46
|
+
"(MCPINDEX_DRIFT_TELEMETRY=detection), each tool you pin and each contract drift sends one " +
|
|
47
|
+
"one-way signal: salted fingerprints of the server/tool id, the contract hashes, the change " +
|
|
48
|
+
"type (a fixed vocabulary), a safety flag, an hour-rounded time, and a random install id. It " +
|
|
49
|
+
"NEVER sends tool schemas, arguments, descriptions, URLs, server/tool names, or your data. " +
|
|
50
|
+
"The install id is a random token (not derived from you) that links one machine's signals so " +
|
|
51
|
+
"distinct installs can be counted. It exists to catch drift on servers we cannot reach " +
|
|
52
|
+
"ourselves. Unset the variable any time to stop.";
|
|
53
|
+
/** HMAC-SHA256(GLOBAL_SALT, msg) hex, truncated to 16 bytes (32 hex chars). Byte-identical
|
|
54
|
+
* to the Python `_fingerprint`. */
|
|
55
|
+
export function fingerprint(msg) {
|
|
56
|
+
return createHmac("sha256", GLOBAL_SALT).update(msg, "utf-8").digest("hex").slice(0, 32);
|
|
57
|
+
}
|
|
58
|
+
export function serverFp(serverId) {
|
|
59
|
+
return fingerprint(serverId);
|
|
60
|
+
}
|
|
61
|
+
export function toolFp(serverId, toolName) {
|
|
62
|
+
return fingerprint(serverId + SEP + toolName);
|
|
63
|
+
}
|
|
64
|
+
/** Coarsen an ISO-8601 stamp to the hour: "2026-06-09T05:09:46.123Z" → "2026-06-09T05:00:00Z".
|
|
65
|
+
* Returns "" on any unexpected shape (never leaks sub-hour precision; never throws). Mirrors
|
|
66
|
+
* the Python `_at_hour`. */
|
|
67
|
+
export function atHour(nowIso) {
|
|
68
|
+
const head = nowIso.slice(0, 13); // YYYY-MM-DDTHH
|
|
69
|
+
if (head.length === 13 && head[4] === "-" && head[7] === "-" && head[10] === "T") {
|
|
70
|
+
return head + ":00:00Z";
|
|
71
|
+
}
|
|
72
|
+
return "";
|
|
73
|
+
}
|
|
74
|
+
/** Build the coverage (pin) signal. Pure — exported for the leak/parity tests. */
|
|
75
|
+
export function buildPinSignal(serverId, toolName, definitionHash, nowIso, installId) {
|
|
76
|
+
return {
|
|
77
|
+
v: 1,
|
|
78
|
+
event: "pin",
|
|
79
|
+
server_fp: serverFp(serverId),
|
|
80
|
+
tool_fp: toolFp(serverId, toolName),
|
|
81
|
+
prev_hash: null,
|
|
82
|
+
new_hash: definitionHash,
|
|
83
|
+
change_kinds: null,
|
|
84
|
+
safety_relevant: false,
|
|
85
|
+
at_hour: atHour(nowIso),
|
|
86
|
+
sdk: SDK_TAG,
|
|
87
|
+
install_id: installId,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/** Build the outcome (drift) signal. Pure — exported for the leak/parity tests. The change
|
|
91
|
+
* details (path/detail strings, which CAN carry tool text) are DROPPED here by construction;
|
|
92
|
+
* only the closed `kind` enum and the `safetyRelevant` bool survive. */
|
|
93
|
+
export function buildDriftSignal(serverId, toolName, prevHash, newHash, changes, nowIso, installId) {
|
|
94
|
+
const kindsSeen = new Set();
|
|
95
|
+
let safety = false;
|
|
96
|
+
for (const c of changes) {
|
|
97
|
+
kindsSeen.add(String(c.kind));
|
|
98
|
+
if (c.safetyRelevant)
|
|
99
|
+
safety = true;
|
|
100
|
+
}
|
|
101
|
+
// Sort + dedupe: downstream uses only kind MEMBERSHIP (never order/multiplicity), so a
|
|
102
|
+
// sorted unique list is lossless for us AND denies a hostile server the attacker-chosen
|
|
103
|
+
// ordering/count of change_kinds as a covert-channel field. Deterministic across the
|
|
104
|
+
// TS/Python ports (ASCII lowercase+hyphen sort identically).
|
|
105
|
+
const kinds = [...kindsSeen].sort();
|
|
106
|
+
return {
|
|
107
|
+
v: 1,
|
|
108
|
+
event: "drift",
|
|
109
|
+
server_fp: serverFp(serverId),
|
|
110
|
+
tool_fp: toolFp(serverId, toolName),
|
|
111
|
+
prev_hash: prevHash,
|
|
112
|
+
new_hash: newHash,
|
|
113
|
+
change_kinds: kinds,
|
|
114
|
+
safety_relevant: safety,
|
|
115
|
+
at_hour: atHour(nowIso),
|
|
116
|
+
sdk: SDK_TAG,
|
|
117
|
+
install_id: installId,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Default transport: POST the batch to the fixed mcpindex ingest URL. The destination is a
|
|
121
|
+
* HARD-CODED constant (no attacker influence → no SSRF surface). Best-effort, bounded. */
|
|
122
|
+
async function httpPost(batch) {
|
|
123
|
+
const ctl = new AbortController();
|
|
124
|
+
const t = setTimeout(() => ctl.abort(), POST_TIMEOUT_MS);
|
|
125
|
+
try {
|
|
126
|
+
await fetch(INGEST_URL, {
|
|
127
|
+
method: "POST",
|
|
128
|
+
headers: { "content-type": "application/json", "user-agent": "mcpindex-sdk" },
|
|
129
|
+
body: JSON.stringify({ signals: batch }),
|
|
130
|
+
signal: ctl.signal,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
clearTimeout(t);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function readMode() {
|
|
138
|
+
const raw = (process.env.MCPINDEX_DRIFT_TELEMETRY ?? "off").trim().toLowerCase();
|
|
139
|
+
return (VALID_MODES.has(raw) ? raw : "off");
|
|
140
|
+
}
|
|
141
|
+
/** Read (or first-time create) the opaque, persistent install id at ~/.mcpindex/install_id.
|
|
142
|
+
* A random hex token — NOT derived from any host/user identifier — used only to count
|
|
143
|
+
* distinct installs server-side. Fail-open: any fs error → an ephemeral per-process id. */
|
|
144
|
+
function readOrCreateInstallId() {
|
|
145
|
+
try {
|
|
146
|
+
const dir = join(homedir(), ".mcpindex");
|
|
147
|
+
const file = join(dir, "install_id");
|
|
148
|
+
try {
|
|
149
|
+
const existing = readFileSync(file, "utf-8").trim();
|
|
150
|
+
if (existing)
|
|
151
|
+
return existing.slice(0, 32); // writer + ingest schema agree on exactly 32 hex
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
/* not yet created */
|
|
155
|
+
}
|
|
156
|
+
mkdirSync(dir, { recursive: true });
|
|
157
|
+
const id = randomBytes(16).toString("hex");
|
|
158
|
+
writeFileSync(file, id, { encoding: "utf-8", mode: 0o600 });
|
|
159
|
+
return id;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return randomBytes(16).toString("hex"); // ephemeral; never crash the host
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/** The singleton emit engine. One per process; every Gate shares it. */
|
|
166
|
+
class DriftTelemetry {
|
|
167
|
+
buffer = [];
|
|
168
|
+
timer = null;
|
|
169
|
+
flushing = false; // in-flight guard: serialize flushes, never fan out parallel POSTs
|
|
170
|
+
mode = null;
|
|
171
|
+
cachedInstallId = null;
|
|
172
|
+
transport = httpPost;
|
|
173
|
+
resolveMode() {
|
|
174
|
+
if (this.mode === null)
|
|
175
|
+
this.mode = readMode();
|
|
176
|
+
return this.mode;
|
|
177
|
+
}
|
|
178
|
+
enabled() {
|
|
179
|
+
return this.resolveMode() !== "off";
|
|
180
|
+
}
|
|
181
|
+
installId() {
|
|
182
|
+
if (this.cachedInstallId === null)
|
|
183
|
+
this.cachedInstallId = readOrCreateInstallId();
|
|
184
|
+
return this.cachedInstallId;
|
|
185
|
+
}
|
|
186
|
+
enqueue(sig) {
|
|
187
|
+
this.buffer.push(sig);
|
|
188
|
+
if (this.buffer.length > MAX_BUFFER)
|
|
189
|
+
this.buffer.shift(); // drop oldest, fail-open
|
|
190
|
+
if (this.timer === null) {
|
|
191
|
+
this.timer = setInterval(() => void this.flush(), FLUSH_INTERVAL_MS);
|
|
192
|
+
// Do not keep the host process alive for a telemetry timer.
|
|
193
|
+
this.timer.unref?.();
|
|
194
|
+
}
|
|
195
|
+
if (this.buffer.length >= FLUSH_THRESHOLD)
|
|
196
|
+
void this.flush();
|
|
197
|
+
}
|
|
198
|
+
/** Drain the buffer and POST it. Best-effort: a transport failure drops the batch with no
|
|
199
|
+
* retry (fail-open). Never throws. */
|
|
200
|
+
async flush() {
|
|
201
|
+
// In-flight guard: only one flush at a time. A threshold enqueue while a POST is pending
|
|
202
|
+
// does NOT spawn a parallel fetch (which under a flood would fan out unbounded sockets);
|
|
203
|
+
// the buffered signals ride the next flush. Ingest counters are commutative, so serializing
|
|
204
|
+
// costs nothing. Mirrors the Python single-daemon serialization.
|
|
205
|
+
if (this.flushing || this.buffer.length === 0)
|
|
206
|
+
return;
|
|
207
|
+
this.flushing = true;
|
|
208
|
+
const batch = this.buffer;
|
|
209
|
+
this.buffer = [];
|
|
210
|
+
try {
|
|
211
|
+
await this.transport(batch);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
/* drop the batch; never perturb the host */
|
|
215
|
+
}
|
|
216
|
+
finally {
|
|
217
|
+
this.flushing = false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
recordPin(serverId, toolName, definitionHash, nowIso) {
|
|
221
|
+
try {
|
|
222
|
+
if (!this.enabled())
|
|
223
|
+
return;
|
|
224
|
+
this.enqueue(buildPinSignal(serverId, toolName, definitionHash, nowIso, this.installId()));
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
/* fail-open: telemetry must never affect the gate */
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
recordDrift(serverId, toolName, prevHash, newHash, changes, nowIso) {
|
|
231
|
+
try {
|
|
232
|
+
if (!this.enabled())
|
|
233
|
+
return;
|
|
234
|
+
this.enqueue(buildDriftSignal(serverId, toolName, prevHash, newHash, changes, nowIso, this.installId()));
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
/* fail-open */
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// ---- test seams (underscore-prefixed; not part of the public SDK surface) ----
|
|
241
|
+
_setTransport(t) {
|
|
242
|
+
this.transport = t;
|
|
243
|
+
}
|
|
244
|
+
_reset() {
|
|
245
|
+
this.buffer = [];
|
|
246
|
+
this.flushing = false;
|
|
247
|
+
if (this.timer !== null) {
|
|
248
|
+
clearInterval(this.timer);
|
|
249
|
+
this.timer = null;
|
|
250
|
+
}
|
|
251
|
+
this.mode = null;
|
|
252
|
+
this.cachedInstallId = "test-install";
|
|
253
|
+
}
|
|
254
|
+
_drainForTest() {
|
|
255
|
+
const b = this.buffer;
|
|
256
|
+
this.buffer = [];
|
|
257
|
+
return b;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/** Process-wide singleton. The Gate calls `driftTelemetry.recordPin/recordDrift`. */
|
|
261
|
+
export const driftTelemetry = new DriftTelemetry();
|
|
262
|
+
//# sourceMappingURL=driftTelemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driftTelemetry.js","sourceRoot":"","sources":["../../src/driftTelemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/src/gate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,YAAY,EAIb,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAkB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAO/E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"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"}
|
package/dist/src/gate.js
CHANGED
|
@@ -14,6 +14,8 @@ import { scanSchemaHasMarker } from "./scan.js";
|
|
|
14
14
|
import { mdText } from "./render.js";
|
|
15
15
|
import { redactGreenWords } from "./provenance.js";
|
|
16
16
|
import { Operation } from "./errors.js";
|
|
17
|
+
import { driftTelemetry } from "./driftTelemetry.js";
|
|
18
|
+
import { driftQuery } from "./driftQuery.js";
|
|
17
19
|
// ----------------------------------------------------------- behavioral mandate
|
|
18
20
|
const DEFAULT_BEHAVIORAL_MANDATED_KINDS = new Set([
|
|
19
21
|
ChangeKind.OUTPUT_SCHEMA_CHANGED,
|
|
@@ -226,13 +228,21 @@ export class Gate {
|
|
|
226
228
|
/** TOFU-pin one observed tool if not already pinned. */
|
|
227
229
|
observe(name, defn) {
|
|
228
230
|
if (this.pin.get(this._serverId, name) === null) {
|
|
231
|
+
const definitionHash = hashTool(defn);
|
|
229
232
|
this.pin.put({
|
|
230
233
|
serverId: this._serverId,
|
|
231
234
|
toolName: name,
|
|
232
|
-
definitionHash
|
|
235
|
+
definitionHash,
|
|
233
236
|
pinnedAt: this.now(),
|
|
234
237
|
schema: defn,
|
|
235
238
|
});
|
|
239
|
+
// M1 drift telemetry — emit the COVERAGE (pin) signal once per first-seen tool.
|
|
240
|
+
// Opt-in, fail-open, off-path: recordPin never throws and never touches the network
|
|
241
|
+
// on this thread, so it cannot affect the pin or any later verdict.
|
|
242
|
+
driftTelemetry.recordPin(this._serverId, name, definitionHash, this.now());
|
|
243
|
+
// M3 fleet query — fire-and-forget ask the fleet whether THIS tool has corroborated
|
|
244
|
+
// drift (off-path; warms the cache before the first call so evaluate() can warn on call 1).
|
|
245
|
+
driftQuery.prefetch(this._serverId, name);
|
|
236
246
|
}
|
|
237
247
|
}
|
|
238
248
|
repinOne(name, observed) {
|
|
@@ -255,7 +265,11 @@ export class Gate {
|
|
|
255
265
|
evaluate(name, observed) {
|
|
256
266
|
const verdict = this.decideContract(name, observed);
|
|
257
267
|
const ac = classifyToolDef(name, observed);
|
|
258
|
-
|
|
268
|
+
const withAc = ac === null ? verdict : { ...verdict, actionClassification: ac };
|
|
269
|
+
// M3 fleet advisory — if the fleet has corroborated drift for this tool (prefetched at
|
|
270
|
+
// observe time), attach it. Sync cache read; AD-6-safe (never moves PROCEED/HOLD).
|
|
271
|
+
const adv = driftQuery.lookup(this._serverId, name);
|
|
272
|
+
return adv === null ? withAc : { ...withAc, fleetAdvisory: adv };
|
|
259
273
|
}
|
|
260
274
|
decideContract(name, observed) {
|
|
261
275
|
const pinned = this.pin.get(this._serverId, name);
|
|
@@ -283,7 +297,11 @@ export class Gate {
|
|
|
283
297
|
reason: "contract matches your pin",
|
|
284
298
|
});
|
|
285
299
|
}
|
|
286
|
-
|
|
300
|
+
// The canonical hash CHANGED — a real contract drift. Decide the verdict, then emit the
|
|
301
|
+
// M1 drift telemetry OUTCOME signal (off-path, fail-open: it can never move the verdict).
|
|
302
|
+
const verdict = this.validateDrift(name, pinned, observed);
|
|
303
|
+
driftTelemetry.recordDrift(this._serverId, name, pinned.definitionHash, liveHash, verdict.drift, this.now());
|
|
304
|
+
return verdict;
|
|
287
305
|
}
|
|
288
306
|
classifyDrift(pinned, observed) {
|
|
289
307
|
if (pinned.schema !== null) {
|
package/dist/src/gate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -25,5 +25,9 @@ export { mdText } from "./render.js";
|
|
|
25
25
|
export { VerdictScope, HonestFraming, GuardrailError, requireProvenance, surfaceProvenance, fromVerdict, isComplete, renderProvenance, assertNoGreenWords, } from "./provenance.js";
|
|
26
26
|
export type { Provenance, Subject, WhatFired, EvidenceField } from "./provenance.js";
|
|
27
27
|
export { ErrorStore, Operation, CLIENT_VERSION, ERROR_RECORD_KEYS } from "./errors.js";
|
|
28
|
+
export { DRIFT_TELEMETRY_NOTICE } from "./driftTelemetry.js";
|
|
29
|
+
export type { DriftMode } from "./driftTelemetry.js";
|
|
30
|
+
export { driftQuery } from "./driftQuery.js";
|
|
31
|
+
export type { FleetAdvisory } from "./driftQuery.js";
|
|
28
32
|
export { OutcomeStore, LocalStats, Action, OverrideReason, AGGREGATE_ROW_KEYS, verdictHash, } from "./outcomes.js";
|
|
29
33
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzE,YAAY,EACV,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAElG,OAAO,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC1F,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EACL,QAAQ,IAAI,cAAc,EAC1B,eAAe,EACf,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,aAAa,EACb,MAAM,EACN,SAAS,EACT,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzE,YAAY,EACV,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAElG,OAAO,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC1F,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EACL,QAAQ,IAAI,cAAc,EAC1B,eAAe,EACf,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,aAAa,EACb,MAAM,EACN,SAAS,EACT,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EACL,YAAY,EACZ,UAAU,EACV,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -18,5 +18,11 @@ export { scanSchemaHasMarker } from "./scan.js";
|
|
|
18
18
|
export { mdText } from "./render.js";
|
|
19
19
|
export { VerdictScope, HonestFraming, GuardrailError, requireProvenance, surfaceProvenance, fromVerdict, isComplete, renderProvenance, assertNoGreenWords, } from "./provenance.js";
|
|
20
20
|
export { ErrorStore, Operation, CLIENT_VERSION, ERROR_RECORD_KEYS } from "./errors.js";
|
|
21
|
+
// Opt-in drift telemetry — the consent notice is the only public surface; the emitter is wired
|
|
22
|
+
// internally by the gate. Default OFF; enable with MCPINDEX_DRIFT_TELEMETRY=detection.
|
|
23
|
+
export { DRIFT_TELEMETRY_NOTICE } from "./driftTelemetry.js";
|
|
24
|
+
// M3 fleet query — "warns you on call 1". The gate prefetches on pin + attaches the advisory
|
|
25
|
+
// to the verdict (`fleetAdvisory`); opt-in (same telemetry gate), fail-open, AD-6-safe.
|
|
26
|
+
export { driftQuery } from "./driftQuery.js";
|
|
21
27
|
export { OutcomeStore, LocalStats, Action, OverrideReason, AGGREGATE_ROW_KEYS, verdictHash, } from "./outcomes.js";
|
|
22
28
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAQzE,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1F,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGxE,OAAO,EACL,QAAQ,IAAI,cAAc,EAC1B,eAAe,EACf,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,aAAa,EACb,MAAM,EACN,SAAS,EACT,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEvF,OAAO,EACL,YAAY,EACZ,UAAU,EACV,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAQzE,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,IAAI,EACJ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG1F,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGxE,OAAO,EACL,QAAQ,IAAI,cAAc,EAC1B,eAAe,EACf,2BAA2B,EAC3B,UAAU,EACV,eAAe,EACf,aAAa,EACb,MAAM,EACN,SAAS,EACT,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEvF,+FAA+F;AAC/F,uFAAuF;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,6FAA6F;AAC7F,wFAAwF;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,eAAe,CAAC"}
|
package/dist/src/preflight.d.ts
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { hashTool } from "./canonical.js";
|
|
8
8
|
import type { Change } from "./schemaDiff.js";
|
|
9
|
+
import type { FleetAdvisory } from "./driftQuery.js";
|
|
9
10
|
export type ToolDef = Record<string, unknown>;
|
|
10
11
|
export declare enum Decision {
|
|
11
12
|
PROCEED = "PROCEED",
|
|
@@ -75,12 +76,20 @@ export interface PreflightVerdict {
|
|
|
75
76
|
* null when the live definition is unavailable or the flag is off. Advisory: it
|
|
76
77
|
* rides alongside the decision and never moves PROCEED/HOLD (AD-1). */
|
|
77
78
|
readonly actionClassification: ActionClassification | null;
|
|
79
|
+
/** Fleet drift advisory (M3) — set when the public fleet has CORROBORATED drift for this
|
|
80
|
+
* tool (the central crawl saw a contract/safety drift, or >=2 installs did). ADVISORY: it
|
|
81
|
+
* rides alongside the decision and NEVER moves PROCEED/HOLD (AD-6) — a contract-diff
|
|
82
|
+
* observation across the fleet, not a safety claim. null when the fleet query is off
|
|
83
|
+
* (opt-in), the tool is clean, or the answer is unknown. */
|
|
84
|
+
readonly fleetAdvisory: FleetAdvisory | null;
|
|
78
85
|
}
|
|
79
86
|
export declare function makeVerdict(v: Pick<PreflightVerdict, "serverId" | "toolName" | "decision" | "reason"> & Partial<PreflightVerdict>): PreflightVerdict;
|
|
80
87
|
export declare function isProceed(v: PreflightVerdict): boolean;
|
|
81
88
|
export declare function safetyRelevantDrift(v: PreflightVerdict): Change[];
|
|
82
89
|
/** A human one-liner, render-safe (attacker-derived ids/detail escaped). Honest
|
|
83
|
-
* voice: no safe/verified/clean/pass words. Port of `PreflightVerdict.render`.
|
|
90
|
+
* voice: no safe/verified/clean/pass words. Port of `PreflightVerdict.render`.
|
|
91
|
+
* Appends the M3 fleet advisory when present (AD-6-safe contract-diff note) — most
|
|
92
|
+
* valuable on a PROCEED that matches your pin but drifted for the fleet. */
|
|
84
93
|
export declare function renderVerdict(v: PreflightVerdict): string;
|
|
85
94
|
/** In-memory pin store (the TS port keeps it in-memory: the SDK wrapper pins a
|
|
86
95
|
* live session; durable JSON persistence is out of scope for the wrapper). Keyed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"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"}
|
package/dist/src/preflight.js
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/preflight.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-index/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Pre-flight MCP tool-contract drift interceptor — one-line wrap() over an MCP client session that HOLDs a tool call before your agent runs it when the contract drifted from your pin. No credential handling.",
|
|
5
5
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
6
6
|
"author": "Bhartis LLC",
|