@mcp-index/sdk 0.9.2 → 0.10.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 CHANGED
@@ -8,6 +8,43 @@ additive feature, patch = fix). Backward-compatible additions only in 0.2.0.
8
8
  Staged for the next publish — `npm publish` packs the current `README.md`, so these
9
9
  ride out automatically with the next version bump (no ad-hoc republish needed).
10
10
 
11
+ ## 0.10.0 — 2026-08-05
12
+
13
+ **The HOLD text an agent reads is now separate from the one a human reads.** Behaviour
14
+ change on a shipped surface: `PreflightHold.message` (and the proxy's JSON-RPC error
15
+ `message`) no longer carry the brand banner.
16
+
17
+ Why: on 2026-08-05 a frontier model met a real HOLD, classified the banner as a
18
+ prompt-injection attempt, refused to act on it, retried the held call, and told the user
19
+ something suspicious was intercepting its tools. Its load-bearing objection was not tone —
20
+ it could not verify us. The gate diffs the pin against the LIVE contract while the agent
21
+ sees only its own cached tool list, a third view that legitimately disagrees. We were
22
+ asserting a change the reader could not observe and then inviting it to act, which is the
23
+ shape of a manipulation attempt. Refusing was correct behaviour.
24
+
25
+ - **Added** `renderHoldMessage()` — the agent-facing text. Renders the drift as an evidence
26
+ block (tool / change + path / effect / call sent), names the stale-tool-list mismatch
27
+ before the agent trips over it, and states the disposition without inviting any action.
28
+ - **Added** `PreflightHold.presentation` — the human brand banner, kept off `message`.
29
+ `String(err)` is what a builder is most likely to hand to a model.
30
+ - **Unchanged** `renderHoldBanner()` and `holdBanner()` — same text, same meaning, for
31
+ humans and hosts.
32
+ - **Security:** the agent-facing message may only CONSTRAIN. `[Review · Re-pin · Validate]`
33
+ invited the reader toward `repin()` — the one action that makes a changed contract the
34
+ new trusted baseline — on a channel the agent must treat as attacker-controlled. That is
35
+ the text an attacker would forge; forging "stop and ask your human" earns them nothing.
36
+ - **Security:** no defence was traded away to get there. `mdText` escaping and
37
+ `redactGreenWords` now run per untrusted value rather than over the whole render, so they
38
+ can only touch attacker-derived spans. Values are truncated before escaping
39
+ (`VALUE_CHAR_CAP`), closing an unbounded-render vector a security audit measured at 5.2 MB
40
+ from a 1.6 MB hostile tool name.
41
+ - **Fixed** (audit HIGH) `holdBanner()` fell through to the full detail banner when the
42
+ provenance choke refused or on an internal-error verdict — asserting a specific contract
43
+ change that, in the latter case, never happened. It now returns the generic notice, as
44
+ Python always did.
45
+ - **Fixed** evidence rows sort by codepoint, not `localeCompare`, so the two SDKs cannot
46
+ render different evidence for identical drift.
47
+
11
48
  ## 0.9.2 — 2026-07-29
12
49
 
13
50
  Copy only, no behaviour change.
@@ -17,7 +17,19 @@ export declare enum Posture {
17
17
  STRICT = "strict"
18
18
  }
19
19
  export declare const HELD_PROVENANCE_UNAVAILABLE_BANNER = "\u2B21 mcpindex \u2014 held a call before your agent ran it (provenance unavailable; no detail shown).";
20
- export declare const INTERNAL_ERROR_HELD_MESSAGE = "\u2B21 mcpindex internal error \u2014 held this call for safety. [Override]";
20
+ /** The AGENT-facing twin of the banner above. Same fact, no brand glyph, no chrome.
21
+ *
22
+ * INSTANCE FOURTEEN, found in round 9 and present in both languages. `heldSurface` has two
23
+ * early returns, one line apart, that both put a constant in the AGENT-message position and
24
+ * bypass `renderHoldMessage` entirely. Round 7 fixed the internal-error one and left this
25
+ * sibling, which shipped the brand glyph to the agent channel - the exact tell the suite's
26
+ * first test bans, and one the 2026-08-05 model named when it read the hold as a UI trying to
27
+ * persuade it. That test only ever ran against the renderer.
28
+ *
29
+ * The banner keeps its glyph: a HUMAN still reads it via `holdBanner()`. One fact, two
30
+ * readers, two renderings - the same split this whole change is about. */
31
+ export declare const HELD_PROVENANCE_UNAVAILABLE_MESSAGE: string;
32
+ export declare const INTERNAL_ERROR_HELD_MESSAGE: string;
21
33
  export declare function isInternalErrorVerdict(verdict: PreflightVerdict): boolean;
