@mcp-index/sdk 0.1.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.
Files changed (55) hide show
  1. package/LICENSE +133 -0
  2. package/README.md +49 -0
  3. package/dist/src/canonical.d.ts +42 -0
  4. package/dist/src/canonical.d.ts.map +1 -0
  5. package/dist/src/canonical.js +231 -0
  6. package/dist/src/canonical.js.map +1 -0
  7. package/dist/src/errors.d.ts +39 -0
  8. package/dist/src/errors.d.ts.map +1 -0
  9. package/dist/src/errors.js +79 -0
  10. package/dist/src/errors.js.map +1 -0
  11. package/dist/src/gate.d.ts +128 -0
  12. package/dist/src/gate.d.ts.map +1 -0
  13. package/dist/src/gate.js +626 -0
  14. package/dist/src/gate.js.map +1 -0
  15. package/dist/src/index.d.ts +26 -0
  16. package/dist/src/index.d.ts.map +1 -0
  17. package/dist/src/index.js +20 -0
  18. package/dist/src/index.js.map +1 -0
  19. package/dist/src/lexicon.d.ts +15 -0
  20. package/dist/src/lexicon.d.ts.map +1 -0
  21. package/dist/src/lexicon.js +70 -0
  22. package/dist/src/lexicon.js.map +1 -0
  23. package/dist/src/outcomes.d.ts +67 -0
  24. package/dist/src/outcomes.d.ts.map +1 -0
  25. package/dist/src/outcomes.js +159 -0
  26. package/dist/src/outcomes.js.map +1 -0
  27. package/dist/src/preflight.d.ts +54 -0
  28. package/dist/src/preflight.d.ts.map +1 -0
  29. package/dist/src/preflight.js +0 -0
  30. package/dist/src/preflight.js.map +1 -0
  31. package/dist/src/provenance.d.ts +95 -0
  32. package/dist/src/provenance.d.ts.map +1 -0
  33. package/dist/src/provenance.js +221 -0
  34. package/dist/src/provenance.js.map +1 -0
  35. package/dist/src/render.d.ts +10 -0
  36. package/dist/src/render.d.ts.map +1 -0
  37. package/dist/src/render.js +38 -0
  38. package/dist/src/render.js.map +1 -0
  39. package/dist/src/risk.d.ts +32 -0
  40. package/dist/src/risk.d.ts.map +1 -0
  41. package/dist/src/risk.js +179 -0
  42. package/dist/src/risk.js.map +1 -0
  43. package/dist/src/scan.d.ts +15 -0
  44. package/dist/src/scan.d.ts.map +1 -0
  45. package/dist/src/scan.js +88 -0
  46. package/dist/src/scan.js.map +1 -0
  47. package/dist/src/schemaDiff.d.ts +36 -0
  48. package/dist/src/schemaDiff.d.ts.map +1 -0
  49. package/dist/src/schemaDiff.js +448 -0
  50. package/dist/src/schemaDiff.js.map +1 -0
  51. package/dist/src/wrap.d.ts +77 -0
  52. package/dist/src/wrap.d.ts.map +1 -0
  53. package/dist/src/wrap.js +554 -0
  54. package/dist/src/wrap.js.map +1 -0
  55. package/package.json +44 -0
