@bryan-thompson/inspector-assessment-client 1.11.1 → 1.12.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.
@@ -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-kJ0jPd4m.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-sUICDw7A.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-kJ0jPd4m.js";
1
+ import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-sUICDw7A.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.11.1";
16323
+ const version$1 = "1.12.0";
16324
16324
  const packageJson = {
16325
16325
  name,
16326
16326
  version: version$1
@@ -48863,7 +48863,7 @@ const useTheme = () => {
48863
48863
  [theme, setThemeWithSideEffect]
48864
48864
  );
48865
48865
  };
48866
- const version = "1.11.1";
48866
+ const version = "1.12.0";
48867
48867
  var [createTooltipContext] = createContextScope("Tooltip", [
48868
48868
  createPopperScope
48869
48869
  ]);
@@ -61740,13 +61740,13 @@ const App = () => {
61740
61740
  ) });
61741
61741
  if (window.location.pathname === "/oauth/callback") {
61742
61742
  const OAuthCallback = React.lazy(
61743
- () => __vitePreload(() => import("./OAuthCallback-DA2koy6X.js"), true ? [] : void 0)
61743
+ () => __vitePreload(() => import("./OAuthCallback-DD8JgGmx.js"), true ? [] : void 0)
61744
61744
  );
61745
61745
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
61746
61746
  }
61747
61747
  if (window.location.pathname === "/oauth/callback/debug") {
61748
61748
  const OAuthDebugCallback = React.lazy(
61749
- () => __vitePreload(() => import("./OAuthDebugCallback-Bx60PQTT.js"), true ? [] : void 0)
61749
+ () => __vitePreload(() => import("./OAuthDebugCallback-CGeg00AP.js"), true ? [] : void 0)
61750
61750
  );
61751
61751
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
61752
61752
  }
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-kJ0jPd4m.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-sUICDw7A.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-Cuc9GxjD.css">
10
10
  </head>
11
11
  <body>
@@ -4,6 +4,15 @@
4
4
  */
5
5
  export type AssessmentStatus = "PASS" | "FAIL" | "NEED_MORE_INFO";
6
6
  export type SecurityRiskLevel = "LOW" | "MEDIUM" | "HIGH";
7
+ /**
8
+ * Alignment status for tool annotations.
9
+ * Extends beyond PASS/FAIL to handle ambiguous cases.
10
+ */
11
+ export type AlignmentStatus = "ALIGNED" | "MISALIGNED" | "REVIEW_RECOMMENDED" | "UNKNOWN";
12
+ /**
13
+ * Confidence level for behavior inference
14
+ */
15
+ export type InferenceConfidence = "high" | "medium" | "low";
7
16
  export interface TestInputMetadata {
8
17
  toolCategory: string;
9
18
  generationStrategy: string;
@@ -526,7 +535,13 @@ export interface ToolAnnotationResult {
526
535
  expectedReadOnly: boolean;
527
536
  expectedDestructive: boolean;
528
537
  reason: string;
538
+ /** Confidence level of the inference */
539
+ confidence: InferenceConfidence;
540
+ /** True if the tool name matches an ambiguous pattern */
541
+ isAmbiguous: boolean;
529
542
  };
543
+ /** Alignment status between annotations and inferred behavior */
544
+ alignmentStatus?: AlignmentStatus;
530
545
  issues: string[];
531
546
  recommendations: string[];
532
547
  }
@@ -534,10 +549,29 @@ export interface ToolAnnotationAssessment {
534
549
  toolResults: ToolAnnotationResult[];
535
550
  annotatedCount: number;
536
551
  missingAnnotationsCount: number;
552
+ /** Count of high-confidence misalignments only (excludes REVIEW_RECOMMENDED) */
537
553
  misalignedAnnotationsCount: number;
538
554
  status: AssessmentStatus;
539
555
  explanation: string;
540
556
  recommendations: string[];
557
+ /** Detailed metrics for annotation quality */
558
+ metrics?: {
559
+ /** Percentage of tools with any annotations (0-100) */
560
+ coverage: number;
561
+ /** Percentage of tools without contradictions (0-100) */
562
+ consistency: number;
563
+ /** Percentage of high-confidence alignments (0-100) */
564
+ correctness: number;
565
+ /** Count of tools needing manual review */
566
+ reviewRequired: number;
567
+ };
568
+ /** Breakdown of tools by alignment status */
569
+ alignmentBreakdown?: {
570
+ aligned: number;
571
+ misaligned: number;
572
+ reviewRecommended: number;
573
+ unknown: number;
574
+ };
541
575
  }
542
576
  /**
543
577
  * Prohibited Libraries Types (Policy #28-30)
@@ -658,6 +692,7 @@ export interface AssessmentConfiguration {
658
692
  enableDomainTesting?: boolean;
659
693
  mcpProtocolVersion?: string;
660
694
  enableSourceCodeAnalysis?: boolean;
695
+ patternConfigPath?: string;
661
696
  claudeCode?: ClaudeCodeConfig;
662
697
  assessmentCategories?: {
663
698
  functionality: boolean;
@@ -683,7 +718,7 @@ export interface ProgressCallback {
683
718
  /**
684
719
  * Union type for all progress events emitted during assessment.
685
720
  */
686
- export type ProgressEvent = ModuleStartedProgress | TestBatchProgress | ModuleCompleteProgress | VulnerabilityFoundProgress | AnnotationMissingProgress | AnnotationMisalignedProgress;
721
+ export type ProgressEvent = ModuleStartedProgress | TestBatchProgress | ModuleCompleteProgress | VulnerabilityFoundProgress | AnnotationMissingProgress | AnnotationMisalignedProgress | AnnotationReviewRecommendedProgress;
687
722
  /**
688
723
  * Emitted when an assessment module begins execution.
689
724
  */
@@ -772,6 +807,25 @@ export interface AnnotationMisalignedProgress {
772
807
  confidence: number;
773
808
  reason: string;
774
809
  }