22
34
  export declare function internalErrorHold(serverId: string, toolName: string): PreflightVerdict;
23
35
  export declare enum Ownership {
@@ -53,7 +65,42 @@ export interface BehavioralResult {
53
65
  export interface BehavioralVerifier {
54
66
  verify(serverId: string, toolName: string, toolDef: ToolDef, ownership: Ownership, method: BehavioralMethod): BehavioralResult;
55
67
  }
56
- export declare function renderHoldBanner(verdict: PreflightVerdict, monthlyCount?: number | null): string;
68
+ /**
69
+ * The AGENT-facing HOLD text: evidence over assertion, constrain never expand.
70
+ *
71
+ * `renderHoldBanner` is the HUMAN brand moment and is unchanged - it still renders for
72
+ * hosts and operators. But it was ALSO the thrown message, which is read by a MODEL.
73
+ * Observed 2026-08-05: Claude Opus 4.8 classified that banner as a prompt-injection
74
+ * attempt, refused to act on it, retried the held call, and told the user something
75
+ * suspicious was intercepting its tools.
76
+ *
77
+ * Its load-bearing objection was not tone - it was that it could not VERIFY us: the gate
78
+ * diffs the pin against the LIVE contract, while the agent sees only its own cached tool
79
+ * list, a third view that legitimately disagrees. Asserting a change the reader cannot
80
+ * observe, then inviting it to act, is the exact shape of a manipulation attempt.
81
+ *
82
+ * Every defence is unchanged: `mdText` on each attacker-derived value, `redactGreenWords`
83
+ * over the whole output, fail-closed behaviour untouched.
84
+ */
85
+ export declare function renderHoldMessage(verdict: PreflightVerdict, sentKeys?: readonly string[] | null, pinPath?: string | null, drill?: boolean): string;
86
+ /** The minimal HOLD text: claims nothing beyond "this did not complete normally". The
87
+ * fail-closed fallback for a whole-message invariant no span redaction can repair. */
88
+ export declare const MINIMAL_HOLD_MESSAGE: string;
89
+ /** The single boundary every agent-facing HOLD string crosses. REDACTS, never suppresses.
90
+ *
91
+ * Span-level, because the first cut returned a minimal message on any violation — which
92
+ * handed a hostile server a SUPPRESSION PRIMITIVE: name a tool `[Override]` and the whole
93
+ * detailed HOLD collapses to a sentence that says nothing. This module refuses that same
94
+ * trade for the pin anchor ("drop only the poisoned span, never the whole line").
95
+ * Python twin: `cse.gate.redact_agent_unsafe`. */
96
+ export declare function redactAgentUnsafe(text: string): string;
97
+ /** WHOLE-MESSAGE invariants no span redaction can repair. Returns a reason, or null.
98
+ * Python twin: `cse.gate.agent_channel_violation`. */
99
+ export declare function agentChannelViolation(verdict: PreflightVerdict, text: string): string | null;
100
+ /** Raw assembly, before the channel boundary. Exported for the suite, which must see our
101
+ * prose as written — handed the redacted output, a no-op assertion is vacuous. */
102
+ export declare function assembleHoldMessage(verdict: PreflightVerdict, sentKeys?: readonly string[] | null, pinPath?: string | null, drill?: boolean): string;
103
+ export declare function renderHoldBanner(verdict: PreflightVerdict, monthlyCount?: number | null, chips?: boolean): string;
57
104
  export interface GateOptions {
58
105
  pin: PreflightPin;
59
106
  serverId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"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"}