@inspectr/mcplab 1.28.5 → 1.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +74 -6
  2. package/dist/app/assets/index-8I9ZyPIK.js +243 -0
  3. package/dist/app/assets/index-jX7LoIQP.css +2 -0
  4. package/dist/app/assets/sse-queue-worker-Iwmqd2oW.js +1 -0
  5. package/dist/app/index.html +2 -2
  6. package/dist/app-server/app-context.d.ts +75 -115
  7. package/dist/app-server/app-context.d.ts.map +1 -1
  8. package/dist/app-server/app-dist.d.ts +3 -3
  9. package/dist/app-server/app-dist.js.map +1 -1
  10. package/dist/app-server/app-run-artifacts.d.ts +4 -0
  11. package/dist/app-server/app-run-artifacts.d.ts.map +1 -0
  12. package/dist/app-server/app-run-artifacts.js +66 -0
  13. package/dist/app-server/app-run-artifacts.js.map +1 -0
  14. package/dist/app-server/assistant-common.d.ts +27 -37
  15. package/dist/app-server/assistant-common.d.ts.map +1 -1
  16. package/dist/app-server/assistant-common.js +110 -1
  17. package/dist/app-server/assistant-common.js.map +1 -1
  18. package/dist/app-server/assistant-events.d.ts +8 -28
  19. package/dist/app-server/browser-launch.d.ts +3 -3
  20. package/dist/app-server/browser-launch.js.map +1 -1
  21. package/dist/app-server/browser-provider-learning.d.ts +26 -0
  22. package/dist/app-server/browser-provider-learning.d.ts.map +1 -0
  23. package/dist/app-server/browser-provider-learning.js +353 -0
  24. package/dist/app-server/browser-provider-learning.js.map +1 -0
  25. package/dist/app-server/config-store.d.ts +13 -21
  26. package/dist/app-server/connection-test-routes.d.ts +8 -0
  27. package/dist/app-server/connection-test-routes.d.ts.map +1 -0
  28. package/dist/app-server/connection-test-routes.js +34 -0
  29. package/dist/app-server/connection-test-routes.js.map +1 -0
  30. package/dist/app-server/decision-routes.d.ts +8 -0
  31. package/dist/app-server/decision-routes.d.ts.map +1 -0
  32. package/dist/app-server/decision-routes.js +27 -0
  33. package/dist/app-server/decision-routes.js.map +1 -0
  34. package/dist/app-server/dev-mcp.d.ts +2 -5
  35. package/dist/app-server/evals-routes.d.ts +8 -18
  36. package/dist/app-server/evaluation-group-results.d.ts +11 -0
  37. package/dist/app-server/evaluation-group-results.d.ts.map +1 -0
  38. package/dist/app-server/evaluation-group-results.js +46 -0
  39. package/dist/app-server/evaluation-group-results.js.map +1 -0
  40. package/dist/app-server/evaluation-journal-projection.d.ts +9 -0
  41. package/dist/app-server/evaluation-journal-projection.d.ts.map +1 -0
  42. package/dist/app-server/evaluation-journal-projection.js +76 -0
  43. package/dist/app-server/evaluation-journal-projection.js.map +1 -0
  44. package/dist/app-server/evaluation-journal-writer.d.ts +23 -0
  45. package/dist/app-server/evaluation-journal-writer.d.ts.map +1 -0
  46. package/dist/app-server/evaluation-journal-writer.js +41 -0
  47. package/dist/app-server/evaluation-journal-writer.js.map +1 -0
  48. package/dist/app-server/evaluation-result-projection.d.ts +12 -0
  49. package/dist/app-server/evaluation-result-projection.d.ts.map +1 -0
  50. package/dist/app-server/evaluation-result-projection.js +107 -0
  51. package/dist/app-server/evaluation-result-projection.js.map +1 -0
  52. package/dist/app-server/execution-journal.d.ts +13 -0
  53. package/dist/app-server/execution-journal.d.ts.map +1 -0
  54. package/dist/app-server/execution-journal.js +39 -0
  55. package/dist/app-server/execution-journal.js.map +1 -0
  56. package/dist/app-server/http.d.ts +1 -1
  57. package/dist/app-server/index.d.ts +1 -1
  58. package/dist/app-server/inspectr-session-manager.d.ts +45 -0
  59. package/dist/app-server/inspectr-session-manager.d.ts.map +1 -0
  60. package/dist/app-server/inspectr-session-manager.js +203 -0
  61. package/dist/app-server/inspectr-session-manager.js.map +1 -0
  62. package/dist/app-server/jobs.d.ts +6 -9
  63. package/dist/app-server/libraries-store.d.ts +26 -10
  64. package/dist/app-server/libraries-store.d.ts.map +1 -1
  65. package/dist/app-server/libraries-store.js +130 -3
  66. package/dist/app-server/libraries-store.js.map +1 -1
  67. package/dist/app-server/live-tests-routes.d.ts +17 -0
  68. package/dist/app-server/live-tests-routes.d.ts.map +1 -0
  69. package/dist/app-server/live-tests-routes.js +82 -0
  70. package/dist/app-server/live-tests-routes.js.map +1 -0
  71. package/dist/app-server/live-tests.d.ts +78 -0
  72. package/dist/app-server/live-tests.d.ts.map +1 -0
  73. package/dist/app-server/live-tests.js +285 -0
  74. package/dist/app-server/live-tests.js.map +1 -0
  75. package/dist/app-server/markdown-reports.d.ts +7 -7
  76. package/dist/app-server/oauth-debugger-domain.d.ts +183 -207
  77. package/dist/app-server/oauth-debugger-domain.js.map +1 -1
  78. package/dist/app-server/oauth-debugger.d.ts +10 -17
  79. package/dist/app-server/oauth-debugger.js +1 -1
  80. package/dist/app-server/oauth-debugger.js.map +1 -1
  81. package/dist/app-server/oauth-runtime-domain.d.ts +42 -53
  82. package/dist/app-server/oauth-runtime-domain.js.map +1 -1
  83. package/dist/app-server/oauth-runtime-routes.d.ts +12 -12
  84. package/dist/app-server/oauth-session-manager.d.ts +44 -50
  85. package/dist/app-server/oauth-session-manager.d.ts.map +1 -1
  86. package/dist/app-server/oauth-session-manager.js.map +1 -1
  87. package/dist/app-server/provider-models.d.ts +2 -7
  88. package/dist/app-server/provider-models.d.ts.map +1 -1
  89. package/dist/app-server/provider-models.js +11 -12
  90. package/dist/app-server/provider-models.js.map +1 -1
  91. package/dist/app-server/request-origin.d.ts +6 -0
  92. package/dist/app-server/request-origin.d.ts.map +1 -0
  93. package/dist/app-server/request-origin.js +61 -0
  94. package/dist/app-server/request-origin.js.map +1 -0
  95. package/dist/app-server/result-assistant-domain.d.ts +66 -82
  96. package/dist/app-server/result-assistant-domain.d.ts.map +1 -1
  97. package/dist/app-server/result-assistant-domain.js.map +1 -1
  98. package/dist/app-server/result-assistant-tools.d.ts +5 -5
  99. package/dist/app-server/result-assistant.d.ts +9 -21
  100. package/dist/app-server/result-assistant.js.map +1 -1
  101. package/dist/app-server/router.d.ts +7 -1
  102. package/dist/app-server/router.d.ts.map +1 -1
  103. package/dist/app-server/router.js +375 -57
  104. package/dist/app-server/router.js.map +1 -1
  105. package/dist/app-server/rover-connection.d.ts +48 -0
  106. package/dist/app-server/rover-connection.d.ts.map +1 -0
  107. package/dist/app-server/rover-connection.js +172 -0
  108. package/dist/app-server/rover-connection.js.map +1 -0
  109. package/dist/app-server/run-agent-selection.d.ts +2 -5
  110. package/dist/app-server/run-queue-domain.d.ts +89 -65
  111. package/dist/app-server/run-queue-domain.d.ts.map +1 -1
  112. package/dist/app-server/run-queue-domain.js +723 -9
  113. package/dist/app-server/run-queue-domain.js.map +1 -1
  114. package/dist/app-server/run-queue-events.d.ts +3 -10
  115. package/dist/app-server/run-queue-events.d.ts.map +1 -1
  116. package/dist/app-server/run-queue-events.js +114 -14
  117. package/dist/app-server/run-queue-events.js.map +1 -1
  118. package/dist/app-server/run-queue-executor.d.ts +22 -48
  119. package/dist/app-server/run-queue-executor.d.ts.map +1 -1
  120. package/dist/app-server/run-queue-executor.js +91 -30
  121. package/dist/app-server/run-queue-executor.js.map +1 -1
  122. package/dist/app-server/run-queue-state.d.ts +81 -47
  123. package/dist/app-server/run-queue-state.d.ts.map +1 -1
  124. package/dist/app-server/run-queue-state.js.map +1 -1
  125. package/dist/app-server/runs-routes.d.ts +13 -35
  126. package/dist/app-server/runs-routes.d.ts.map +1 -1
  127. package/dist/app-server/runs-routes.js +196 -29
  128. package/dist/app-server/runs-routes.js.map +1 -1
  129. package/dist/app-server/runs-routes.test-helpers.d.ts +42 -38
  130. package/dist/app-server/runs-routes.test-helpers.d.ts.map +1 -1
  131. package/dist/app-server/runs-routes.test-helpers.js +4 -1
  132. package/dist/app-server/runs-routes.test-helpers.js.map +1 -1
  133. package/dist/app-server/runs-store.d.ts +60 -43
  134. package/dist/app-server/runs-store.d.ts.map +1 -1
  135. package/dist/app-server/runs-store.js +157 -70
  136. package/dist/app-server/runs-store.js.map +1 -1
  137. package/dist/app-server/scenario-assistant-domain.d.ts +131 -157
  138. package/dist/app-server/scenario-assistant-domain.d.ts.map +1 -1
  139. package/dist/app-server/scenario-assistant-domain.js +7 -15
  140. package/dist/app-server/scenario-assistant-domain.js.map +1 -1
  141. package/dist/app-server/scenario-assistant.d.ts +10 -26
  142. package/dist/app-server/scenario-assistant.js.map +1 -1
  143. package/dist/app-server/settings-store.d.ts +4 -8
  144. package/dist/app-server/settings-store.d.ts.map +1 -1
  145. package/dist/app-server/settings-store.js +33 -15
  146. package/dist/app-server/settings-store.js.map +1 -1
  147. package/dist/app-server/static-serving.d.ts +7 -13
  148. package/dist/app-server/store-utils.d.ts +1 -1
  149. package/dist/app-server/tool-analysis-domain.d.ts +167 -183
  150. package/dist/app-server/tool-analysis-domain.d.ts.map +1 -1
  151. package/dist/app-server/tool-analysis-domain.js +2 -59
  152. package/dist/app-server/tool-analysis-domain.js.map +1 -1
  153. package/dist/app-server/tool-analysis-storage.d.ts +20 -34
  154. package/dist/app-server/tool-analysis.d.ts +10 -19
  155. package/dist/app-server/types.d.ts +26 -27
  156. package/dist/app-server/types.d.ts.map +1 -1
  157. package/dist/app-server/version-info.d.ts +6 -6
  158. package/dist/app-server/version-info.js.map +1 -1
  159. package/dist/app-server/workspace-paths.d.ts +2 -1
  160. package/dist/app-server/workspace-paths.d.ts.map +1 -1
  161. package/dist/app-server/workspace-paths.js +5 -1
  162. package/dist/app-server/workspace-paths.js.map +1 -1
  163. package/dist/cli-branding.d.ts +1 -1
  164. package/dist/cli-branding.js.map +1 -1
  165. package/dist/cli.d.ts +1 -1
  166. package/dist/cli.js +5 -6
  167. package/dist/cli.js.map +1 -1
  168. package/dist/eval-config-files.d.ts +5 -8
  169. package/dist/interactive-helpers.d.ts +11 -15
  170. package/dist/migrate-utils.d.ts +1 -1
  171. package/dist/results/context.d.ts +1 -1
  172. package/dist/results/format.d.ts +7 -14
  173. package/dist/results/indexer.d.ts +2 -9
  174. package/dist/results/search.d.ts +1 -1
  175. package/dist/results/types.d.ts +2 -11
  176. package/dist/run-interactive.d.ts +21 -23
  177. package/dist/test-results-fixture.d.ts +4 -4
  178. package/package.json +8 -6
  179. package/dist/app/assets/index-Bxq-wlTN.css +0 -1
  180. package/dist/app/assets/index-j_NpCqyK.js +0 -258
  181. package/dist/app/assets/sse-queue-worker-BMo6aPaB.js +0 -1