810
+ /**
811
+ * Emitted when annotation alignment cannot be confidently determined.
812
+ * Used for ambiguous patterns like store_*, queue_*, cache_* where behavior
813
+ * varies by implementation context. Does not indicate a failure - just flags
814
+ * for human review.
815
+ */
816
+ export interface AnnotationReviewRecommendedProgress {
817
+ type: "annotation_review_recommended";
818
+ tool: string;
819
+ title?: string;
820
+ description?: string;
821
+ parameters: ToolParamProgress[];
822
+ field: "readOnlyHint" | "destructiveHint";
823
+ actual: boolean | undefined;
824
+ inferred: boolean;
825
+ confidence: InferenceConfidence;
826
+ isAmbiguous: boolean;
827
+ reason: string;
828
+ }
775
829
  export declare const DEFAULT_ASSESSMENT_CONFIG: AssessmentConfiguration;
776
830
  export declare const REVIEWER_MODE_CONFIG: AssessmentConfiguration;
777
831
  export declare const DEVELOPER_MODE_CONFIG: AssessmentConfiguration;
@@ -1 +1 @@
1
- {"version":3,"file":"assessmentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/assessmentTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assessmentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/assessmentTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssessmentOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/services/assessment/AssessmentOrchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssessmentOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/services/assessment/AssessmentOrchestrator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EAGvB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,IAAI,EACJ,2BAA2B,EAC5B,MAAM,oCAAoC,CAAC;AA0B5C,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAwEhC,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,uBAAuB,CAAC;IAChC,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IAIF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGtC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAa;IAGlC,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,aAAa,CAAkB;IAGvC,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,iBAAiB,CAAoB;IAG7C,OAAO,CAAC,eAAe,CAAC,CAA4B;IAGpD,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,sBAAsB,CAAC,CAAyB;IACxD,OAAO,CAAC,2BAA2B,CAAC,CAA8B;IAClE,OAAO,CAAC,0BAA0B,CAAC,CAA6B;IAChE,OAAO,CAAC,mBAAmB,CAAC,CAAsB;gBAEtC,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM;IAiEzD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;OAGG;IACH,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;IAqBhE;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,eAAe,IAAI,gBAAgB,GAAG,SAAS;IAI/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA2B1B;;OAEG;IACG,iBAAiB,CACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,sBAAsB,CAAC;IAkUlC;;OAEG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,EACzC,UAAU,CAAC,EAAE,GAAG,EAChB,aAAa,CAAC,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,GAAG,GAChB,OAAO,CAAC,sBAAsB,CAAC;IAclC,OAAO,CAAC,qBAAqB;IAmD7B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,eAAe;IA8DvB,OAAO,CAAC,uBAAuB;IAc/B;;OAEG;IACH,SAAS,IAAI,uBAAuB;IAIpC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;CAG7D"}
@@ -17,6 +17,8 @@ import { ToolAnnotationAssessor } from "./modules/ToolAnnotationAssessor.js";
17
17
  import { ProhibitedLibrariesAssessor } from "./modules/ProhibitedLibrariesAssessor.js";
18
18
  import { ManifestValidationAssessor } from "./modules/ManifestValidationAssessor.js";
19
19
  import { PortabilityAssessor } from "./modules/PortabilityAssessor.js";
20
+ // Pattern configuration for tool annotation assessment
21
+ import { loadPatternConfig, compilePatterns, } from "./config/annotationPatterns.js";
20
22
  // Claude Code integration for intelligent analysis
21
23
  import { ClaudeCodeBridge, FULL_CLAUDE_CODE_CONFIG, } from "./lib/claudeCodeBridge.js";
22
24
  import { TestDataGenerator } from "./TestDataGenerator.js";
@@ -116,6 +118,12 @@ export class AssessmentOrchestrator {
116
118
  if (this.claudeBridge) {
117
119
  this.toolAnnotationAssessor.setClaudeBridge(this.claudeBridge);
118
120
  }
121
+ // Load custom pattern configuration if provided
122
+ if (this.config.patternConfigPath) {
123
+ const patternConfig = loadPatternConfig(this.config.patternConfigPath);
124
+ const compiledPatterns = compilePatterns(patternConfig);
125
+ this.toolAnnotationAssessor.setPatterns(compiledPatterns);
126
+ }
119
127
  }