@@ -0,0 +1,128 @@
1
+ /**
2
+ * The shared GATE core — the pure pre-flight decision, decoupled from any I/O
3
+ * seam. A faithful port of Python `tooling/cse/gate.py`. Pin TOFU, derive the
4
+ * live contract hash, compare to the pin, and on drift VALIDATE -> DECIDE
5
+ * (benign auto-accept / behavioral-mandated INCONCLUSIVE / HOLD), then apply the
6
+ * per-server POSTURE. NO credential, NO transport, NO network: the Gate reads
7
+ * only the PUBLIC contract dict the caller observed.
8
+ */
9
+ import { PreflightPin } from "./preflight.js";
10
+ import type { PinnedTool, PreflightVerdict, ToolDef } from "./preflight.js";
11
+ import { ChangeKind, isSafetyRelevant } from "./schemaDiff.js";
12
+ import { ErrorStore, Operation } from "./errors.js";
13
+ declare const DEFAULT_BEHAVIORAL_MANDATED_KINDS: ReadonlySet<ChangeKind>;
14
+ export declare enum Posture {
15
+ MONITOR = "monitor",
16
+ GUARD = "guard",
17
+ STRICT = "strict"
18
+ }
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]";
21
+ export declare function isInternalErrorVerdict(verdict: PreflightVerdict): boolean;
22
+ export declare function internalErrorHold(serverId: string, toolName: string): PreflightVerdict;
23
+ export declare enum Ownership {
24
+ OSS = "oss",
25
+ DEV_OWNED = "dev_owned",
26
+ UNOWNED_THIRD_PARTY = "unowned_third_party"
27
+ }
28
+ export declare enum BehavioralMethod {
29
+ SANDBOX_BATTERY = "sandbox_battery",
30
+ READ_ONLY_PROBE = "read_only_probe",
31
+ DECLINED = "declined"
32
+ }
33
+ export declare function chooseBehavioralMethod(ownership: Ownership): BehavioralMethod;
34
+ export declare enum BehavioralOutcome {
35
+ CLEARED = "cleared",
36
+ FAILED = "failed",
37
+ UNAVAILABLE = "unavailable",
38
+ DECLINED = "declined"
39
+ }
40
+ /**
41
+ * True IFF the verifier ACTUALLY observed the tool's behaviour (CLEARED or FAILED).
42
+ * UNAVAILABLE / DECLINED / null (verifier never consulted) all mean behaviour did NOT run, so
43
+ * the evidence tier floors to STRUCTURAL_ONLY (0) — never a false BEHAVIORAL/3 stamp. This is
44
+ * the ONE place tier-3 eligibility is decided, keyed on the structured enum, never on a
45
+ * verifier-controlled reason string. Python mirror: `Gate._behaviour_observed`.
46
+ */
47
+ export declare function behaviourObserved(outcome: BehavioralOutcome | null): boolean;
48
+ export interface BehavioralResult {
49
+ readonly outcome: BehavioralOutcome;
50
+ readonly method: BehavioralMethod;
51
+ readonly reason: string;
52
+ }
53
+ export interface BehavioralVerifier {
54
+ verify(serverId: string, toolName: string, toolDef: ToolDef, ownership: Ownership, method: BehavioralMethod): BehavioralResult;
55
+ }
56
+ export declare function renderHoldBanner(verdict: PreflightVerdict, monthlyCount?: number | null): string;
57
+ export interface GateOptions {
58
+ pin: PreflightPin;
59
+ serverId: string;
60
+ failOpen?: boolean;
61
+ autoAcceptBenign?: boolean;
62
+ now?: () => string;
63
+ ownership?: Ownership;
64
+ behavioralMandatedKinds?: ReadonlySet<ChangeKind>;
65
+ verifier?: BehavioralVerifier | null;
66
+ posture?: Posture;
67
+ errors?: ErrorStore | null;
68
+ }
69
+ export declare class Gate {
70
+ private readonly pin;
71
+ private readonly _serverId;
72
+ private readonly failOpen;
73
+ private readonly autoAcceptBenign;
74
+ private readonly now;
75
+ private readonly _ownership;
76
+ private readonly behavioralMandatedKinds;
77
+ private readonly _verifier;
78
+ private readonly _posture;
79
+ private readonly errors;
80
+ constructor(opts: GateOptions);
81
+ get serverId(): string;
82
+ get posture(): Posture;
83
+ get verifier(): BehavioralVerifier | null;
84
+ get ownership(): Ownership;
85
+ pinFor(name: string): PinnedTool | null;
86
+ /** TOFU-pin one observed tool if not already pinned. */
87
+ observe(name: string, defn: ToolDef): void;
88
+ repinOne(name: string, observed: ToolDef): PinnedTool;
89
+ evaluate(name: string, observed: ToolDef | null): PreflightVerdict;
90
+ private classifyDrift;
91
+ private mandatedUnhashedDrift;
92
+ private validateDrift;
93
+ private riskEscalation;
94
+ private static riskOf;
95
+ private static markerIn;
96
+ private markerIn;
97
+ private descriptionHold;
98
+ private driftHold;
99
+ private behavioralInconclusive;
100
+ private holdOrFailopen;
101
+ applyPosture(stat: PreflightVerdict): PreflightVerdict;
102
+ decide(name: string, observed: ToolDef | null): [PreflightVerdict, PreflightVerdict];
103
+ internalErrorVerdict(name: string): PreflightVerdict;
104
+ captureError(exc: unknown, operation: Operation, ourCodeLocation: string): void;
105
+ private isUnambiguousDangerous;
106
+ private notifyOnly;
107
+ /**
108
+ * Verdict-only public wrapper. Callers that must DERIVE the evidence tier
109
+ * (`tierReached` / `verdictScope`) honestly use `runBehavioralOutcome`, which also surfaces
110
+ * the STRUCTURED `BehavioralOutcome` so the tier is keyed on the enum and NEVER on the
111
+ * verifier-controlled free-text reason string.
112
+ */
113
+ runBehavioral(toolName: string, observed: ToolDef | null, staticVerdict: PreflightVerdict, verifier: BehavioralVerifier): PreflightVerdict;
114
+ /**
115
+ * Like `runBehavioral`, but ALSO returns the structured `BehavioralOutcome` the verifier
116
+ * produced (or `null` when the verifier was NEVER consulted — a missing observed contract or
117
+ * a verifier that errored). Callers key the evidence tier on this enum, never on the reason
118
+ * string: behaviour was OBSERVED iff the outcome is CLEARED or FAILED; UNAVAILABLE / DECLINED
119
+ * / null mean behaviour did NOT run (tier 0). Keying on the enum closes a provenance-honesty
120
+ * hole — the reason string embeds the verifier-controlled `result.reason`, so a verifier
121
+ * returning UNAVAILABLE with a reason that merely CONTAINS the literal "behavioral validation
122
+ * FAILED" must NOT forge a BEHAVIORAL/tier-3 stamp on a HOLD where behaviour was never seen.
123
+ * Python mirror: `Gate.run_behavioral_outcome`.
124
+ */
125
+ runBehavioralOutcome(toolName: string, observed: ToolDef | null, staticVerdict: PreflightVerdict, verifier: BehavioralVerifier): [PreflightVerdict, BehavioralOutcome | null];
126
+ }
127
+ export { isSafetyRelevant, DEFAULT_BEHAVIORAL_MANDATED_KINDS };
128
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../src/gate.ts"],"names":[],"mappings":"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"}