@bryan-thompson/inspector-assessment-client 1.25.4 → 1.25.5

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 (123) hide show
  1. package/dist/assets/{OAuthCallback-DE62cdTZ.js → OAuthCallback-Dl4GYls3.js} +1 -1
  2. package/dist/assets/{OAuthDebugCallback-CWjFdCIE.js → OAuthDebugCallback-BdJ38Z-r.js} +1 -1
  3. package/dist/assets/{index-Df9Sx1jt.css → index-cHhcEXbr.css} +4 -0
  4. package/dist/assets/{index-PCQVSwHa.js → index-pfUiTdQb.js} +4 -4
  5. package/dist/index.html +2 -2
  6. package/lib/lib/assessment/coreTypes.d.ts +65 -0
  7. package/lib/lib/assessment/coreTypes.d.ts.map +1 -1
  8. package/lib/lib/assessment/extendedTypes.d.ts +127 -0
  9. package/lib/lib/assessment/extendedTypes.d.ts.map +1 -1
  10. package/lib/lib/assessment/resultTypes.d.ts +45 -0
  11. package/lib/lib/assessment/resultTypes.d.ts.map +1 -1
  12. package/lib/services/assessment/AssessmentOrchestrator.d.ts +3 -7
  13. package/lib/services/assessment/AssessmentOrchestrator.d.ts.map +1 -1
  14. package/lib/services/assessment/AssessmentOrchestrator.js +13 -2
  15. package/lib/services/assessment/TestDataGenerator.d.ts +9 -1
  16. package/lib/services/assessment/TestDataGenerator.d.ts.map +1 -1
  17. package/lib/services/assessment/TestDataGenerator.js +32 -6
  18. package/lib/services/assessment/TestScenarioEngine.d.ts +9 -1
  19. package/lib/services/assessment/TestScenarioEngine.d.ts.map +1 -1
  20. package/lib/services/assessment/TestScenarioEngine.js +17 -14
  21. package/lib/services/assessment/config/annotationPatterns.d.ts +3 -1
  22. package/lib/services/assessment/config/annotationPatterns.d.ts.map +1 -1
  23. package/lib/services/assessment/config/annotationPatterns.js +5 -2
  24. package/lib/services/assessment/config/architecturePatterns.d.ts +101 -0
  25. package/lib/services/assessment/config/architecturePatterns.d.ts.map +1 -0
  26. package/lib/services/assessment/config/architecturePatterns.js +248 -0
  27. package/lib/services/assessment/config/performanceConfig.d.ts +122 -0
  28. package/lib/services/assessment/config/performanceConfig.d.ts.map +1 -0
  29. package/lib/services/assessment/config/performanceConfig.js +154 -0
  30. package/lib/services/assessment/config/sanitizationPatterns.d.ts +63 -0
  31. package/lib/services/assessment/config/sanitizationPatterns.d.ts.map +1 -0
  32. package/lib/services/assessment/config/sanitizationPatterns.js +223 -0
  33. package/lib/services/assessment/lib/claudeCodeBridge.d.ts +3 -1
  34. package/lib/services/assessment/lib/claudeCodeBridge.d.ts.map +1 -1
  35. package/lib/services/assessment/lib/claudeCodeBridge.js +5 -3
  36. package/lib/services/assessment/lib/concurrencyLimit.d.ts +6 -2
  37. package/lib/services/assessment/lib/concurrencyLimit.d.ts.map +1 -1
  38. package/lib/services/assessment/lib/concurrencyLimit.js +13 -6
  39. package/lib/services/assessment/lib/errors.d.ts +90 -0
  40. package/lib/services/assessment/lib/errors.d.ts.map +1 -0
  41. package/lib/services/assessment/lib/errors.js +136 -0
  42. package/lib/services/assessment/lib/timeoutUtils.d.ts +69 -0
  43. package/lib/services/assessment/lib/timeoutUtils.d.ts.map +1 -0
  44. package/lib/services/assessment/lib/timeoutUtils.js +103 -0
  45. package/lib/services/assessment/modules/BaseAssessor.d.ts +43 -8
  46. package/lib/services/assessment/modules/BaseAssessor.d.ts.map +1 -1
  47. package/lib/services/assessment/modules/BaseAssessor.js +103 -34
  48. package/lib/services/assessment/modules/DeveloperExperienceAssessor.d.ts +38 -1
  49. package/lib/services/assessment/modules/DeveloperExperienceAssessor.d.ts.map +1 -1
  50. package/lib/services/assessment/modules/DeveloperExperienceAssessor.js +185 -19
  51. package/lib/services/assessment/modules/DocumentationAssessor.d.ts +5 -0
  52. package/lib/services/assessment/modules/DocumentationAssessor.d.ts.map +1 -1
  53. package/lib/services/assessment/modules/DocumentationAssessor.js +11 -0
  54. package/lib/services/assessment/modules/ErrorHandlingAssessor.js +1 -1
  55. package/lib/services/assessment/modules/FunctionalityAssessor.d.ts.map +1 -1
  56. package/lib/services/assessment/modules/FunctionalityAssessor.js +6 -3
  57. package/lib/services/assessment/modules/MCPSpecComplianceAssessor.d.ts +3 -0
  58. package/lib/services/assessment/modules/MCPSpecComplianceAssessor.d.ts.map +1 -1
  59. package/lib/services/assessment/modules/MCPSpecComplianceAssessor.js +14 -2
  60. package/lib/services/assessment/modules/ManifestValidationAssessor.d.ts.map +1 -1
  61. package/lib/services/assessment/modules/ManifestValidationAssessor.js +7 -2
  62. package/lib/services/assessment/modules/PromptAssessor.d.ts +1 -0
  63. package/lib/services/assessment/modules/PromptAssessor.d.ts.map +1 -1
  64. package/lib/services/assessment/modules/PromptAssessor.js +26 -16
  65. package/lib/services/assessment/modules/ProtocolComplianceAssessor.d.ts.map +1 -1
  66. package/lib/services/assessment/modules/ProtocolComplianceAssessor.js +6 -2
  67. package/lib/services/assessment/modules/ProtocolConformanceAssessor.d.ts +5 -0
  68. package/lib/services/assessment/modules/ProtocolConformanceAssessor.d.ts.map +1 -1
  69. package/lib/services/assessment/modules/ProtocolConformanceAssessor.js +15 -0
  70. package/lib/services/assessment/modules/ResourceAssessor.d.ts.map +1 -1
  71. package/lib/services/assessment/modules/ResourceAssessor.js +8 -2
  72. package/lib/services/assessment/modules/SecurityAssessor.d.ts +3 -171
  73. package/lib/services/assessment/modules/SecurityAssessor.d.ts.map +1 -1
  74. package/lib/services/assessment/modules/SecurityAssessor.js +25 -1480
  75. package/lib/services/assessment/modules/ToolAnnotationAssessor.d.ts +27 -28
  76. package/lib/services/assessment/modules/ToolAnnotationAssessor.d.ts.map +1 -1
  77. package/lib/services/assessment/modules/ToolAnnotationAssessor.js +340 -863
  78. package/lib/services/assessment/modules/UsabilityAssessor.d.ts +5 -0
  79. package/lib/services/assessment/modules/UsabilityAssessor.d.ts.map +1 -1
  80. package/lib/services/assessment/modules/UsabilityAssessor.js +11 -0
  81. package/lib/services/assessment/modules/annotations/AnnotationDeceptionDetector.d.ts +57 -0
  82. package/lib/services/assessment/modules/annotations/AnnotationDeceptionDetector.d.ts.map +1 -0
  83. package/lib/services/assessment/modules/annotations/AnnotationDeceptionDetector.js +176 -0
  84. package/lib/services/assessment/modules/annotations/ArchitectureDetector.d.ts +67 -0
  85. package/lib/services/assessment/modules/annotations/ArchitectureDetector.d.ts.map +1 -0
  86. package/lib/services/assessment/modules/annotations/ArchitectureDetector.js +239 -0
  87. package/lib/services/assessment/modules/annotations/BehaviorInference.d.ts +46 -0
  88. package/lib/services/assessment/modules/annotations/BehaviorInference.d.ts.map +1 -0
  89. package/lib/services/assessment/modules/annotations/BehaviorInference.js +394 -0
  90. package/lib/services/assessment/modules/annotations/DescriptionAnalyzer.d.ts +64 -0
  91. package/lib/services/assessment/modules/annotations/DescriptionAnalyzer.d.ts.map +1 -0
  92. package/lib/services/assessment/modules/annotations/DescriptionAnalyzer.js +304 -0
  93. package/lib/services/assessment/modules/annotations/DescriptionPoisoningDetector.d.ts +43 -0
  94. package/lib/services/assessment/modules/annotations/DescriptionPoisoningDetector.d.ts.map +1 -0
  95. package/lib/services/assessment/modules/annotations/DescriptionPoisoningDetector.js +276 -0
  96. package/lib/services/assessment/modules/annotations/SchemaAnalyzer.d.ts +122 -0
  97. package/lib/services/assessment/modules/annotations/SchemaAnalyzer.d.ts.map +1 -0
  98. package/lib/services/assessment/modules/annotations/SchemaAnalyzer.js +388 -0
  99. package/lib/services/assessment/modules/annotations/index.d.ts +13 -0
  100. package/lib/services/assessment/modules/annotations/index.d.ts.map +1 -0
  101. package/lib/services/assessment/modules/annotations/index.js +15 -0
  102. package/lib/services/assessment/modules/index.d.ts +10 -0
  103. package/lib/services/assessment/modules/index.d.ts.map +1 -1
  104. package/lib/services/assessment/modules/index.js +13 -0
  105. package/lib/services/assessment/modules/securityTests/SanitizationDetector.d.ts +125 -0
  106. package/lib/services/assessment/modules/securityTests/SanitizationDetector.d.ts.map +1 -0
  107. package/lib/services/assessment/modules/securityTests/SanitizationDetector.js +345 -0
  108. package/lib/services/assessment/modules/securityTests/SecurityPayloadGenerator.d.ts +33 -0
  109. package/lib/services/assessment/modules/securityTests/SecurityPayloadGenerator.d.ts.map +1 -0
  110. package/lib/services/assessment/modules/securityTests/SecurityPayloadGenerator.js +128 -0
  111. package/lib/services/assessment/modules/securityTests/SecurityPayloadTester.d.ts +67 -0
  112. package/lib/services/assessment/modules/securityTests/SecurityPayloadTester.d.ts.map +1 -0
  113. package/lib/services/assessment/modules/securityTests/SecurityPayloadTester.js +372 -0
  114. package/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.d.ts +178 -0
  115. package/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.d.ts.map +1 -0
  116. package/lib/services/assessment/modules/securityTests/SecurityResponseAnalyzer.js +1207 -0
  117. package/lib/services/assessment/modules/securityTests/index.d.ts +8 -0
  118. package/lib/services/assessment/modules/securityTests/index.d.ts.map +1 -0
  119. package/lib/services/assessment/modules/securityTests/index.js +7 -0
  120. package/lib/services/assessment/tool-classifier-patterns.d.ts +1 -0
  121. package/lib/services/assessment/tool-classifier-patterns.d.ts.map +1 -1
  122. package/lib/services/assessment/tool-classifier-patterns.js +17 -0
  123. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TestDataGenerator.d.ts","sourceRoot":"","sources":["../../../src/services/assessment/TestDataGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACjE,MAAM,CAAC,EAAE,cAAc,GAAG,kBAAkB,CAAC;CAC9C;AAED,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAiC;IAE5D;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAI7D;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,OAAO;IAOjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CA2FpC;IAEF;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE;IAoBxD;;;OAGG;WACU,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAgD5E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAWpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAaxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAwCxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA2FxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgDpC;;OAEG;WACW,uBAAuB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAgB1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAySrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAgB9B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO;IAInE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAmDtC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAwBxE;IAEJ;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAe7C;IAEF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,wBAAwB,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,OAAO;CAoBX"}