120
128
  if (this.config.assessmentCategories?.prohibitedLibraries) {
121
129
  this.prohibitedLibrariesAssessor = new ProhibitedLibrariesAssessor(this.config);
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Tool Annotation Pattern Configuration
3
+ *
4
+ * Configurable pattern system for inferring expected tool behavior from names.
5
+ * Supports JSON configuration files for customization.
6
+ */
7
+ /**
8
+ * Pattern configuration for tool behavior inference.
9
+ * Each category contains string patterns that are converted to RegExp at runtime.
10
+ * Patterns should end with underscore or hyphen (e.g., "get_", "delete-")
11
+ */
12
+ export interface AnnotationPatternConfig {
13
+ /** Patterns indicating read-only operations (e.g., "get_", "list_", "fetch_") */
14
+ readOnly: string[];
15
+ /** Patterns indicating destructive operations (e.g., "delete_", "remove_", "destroy_") */
16
+ destructive: string[];
17
+ /** Patterns indicating write operations that are not destructive (e.g., "create_", "add_") */
18
+ write: string[];
19
+ /** Patterns that are semantically ambiguous - behavior varies by implementation */
20
+ ambiguous: string[];
21
+ }
22
+ /**
23
+ * Compiled patterns ready for matching.
24
+ * String patterns are converted to RegExp objects.
25
+ */
26
+ export interface CompiledPatterns {
27
+ readOnly: RegExp[];
28
+ destructive: RegExp[];
29
+ write: RegExp[];
30
+ ambiguous: RegExp[];
31
+ }
32
+ /**
33
+ * Result of pattern matching with confidence scoring.
34
+ */
35
+ export interface PatternMatchResult {
36
+ category: "readOnly" | "destructive" | "write" | "ambiguous" | "unknown";
37
+ pattern: string | null;
38
+ confidence: "high" | "medium" | "low";
39
+ isAmbiguous: boolean;
40
+ }
41
+ /**
42
+ * Default annotation patterns.
43
+ * These patterns have been validated against real-world MCP servers.
44
+ */
45
+ export declare const DEFAULT_ANNOTATION_PATTERNS: AnnotationPatternConfig;
46
+ /**
47
+ * Compile string patterns into RegExp objects for efficient matching.
48
+ */
49
+ export declare function compilePatterns(config: AnnotationPatternConfig): CompiledPatterns;
50
+ /**
51
+ * Load pattern configuration from a JSON file.
52
+ * Partial configs are merged with defaults.
53
+ *
54
+ * @param configPath - Path to JSON configuration file
55
+ * @returns Merged configuration with defaults
56
+ */
57
+ export declare function loadPatternConfig(configPath?: string): AnnotationPatternConfig;
58
+ /**
59
+ * Match a tool name against compiled patterns and return the result.
60
+ *
61
+ * @param toolName - The tool name to match
62
+ * @param patterns - Compiled pattern sets
63
+ * @returns Match result with category, confidence, and ambiguity flag
64
+ */
65
+ export declare function matchToolPattern(toolName: string, patterns: CompiledPatterns): PatternMatchResult;
66
+ /**
67
+ * Get compiled default patterns (cached for performance).
68
+ */
69
+ export declare function getDefaultCompiledPatterns(): CompiledPatterns;
70
+ //# sourceMappingURL=annotationPatterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotationPatterns.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/config/annotationPatterns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,8FAA8F;IAC9F,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,mFAAmF;IACnF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IACzE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,uBAqKzC,CAAC;AAoBF;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,uBAAuB,GAC9B,gBAAgB,CAOlB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,uBAAuB,CAyBzB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,gBAAgB,GACzB,kBAAkB,CA0DpB;AAOD;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,gBAAgB,CAK7D"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Tool Annotation Pattern Configuration
3
+ *
4
+ * Configurable pattern system for inferring expected tool behavior from names.
5
+ * Supports JSON configuration files for customization.
6
+ */
7
+ import * as fs from "fs";
8
+ /**
9
+ * Default annotation patterns.
10
+ * These patterns have been validated against real-world MCP servers.
11
+ */
12
+ export const DEFAULT_ANNOTATION_PATTERNS = {
13
+ readOnly: [
14
+ "get_",
15
+ "get-",
16
+ "list_",
17
+ "list-",
18
+ "fetch_",
19
+ "fetch-",
20
+ "read_",
21
+ "read-",
22
+ "query_",
23
+ "query-",
24
+ "search_",
25
+ "search-",
26
+ "find_",
27
+ "find-",
28
+ "show_",
29
+ "show-",
30
+ "view_",
31
+ "view-",
32
+ "describe_",
33
+ "describe-",
34
+ "check_",
35
+ "check-",
36
+ "verify_",
37
+ "verify-",
38
+ "validate_",
39
+ "validate-",
40
+ "count_",
41
+ "count-",
42
+ "status_",
43
+ "status-",
44
+ "info_",
45
+ "info-",
46
+ "lookup_",
47
+ "lookup-",
48
+ "browse_",
49
+ "browse-",
50
+ "preview_",
51
+ "preview-",
52
+ "download_",
53
+ "download-",
54
+ ],
55
+ destructive: [
56
+ "delete_",
57
+ "delete-",
58
+ "remove_",
59
+ "remove-",
60
+ "destroy_",
61
+ "destroy-",
62
+ "drop_",
63
+ "drop-",
64
+ "purge_",
65
+ "purge-",
66
+ "clear_",
67
+ "clear-",
68
+ "wipe_",
69
+ "wipe-",
70
+ "erase_",
71
+ "erase-",
72
+ "reset_",
73
+ "reset-",
74
+ "truncate_",
75
+ "truncate-",
76
+ "revoke_",
77
+ "revoke-",
78
+ "terminate_",
79
+ "terminate-",
80
+ "cancel_",
81
+ "cancel-",
82
+ "kill_",
83
+ "kill-",
84
+ "force_",
85
+ "force-",
86
+ ],
87
+ write: [
88
+ "create_",
89
+ "create-",
90
+ "add_",
91
+ "add-",
92
+ "insert_",
93
+ "insert-",
94
+ "update_",
95
+ "update-",
96
+ "modify_",
97
+ "modify-",
98
+ "edit_",
99
+ "edit-",
100
+ "change_",
101
+ "change-",
102
+ "set_",
103
+ "set-",
104
+ "put_",
105
+ "put-",
106
+ "patch_",
107
+ "patch-",
108
+ "post_",
109
+ "post-",
110
+ "write_",
111
+ "write-",
112
+ "upload_",
113
+ "upload-",
114
+ "send_",
115
+ "send-",
116
+ "submit_",
117
+ "submit-",
118
+ "publish_",
119
+ "publish-",
120
+ "enable_",
121
+ "enable-",
122
+ "disable_",
123
+ "disable-",
124
+ "start_",
125
+ "start-",
126
+ "stop_",
127
+ "stop-",
128
+ "run_",
129
+ "run-",
130
+ "execute_",
131
+ "execute-",
132
+ ],
133
+ ambiguous: [
134
+ "store_",
135
+ "store-",
136
+ "queue_",
137
+ "queue-",
138
+ "cache_",
139
+ "cache-",
140
+ "process_",
141
+ "process-",
142
+ "handle_",
143
+ "handle-",
144
+ "manage_",
145
+ "manage-",
146
+ "sync_",
147
+ "sync-",
148
+ "transfer_",
149
+ "transfer-",
150
+ "push_",
151
+ "push-",
152
+ "pop_",
153
+ "pop-",
154
+ "apply_",
155
+ "apply-",
156
+ "compute_",
157
+ "compute-",
158
+ "calculate_",
159
+ "calculate-",
160
+ "transform_",
161
+ "transform-",
162
+ "convert_",
163
+ "convert-",
164
+ "evaluate_",
165
+ "evaluate-",
166
+ "log_",
167
+ "log-",
168
+ "record_",
169
+ "record-",
170
+ "track_",
171
+ "track-",
172
+ "register_",
173
+ "register-",
174
+ "save_",
175
+ "save-",
176
+ ],
177
+ };
178
+ /**
179
+ * Convert a string pattern to a RegExp.
180
+ * Handles patterns like "get_" -> /^get[_-]?/i
181
+ */
182
+ function patternToRegex(pattern) {
183
+ // Remove trailing underscore/hyphen for the base pattern
184
+ const base = pattern.replace(/[_-]$/, "");
185
+ // Create regex that matches pattern at start of string, with optional underscore/hyphen
186
+ return new RegExp(`^${escapeRegex(base)}[_-]?`, "i");
187
+ }
188
+ /**
189
+ * Escape special regex characters in a string.
190
+ */
191
+ function escapeRegex(str) {
192
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
193
+ }
194
+ /**
195
+ * Compile string patterns into RegExp objects for efficient matching.
196
+ */
197
+ export function compilePatterns(config) {
198
+ return {
199
+ readOnly: config.readOnly.map(patternToRegex),
200
+ destructive: config.destructive.map(patternToRegex),
201
+ write: config.write.map(patternToRegex),
202
+ ambiguous: config.ambiguous.map(patternToRegex),
203
+ };
204
+ }
205
+ /**
206
+ * Load pattern configuration from a JSON file.
207
+ * Partial configs are merged with defaults.
208
+ *
209
+ * @param configPath - Path to JSON configuration file
210
+ * @returns Merged configuration with defaults
211
+ */
212
+ export function loadPatternConfig(configPath) {
213
+ if (!configPath) {
214
+ return DEFAULT_ANNOTATION_PATTERNS;
215
+ }
216
+ try {
217
+ const configContent = fs.readFileSync(configPath, "utf-8");
218
+ const userConfig = JSON.parse(configContent);
219
+ // Merge with defaults - user config overrides defaults for specified categories
220
+ return {
221
+ readOnly: userConfig.readOnly ?? DEFAULT_ANNOTATION_PATTERNS.readOnly,
222
+ destructive: userConfig.destructive ?? DEFAULT_ANNOTATION_PATTERNS.destructive,
223
+ write: userConfig.write ?? DEFAULT_ANNOTATION_PATTERNS.write,
224
+ ambiguous: userConfig.ambiguous ?? DEFAULT_ANNOTATION_PATTERNS.ambiguous,
225
+ };
226
+ }
227
+ catch (error) {
228
+ console.warn(`Warning: Could not load pattern config from ${configPath}, using defaults`);
229
+ return DEFAULT_ANNOTATION_PATTERNS;
230
+ }
231
+ }
232
+ /**
233
+ * Match a tool name against compiled patterns and return the result.
234
+ *
235
+ * @param toolName - The tool name to match
236
+ * @param patterns - Compiled pattern sets
237
+ * @returns Match result with category, confidence, and ambiguity flag
238
+ */
239
+ export function matchToolPattern(toolName, patterns) {
240
+ const lowerName = toolName.toLowerCase();
241
+ // Check ambiguous patterns FIRST (highest priority for this feature)
242
+ for (const pattern of patterns.ambiguous) {
243
+ if (pattern.test(lowerName)) {
244
+ return {
245
+ category: "ambiguous",
246
+ pattern: pattern.source,
247
+ confidence: "low",
248
+ isAmbiguous: true,
249
+ };
250
+ }
251
+ }
252
+ // Check destructive patterns (high confidence)
253
+ for (const pattern of patterns.destructive) {
254
+ if (pattern.test(lowerName)) {
255
+ return {
256
+ category: "destructive",
257
+ pattern: pattern.source,
258
+ confidence: "high",
259
+ isAmbiguous: false,
260
+ };
261
+ }
262
+ }
263
+ // Check read-only patterns (high confidence)
264
+ for (const pattern of patterns.readOnly) {
265
+ if (pattern.test(lowerName)) {
266
+ return {
267
+ category: "readOnly",
268
+ pattern: pattern.source,
269
+ confidence: "high",
270
+ isAmbiguous: false,
271
+ };
272
+ }
273
+ }
274
+ // Check write patterns (medium confidence)
275
+ for (const pattern of patterns.write) {
276
+ if (pattern.test(lowerName)) {
277
+ return {
278
+ category: "write",
279
+ pattern: pattern.source,
280
+ confidence: "medium",
281
+ isAmbiguous: false,
282
+ };
283
+ }
284
+ }
285
+ // No pattern match
286
+ return {
287
+ category: "unknown",
288
+ pattern: null,
289
+ confidence: "low",
290
+ isAmbiguous: true,
291
+ };
292
+ }
293
+ /**
294
+ * Singleton instance of compiled default patterns for performance.
295
+ */
296
+ let defaultCompiledPatterns = null;
297
+ /**
298
+ * Get compiled default patterns (cached for performance).
299
+ */
300
+ export function getDefaultCompiledPatterns() {
301
+ if (!defaultCompiledPatterns) {
302
+ defaultCompiledPatterns = compilePatterns(DEFAULT_ANNOTATION_PATTERNS);
303
+ }
304
+ return defaultCompiledPatterns;
305
+ }
@@ -12,8 +12,9 @@
12
12
  */
13
13
  import { BaseAssessor } from "./BaseAssessor.js";
14
14
  import { AssessmentContext } from "../AssessmentOrchestrator.js";
15
- import type { ToolAnnotationAssessment, ToolAnnotationResult } from "../../../lib/assessmentTypes.js";
15
+ import type { ToolAnnotationAssessment, ToolAnnotationResult, AssessmentConfiguration } from "../../../lib/assessmentTypes.js";
16
16
  import type { ClaudeCodeBridge } from "../lib/claudeCodeBridge.js";
17
+ import { type CompiledPatterns } from "../config/annotationPatterns.js";
17
18
  /**
18
19
  * Enhanced tool annotation result with Claude inference
19
20
  */
@@ -43,6 +44,12 @@ export interface EnhancedToolAnnotationAssessment extends ToolAnnotationAssessme
43
44
  }
