@bryan-thompson/inspector-assessment-client 1.22.4 → 1.22.8

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.
@@ -1,4 +1,4 @@
1
- import { u as useToast, r as reactExports, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-Cg22xU1I.js";
1
+ import { u as useToast, r as reactExports, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-CRQP7KdJ.js";
2
2
  const OAuthCallback = ({ onConnect }) => {
3
3
  const { toast } = useToast();
4
4
  const hasProcessedRef = reactExports.useRef(false);
@@ -1,4 +1,4 @@
1
- import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-Cg22xU1I.js";
1
+ import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-CRQP7KdJ.js";
2
2
  const OAuthDebugCallback = ({ onConnect }) => {
3
3
  reactExports.useEffect(() => {
4
4
  let isProcessed = false;
@@ -16320,7 +16320,7 @@ object({
16320
16320
  token_type_hint: string().optional()
16321
16321
  }).strip();
16322
16322
  const name = "@bryan-thompson/inspector-assessment-client";
16323
- const version$1 = "1.22.4";
16323
+ const version$1 = "1.22.8";
16324
16324
  const packageJson = {
16325
16325
  name,
16326
16326
  version: version$1
@@ -45352,7 +45352,7 @@ const useTheme = () => {
45352
45352
  [theme, setThemeWithSideEffect]
45353
45353
  );
45354
45354
  };
45355
- const version = "1.22.4";
45355
+ const version = "1.22.8";
45356
45356
  var [createTooltipContext] = createContextScope("Tooltip", [
45357
45357
  createPopperScope
45358
45358
  ]);
@@ -59266,13 +59266,13 @@ const App = () => {
59266
59266
  ) });
59267
59267
  if (window.location.pathname === "/oauth/callback") {
59268
59268
  const OAuthCallback = React.lazy(
59269
- () => __vitePreload(() => import("./OAuthCallback-BbYrrLqg.js"), true ? [] : void 0)
59269
+ () => __vitePreload(() => import("./OAuthCallback-CfFY9Gl_.js"), true ? [] : void 0)
59270
59270
  );
59271
59271
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
59272
59272
  }
59273
59273
  if (window.location.pathname === "/oauth/callback/debug") {
59274
59274
  const OAuthDebugCallback = React.lazy(
59275
- () => __vitePreload(() => import("./OAuthDebugCallback-CbD0kGZX.js"), true ? [] : void 0)
59275
+ () => __vitePreload(() => import("./OAuthDebugCallback-B5omwGTS.js"), true ? [] : void 0)
59276
59276
  );
59277
59277
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
59278
59278
  }
package/dist/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/mcp.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>MCP Inspector</title>
8
- <script type="module" crossorigin src="/assets/index-Cg22xU1I.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-CRQP7KdJ.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-DiyPO_Zj.css">
10
10
  </head>
11
11
  <body>
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAnnotationAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/ToolAnnotationAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EAKpB,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAK9B,MAAM,8BAA8B,CAAC;AAyXtC;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,eAAe,CAAC,EAAE;QAChB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE;YACpB,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;QACF,oBAAoB,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;KAC7C,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,wBAAwB;IAChF,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,2BAA2B,EAAE,4BAA4B,EAAE,CAAC;CAC7D;AAKD,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,kBAAkB,CAAC,CAA2B;gBAE1C,MAAM,EAAE,uBAAuB;IAM3C;;OAEG;IACH,qBAAqB,IAAI,wBAAwB,GAAG,SAAS;IAI7D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAK7C;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAK/C;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;OAEG;IACG,MAAM,CACV,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,wBAAwB,GAAG,gCAAgC,CAAC;IAmUvE;;OAEG;YACW,0BAA0B;IA+IxC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiCnC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAoFvC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAwJlB;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA2DnC;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAyE1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAmKrB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA0DjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2ChC"}
1
+ {"version":3,"file":"ToolAnnotationAssessor.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/modules/ToolAnnotationAssessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EAKpB,uBAAuB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAK9B,MAAM,8BAA8B,CAAC;AAyXtC;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,eAAe,CAAC,EAAE;QAChB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE;YACpB,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;QACF,oBAAoB,EAAE,OAAO,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAC;KAC7C,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,wBAAwB;IAChF,WAAW,EAAE,4BAA4B,EAAE,CAAC;IAC5C,cAAc,EAAE,OAAO,CAAC;IACxB,2BAA2B,EAAE,4BAA4B,EAAE,CAAC;CAC7D;AAKD,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,kBAAkB,CAAC,CAA2B;gBAE1C,MAAM,EAAE,uBAAuB;IAM3C;;OAEG;IACH,qBAAqB,IAAI,wBAAwB,GAAG,SAAS;IAI7D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAK7C;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAK/C;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;OAEG;IACG,MAAM,CACV,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,wBAAwB,GAAG,gCAAgC,CAAC;IAyUvE;;OAEG;YACW,0BAA0B;IA+IxC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiCnC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAoFvC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IA0IlB;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IA2DnC;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAyE1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAkKrB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA0DjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2ChC"}
@@ -535,6 +535,7 @@ export class ToolAnnotationAssessor extends BaseAssessor {
535
535
  const toolAnnotations = this.extractAnnotations(tool);
536
536
  const alignmentStatus = latestResult.alignmentStatus;
537
537
  // Check readOnlyHint mismatch
538
+ // Only emit events when inference is confident enough to contradict explicit annotations
538
539
  if (annotations?.readOnlyHint !== undefined &&
539
540
  annotations.readOnlyHint !== inferred.expectedReadOnly) {
540
541
  if (alignmentStatus === "REVIEW_RECOMMENDED") {
@@ -553,8 +554,9 @@ export class ToolAnnotationAssessor extends BaseAssessor {
553
554
  reason: inferred.reason,
554
555
  });
555
556
  }
556
- else {
557
- // Emit misaligned for high-confidence mismatches
557
+ else if (!inferred.isAmbiguous && inferred.confidence !== "low") {
558
+ // Emit misaligned only for medium/high-confidence mismatches
559
+ // When inference is low-confidence/ambiguous, trust explicit annotation
558
560
  context.onProgress({
559
561
  type: "annotation_misaligned",
560
562
  tool: tool.name,
@@ -568,8 +570,10 @@ export class ToolAnnotationAssessor extends BaseAssessor {
568
570
  reason: `Tool has readOnlyHint=${annotations.readOnlyHint}, but ${inferred.reason}`,
569
571
  });
570
572
  }
573
+ // When inference is ambiguous/low-confidence, trust explicit annotation - no event emitted
571
574
  }
572
575
  // Check destructiveHint mismatch
576
+ // Only emit events when inference is confident enough to contradict explicit annotations
573
577
  if (annotations?.destructiveHint !== undefined &&
574
578
  annotations.destructiveHint !== inferred.expectedDestructive) {
575
579
  if (alignmentStatus === "REVIEW_RECOMMENDED") {
@@ -588,8 +592,9 @@ export class ToolAnnotationAssessor extends BaseAssessor {
588
592
  reason: inferred.reason,
589
593
  });
590
594
  }
591
- else {
592
- // Emit misaligned for high-confidence mismatches
595
+ else if (!inferred.isAmbiguous && inferred.confidence !== "low") {
596
+ // Emit misaligned only for medium/high-confidence mismatches
597
+ // When inference is low-confidence/ambiguous, trust explicit annotation
593
598
  context.onProgress({
594
599
  type: "annotation_misaligned",
595
600
  tool: tool.name,
@@ -603,6 +608,7 @@ export class ToolAnnotationAssessor extends BaseAssessor {
603
608
  reason: `Tool has destructiveHint=${annotations.destructiveHint}, but ${inferred.reason}`,
604
609
  });
605
610
  }
611
+ // When inference is ambiguous/low-confidence, trust explicit annotation - no event emitted
606
612
  }
607
613
  }
608
614
  }
@@ -887,21 +893,13 @@ export class ToolAnnotationAssessor extends BaseAssessor {
887
893
  const destructiveMismatch = annotations.destructiveHint !== undefined &&
888
894
  annotations.destructiveHint !== inferredBehavior.expectedDestructive;
889
895
  if (readOnlyMismatch || destructiveMismatch) {
890
- if (inferredBehavior.isAmbiguous ||
891
- inferredBehavior.confidence === "low") {
892
- // Ambiguous case: REVIEW_RECOMMENDED, softer language
893
- alignmentStatus = "REVIEW_RECOMMENDED";
894
- if (readOnlyMismatch) {
895
- issues.push(`Review recommended: readOnlyHint=${annotations.readOnlyHint} may or may not match '${tool.name}' behavior (confidence: ${inferredBehavior.confidence})`);
896
- recommendations.push(`Verify readOnlyHint for ${tool.name}: pattern is ambiguous - manual review recommended`);
897
- }
898
- if (destructiveMismatch) {
899
- issues.push(`Review recommended: destructiveHint=${annotations.destructiveHint} may or may not match '${tool.name}' behavior (confidence: ${inferredBehavior.confidence})`);
900
- recommendations.push(`Verify destructiveHint for ${tool.name}: pattern is ambiguous - manual review recommended`);
901
- }
902
- }
903
- else {
904
- // High/medium confidence mismatch: MISALIGNED
896
+ // Only flag misalignment for medium/high confidence inference
897
+ // When confidence is low/ambiguous, trust the explicit annotation
898
+ // Note: High-confidence deception detection (exec/install keywords)
899
+ // is handled in the `deception` block above, not here
900
+ if (!inferredBehavior.isAmbiguous &&
901
+ inferredBehavior.confidence !== "low") {
902
+ // Medium/high confidence mismatch: MISALIGNED
905
903
  alignmentStatus = "MISALIGNED";
906
904
  if (readOnlyMismatch) {
907
905
  issues.push(`Potentially misaligned readOnlyHint: set to ${annotations.readOnlyHint}, expected ${inferredBehavior.expectedReadOnly} based on tool name pattern`);
@@ -912,6 +910,8 @@ export class ToolAnnotationAssessor extends BaseAssessor {
912
910
  recommendations.push(`Verify destructiveHint for ${tool.name}: currently ${annotations.destructiveHint}, tool name suggests ${inferredBehavior.expectedDestructive}`);
913
911
  }
914
912
  }
913
+ // When inference is ambiguous/low confidence, trust the explicit annotation
914
+ // and keep alignmentStatus as ALIGNED (no change needed)
915
915
  }
916
916
  }
917
917
  }
@@ -1203,7 +1203,7 @@ export class ToolAnnotationAssessor extends BaseAssessor {
1203
1203
  return {
1204
1204
  expectedReadOnly: false,
1205
1205
  expectedDestructive: false,
1206
- reason: "Could not infer from name pattern - defaulting to write operation",
1206
+ reason: "Could not infer behavior from name pattern",
1207
1207
  confidence: "low",
1208
1208
  isAmbiguous: true,
1209
1209
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bryan-thompson/inspector-assessment-client",
3
- "version": "1.22.4",
3
+ "version": "1.22.8",
4
4
  "description": "Client-side application for the Enhanced MCP Inspector with assessment capabilities",
5
5
  "license": "MIT",
6
6
  "author": "Bryan Thompson <bryan@triepod.ai>",