1
+ {"version":3,"file":"TestDataGenerator.d.ts","sourceRoot":"","sources":["../../../src/services/assessment/TestDataGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACjE,MAAM,CAAC,EAAE,cAAc,GAAG,kBAAkB,CAAC;CAC9C;AAED,qBAAa,iBAAiB;IAE5B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAiC;IAE5D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAuB;IAE5C;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI;IAI7D;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAI7C;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,OAAO;IAOjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CA2FpC;IAEF;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE;IAoBxD;;;OAGG;WACU,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmD5E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAWpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAaxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAwCxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA2FxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAgDpC;;OAEG;WACW,uBAAuB,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GACnD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAoB1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAkTrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAgB9B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO;IAI3E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAsDtC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAwBxE;IAEJ;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAe7C;IAEF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,wBAAwB,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,MAAM,GACf,OAAO;CAoBX"}
@@ -8,6 +8,8 @@
8
8
  export class TestDataGenerator {
9
9
  // Optional Claude Code bridge for intelligent test generation
10
10
  static claudeBridge = null;
11
+ // Optional logger for diagnostic output
12
+ static logger = null;
11
13
  /**
12
14
  * Set the Claude Code bridge for intelligent test generation
13
15
  * Call this once during initialization if Claude integration is enabled
@@ -15,6 +17,13 @@ export class TestDataGenerator {
15
17
  static setClaudeBridge(bridge) {
16
18
  this.claudeBridge = bridge;
17
19
  }
20
+ /**
21
+ * Set the logger for diagnostic output
22
+ * Call this once during initialization
23
+ */
24
+ static setLogger(logger) {
25
+ this.logger = logger;
26
+ }
18
27
  /**
19
28
  * Check if Claude Code integration is available and enabled
20
29
  */
@@ -144,7 +153,9 @@ export class TestDataGenerator {
144
153
  try {
145
154
  const claudeParams = await this.claudeBridge.generateTestParameters(tool);
146
155
  if (claudeParams && claudeParams.length > 0) {
147
- console.log(`[TestDataGenerator] Using Claude-generated params for ${tool.name}`);
156
+ this.logger?.info("Using Claude-generated params", {
157
+ toolName: tool.name,
158
+ });
148
159
  // Convert Claude params to TestScenario format
149
160
  const claudeScenarios = claudeParams.map((params, index) => ({
150
161
  name: this.getClaudeScenarioName(index),
@@ -163,7 +174,10 @@ export class TestDataGenerator {
163
174
  }
164
175
  }
165
176
  catch (error) {
166
- console.warn(`[TestDataGenerator] Claude generation failed for ${tool.name}, falling back to schema-based:`, error);
177
+ this.logger?.warn("Claude generation failed, falling back to schema-based", {
178
+ toolName: tool.name,
179
+ error: String(error),
180
+ });
167
181
  }
168
182
  }
169
183
  // Fall back to schema-based generation
@@ -539,7 +553,10 @@ export class TestDataGenerator {
539
553
  lowerFieldName.includes("documents");
540
554
  if (isMutationField && schema.items) {
541
555
  // Generate one minimal item even for "empty" variant
542
- const item = this.generateValueFromSchema(schema.items, "empty");
556
+ const itemSchema = Array.isArray(schema.items)
557
+ ? schema.items[0]
558
+ : schema.items;
559
+ const item = this.generateValueFromSchema(itemSchema, "empty");
543
560
  return [item];
544
561
  }
545
562
  return [];
@@ -548,9 +565,12 @@ export class TestDataGenerator {
548
565
  // Generate multiple items
549
566
  const count = 10;
550
567
  if (schema.items) {
568
+ const itemSchema = Array.isArray(schema.items)
569
+ ? schema.items[0]
570
+ : schema.items;
551
571
  return Array(count)
552
572
  .fill(0)
553
- .map(() => this.generateValueFromSchema(schema.items, variant));
573
+ .map(() => this.generateValueFromSchema(itemSchema, variant));
554
574
  }
555
575
  return Array(count)
556
576
  .fill(0)
@@ -559,7 +579,10 @@ export class TestDataGenerator {
559
579
  // Typical variant - generate realistic array
560
580
  if (schema.items) {
561
581
  // Generate 1-2 items based on schema.items
562
- const item = this.generateValueFromSchema(schema.items, variant);
582
+ const itemSchema = Array.isArray(schema.items)
583
+ ? schema.items[0]
584
+ : schema.items;
585
+ const item = this.generateValueFromSchema(itemSchema, variant);
563
586
  return [item];
564
587
  }
565
588
  // Context-aware array generation (fallback for simple arrays without schema.items)
@@ -650,7 +673,10 @@ export class TestDataGenerator {
650
673
  }
651
674
  case "array":
652
675
  if (schema.items) {
653
- const item = this.generateValueFromSchema(schema.items, variant);
676
+ const itemSchema = Array.isArray(schema.items)
677
+ ? schema.items[0]
678
+ : schema.items;
679
+ const item = this.generateValueFromSchema(itemSchema, variant);
654
680
  return [item];
655
681
  }
656
682
  return [];
@@ -5,6 +5,7 @@
5
5
  import { Tool, CompatibilityCallToolResult } from "@modelcontextprotocol/sdk/types.js";
6
6
  import { TestScenario } from "./TestDataGenerator.js";
7
7
  import { ValidationResult } from "./ResponseValidator.js";
8
+ import { PerformanceConfig } from "./config/performanceConfig.js";
8
9
  export interface ScenarioTestResult {
9
10
  scenario: TestScenario;
10
11
  executed: boolean;
@@ -42,7 +43,14 @@ export interface ComprehensiveToolTestResult {
42
43
  export declare class TestScenarioEngine {
43
44
  private testTimeout;
44
45
  private delayBetweenTests;
45
- constructor(testTimeout?: number, delayBetweenTests?: number);
46
+ /**
47
+ * Create a new TestScenarioEngine.
48
+ *
49
+ * @param testTimeout - Timeout for each test in milliseconds (default from PerformanceConfig)
50
+ * @param delayBetweenTests - Delay between tests for rate limiting (default: 0)
51
+ * @param performanceConfig - Optional performance configuration for centralized tuning
52
+ */
53
+ constructor(testTimeout?: number, delayBetweenTests?: number, performanceConfig?: Partial<PerformanceConfig>);
46
54
  /**
47
55
  * Sleep for specified milliseconds (for rate limiting)
48
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TestScenarioEngine.d.ts","sourceRoot":"","sources":["../../../src/services/assessment/TestScenarioEngine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,IAAI,EACJ,2BAA2B,EAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAqB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAEL,gBAAgB,EAEjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EACT,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,QAAQ,GACR,UAAU,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,OAAO,EAAE;QACP,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IAGF,qBAAqB,CAAC,EAAE;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;KAC9C,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,WAAW,GAAE,MAAa,EAAE,iBAAiB,GAAE,MAAU;IAKrE;;OAEG;YACW,KAAK;IAInB;;OAEG;IACG,yBAAyB,CAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,GACxC,OAAO,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;IAwEhE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACG,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,GACxC,OAAO,CAAC,2BAA2B,CAAC;IAiGvC;;OAEG;YACW,eAAe;IA0E7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoD9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoK/B;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM;CAsD3E"}
1
+ {"version":3,"file":"TestScenarioEngine.d.ts","sourceRoot":"","sources":["../../../src/services/assessment/TestScenarioEngine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,IAAI,EACJ,2BAA2B,EAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAqB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAEL,gBAAgB,EAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EACT,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,QAAQ,GACR,UAAU,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,OAAO,EAAE;QACP,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IAGF,qBAAqB,CAAC,EAAE;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;KAC9C,CAAC;IACF,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;;;;OAMG;gBAED,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,GAAE,MAAU,EAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAShD;;OAEG;YACW,KAAK;IAInB;;OAEG;IACG,yBAAyB,CAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,GACxC,OAAO,CAAC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC;IAoEhE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoB7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACG,uBAAuB,CAC3B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,2BAA2B,CAAC,GACxC,OAAO,CAAC,2BAA2B,CAAC;IAiGvC;;OAEG;YACW,eAAe;IAwE7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoD9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoK/B;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM;CAsD3E"}
@@ -4,11 +4,23 @@
4
4
  */
5
5
  import { TestDataGenerator } from "./TestDataGenerator.js";
6
6
  import { ResponseValidator, } from "./ResponseValidator.js";
7
+ import { DEFAULT_PERFORMANCE_CONFIG, } from "./config/performanceConfig.js";
8
+ import { executeWithTimeout } from "./lib/timeoutUtils.js";
7
9
  export class TestScenarioEngine {
8
10
  testTimeout;
9
11
  delayBetweenTests;
10
- constructor(testTimeout = 5000, delayBetweenTests = 0) {
11
- this.testTimeout = testTimeout;
12
+ /**
13
+ * Create a new TestScenarioEngine.
14
+ *
15
+ * @param testTimeout - Timeout for each test in milliseconds (default from PerformanceConfig)
16
+ * @param delayBetweenTests - Delay between tests for rate limiting (default: 0)
17
+ * @param performanceConfig - Optional performance configuration for centralized tuning
18
+ */
19
+ constructor(testTimeout, delayBetweenTests = 0, performanceConfig) {
20
+ this.testTimeout =
21
+ testTimeout ??
22
+ performanceConfig?.testTimeoutMs ??
23
+ DEFAULT_PERFORMANCE_CONFIG.testTimeoutMs;
12
24
  this.delayBetweenTests = delayBetweenTests;
13
25
  }
14
26
  /**
@@ -29,10 +41,7 @@ export class TestScenarioEngine {
29
41
  // Test 1: Minimal complexity - absolute minimum params
30
42
  const minimalParams = this.generateMinimalParams(tool);
31
43
  try {
32
- const minimalResult = await Promise.race([
33
- callTool(tool.name, minimalParams),
34
- new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), this.testTimeout)),
35
- ]);
44
+ const minimalResult = await executeWithTimeout(callTool(tool.name, minimalParams), { timeoutMs: this.testTimeout, errorMessage: "Timeout" });
36
45
  // Tool works if it returns successfully OR if it returns a business logic error
37
46
  // (business logic errors indicate the tool is validating correctly)
38
47
  const isBusinessError = minimalResult.isError
@@ -53,10 +62,7 @@ export class TestScenarioEngine {
53
62
  // Test 2: Simple complexity - one required param with simple value
54
63
  const simpleParams = this.generateSimpleParams(tool);
55
64
  try {
56
- const simpleResult = await Promise.race([
57
- callTool(tool.name, simpleParams),
58
- new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), this.testTimeout)),
59
- ]);
65
+ const simpleResult = await executeWithTimeout(callTool(tool.name, simpleParams), { timeoutMs: this.testTimeout, errorMessage: "Timeout" });
60
66
  // Tool works if it returns successfully OR if it returns a business logic error
61
67
  const isBusinessError = simpleResult.isError
62
68
  ? ResponseValidator.isBusinessLogicError({
@@ -228,10 +234,7 @@ export class TestScenarioEngine {
228
234
  const startTime = Date.now();
229
235
  try {
230
236
  // Call tool with timeout
231
- const response = await Promise.race([
232
- callTool(tool.name, scenario.params),
233
- new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), this.testTimeout)),
234
- ]);
237
+ const response = await executeWithTimeout(callTool(tool.name, scenario.params), { timeoutMs: this.testTimeout, errorMessage: "Timeout" });
235
238
  // Validate response
236
239
  const validationContext = {
237
240
  tool,
@@ -4,6 +4,7 @@
4
4
  * Configurable pattern system for inferring expected tool behavior from names.
5
5
  * Supports JSON configuration files for customization.
6
6
  */
7
+ import type { Logger } from "../lib/logger.js";
7
8
  /**
8
9
  * Pattern configuration for tool behavior inference.
9
10
  * Each category contains string patterns that are converted to RegExp at runtime.
@@ -52,9 +53,10 @@ export declare function compilePatterns(config: AnnotationPatternConfig): Compil
52
53
  * Partial configs are merged with defaults.
53
54
  *
54
55
  * @param configPath - Path to JSON configuration file
56
+ * @param logger - Optional logger for diagnostic output
55
57
  * @returns Merged configuration with defaults
56
58
  */
57
- export declare function loadPatternConfig(configPath?: string): AnnotationPatternConfig;
59
+ export declare function loadPatternConfig(configPath?: string, logger?: Logger): AnnotationPatternConfig;
58
60
  /**
59
61
  * Match a tool name against compiled patterns and return the result.
60
62
  *
@@ -1 +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,uBAqMzC,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;AAMD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,gBAAgB,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAW3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAU5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gCAAgC,EAAE,MAAM,EAgCpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,EAWnD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EAAE,GAClB,wBAAwB,CAuD1B;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CAAC,WAAW,EAAE,MAAM,GAAG;IAC5E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA0BA"}
1
+ {"version":3,"file":"annotationPatterns.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/config/annotationPatterns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;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,uBAqMzC,CAAC;AAoBF;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,uBAAuB,GAC9B,gBAAgB,CAOlB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,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;AAMD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,gBAAgB,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAW3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAU5C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gCAAgC,EAAE,MAAM,EAgCpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,EAAE,MAAM,EAWnD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EAAE,GAClB,wBAAwB,CAuD1B;AAED;;;;;GAKG;AACH,wBAAgB,uCAAuC,CAAC,WAAW,EAAE,MAAM,GAAG;IAC5E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA0BA"}
@@ -239,9 +239,10 @@ export function compilePatterns(config) {
239
239
  * Partial configs are merged with defaults.
240
240
  *
241
241
  * @param configPath - Path to JSON configuration file
242
+ * @param logger - Optional logger for diagnostic output
242
243
  * @returns Merged configuration with defaults
243
244
  */
244
- export function loadPatternConfig(configPath) {
245
+ export function loadPatternConfig(configPath, logger) {
245
246
  if (!configPath) {
246
247
  return DEFAULT_ANNOTATION_PATTERNS;
247
248
  }
@@ -257,7 +258,9 @@ export function loadPatternConfig(configPath) {
257
258
  };
258
259
  }
259
260
  catch {
260
- console.warn(`Warning: Could not load pattern config from ${configPath}, using defaults`);
261
+ logger?.warn("Could not load pattern config, using defaults", {
262
+ configPath,
263
+ });
261
264
  return DEFAULT_ANNOTATION_PATTERNS;
262
265
  }
263
266
  }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Architecture Pattern Configuration
3
+ *
4
+ * Pattern database for detecting server architecture characteristics including:
5
+ * - Database backends (Neo4j, MongoDB, PostgreSQL, etc.)
6
+ * - Transport modes (stdio, HTTP, SSE)
7
+ * - Network access requirements
8
+ *
9
+ * Created as part of Issue #57: Architecture detection and behavior inference modules
10
+ */
11
+ /**
12
+ * Database backend types detected from patterns
13
+ */
14
+ export type DatabaseBackend = "neo4j" | "mongodb" | "sqlite" | "postgresql" | "mysql" | "redis" | "dynamodb" | "firestore" | "supabase" | "cassandra" | "elasticsearch" | "unknown";
15
+ /**
16
+ * Transport mode capabilities
17
+ */
18
+ export type TransportMode = "stdio" | "http" | "sse";
19
+ /**
20
+ * Server architecture classification
21
+ */
22
+ export type ServerArchitectureType = "local" | "hybrid" | "remote";
23
+ /**
24
+ * Database detection patterns.
25
+ * Each database has multiple patterns to catch various naming conventions.
26
+ */
27
+ export declare const DATABASE_PATTERNS: Record<Exclude<DatabaseBackend, "unknown">, RegExp[]>;
28
+ /**
29
+ * Transport detection patterns.
30
+ * Used to identify which transport modes a server supports.
31
+ */
32
+ export declare const TRANSPORT_PATTERNS: Record<TransportMode, RegExp[]>;
33
+ /**
34
+ * Network access indicators.
35
+ * Patterns that suggest the server requires network/internet access.
36
+ */
37
+ export declare const NETWORK_INDICATORS: RegExp[];
38
+ /**
39
+ * Local-only indicators.
40
+ * Patterns that suggest the server operates locally without network.
41
+ */
42
+ export declare const LOCAL_ONLY_INDICATORS: RegExp[];
43
+ /**
44
+ * External service detection patterns.
45
+ * Maps service names to URL/import patterns.
46
+ */
47
+ export declare const EXTERNAL_SERVICE_PATTERNS: Record<string, RegExp[]>;
48
+ /**
49
+ * Architecture pattern configuration interface.
50
+ * Allows customization of all pattern categories.
51
+ */
52
+ export interface ArchitecturePatternConfig {
53
+ databases: Record<string, RegExp[]>;
54
+ transports: Record<string, RegExp[]>;
55
+ networkIndicators: RegExp[];
56
+ localOnlyIndicators: RegExp[];
57
+ externalServices: Record<string, RegExp[]>;
58
+ }
59
+ /**
60
+ * Get default architecture patterns configuration.
61
+ */
62
+ export declare function getDefaultArchitecturePatterns(): ArchitecturePatternConfig;
63
+ /**
64
+ * Detect database backends from text content.
65
+ * Searches for patterns in tool descriptions, source code, or package.json.
66
+ *
67
+ * @param content - Text content to search (description, source code, etc.)
68
+ * @returns Array of detected database backends with match evidence
69
+ */
70
+ export declare function detectDatabasesFromContent(content: string): Array<{
71
+ backend: DatabaseBackend;
72
+ evidence: string;
73
+ confidence: "high" | "medium" | "low";
74
+ }>;
75
+ /**
76
+ * Detect transport modes from text content.
77
+ *
78
+ * @param content - Text content to search
79
+ * @returns Array of detected transport modes
80
+ */
81
+ export declare function detectTransportsFromContent(content: string): TransportMode[];
82
+ /**
83
+ * Check if content indicates network access requirements.
84
+ *
85
+ * @param content - Text content to search
86
+ * @returns Object with network access flag and matched indicators
87
+ */
88
+ export declare function checkNetworkAccess(content: string): {
89
+ requiresNetwork: boolean;
90
+ indicators: string[];
91
+ localOnly: boolean;
92
+ localIndicators: string[];
93
+ };
94
+ /**
95
+ * Detect external services from content.
96
+ *
97
+ * @param content - Text content to search
98
+ * @returns Array of detected service names
99
+ */
100
+ export declare function detectExternalServices(content: string): string[];
101
+ //# sourceMappingURL=architecturePatterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecturePatterns.d.ts","sourceRoot":"","sources":["../../../../src/services/assessment/config/architecturePatterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,OAAO,GACP,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,eAAe,GACf,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,EACnC,MAAM,EAAE,CAiCT,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAyB9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,EA6BtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,EAmBzC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAW9D,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,yBAAyB,CAQ1E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACjE,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC,CAAC,CA4BD;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAa5E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAwBA;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAahE"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Architecture Pattern Configuration
3
+ *
4
+ * Pattern database for detecting server architecture characteristics including:
5
+ * - Database backends (Neo4j, MongoDB, PostgreSQL, etc.)
6
+ * - Transport modes (stdio, HTTP, SSE)
7
+ * - Network access requirements
8
+ *
9
+ * Created as part of Issue #57: Architecture detection and behavior inference modules
10
+ */
11
+ /**
12
+ * Database detection patterns.
13
+ * Each database has multiple patterns to catch various naming conventions.
14
+ */
15
+ export const DATABASE_PATTERNS = {
16
+ neo4j: [
17
+ /\bneo4j\b/i,
18
+ /\bcypher\b/i,
19
+ /graph\s*database/i,
20
+ /neo4j:\/\//i,
21
+ /\bgraph\s*db\b/i,
22
+ ],
23
+ mongodb: [
24
+ /\bmongodb\b/i,
25
+ /\bmongoose\b/i,
26
+ /\bmongo\b/i,
27
+ /mongodb:\/\//i,
28
+ /mongodb\+srv:\/\//i,
29
+ /\bpymongo\b/i,
30
+ ],
31
+ sqlite: [/\bsqlite\b/i, /\bsqlite3\b/i, /\.sqlite\b/i, /\.db\b/i],
32
+ postgresql: [
33
+ /\bpostgres\b/i,
34
+ /\bpostgresql\b/i,
35
+ /\bpg\b/i,
36
+ /postgres:\/\//i,
37
+ /postgresql:\/\//i,
38
+ /\bpsycopg\b/i,
39
+ ],
40
+ mysql: [/\bmysql\b/i, /\bmariadb\b/i, /mysql:\/\//i, /mariadb:\/\//i],
41
+ redis: [/\bredis\b/i, /redis:\/\//i, /\bupstash\b/i],
42
+ dynamodb: [/\bdynamodb\b/i, /\bdynamo\b/i, /aws.*dynamo/i],
43
+ firestore: [/\bfirestore\b/i, /firebase.*firestore/i],
44
+ supabase: [/\bsupabase\b/i, /supabase\.co/i],
45
+ cassandra: [/\bcassandra\b/i, /\bscylla\b/i, /cql/i],
46
+ elasticsearch: [/\belasticsearch\b/i, /\belastic\b/i, /\bopensearch\b/i],
47
+ };
48
+ /**
49
+ * Transport detection patterns.
50
+ * Used to identify which transport modes a server supports.
51
+ */
52
+ export const TRANSPORT_PATTERNS = {
53
+ stdio: [
54
+ /\bstdio\b/i,
55
+ /\bstdin\b/i,
56
+ /\bstdout\b/i,
57
+ /transport.*stdio/i,
58
+ /stdio.*transport/i,
59
+ /process\.stdin/i,
60
+ /process\.stdout/i,
61
+ ],
62
+ http: [
63
+ /\bhttp\s*transport\b/i,
64
+ /streamable-http/i,
65
+ /rest\s*api/i,
66
+ /\bhttp\s*server\b/i,
67
+ /express|fastify|koa|hono/i,
68
+ /app\.listen/i,
69
+ ],
70
+ sse: [
71
+ /\bsse\b/i,
72
+ /server-sent/i,
73
+ /event\s*stream/i,
74
+ /sse\s*transport/i,
75
+ /text\/event-stream/i,
76
+ ],
77
+ };
78
+ /**
79
+ * Network access indicators.
80
+ * Patterns that suggest the server requires network/internet access.
81
+ */
82
+ export const NETWORK_INDICATORS = [
83
+ // URL patterns
84
+ /https?:\/\//i,
85
+ /wss?:\/\//i,
86
+ // API domain patterns
87
+ /api\.[a-z]+\./i,
88
+ /\.api\./i,
89
+ // HTTP client libraries
90
+ /\bfetch\s*\(/i,
91
+ /\baxios\b/i,
92
+ /\brequest\b/i,
93
+ /\bgot\b/i,
94
+ /\bnode-fetch\b/i,
95
+ /\bundici\b/i,
96
+ /\bhttpx\b/i,
97
+ /\brequests\b/i,
98
+ /\baiohttp\b/i,
99
+ // WebSocket patterns
100
+ /\bwebsocket\b/i,
101
+ /\bsocket\.io\b/i,
102
+ /\bws\b/i,
103
+ // Cloud service patterns
104
+ /aws-sdk/i,
105
+ /\bgoogle-cloud\b/i,
106
+ /azure/i,
107
+ ];
108
+ /**
109
+ * Local-only indicators.
110
+ * Patterns that suggest the server operates locally without network.
111
+ */
112
+ export const LOCAL_ONLY_INDICATORS = [
113
+ // File system operations
114
+ /\bfs\b/i,
115
+ /file\s*system/i,
116
+ /local\s*file/i,
117
+ /\.readFile/i,
118
+ /\.writeFile/i,
119
+ // SQLite (local database)
120
+ /\bsqlite\b/i,
121
+ // Local path patterns
122
+ /~\/|\/home\/|\/Users\//i,
123
+ // Local process execution
124
+ /child_process/i,
125
+ /subprocess/i,
126
+ /\bexec\b/i,
127
+ /\bspawn\b/i,
128
+ ];
129
+ /**
130
+ * External service detection patterns.
131
+ * Maps service names to URL/import patterns.
132
+ */
133
+ export const EXTERNAL_SERVICE_PATTERNS = {
134
+ github: [/github\.com/i, /api\.github/i, /\b@octokit\b/i, /\bgithub\b/i],
135
+ gitlab: [/gitlab\.com/i, /api\.gitlab/i, /\bgitlab\b/i],
136
+ aws: [/aws-sdk/i, /amazonaws\.com/i, /\baws\b/i],
137
+ gcp: [/google-cloud/i, /googleapis\.com/i, /\bgcp\b/i],
138
+ azure: [/azure/i, /microsoft\.com/i],
139
+ openai: [/openai\.com/i, /api\.openai/i, /\bopenai\b/i],
140
+ anthropic: [/anthropic\.com/i, /api\.anthropic/i, /\banthropic\b/i],
141
+ slack: [/slack\.com/i, /api\.slack/i, /\bslack\b/i],
142
+ discord: [/discord\.com/i, /discord\.gg/i, /\bdiscord\b/i],
143
+ stripe: [/stripe\.com/i, /api\.stripe/i, /\bstripe\b/i],
144
+ };
145
+ /**
146
+ * Get default architecture patterns configuration.
147
+ */
148
+ export function getDefaultArchitecturePatterns() {
149
+ return {
150
+ databases: DATABASE_PATTERNS,
151
+ transports: TRANSPORT_PATTERNS,
152
+ networkIndicators: NETWORK_INDICATORS,
153
+ localOnlyIndicators: LOCAL_ONLY_INDICATORS,
154
+ externalServices: EXTERNAL_SERVICE_PATTERNS,
155
+ };
156
+ }
157
+ /**
158
+ * Detect database backends from text content.
159
+ * Searches for patterns in tool descriptions, source code, or package.json.
160
+ *
161
+ * @param content - Text content to search (description, source code, etc.)
162
+ * @returns Array of detected database backends with match evidence
163
+ */
164
+ export function detectDatabasesFromContent(content) {
165
+ const results = [];
166
+ for (const [backend, patterns] of Object.entries(DATABASE_PATTERNS)) {
167
+ for (const pattern of patterns) {
168
+ const match = content.match(pattern);
169
+ if (match) {
170
+ // Determine confidence based on pattern specificity
171
+ const confidence = pattern.source.includes("://") || pattern.source.includes("\\b")
172
+ ? "high"
173
+ : "medium";
174
+ results.push({
175
+ backend: backend,
176
+ evidence: match[0],
177
+ confidence,
178
+ });
179
+ break; // Only one match per backend
180
+ }
181
+ }
182
+ }
183
+ return results;
184
+ }
185
+ /**
186
+ * Detect transport modes from text content.
187
+ *
188
+ * @param content - Text content to search
189
+ * @returns Array of detected transport modes
190
+ */
191
+ export function detectTransportsFromContent(content) {
192
+ const transports = new Set();
193
+ for (const [mode, patterns] of Object.entries(TRANSPORT_PATTERNS)) {
194
+ for (const pattern of patterns) {
195
+ if (pattern.test(content)) {
196
+ transports.add(mode);
197
+ break;
198
+ }
199
+ }
200
+ }
201
+ return Array.from(transports);
202
+ }
203
+ /**
204
+ * Check if content indicates network access requirements.
205
+ *
206
+ * @param content - Text content to search
207
+ * @returns Object with network access flag and matched indicators
208
+ */
209
+ export function checkNetworkAccess(content) {
210
+ const networkMatches = [];
211
+ const localMatches = [];
212
+ for (const pattern of NETWORK_INDICATORS) {
213
+ const match = content.match(pattern);
214
+ if (match) {
215
+ networkMatches.push(match[0]);
216
+ }
217
+ }
218
+ for (const pattern of LOCAL_ONLY_INDICATORS) {
219
+ const match = content.match(pattern);
220
+ if (match) {
221
+ localMatches.push(match[0]);
222
+ }
223
+ }
224
+ return {
225
+ requiresNetwork: networkMatches.length > 0,
226
+ indicators: networkMatches,
227
+ localOnly: localMatches.length > 0 && networkMatches.length === 0,
228
+ localIndicators: localMatches,
229
+ };
230
+ }
231
+ /**
232
+ * Detect external services from content.
233
+ *
234
+ * @param content - Text content to search
235
+ * @returns Array of detected service names
236
+ */
237
+ export function detectExternalServices(content) {
238
+ const services = new Set();
239
+ for (const [service, patterns] of Object.entries(EXTERNAL_SERVICE_PATTERNS)) {
240
+ for (const pattern of patterns) {
241
+ if (pattern.test(content)) {
242
+ services.add(service);
243
+ break;
244
+ }
245
+ }
246
+ }
247
+ return Array.from(services);
248
+ }