44
45
  export declare class ToolAnnotationAssessor extends BaseAssessor {
45
46
  private claudeBridge?;
47
+ private compiledPatterns;
48
+ constructor(config: AssessmentConfiguration);
49
+ /**
50
+ * Set custom compiled patterns for behavior inference
51
+ */
52
+ setPatterns(patterns: CompiledPatterns): void;
46
53
  /**
47
54
  * Set Claude Code Bridge for enhanced behavior inference
48
55
  */
@@ -69,6 +76,7 @@ export declare class ToolAnnotationAssessor extends BaseAssessor {
69
76
  private generateEnhancedRecommendations;
70
77
  /**
71
78
  * Assess a single tool's annotations
79
+ * Now includes alignment status with confidence-aware logic
72
80
  */
73
81
  private assessTool;
74
82
  /**
@@ -82,12 +90,18 @@ export declare class ToolAnnotationAssessor extends BaseAssessor {
82
90
  private extractToolParams;
83
91
  /**
84
92
  * Infer expected behavior from tool name and description
93
+ * Now returns confidence level and ambiguity flag for better handling
85
94
  */
86
95
  private inferBehavior;
87
96
  /**
88
- * Determine overall status
97
+ * Determine overall status using alignment status.
98
+ * Only MISALIGNED counts as failure; REVIEW_RECOMMENDED does not fail.
89
99
  */
90
100
  private determineAnnotationStatus;
101
+ /**
102
+ * Calculate metrics and alignment breakdown for the assessment
103
+ */
104
+ private calculateMetrics;
91
105
  /**
92
106
  * Generate explanation
93
107
  */
@@ -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,EAGrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;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;AAwED,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,OAAO,CAAC,YAAY,CAAC,CAAmB;IAExC;;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;IAsMvE;;OAEG;YACW,0BAA0B;IA+IxC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiCnC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAoFvC;;OAEG;IACH,OAAO,CAAC,UAAU;IAqElB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA0ErB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAsCjC;;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,EACxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAC;AAEtC;;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;gBAE/B,MAAM,EAAE,uBAAuB;IAM3C;;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;IAqPvE;;OAEG;YACW,0BAA0B;IA+IxC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiCnC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IAoFvC;;;OAGG;IACH,OAAO,CAAC,UAAU;IA8GlB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAyC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgGrB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAkDjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiDxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CA2ChC"}
@@ -11,75 +11,24 @@
11
11
  * Reference: Anthropic MCP Directory Policy #17
12
12
  */
13
13
  import { BaseAssessor } from "./BaseAssessor.js";
14
- /**
15
- * Patterns for inferring expected tool behavior from name
16
- */
17
- const READ_ONLY_PATTERNS = [
18
- /^get[_-]?/i,
19
- /^list[_-]?/i,
20
- /^fetch[_-]?/i,
21
- /^read[_-]?/i,
22
- /^query[_-]?/i,
23
- /^search[_-]?/i,
24
- /^find[_-]?/i,
25
- /^show[_-]?/i,
26
- /^view[_-]?/i,
27
- /^describe[_-]?/i,
28
- /^check[_-]?/i,
29
- /^verify[_-]?/i,
30
- /^validate[_-]?/i,
31
- /^count[_-]?/i,
32
- /^status[_-]?/i,
33
- /^info[_-]?/i,
34
- /^lookup[_-]?/i,
35
- /^browse[_-]?/i,
36
- /^preview[_-]?/i,
37
- /^download[_-]?/i, // Downloads but doesn't modify server state
38
- ];
39
- const DESTRUCTIVE_PATTERNS = [
40
- /^delete[_-]?/i,
41
- /^remove[_-]?/i,
42
- /^destroy[_-]?/i,
43
- /^drop[_-]?/i,
44
- /^purge[_-]?/i,
45
- /^clear[_-]?/i,
46
- /^wipe[_-]?/i,
47
- /^erase[_-]?/i,
48
- /^reset[_-]?/i,
49
- /^truncate[_-]?/i,
50
- /^revoke[_-]?/i,
51
- /^terminate[_-]?/i,
52
- /^cancel[_-]?/i,
53
- /^kill[_-]?/i,
54
- /^force[_-]?/i,
55
- ];
56
- const WRITE_PATTERNS = [
57
- /^create[_-]?/i,
58
- /^add[_-]?/i,
59
- /^insert[_-]?/i,
60
- /^update[_-]?/i,
61
- /^modify[_-]?/i,
62
- /^edit[_-]?/i,
63
- /^change[_-]?/i,
64
- /^set[_-]?/i,
65
- /^put[_-]?/i,
66
- /^patch[_-]?/i,
67
- /^post[_-]?/i,
68
- /^write[_-]?/i,
69
- /^save[_-]?/i,
70
- /^upload[_-]?/i,
71
- /^send[_-]?/i,
72
- /^submit[_-]?/i,
73
- /^publish[_-]?/i,
74
- /^enable[_-]?/i,
75
- /^disable[_-]?/i,
76
- /^start[_-]?/i,
77
- /^stop[_-]?/i,
78
- /^run[_-]?/i,
79
- /^execute[_-]?/i,
80
- ];
14
+ import { getDefaultCompiledPatterns, matchToolPattern, } from "../config/annotationPatterns.js";
15
+ // NOTE: Pattern arrays moved to config/annotationPatterns.ts for configurability
16
+ // The patterns are now loaded from getDefaultCompiledPatterns() or custom config
81
17
  export class ToolAnnotationAssessor extends BaseAssessor {
82
18
  claudeBridge;
19
+ compiledPatterns;
20
+ constructor(config) {
21
+ super(config);
22
+ // Initialize with default patterns (can be overridden via setPatterns)
23
+ this.compiledPatterns = getDefaultCompiledPatterns();
24
+ }
25
+ /**
26
+ * Set custom compiled patterns for behavior inference
27
+ */
28
+ setPatterns(patterns) {
29
+ this.compiledPatterns = patterns;
30
+ this.log("Custom annotation patterns configured");
31
+ }
83
32
  /**
84
33
  * Set Claude Code Bridge for enhanced behavior inference
85
34
  */
@@ -174,51 +123,92 @@ export class ToolAnnotationAssessor extends BaseAssessor {
174
123
  });
175
124
  }
176
125
  }