@@ -1,12 +1,8 @@
1
+ import { type EvalConfig } from '@inspectr/mcplab-core';
1
2
  import type { AppSettings } from './types.js';
2
- interface AppSettingsOverrides {
3
- scenario_assistant_agent_name?: string;
4
- evaluation_judge_agent_name?: string;
5
- default_queue_workers?: unknown;
6
- }
7
3
  export declare function normalizeQueueWorkerCount(value: unknown): number;
8
- export declare function loadWorkspaceSettingsOverrides(librariesDir: string): AppSettingsOverrides;
9
4
  export declare function applySettingsOverrides(settings: AppSettings): void;
5
+ /** Validate the combined evaluation patch before changing settings or writing files. */
6
+ export declare function applyEvaluationSettingsPatch(settings: AppSettings, body: Record<string, unknown>, agents: EvalConfig['agents'] | (() => EvalConfig['agents'])): AppSettings;
10
7
  export declare function persistSettingsOverrides(settings: AppSettings): void;
11
- export {};
12
- //# sourceMappingURL=settings-store.d.ts.map
8
+ //# sourceMappingURL=settings-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings-store.d.ts","sourceRoot":"","sources":["../../src/app-server/settings-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,UAAU,oBAAoB;IAC5B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAYD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOhE;AAcD,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CASzF;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAQlE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAWpE"}
1
+ {"version":3,"file":"settings-store.d.ts","sourceRoot":"","sources":["../../src/app-server/settings-store.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,UAAU,EAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY9C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAOhE;AAcD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CASlE;AAED,wFAAwF;AACxF,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,GAC1D,WAAW,CAyBb;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAYpE"}
@@ -1,6 +1,7 @@
1
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
1
+ import { writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
3
+ import { stringify as stringifyYaml } from 'yaml';
4
+ import { isDecisionEngineEnabled, loadWorkspaceSettingsOverrides, normalizeEvaluationDecisionConfig, resolveEvaluationJudge } from '@inspectr/mcplab-core';
4
5
  const DEFAULT_QUEUE_WORKERS = 1;
5
6
  const MAX_QUEUE_WORKERS = 8;
6
7
  function clampQueueWorkerCount(value) {
@@ -32,18 +33,6 @@ function resolveEnvQueueWorkers() {
32
33
  function settingsOverridesFilePath(settings) {
33
34
  return join(settings.librariesDir, '.mcplab-app-settings.yaml');
34
35
  }
35
- export function loadWorkspaceSettingsOverrides(librariesDir) {
36
- const filePath = join(librariesDir, '.mcplab-app-settings.yaml');
37
- if (!existsSync(filePath))
38
- return {};
39
- try {
40
- const parsed = parseYaml(readFileSync(filePath, 'utf8'));
41
- return parsed && typeof parsed === 'object' ? parsed : {};
42
- }
43
- catch {
44
- return {};
45
- }
46
- }
47
36
  export function applySettingsOverrides(settings) {
48
37
  const overrides = loadWorkspaceSettingsOverrides(settings.librariesDir);
49
38
  settings.defaultQueueWorkers = normalizeQueueWorkerCount(overrides.default_queue_workers);
@@ -53,6 +42,34 @@ export function applySettingsOverrides(settings) {
53
42
  settings.scenarioAssistantAgentName =
54
43
  overrides.scenario_assistant_agent_name?.trim() || undefined;
55
44
  settings.evaluationJudgeAgentName = overrides.evaluation_judge_agent_name?.trim() || undefined;
45
+ settings.evaluationDecision = overrides.evaluation_decision;
46
+ }
47
+ /** Validate the combined evaluation patch before changing settings or writing files. */
48
+ export function applyEvaluationSettingsPatch(settings, body, agents) {
49
+ const candidate = { ...settings };
50
+ const hasJudge = Object.prototype.hasOwnProperty.call(body, 'evaluationJudgeAgentName');
51
+ const hasDecision = Object.prototype.hasOwnProperty.call(body, 'evaluationDecision');
52
+ if (hasJudge) {
53
+ candidate.evaluationJudgeAgentName =
54
+ String(body.evaluationJudgeAgentName ?? '').trim() || undefined;
55
+ }
56
+ if (hasDecision) {
57
+ candidate.evaluationDecision =
58
+ body.evaluationDecision === null
59
+ ? undefined
60
+ : normalizeEvaluationDecisionConfig(body.evaluationDecision);
61
+ }
62
+ const engineEnabled = isDecisionEngineEnabled(candidate.evaluationDecision);
63
+ if (hasJudge || (hasDecision && engineEnabled)) {
64
+ const judge = resolveEvaluationJudge({
65
+ agents: typeof agents === 'function' ? agents() : agents,
66
+ evaluationJudgeAgentName: candidate.evaluationJudgeAgentName
67
+ });
68
+ if (engineEnabled && !judge) {
69
+ throw new Error('Decision engines require a configured LLM evaluation judge as backup.');
70
+ }
71
+ }
72
+ return candidate;
56
73
  }
57
74
  export function persistSettingsOverrides(settings) {
58
75
  const payload = {
@@ -62,7 +79,8 @@ export function persistSettingsOverrides(settings) {
62
79
  : {}),
63
80
  ...(settings.evaluationJudgeAgentName
64
81
  ? { evaluation_judge_agent_name: settings.evaluationJudgeAgentName }
65
- : {})
82
+ : {}),
83
+ ...(settings.evaluationDecision ? { evaluation_decision: settings.evaluationDecision } : {})
66
84
  };
67
85
  writeFileSync(settingsOverridesFilePath(settings), `${stringifyYaml(payload)}\n`, 'utf8');
68
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-store.js","sourceRoot":"","sources":["../../src/app-server/settings-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-store.js","sourceRoot":"","sources":["../../src/app-server/settings-store.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,11 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
2
  export declare function mapContentType(pathname: string): string;
3
- export declare function proxyToVite(
4
- req: IncomingMessage,
5
- res: ServerResponse,
6
- target: string,
7
- pathname: string,
8
- search: string
9
- ): Promise<void>;
3
+ export declare function proxyToVite(req: IncomingMessage, res: ServerResponse, target: string, pathname: string, search: string): Promise<void>;
10
4
  export declare function serveStatic(params: {
11
- appDist: string;
12
- pathname: string;
13
- res: ServerResponse;
14
- ensureInsideRoot: (rootDir: string, candidatePath: string) => string;
15
- asText: (res: ServerResponse, code: number, body: string) => void;
5
+ appDist: string;
6
+ pathname: string;
7
+ res: ServerResponse;
8
+ ensureInsideRoot: (rootDir: string, candidatePath: string) => string;
9
+ asText: (res: ServerResponse, code: number, body: string) => void;
16
10
  }): void;
17
- //# sourceMappingURL=static-serving.d.ts.map
11
+ //# sourceMappingURL=static-serving.d.ts.map
@@ -2,4 +2,4 @@ export declare function ensureInsideRoot(rootDir: string, candidatePath: string)
2
2
  export declare function encodeEvalId(absPath: string, rootDir: string): string;
3
3
  export declare function decodeEvalId(id: string, rootDir: string): string;
4
4
  export declare function safeFileName(name: string): string;
5
- //# sourceMappingURL=store-utils.d.ts.map
5
+ //# sourceMappingURL=store-utils.d.ts.map
@@ -2,222 +2,206 @@ import type { ServerResponse } from 'node:http';
2
2
  import type { EvalConfig, ToolDef } from '@inspectr/mcplab-core';
3
3
  import { estimateToolDefinitionTokens, McpClientManager } from '@inspectr/mcplab-core';
4
4
  import type { AppSettings } from './types.js';
5
+ export { parseJsonFromAssistantText } from './assistant-common.js';
5
6
  import { type OAuthSessionManager } from './oauth-session-manager.js';
6
7
  type JobEvent = {
7
- type: 'started' | 'log' | 'completed' | 'error';
8
- ts: string;
9
- payload: Record<string, unknown>;
8
+ type: 'started' | 'log' | 'completed' | 'error';
9
+ ts: string;
10
+ payload: Record<string, unknown>;
10
11
  };
11
12
  export interface ToolAnalysisFinding {
12
- id: string;
13
- scope:
14
- | 'tool_name'
15
- | 'description'
16
- | 'schema'
17
- | 'ergonomics'
18
- | 'safety'
19
- | 'eval_readiness'
20
- | 'execution';
21
- severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
22
- title: string;
23
- detail: string;
24
- suggestion?: string;
13
+ id: string;
14
+ scope: 'tool_name' | 'description' | 'schema' | 'ergonomics' | 'safety' | 'eval_readiness' | 'execution';
15
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
16
+ title: string;
17
+ detail: string;
18
+ suggestion?: string;
25
19
  }
26
20
  interface ToolAnalysisSuggestedSchemaChange {
27
- type: 'description' | 'parameter' | 'required' | 'enum' | 'constraints' | 'examples' | 'naming';
28
- summary: string;
29
- before?: string;
30
- after?: string;
21
+ type: 'description' | 'parameter' | 'required' | 'enum' | 'constraints' | 'examples' | 'naming';
22
+ summary: string;
23
+ before?: string;
24
+ after?: string;
31
25
  }
32
26
  interface ToolAnalysisToolReport {
33
- serverName: string;
34
- toolName: string;
35
- publicToolName: string;
36
- title?: string;
37
- description?: string;
38
- inputSchema?: unknown;
39
- outputSchema?: unknown;
40
- safetyClassification: 'read_only' | 'unsafe_or_unknown';
41
- classificationReason: string;
42
- metadataReview?: {
43
- strengths: string[];
44
- issues: ToolAnalysisFinding[];
45
- suggestedDescription?: string;
46
- suggestedSchemaChanges: ToolAnalysisSuggestedSchemaChange[];
47
- evalReadinessNotes: string[];
48
- };
49
- deeperAnalysis?: {
50
- attempted: boolean;
51
- skippedReason?: string;
52
- sampleCalls: Array<{
53
- callIndex: number;
54
- arguments: unknown;
55
- ok: boolean;
56
- durationMs?: number;
57
- resultPreview?: string;
58
- error?: string;
59
- observations: string[];
60
- issues: ToolAnalysisFinding[];
61
- }>;
62
- overallObservations: string[];
63
- };
64
- overallRecommendations: string[];
27
+ serverName: string;
28
+ toolName: string;
29
+ publicToolName: string;
30
+ title?: string;
31
+ description?: string;
32
+ inputSchema?: unknown;
33
+ outputSchema?: unknown;
34
+ safetyClassification: 'read_only' | 'unsafe_or_unknown';
35
+ classificationReason: string;
36
+ metadataReview?: {
37
+ strengths: string[];
38
+ issues: ToolAnalysisFinding[];
39
+ suggestedDescription?: string;
40
+ suggestedSchemaChanges: ToolAnalysisSuggestedSchemaChange[];
41
+ evalReadinessNotes: string[];
42
+ };
43
+ deeperAnalysis?: {
44
+ attempted: boolean;
45
+ skippedReason?: string;
46
+ sampleCalls: Array<{
47
+ callIndex: number;
48
+ arguments: unknown;
49
+ ok: boolean;
50
+ durationMs?: number;
51
+ resultPreview?: string;
52
+ error?: string;
53
+ observations: string[];
54
+ issues: ToolAnalysisFinding[];
55
+ }>;
56
+ overallObservations: string[];
57
+ };
58
+ overallRecommendations: string[];
65
59
  }
66
60
  interface ToolAnalysisServerReport {
67
- serverName: string;
68
- toolCountDiscovered: number;
69
- toolCountAnalyzed: number;
70
- toolCountSkipped: number;
71
- warnings: string[];
72
- tools: ToolAnalysisToolReport[];
73
- tokenEstimate?: ReturnType<typeof estimateToolDefinitionTokens>;
61
+ serverName: string;
62
+ toolCountDiscovered: number;
63
+ toolCountAnalyzed: number;
64
+ toolCountSkipped: number;
65
+ warnings: string[];
66
+ tools: ToolAnalysisToolReport[];
67
+ tokenEstimate?: ReturnType<typeof estimateToolDefinitionTokens>;
74
68
  }
75
69
  export interface ToolAnalysisReport {
76
- schemaVersion: 1;
77
- createdAt: string;
78
- assistantAgentName: string;
79
- assistantAgentProvider?: string;
80
- assistantAgentModel: string;
81
- modes: {
82
- metadataReview: boolean;
83
- deeperAnalysis: boolean;
84
- };
85
- settings: {
86
- autoRunPolicy?: 'read_only_allowlist';
87
- sampleCallsPerTool?: number;
88
- toolCallTimeoutMs?: number;
89
- maxParallelTools?: number;
90
- };
91
- summary: {
92
- serversAnalyzed: number;
93
- toolsAnalyzed: number;
94
- toolsSkipped: number;
95
- issueCounts: {
96
- critical: number;
97
- high: number;
98
- medium: number;
99
- low: number;
100
- info: number;
70
+ schemaVersion: 1;
71
+ createdAt: string;
72
+ assistantAgentName: string;
73
+ assistantAgentProvider?: string;
74
+ assistantAgentModel: string;
75
+ modes: {
76
+ metadataReview: boolean;
77
+ deeperAnalysis: boolean;
78
+ };
79
+ settings: {
80
+ autoRunPolicy?: 'read_only_allowlist';
81
+ sampleCallsPerTool?: number;
82
+ toolCallTimeoutMs?: number;
83
+ maxParallelTools?: number;
84
+ };
85
+ summary: {
86
+ serversAnalyzed: number;
87
+ toolsAnalyzed: number;
88
+ toolsSkipped: number;
89
+ issueCounts: {
90
+ critical: number;
91
+ high: number;
92
+ medium: number;
93
+ low: number;
94
+ info: number;
95
+ };
101
96
  };
102
- };
103
- servers: ToolAnalysisServerReport[];
104
- findings: ToolAnalysisFinding[];
105
- mcpServerVersions?: Record<string, string | null>;
97
+ servers: ToolAnalysisServerReport[];
98
+ findings: ToolAnalysisFinding[];
99
+ mcpServerVersions?: Record<string, string | null>;
106
100
  }
107
101
  export interface ToolAnalysisJob {
108
- id: string;
109
- status: 'running' | 'completed' | 'error' | 'stopped';
110
- events: JobEvent[];
111
- clients: Set<ServerResponse>;
112
- abortController: AbortController;
113
- result?: ToolAnalysisReport;
114
- savedReportId?: string;
115
- savedReportPath?: string;
102
+ id: string;
103
+ status: 'running' | 'completed' | 'error' | 'stopped';
104
+ events: JobEvent[];
105
+ clients: Set<ServerResponse>;
106
+ abortController: AbortController;
107
+ result?: ToolAnalysisReport;
108
+ savedReportId?: string;
109
+ savedReportPath?: string;
116
110
  }
117
111
  interface ToolAnalysisToolContext {
118
- serverName: string;
119
- tool: ToolDef;
120
- safetyClassification: 'read_only' | 'unsafe_or_unknown';
121
- classificationReason: string;
112
+ serverName: string;
113
+ tool: ToolDef;
114
+ safetyClassification: 'read_only' | 'unsafe_or_unknown';
115
+ classificationReason: string;
122
116
  }
123
117
  interface ToolAnalysisMetadataPayload {
124
- serverName: string;
125
- toolName: string;
126
- title: string;
127
- description: string;
128
- inputSchema: unknown;
129
- outputSchema: unknown;
130
- projectGoal: string;
118
+ serverName: string;
119
+ toolName: string;
120
+ title: string;
121
+ description: string;
122
+ inputSchema: unknown;
123
+ outputSchema: unknown;
124
+ projectGoal: string;
131
125
  }
132
126
  interface ToolAnalysisSamplePlanPayload {
133
- serverName: string;
134
- toolName: string;
135
- title: string;
136
- description: string;
137
- inputSchema: unknown;
138
- outputSchema: unknown;
139
- maxCalls: number;
127
+ serverName: string;
128
+ toolName: string;
129
+ title: string;
130
+ description: string;
131
+ inputSchema: unknown;
132
+ outputSchema: unknown;
133
+ maxCalls: number;
140
134
  }
141
135
  interface ToolAnalysisExecutionReviewPayload {
142
- serverName: string;
143
- toolName: string;
144
- title: string;
145
- arguments: unknown;
146
- resultPreview: string;
147
- description: string;
148
- inputSchema: unknown;
149
- outputSchema: unknown;
136
+ serverName: string;
137
+ toolName: string;
138
+ title: string;
139
+ arguments: unknown;
140
+ resultPreview: string;
141
+ description: string;
142
+ inputSchema: unknown;
143
+ outputSchema: unknown;
150
144
  }
151
- export declare function classifyToolSafety(
152
- toolName: string,
153
- inputSchema?: unknown,
154
- annotations?: ToolDef['annotations']
155
- ): {
156
- safetyClassification: 'read_only' | 'unsafe_or_unknown';
157
- classificationReason: string;
145
+ export declare function classifyToolSafety(toolName: string, inputSchema?: unknown, annotations?: ToolDef['annotations']): {
146
+ safetyClassification: 'read_only' | 'unsafe_or_unknown';
147
+ classificationReason: string;
158
148
  };
159
- export declare function parseJsonFromAssistantText<T = unknown>(text: string): T;
160
149
  export declare function buildToolAnalysisMetadataPayload(params: {
161
- serverName: string;
162
- toolName: string;
163
- title?: string;
164
- description?: string;
165
- inputSchema?: unknown;
166
- outputSchema?: unknown;
150
+ serverName: string;
151
+ toolName: string;
152
+ title?: string;
153
+ description?: string;
154
+ inputSchema?: unknown;
155
+ outputSchema?: unknown;
167
156
  }): ToolAnalysisMetadataPayload;
168
157
  export declare function buildToolAnalysisSamplePlanPayload(params: {
169
- serverName: string;
170
- toolName: string;
171
- title?: string;
172
- description?: string;
173
- inputSchema?: unknown;
174
- outputSchema?: unknown;
175
- maxCalls: number;
158
+ serverName: string;
159
+ toolName: string;
160
+ title?: string;
161
+ description?: string;
162
+ inputSchema?: unknown;
163
+ outputSchema?: unknown;
164
+ maxCalls: number;
176
165
  }): ToolAnalysisSamplePlanPayload;
177
166
  export declare function buildToolAnalysisExecutionReviewPayload(params: {
178
- serverName: string;
179
- toolName: string;
180
- title?: string;
181
- arguments: unknown;
182
- resultPreview: string;
183
- description?: string;
184
- inputSchema?: unknown;
185
- outputSchema?: unknown;
167
+ serverName: string;
168
+ toolName: string;
169
+ title?: string;
170
+ arguments: unknown;
171
+ resultPreview: string;
172
+ description?: string;
173
+ inputSchema?: unknown;
174
+ outputSchema?: unknown;
186
175
  }): ToolAnalysisExecutionReviewPayload;
187
- export declare function discoverMcpToolsForServers(
188
- serversByName: EvalConfig['servers'],
189
- serverNames: string[],
190
- options?: {
176
+ export declare function discoverMcpToolsForServers(serversByName: EvalConfig['servers'], serverNames: string[], options?: {
191
177
  serverAuthHeaders?: Record<string, Record<string, string>>;
192
178
  tokenEstimateModel?: string;
193
- }
194
- ): Promise<{
195
- mcp: McpClientManager;
196
- servers: Array<{
197
- serverName: string;
198
- warnings: string[];
199
- tools: ToolAnalysisToolContext[];
200
- tokenEstimate: ReturnType<typeof estimateToolDefinitionTokens>;
201
- }>;
179
+ }): Promise<{
180
+ mcp: McpClientManager;
181
+ servers: Array<{
182
+ serverName: string;
183
+ warnings: string[];
184
+ tools: ToolAnalysisToolContext[];
185
+ tokenEstimate: ReturnType<typeof estimateToolDefinitionTokens>;
186
+ }>;
202
187
  }>;
203
188
  export declare function runToolAnalysisJob(params: {
204
- job: ToolAnalysisJob;
205
- settings: AppSettings;
206
- requestedAssistantAgentName?: string;
207
- serverNames: string[];
208
- oauthSessionManager: OAuthSessionManager;
209
- hostHeader?: string;
210
- selectedToolsByServer?: Record<string, string[]>;
211
- modes: {
212
- metadataReview: boolean;
213
- deeperAnalysis: boolean;
214
- };
215
- deeper: {
216
- autoRunPolicy: 'read_only_allowlist';
217
- sampleCallsPerTool: number;
218
- toolCallTimeoutMs: number;
219
- };
220
- maxParallelTools: number;
189
+ job: ToolAnalysisJob;
190
+ settings: AppSettings;
191
+ requestedAssistantAgentName?: string;
192
+ serverNames: string[];
193
+ oauthSessionManager: OAuthSessionManager;
194
+ hostHeader?: string;
195
+ selectedToolsByServer?: Record<string, string[]>;
196
+ modes: {
197
+ metadataReview: boolean;
198
+ deeperAnalysis: boolean;
199
+ };
200
+ deeper: {
201
+ autoRunPolicy: 'read_only_allowlist';
202
+ sampleCallsPerTool: number;
203
+ toolCallTimeoutMs: number;
204
+ };
205
+ maxParallelTools: number;
221
206
  }): Promise<void>;
222
- export {};
223
- //# sourceMappingURL=tool-analysis-domain.d.ts.map
207
+ //# sourceMappingURL=tool-analysis-domain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-analysis-domain.d.ts","sourceRoot":"","sources":["../../src/app-server/tool-analysis-domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-analysis-domain.d.ts","sourceRoot":"","sources":["../../src/app-server/tool-analysis-domain.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { chatWithAgent, estimateToolDefinitionTokens, McpClientManager } from '@inspectr/mcplab-core';
2
2
  import { addJobEvent } from './jobs.js';
3
3
  import { readLibraries } from './libraries-store.js';
4
- import { truncateJson } from './assistant-common.js';
4
+ import { parseJsonFromAssistantText, truncateJson } from './assistant-common.js';
5
+ export { parseJsonFromAssistantText } from './assistant-common.js';
5
6
  import { OAuthAuthorizationRequiredError } from './oauth-session-manager.js';
6
7
  import { pickDefaultAssistantAgentName, resolveAssistantAgentFromLibraries } from './scenario-assistant-domain.js';
7
8
  const TOOL_ANALYSIS_JSON_RESPONSE_TOOL = {
@@ -142,64 +143,6 @@ function normalizeToolAnalysisFinding(raw, fallbackPrefix, idx) {
142
143
  function clampStringArray(value, fallback = []) {
143
144
  return Array.isArray(value) ? value.map((v) => String(v)).filter(Boolean) : fallback;
144
145
  }
145
- function extractFirstBalancedJsonCandidate(text) {
146
- const starts = [];
147
- for (let i = 0; i < text.length; i += 1) {
148
- const ch = text[i];
149
- if (ch === '{')
150
- starts.push({ idx: i, open: '{', close: '}' });
151
- if (ch === '[')
152
- starts.push({ idx: i, open: '[', close: ']' });
153
- }
154
- for (const start of starts) {
155
- let depth = 0;
156
- let inString = false;
157
- let escaped = false;
158
- for (let i = start.idx; i < text.length; i += 1) {
159
- const ch = text[i];
160
- if (inString) {
161
- if (escaped) {
162
- escaped = false;
163
- continue;
164
- }
165
- if (ch === '\\') {
166
- escaped = true;
167
- continue;
168
- }
169
- if (ch === '"')
170
- inString = false;
171
- continue;
172
- }
173
- if (ch === '"') {
174
- inString = true;
175
- continue;
176
- }
177
- if (ch === start.open)
178
- depth += 1;
179
- if (ch === start.close) {
180
- depth -= 1;
181
- if (depth === 0)
182
- return text.slice(start.idx, i + 1);
183
- }
184
- }
185
- }
186
- return null;
187
- }
188
- export function parseJsonFromAssistantText(text) {
189
- const cleaned = text.trim();
190
- try {
191
- return JSON.parse(cleaned);
192
- }
193
- catch {
194
- const fenced = cleaned.match(/```json\s*([\s\S]+?)```/i) ?? cleaned.match(/```\s*([\s\S]+?)```/i);
195
- if (fenced)
196
- return JSON.parse(fenced[1].trim());
197
- const candidate = extractFirstBalancedJsonCandidate(cleaned);
198
- if (candidate)
199
- return JSON.parse(candidate);
200
- throw new Error('Assistant returned invalid JSON');
201
- }
202
- }
203
146
  function parseJsonFromToolCalls(response) {
204
147
  if (!Array.isArray(response.tool_calls) || response.tool_calls.length === 0)
205
148
  return undefined;