177
- // Emit annotation_misaligned events for each misalignment
126
+ // Emit appropriate event based on alignment status
178
127
  if (context.onProgress && latestResult.inferredBehavior) {
179
128
  const annotations = latestResult.annotations;
180
129
  const inferred = latestResult.inferredBehavior;
181
130
  const confidence = latestResult.claudeInference?.confidence ?? 50;
182
131
  const toolParams = this.extractToolParams(tool.inputSchema);
183
132
  const toolAnnotations = this.extractAnnotations(tool);
184
- // Check readOnlyHint misalignment
133
+ const alignmentStatus = latestResult.alignmentStatus;
134
+ // Check readOnlyHint mismatch
185
135
  if (annotations?.readOnlyHint !== undefined &&
186
136
  annotations.readOnlyHint !== inferred.expectedReadOnly) {
187
- context.onProgress({
188
- type: "annotation_misaligned",
189
- tool: tool.name,
190
- title: toolAnnotations.title,
191
- description: tool.description,
192
- parameters: toolParams,
193
- field: "readOnlyHint",
194
- actual: annotations.readOnlyHint,
195
- expected: inferred.expectedReadOnly,
196
- confidence,
197
- reason: `Tool has readOnlyHint=${annotations.readOnlyHint}, but ${inferred.reason}`,
198
- });
137
+ if (alignmentStatus === "REVIEW_RECOMMENDED") {
138
+ // Emit review_recommended for ambiguous cases
139
+ context.onProgress({
140
+ type: "annotation_review_recommended",
141
+ tool: tool.name,
142
+ title: toolAnnotations.title,
143
+ description: tool.description,
144
+ parameters: toolParams,
145
+ field: "readOnlyHint",
146
+ actual: annotations.readOnlyHint,
147
+ inferred: inferred.expectedReadOnly,
148
+ confidence: inferred.confidence,
149
+ isAmbiguous: inferred.isAmbiguous,
150
+ reason: inferred.reason,
151
+ });
152
+ }
153
+ else {
154
+ // Emit misaligned for high-confidence mismatches
155
+ context.onProgress({
156
+ type: "annotation_misaligned",
157
+ tool: tool.name,
158
+ title: toolAnnotations.title,
159
+ description: tool.description,
160
+ parameters: toolParams,
161
+ field: "readOnlyHint",
162
+ actual: annotations.readOnlyHint,
163
+ expected: inferred.expectedReadOnly,
164
+ confidence,
165
+ reason: `Tool has readOnlyHint=${annotations.readOnlyHint}, but ${inferred.reason}`,
166
+ });
167
+ }
199
168
  }
200
- // Check destructiveHint misalignment
169
+ // Check destructiveHint mismatch
201
170
  if (annotations?.destructiveHint !== undefined &&
202
171
  annotations.destructiveHint !== inferred.expectedDestructive) {
203
- context.onProgress({
204
- type: "annotation_misaligned",
205
- tool: tool.name,
206
- title: toolAnnotations.title,
207
- description: tool.description,
208
- parameters: toolParams,
209
- field: "destructiveHint",
210
- actual: annotations.destructiveHint,
211
- expected: inferred.expectedDestructive,
212
- confidence,
213
- reason: `Tool has destructiveHint=${annotations.destructiveHint}, but ${inferred.reason}`,
214
- });
172
+ if (alignmentStatus === "REVIEW_RECOMMENDED") {
173
+ // Emit review_recommended for ambiguous cases
174
+ context.onProgress({
175
+ type: "annotation_review_recommended",
176
+ tool: tool.name,
177
+ title: toolAnnotations.title,
178
+ description: tool.description,
179
+ parameters: toolParams,
180
+ field: "destructiveHint",
181
+ actual: annotations.destructiveHint,
182
+ inferred: inferred.expectedDestructive,
183
+ confidence: inferred.confidence,
184
+ isAmbiguous: inferred.isAmbiguous,
185
+ reason: inferred.reason,
186
+ });
187
+ }
188
+ else {
189
+ // Emit misaligned for high-confidence mismatches
190
+ context.onProgress({
191
+ type: "annotation_misaligned",
192
+ tool: tool.name,
193
+ title: toolAnnotations.title,
194
+ description: tool.description,
195
+ parameters: toolParams,
196
+ field: "destructiveHint",
197
+ actual: annotations.destructiveHint,
198
+ expected: inferred.expectedDestructive,
199
+ confidence,
200
+ reason: `Tool has destructiveHint=${annotations.destructiveHint}, but ${inferred.reason}`,
201
+ });
202
+ }
215
203
  }
216
204
  }
217
205
  }
218
206
  const status = this.determineAnnotationStatus(toolResults, context.tools.length);
219
207
  const explanation = this.generateExplanation(annotatedCount, missingAnnotationsCount, misalignedAnnotationsCount, context.tools.length);
220
208
  const recommendations = this.generateRecommendations(toolResults);
221
- this.log(`Assessment complete: ${annotatedCount}/${context.tools.length} tools annotated, ${misalignedAnnotationsCount} misaligned`);
209
+ // Calculate new metrics and alignment breakdown
210
+ const { metrics, alignmentBreakdown } = this.calculateMetrics(toolResults, context.tools.length);
211
+ this.log(`Assessment complete: ${annotatedCount}/${context.tools.length} tools annotated, ${misalignedAnnotationsCount} misaligned, ${alignmentBreakdown.reviewRecommended} need review`);
222
212
  // Return enhanced assessment if Claude was used
223
213
  if (useClaudeInference) {
224
214
  const highConfidenceMisalignments = toolResults.filter((r) => r.claudeInference &&
@@ -233,6 +223,8 @@ export class ToolAnnotationAssessor extends BaseAssessor {
233
223
  status,
234
224
  explanation: this.generateEnhancedExplanation(annotatedCount, missingAnnotationsCount, highConfidenceMisalignments.length, context.tools.length),
235
225
  recommendations: this.generateEnhancedRecommendations(toolResults),
226
+ metrics,
227
+ alignmentBreakdown,
236
228
  claudeEnhanced: true,
237
229
  highConfidenceMisalignments,
238
230
  };
@@ -245,6 +237,8 @@ export class ToolAnnotationAssessor extends BaseAssessor {
245
237
  status,
246
238
  explanation,
247
239
  recommendations,
240
+ metrics,
241
+ alignmentBreakdown,
248
242
  };
249
243
  }
250
244
  /**
@@ -433,6 +427,7 @@ export class ToolAnnotationAssessor extends BaseAssessor {
433
427
  }
434
428
  /**
435
429
  * Assess a single tool's annotations
430
+ * Now includes alignment status with confidence-aware logic
436
431
  */
437
432
  assessTool(tool) {
438
433
  const issues = [];
@@ -443,35 +438,65 @@ export class ToolAnnotationAssessor extends BaseAssessor {
443
438
  annotations.destructiveHint !== undefined;
444
439
  // Infer expected behavior from tool name
445
440
  const inferredBehavior = this.inferBehavior(tool.name, tool.description);
441
+ // Determine alignment status
442
+ let alignmentStatus = "ALIGNED";
446
443
  // Check for missing annotations
447
444
  if (!hasAnnotations) {
448
445
  issues.push("Missing tool annotations (readOnlyHint, destructiveHint)");
449
446
  recommendations.push(`Add annotations to ${tool.name}: readOnlyHint=${inferredBehavior.expectedReadOnly}, destructiveHint=${inferredBehavior.expectedDestructive}`);
447
+ alignmentStatus = "UNKNOWN";
450
448
  }
451
449
  else {
452
- // Check for misaligned annotations
453
- if (annotations.readOnlyHint !== undefined &&
454
- annotations.readOnlyHint !== inferredBehavior.expectedReadOnly) {
455
- issues.push(`Potentially misaligned readOnlyHint: set to ${annotations.readOnlyHint}, expected ${inferredBehavior.expectedReadOnly} based on tool name pattern`);
456
- recommendations.push(`Verify readOnlyHint for ${tool.name}: currently ${annotations.readOnlyHint}, tool name suggests ${inferredBehavior.expectedReadOnly}`);
457
- }
458
- if (annotations.destructiveHint !== undefined &&
459
- annotations.destructiveHint !== inferredBehavior.expectedDestructive) {
460
- issues.push(`Potentially misaligned destructiveHint: set to ${annotations.destructiveHint}, expected ${inferredBehavior.expectedDestructive} based on tool name pattern`);
461
- recommendations.push(`Verify destructiveHint for ${tool.name}: currently ${annotations.destructiveHint}, tool name suggests ${inferredBehavior.expectedDestructive}`);
450
+ // Check for misaligned annotations with confidence-aware logic
451
+ const readOnlyMismatch = annotations.readOnlyHint !== undefined &&
452
+ annotations.readOnlyHint !== inferredBehavior.expectedReadOnly;
453
+ const destructiveMismatch = annotations.destructiveHint !== undefined &&
454
+ annotations.destructiveHint !== inferredBehavior.expectedDestructive;
455
+ if (readOnlyMismatch || destructiveMismatch) {
456
+ if (inferredBehavior.isAmbiguous ||
457
+ inferredBehavior.confidence === "low") {
458
+ // Ambiguous case: REVIEW_RECOMMENDED, softer language
459
+ alignmentStatus = "REVIEW_RECOMMENDED";
460
+ if (readOnlyMismatch) {
461
+ issues.push(`Review recommended: readOnlyHint=${annotations.readOnlyHint} may or may not match '${tool.name}' behavior (confidence: ${inferredBehavior.confidence})`);
462
+ recommendations.push(`Verify readOnlyHint for ${tool.name}: pattern is ambiguous - manual review recommended`);
463
+ }
464
+ if (destructiveMismatch) {
465
+ issues.push(`Review recommended: destructiveHint=${annotations.destructiveHint} may or may not match '${tool.name}' behavior (confidence: ${inferredBehavior.confidence})`);
466
+ recommendations.push(`Verify destructiveHint for ${tool.name}: pattern is ambiguous - manual review recommended`);
467
+ }
468
+ }
469
+ else {
470
+ // High/medium confidence mismatch: MISALIGNED
471
+ alignmentStatus = "MISALIGNED";
472
+ if (readOnlyMismatch) {
473
+ issues.push(`Potentially misaligned readOnlyHint: set to ${annotations.readOnlyHint}, expected ${inferredBehavior.expectedReadOnly} based on tool name pattern`);
474
+ recommendations.push(`Verify readOnlyHint for ${tool.name}: currently ${annotations.readOnlyHint}, tool name suggests ${inferredBehavior.expectedReadOnly}`);
475
+ }
476
+ if (destructiveMismatch) {
477
+ issues.push(`Potentially misaligned destructiveHint: set to ${annotations.destructiveHint}, expected ${inferredBehavior.expectedDestructive} based on tool name pattern`);
478
+ recommendations.push(`Verify destructiveHint for ${tool.name}: currently ${annotations.destructiveHint}, tool name suggests ${inferredBehavior.expectedDestructive}`);
479
+ }
480
+ }
462
481
  }
463
482
  }
464
- // Check for destructive tools without explicit hint
483
+ // Check for destructive tools without explicit hint (only for high-confidence patterns)
465
484
  if (inferredBehavior.expectedDestructive &&
485
+ inferredBehavior.confidence !== "low" &&
466
486
  annotations.destructiveHint !== true) {
467
487
  issues.push("Tool appears destructive but destructiveHint is not set to true");
468
488
  recommendations.push(`Set destructiveHint=true for ${tool.name} - this tool appears to perform destructive operations`);
489
+ // Only upgrade to MISALIGNED if we have high confidence
490
+ if (inferredBehavior.confidence === "high") {
491
+ alignmentStatus = "MISALIGNED";
492
+ }
469
493
  }
470
494
  return {
471
495
  toolName: tool.name,
472
496
  hasAnnotations,
473
497
  annotations: hasAnnotations ? annotations : undefined,
474
498
  inferredBehavior,
499
+ alignmentStatus,
475
500
  issues,
476
501
  recommendations,
477
502
  };
@@ -534,46 +559,60 @@ export class ToolAnnotationAssessor extends BaseAssessor {
534
559
  }
535
560
  /**
536
561
  * Infer expected behavior from tool name and description
562
+ * Now returns confidence level and ambiguity flag for better handling
537
563
  */
538
564
  inferBehavior(toolName, description) {
539
- const lowerName = toolName.toLowerCase();
540
565
  const lowerDesc = (description || "").toLowerCase();
541
- // Check for destructive patterns first (higher priority)
542
- for (const pattern of DESTRUCTIVE_PATTERNS) {
543
- if (pattern.test(lowerName)) {
566
+ // Use the configurable pattern matching system
567
+ const patternMatch = matchToolPattern(toolName, this.compiledPatterns);
568
+ // Handle pattern match results
569
+ switch (patternMatch.category) {
570
+ case "ambiguous":
571
+ // Ambiguous patterns - don't make strong assertions
572
+ return {
573
+ expectedReadOnly: false,
574
+ expectedDestructive: false,
575
+ reason: `Tool name matches ambiguous pattern '${patternMatch.pattern}' - behavior varies by implementation context`,
576
+ confidence: "low",
577
+ isAmbiguous: true,
578
+ };
579
+ case "destructive":
544
580
  return {
545
581
  expectedReadOnly: false,
546
582
  expectedDestructive: true,
547
- reason: `Tool name matches destructive pattern: ${pattern.source}`,
583
+ reason: `Tool name matches destructive pattern: ${patternMatch.pattern}`,
584
+ confidence: "high",
585
+ isAmbiguous: false,
548
586
  };
549
- }
550
- }
551
- // Check for read-only patterns
552
- for (const pattern of READ_ONLY_PATTERNS) {
553
- if (pattern.test(lowerName)) {
587
+ case "readOnly":
554
588
  return {
555
589
  expectedReadOnly: true,
556
590
  expectedDestructive: false,
557
- reason: `Tool name matches read-only pattern: ${pattern.source}`,
591
+ reason: `Tool name matches read-only pattern: ${patternMatch.pattern}`,
592
+ confidence: "high",
593
+ isAmbiguous: false,
558
594
  };
559
- }
560
- }
561
- // Check for write patterns (not destructive but not read-only)
562
- for (const pattern of WRITE_PATTERNS) {
563
- if (pattern.test(lowerName)) {
595
+ case "write":
564
596
  return {
565
597
  expectedReadOnly: false,
566
598
  expectedDestructive: false,
567
- reason: `Tool name matches write pattern: ${pattern.source}`,
599
+ reason: `Tool name matches write pattern: ${patternMatch.pattern}`,
600
+ confidence: "medium",
601
+ isAmbiguous: false,
568
602
  };
569
- }
603
+ case "unknown":
604
+ default:
605
+ // Fall through to description-based analysis
606
+ break;
570
607
  }
571
- // Check description for hints
608
+ // Check description for hints (medium confidence)
572
609
  if (lowerDesc.includes("delete") || lowerDesc.includes("remove")) {
573
610
  return {
574
611
  expectedReadOnly: false,
575
612
  expectedDestructive: true,
576
613
  reason: "Description mentions delete/remove operations",
614
+ confidence: "medium",
615
+ isAmbiguous: false,
577
616
  };
578
617
  }
579
618
  if (lowerDesc.includes("read") ||
@@ -583,30 +622,43 @@ export class ToolAnnotationAssessor extends BaseAssessor {
583
622
  expectedReadOnly: true,
584
623
  expectedDestructive: false,
585
624
  reason: "Description suggests read-only operation",
625
+ confidence: "medium",
626
+ isAmbiguous: false,
586
627
  };
587
628
  }
588
- // Default: assume write (safer to warn about missing annotations)
629
+ // Default: assume write with low confidence (ambiguous)
589
630
  return {
590
631
  expectedReadOnly: false,
591
632
  expectedDestructive: false,
592
633
  reason: "Could not infer from name pattern - defaulting to write operation",
634
+ confidence: "low",
635
+ isAmbiguous: true,
593
636
  };
594
637
  }
595
638
  /**
596
- * Determine overall status
639
+ * Determine overall status using alignment status.
640
+ * Only MISALIGNED counts as failure; REVIEW_RECOMMENDED does not fail.
597
641
  */
598
642
  determineAnnotationStatus(results, totalTools) {
599
643
  if (totalTools === 0)
600
644
  return "PASS";
601
645
  const annotatedCount = results.filter((r) => r.hasAnnotations).length;
602
- const misalignedCount = results.filter((r) => r.issues.some((i) => i.includes("misaligned"))).length;
603
- const destructiveWithoutHint = results.filter((r) => r.issues.some((i) => i.includes("destructive") && i.includes("not set"))).length;
604
- // Destructive tools without proper hints = FAIL (check this FIRST)
646
+ // Only count actual MISALIGNED, not REVIEW_RECOMMENDED
647
+ const misalignedCount = results.filter((r) => r.alignmentStatus === "MISALIGNED").length;
648
+ // Count high-confidence destructive tools without proper hints
649
+ const destructiveWithoutHint = results.filter((r) => r.inferredBehavior?.expectedDestructive === true &&
650
+ r.inferredBehavior?.confidence === "high" &&
651
+ r.annotations?.destructiveHint !== true).length;
652
+ // Destructive tools without proper hints = FAIL (critical safety issue)
605
653
  if (destructiveWithoutHint > 0) {
606
654
  return "FAIL";
607
655
  }
608
- // All tools annotated and no misalignments = PASS
609
- if (annotatedCount === totalTools && misalignedCount === 0) {
656
+ // High-confidence misalignments = FAIL
657
+ if (misalignedCount > 0) {
658
+ return "FAIL";
659
+ }
660
+ // All tools annotated = PASS
661
+ if (annotatedCount === totalTools) {
610
662
  return "PASS";
611
663
  }
612
664
  // Some annotations missing = NEED_MORE_INFO
@@ -620,6 +672,34 @@ export class ToolAnnotationAssessor extends BaseAssessor {
620
672
  }
621
673
  return "NEED_MORE_INFO";
622
674
  }
675
+ /**
676
+ * Calculate metrics and alignment breakdown for the assessment
677
+ */
678
+ calculateMetrics(results, totalTools) {
679
+ const alignmentBreakdown = {
680
+ aligned: results.filter((r) => r.alignmentStatus === "ALIGNED").length,
681
+ misaligned: results.filter((r) => r.alignmentStatus === "MISALIGNED")
682
+ .length,
683
+ reviewRecommended: results.filter((r) => r.alignmentStatus === "REVIEW_RECOMMENDED").length,
684
+ unknown: results.filter((r) => r.alignmentStatus === "UNKNOWN").length,
685
+ };
686
+ const annotatedCount = results.filter((r) => r.hasAnnotations).length;
687
+ const metrics = {
688
+ // Coverage: percentage of tools with annotations
689
+ coverage: totalTools > 0 ? (annotatedCount / totalTools) * 100 : 100,
690
+ // Consistency: percentage without contradictions (not MISALIGNED)
691
+ consistency: totalTools > 0
692
+ ? ((totalTools - alignmentBreakdown.misaligned) / totalTools) * 100
693
+ : 100,
694
+ // Correctness: percentage of annotated tools that are ALIGNED
695
+ correctness: annotatedCount > 0
696
+ ? (alignmentBreakdown.aligned / annotatedCount) * 100
697
+ : 0,
698
+ // Review required: count of tools needing manual review
699
+ reviewRequired: alignmentBreakdown.reviewRecommended,
700
+ };
701
+ return { metrics, alignmentBreakdown };
702
+ }
623
703
  /**
624
704
  * Generate explanation
625
705
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bryan-thompson/inspector-assessment-client",
3
- "version": "1.11.1",
3
+ "version": "1.12.0",
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>",