@inspectr/mcplab 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/README.md +762 -0
  2. package/dist/app/android-chrome-192x192.png +0 -0
  3. package/dist/app/android-chrome-512x512.png +0 -0
  4. package/dist/app/apple-touch-icon.png +0 -0
  5. package/dist/app/assets/index-DT-Z4AVG.js +249 -0
  6. package/dist/app/assets/index-EP4WAY8u.css +1 -0
  7. package/dist/app/favicon-16x16.png +0 -0
  8. package/dist/app/favicon-32x32.png +0 -0
  9. package/dist/app/favicon.svg +13 -0
  10. package/dist/app/index.html +26 -0
  11. package/dist/app/inspectr_logo_color.svg +9 -0
  12. package/dist/app/mcp.png +0 -0
  13. package/dist/app/mcp.svg +1 -0
  14. package/dist/app/robots.txt +14 -0
  15. package/dist/app/site.webmanifest +1 -0
  16. package/dist/app-server/app-context.d.ts +164 -0
  17. package/dist/app-server/app-context.d.ts.map +1 -0
  18. package/dist/app-server/app-context.js +2 -0
  19. package/dist/app-server/app-context.js.map +1 -0
  20. package/dist/app-server/assistant-common.d.ts +41 -0
  21. package/dist/app-server/assistant-common.d.ts.map +1 -0
  22. package/dist/app-server/assistant-common.js +104 -0
  23. package/dist/app-server/assistant-common.js.map +1 -0
  24. package/dist/app-server/config-store.d.ts +15 -0
  25. package/dist/app-server/config-store.d.ts.map +1 -0
  26. package/dist/app-server/config-store.js +67 -0
  27. package/dist/app-server/config-store.js.map +1 -0
  28. package/dist/app-server/dev-mcp.d.ts +6 -0
  29. package/dist/app-server/dev-mcp.d.ts.map +1 -0
  30. package/dist/app-server/dev-mcp.js +71 -0
  31. package/dist/app-server/dev-mcp.js.map +1 -0
  32. package/dist/app-server/evals-routes.d.ts +22 -0
  33. package/dist/app-server/evals-routes.d.ts.map +1 -0
  34. package/dist/app-server/evals-routes.js +135 -0
  35. package/dist/app-server/evals-routes.js.map +1 -0
  36. package/dist/app-server/http.d.ts +5 -0
  37. package/dist/app-server/http.d.ts.map +1 -0
  38. package/dist/app-server/http.js +31 -0
  39. package/dist/app-server/http.js.map +1 -0
  40. package/dist/app-server/index.d.ts +3 -0
  41. package/dist/app-server/index.d.ts.map +1 -0
  42. package/dist/app-server/index.js +2 -0
  43. package/dist/app-server/index.js.map +1 -0
  44. package/dist/app-server/jobs.d.ts +15 -0
  45. package/dist/app-server/jobs.d.ts.map +1 -0
  46. package/dist/app-server/jobs.js +11 -0
  47. package/dist/app-server/jobs.js.map +1 -0
  48. package/dist/app-server/libraries-store.d.ts +15 -0
  49. package/dist/app-server/libraries-store.d.ts.map +1 -0
  50. package/dist/app-server/libraries-store.js +61 -0
  51. package/dist/app-server/libraries-store.js.map +1 -0
  52. package/dist/app-server/markdown-reports.d.ts +12 -0
  53. package/dist/app-server/markdown-reports.d.ts.map +1 -0
  54. package/dist/app-server/markdown-reports.js +145 -0
  55. package/dist/app-server/markdown-reports.js.map +1 -0
  56. package/dist/app-server/oauth-debugger-domain.d.ts +230 -0
  57. package/dist/app-server/oauth-debugger-domain.d.ts.map +1 -0
  58. package/dist/app-server/oauth-debugger-domain.js +1098 -0
  59. package/dist/app-server/oauth-debugger-domain.js.map +1 -0
  60. package/dist/app-server/oauth-debugger.d.ts +20 -0
  61. package/dist/app-server/oauth-debugger.d.ts.map +1 -0
  62. package/dist/app-server/oauth-debugger.js +193 -0
  63. package/dist/app-server/oauth-debugger.js.map +1 -0
  64. package/dist/app-server/provider-models.d.ts +8 -0
  65. package/dist/app-server/provider-models.d.ts.map +1 -0
  66. package/dist/app-server/provider-models.js +60 -0
  67. package/dist/app-server/provider-models.js.map +1 -0
  68. package/dist/app-server/result-assistant-domain.d.ts +87 -0
  69. package/dist/app-server/result-assistant-domain.d.ts.map +1 -0
  70. package/dist/app-server/result-assistant-domain.js +212 -0
  71. package/dist/app-server/result-assistant-domain.js.map +1 -0
  72. package/dist/app-server/result-assistant.d.ts +22 -0
  73. package/dist/app-server/result-assistant.d.ts.map +1 -0
  74. package/dist/app-server/result-assistant.js +328 -0
  75. package/dist/app-server/result-assistant.js.map +1 -0
  76. package/dist/app-server/router.d.ts +4 -0
  77. package/dist/app-server/router.d.ts.map +1 -0
  78. package/dist/app-server/router.js +374 -0
  79. package/dist/app-server/router.js.map +1 -0
  80. package/dist/app-server/runs-routes.d.ts +44 -0
  81. package/dist/app-server/runs-routes.d.ts.map +1 -0
  82. package/dist/app-server/runs-routes.js +555 -0
  83. package/dist/app-server/runs-routes.js.map +1 -0
  84. package/dist/app-server/runs-store.d.ts +23 -0
  85. package/dist/app-server/runs-store.d.ts.map +1 -0
  86. package/dist/app-server/runs-store.js +84 -0
  87. package/dist/app-server/runs-store.js.map +1 -0
  88. package/dist/app-server/scenario-assistant-domain.d.ts +162 -0
  89. package/dist/app-server/scenario-assistant-domain.d.ts.map +1 -0
  90. package/dist/app-server/scenario-assistant-domain.js +269 -0
  91. package/dist/app-server/scenario-assistant-domain.js.map +1 -0
  92. package/dist/app-server/scenario-assistant.d.ts +29 -0
  93. package/dist/app-server/scenario-assistant.d.ts.map +1 -0
  94. package/dist/app-server/scenario-assistant.js +246 -0
  95. package/dist/app-server/scenario-assistant.js.map +1 -0
  96. package/dist/app-server/settings-store.d.ts +4 -0
  97. package/dist/app-server/settings-store.d.ts.map +1 -0
  98. package/dist/app-server/settings-store.js +32 -0
  99. package/dist/app-server/settings-store.js.map +1 -0
  100. package/dist/app-server/snapshots-routes.d.ts +24 -0
  101. package/dist/app-server/snapshots-routes.d.ts.map +1 -0
  102. package/dist/app-server/snapshots-routes.js +82 -0
  103. package/dist/app-server/snapshots-routes.js.map +1 -0
  104. package/dist/app-server/static-serving.d.ts +17 -0
  105. package/dist/app-server/static-serving.d.ts.map +1 -0
  106. package/dist/app-server/static-serving.js +64 -0
  107. package/dist/app-server/static-serving.js.map +1 -0
  108. package/dist/app-server/store-utils.d.ts +5 -0
  109. package/dist/app-server/store-utils.d.ts.map +1 -0
  110. package/dist/app-server/store-utils.js +26 -0
  111. package/dist/app-server/store-utils.js.map +1 -0
  112. package/dist/app-server/tool-analysis-domain.d.ts +146 -0
  113. package/dist/app-server/tool-analysis-domain.d.ts.map +1 -0
  114. package/dist/app-server/tool-analysis-domain.js +556 -0
  115. package/dist/app-server/tool-analysis-domain.js.map +1 -0
  116. package/dist/app-server/tool-analysis-storage.d.ts +41 -0
  117. package/dist/app-server/tool-analysis-storage.d.ts.map +1 -0
  118. package/dist/app-server/tool-analysis-storage.js +110 -0
  119. package/dist/app-server/tool-analysis-storage.js.map +1 -0
  120. package/dist/app-server/tool-analysis.d.ts +22 -0
  121. package/dist/app-server/tool-analysis.d.ts.map +1 -0
  122. package/dist/app-server/tool-analysis.js +271 -0
  123. package/dist/app-server/tool-analysis.js.map +1 -0
  124. package/dist/app-server/types.d.ts +28 -0
  125. package/dist/app-server/types.d.ts.map +1 -0
  126. package/dist/app-server/types.js +2 -0
  127. package/dist/app-server/types.js.map +1 -0
  128. package/dist/cli.d.ts +3 -0
  129. package/dist/cli.d.ts.map +1 -0
  130. package/dist/cli.js +544 -0
  131. package/dist/cli.js.map +1 -0
  132. package/dist/snapshot.d.ts +80 -0
  133. package/dist/snapshot.d.ts.map +1 -0
  134. package/dist/snapshot.js +401 -0
  135. package/dist/snapshot.js.map +1 -0
  136. package/package.json +55 -0
@@ -0,0 +1,84 @@
1
+ import { existsSync, readFileSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { ensureInsideRoot } from './store-utils.js';
4
+ export function listRuns(runsDir) {
5
+ if (!existsSync(runsDir))
6
+ return [];
7
+ const runDirs = readdirSync(runsDir).map((name) => ensureInsideRoot(runsDir, join(runsDir, name)));
8
+ const summaries = [];
9
+ for (const dir of runDirs) {
10
+ const resultsPath = join(dir, 'results.json');
11
+ if (!existsSync(resultsPath))
12
+ continue;
13
+ try {
14
+ const results = JSON.parse(readFileSync(resultsPath, 'utf8'));
15
+ summaries.push({
16
+ runId: results.metadata.run_id,
17
+ path: dir,
18
+ timestamp: results.metadata.timestamp,
19
+ configHash: results.metadata.config_hash,
20
+ totalScenarios: results.summary.total_scenarios,
21
+ totalRuns: results.summary.total_runs,
22
+ passRate: results.summary.pass_rate,
23
+ avgToolCalls: results.summary.avg_tool_calls_per_run,
24
+ avgLatencyMs: results.summary.avg_tool_latency_ms ?? 0
25
+ });
26
+ }
27
+ catch {
28
+ // Ignore malformed runs.
29
+ }
30
+ }
31
+ return summaries.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
32
+ }
33
+ export function getRunResults(runId, runsDir) {
34
+ const runDir = ensureInsideRoot(runsDir, join(runsDir, runId));
35
+ const resultsPath = ensureInsideRoot(runsDir, join(runDir, 'results.json'));
36
+ if (!existsSync(resultsPath))
37
+ throw new Error(`Run not found: ${runId}`);
38
+ return JSON.parse(readFileSync(resultsPath, 'utf8'));
39
+ }
40
+ export function selectScenarioIds(config, requestedScenarioIds) {
41
+ if (!requestedScenarioIds || requestedScenarioIds.length === 0)
42
+ return config;
43
+ const requested = requestedScenarioIds.map((id) => id.trim()).filter(Boolean);
44
+ if (requested.length === 0)
45
+ return config;
46
+ const requestedSet = new Set(requested);
47
+ const scenarios = config.scenarios.filter((scenario) => requestedSet.has(scenario.id));
48
+ const foundSet = new Set(scenarios.map((scenario) => scenario.id));
49
+ const missing = requested.filter((id) => !foundSet.has(id));
50
+ if (missing.length > 0) {
51
+ throw new Error(`Unknown scenarios: ${missing.join(', ')}. Available: ${config.scenarios
52
+ .map((s) => s.id)
53
+ .join(', ')}`);
54
+ }
55
+ return { ...config, scenarios };
56
+ }
57
+ export function getScenarioRunTraceRecords(runId, runsDir) {
58
+ const runDir = ensureInsideRoot(runsDir, join(runsDir, runId));
59
+ const tracePath = ensureInsideRoot(runsDir, join(runDir, 'trace.jsonl'));
60
+ if (!existsSync(tracePath))
61
+ return [];
62
+ const lines = readFileSync(tracePath, 'utf8')
63
+ .split('\n')
64
+ .map((line) => line.trim())
65
+ .filter(Boolean);
66
+ const records = [];
67
+ for (const line of lines) {
68
+ try {
69
+ const parsed = JSON.parse(line);
70
+ if (parsed &&
71
+ parsed.type === 'scenario_run' &&
72
+ parsed.trace_version === 3 &&
73
+ typeof parsed.scenario_id === 'string' &&
74
+ typeof parsed.agent === 'string') {
75
+ records.push(parsed);
76
+ }
77
+ }
78
+ catch {
79
+ // Ignore malformed lines.
80
+ }
81
+ }
82
+ return records;
83
+ }
84
+ //# sourceMappingURL=runs-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs-store.js","sourceRoot":"","sources":["../../src/app-server/runs-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ import type { AgentConfig, EvalConfig, LlmMessage, ToolDef } from '@inspectr/mcplab-core';
2
+ import { McpClientManager } from '@inspectr/mcplab-core';
3
+ import { readLibraries } from './libraries-store.js';
4
+ export { truncateJson } from './assistant-common.js';
5
+ interface ScenarioAssistantContextInput {
6
+ configSnapshotPolicy?: {
7
+ enabled?: boolean;
8
+ mode?: 'warn' | 'fail_on_drift';
9
+ baselineSnapshotId?: string;
10
+ };
11
+ scenario: {
12
+ id: string;
13
+ name?: string;
14
+ prompt: string;
15
+ serverNames: string[];
16
+ evalRules: Array<{
17
+ type: string;
18
+ value: string;
19
+ }>;
20
+ extractRules: Array<{
21
+ name: string;
22
+ pattern: string;
23
+ }>;
24
+ snapshotEval?: {
25
+ enabled?: boolean;
26
+ baselineSnapshotId?: string;
27
+ };
28
+ };
29
+ availableServers?: Array<{
30
+ name: string;
31
+ url?: string;
32
+ }>;
33
+ availableAgents?: Array<{
34
+ name: string;
35
+ provider: string;
36
+ model: string;
37
+ }>;
38
+ }
39
+ interface ScenarioAssistantSuggestionBundle {
40
+ prompt?: {
41
+ replacement: string;
42
+ rationale?: string;
43
+ };
44
+ evalRules?: {
45
+ replacement: Array<{
46
+ type: string;
47
+ value: string;
48
+ }>;
49
+ rationale?: string;
50
+ };
51
+ extractRules?: {
52
+ replacement: Array<{
53
+ name: string;
54
+ pattern: string;
55
+ }>;
56
+ rationale?: string;
57
+ };
58
+ snapshotEval?: {
59
+ patch: {
60
+ enabled?: boolean;
61
+ baselineSnapshotId?: string;
62
+ };
63
+ rationale?: string;
64
+ };
65
+ notes?: string[];
66
+ }
67
+ interface AssistantPendingToolCall {
68
+ id: string;
69
+ server: string;
70
+ tool: string;
71
+ publicToolName: string;
72
+ arguments: unknown;
73
+ status: 'pending' | 'approved' | 'denied' | 'error';
74
+ createdAt: string;
75
+ resultPreview?: string;
76
+ error?: string;
77
+ }
78
+ interface AssistantChatMessage {
79
+ id: string;
80
+ role: 'user' | 'assistant' | 'tool' | 'system';
81
+ text: string;
82
+ createdAt: string;
83
+ suggestions?: ScenarioAssistantSuggestionBundle;
84
+ pendingToolCallId?: string;
85
+ toolRequestServer?: string;
86
+ toolRequestName?: string;
87
+ toolRequestPublicName?: string;
88
+ }
89
+ export interface ScenarioAssistantSession {
90
+ id: string;
91
+ createdAt: number;
92
+ lastTouchedAt: number;
93
+ configPath?: string;
94
+ selectedAssistantAgentName: string;
95
+ context: ScenarioAssistantContextInput;
96
+ agentConfig: AgentConfig;
97
+ mcp: McpClientManager;
98
+ tools: ToolDef[];
99
+ toolPublicMap: Map<
100
+ string,
101
+ {
102
+ server: string;
103
+ tool: string;
104
+ }
105
+ >;
106
+ pendingToolCalls: AssistantPendingToolCall[];
107
+ chatMessages: AssistantChatMessage[];
108
+ llmMessages: LlmMessage[];
109
+ warnings: string[];
110
+ systemPromptCache?: string;
111
+ }
112
+ export declare function cleanupAssistantSessions(
113
+ sessions: Map<string, ScenarioAssistantSession>,
114
+ now?: number
115
+ ): void;
116
+ export declare function touchAssistantSession(session: ScenarioAssistantSession): void;
117
+ export declare function assistantSessionView(session: ScenarioAssistantSession): {
118
+ id: string;
119
+ createdAt: string;
120
+ updatedAt: string;
121
+ selectedAssistantAgentName: string;
122
+ model: string;
123
+ provider: 'openai' | 'anthropic' | 'azure_openai';
124
+ warnings: string[];
125
+ toolsLoaded: number;
126
+ toolServers: string[];
127
+ messages: AssistantChatMessage[];
128
+ pendingToolCalls: AssistantPendingToolCall[];
129
+ };
130
+ export declare function preloadAssistantTools(
131
+ session: ScenarioAssistantSession,
132
+ serversByName: Record<string, EvalConfig['servers'][string]>,
133
+ selectedServerNames: string[]
134
+ ): Promise<void>;
135
+ export declare function continueAssistantTurn(session: ScenarioAssistantSession): Promise<{
136
+ session: ReturnType<typeof assistantSessionView>;
137
+ response: {
138
+ type: 'assistant_message' | 'tool_call_request';
139
+ text: string;
140
+ suggestions?: ScenarioAssistantSuggestionBundle;
141
+ pendingToolCall?: AssistantPendingToolCall;
142
+ };
143
+ }>;
144
+ export declare function executeAssistantToolCall(
145
+ session: ScenarioAssistantSession,
146
+ pending: AssistantPendingToolCall
147
+ ): Promise<unknown>;
148
+ export declare function summarizeToolResultForAssistant(result: unknown): string;
149
+ export declare function resolveAssistantAgentFromConfig(
150
+ config: EvalConfig,
151
+ selectedAssistantAgentName: string
152
+ ): AgentConfig;
153
+ export declare function resolveAssistantAgentFromLibraries(
154
+ libraries: ReturnType<typeof readLibraries>,
155
+ selectedAssistantAgentName: string
156
+ ): AgentConfig;
157
+ export declare function pickDefaultAssistantAgentName(params: {
158
+ requested?: string;
159
+ settingsDefault?: string;
160
+ agentNames: string[];
161
+ }): string;
162
+ //# sourceMappingURL=scenario-assistant-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-assistant-domain.d.ts","sourceRoot":"","sources":["../../src/app-server/scenario-assistant-domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,269 @@
1
+ import { chatWithJsonRetry, cleanupSessionsByTtl, makeAssistantToolPublicName, newAssistantEntityId, touchSession, truncateJson, withTimeout } from './assistant-common.js';
2
+ export { truncateJson } from './assistant-common.js';
3
+ const SCENARIO_ASSISTANT_SESSION_TTL_MS = 30 * 60 * 1000;
4
+ const SCENARIO_ASSISTANT_MAX_TOOL_CALLS_PER_TURN = 3;
5
+ const SCENARIO_ASSISTANT_TOOL_RESULT_PREVIEW_CHARS = 4000;
6
+ export function cleanupAssistantSessions(sessions, now = Date.now()) {
7
+ cleanupSessionsByTtl(sessions, SCENARIO_ASSISTANT_SESSION_TTL_MS, now);
8
+ }
9
+ export function touchAssistantSession(session) {
10
+ touchSession(session);
11
+ }
12
+ export function assistantSessionView(session) {
13
+ return {
14
+ id: session.id,
15
+ createdAt: new Date(session.createdAt).toISOString(),
16
+ updatedAt: new Date(session.lastTouchedAt).toISOString(),
17
+ selectedAssistantAgentName: session.selectedAssistantAgentName,
18
+ model: session.agentConfig.model,
19
+ provider: session.agentConfig.provider,
20
+ warnings: session.warnings,
21
+ toolsLoaded: session.tools.length,
22
+ toolServers: Array.from(new Set(session.tools.map((tool) => tool.name.split('__')[0]))),
23
+ messages: session.chatMessages,
24
+ pendingToolCalls: session.pendingToolCalls.filter((call) => call.status === 'pending')
25
+ };
26
+ }
27
+ function assistantSystemPrompt(session) {
28
+ if (session.systemPromptCache)
29
+ return session.systemPromptCache;
30
+ const { scenario, configSnapshotPolicy } = session.context;
31
+ const toolLines = session.tools.map((tool) => {
32
+ const mapping = session.toolPublicMap.get(tool.name);
33
+ const schemaText = tool.inputSchema ? truncateJson(tool.inputSchema, 500) : '{}';
34
+ return `- ${tool.name} (server=${mapping?.server ?? 'unknown'}, tool=${mapping?.tool ?? tool.name}) schema=${schemaText}`;
35
+ });
36
+ const prompt = [
37
+ 'You are a Scenario Authoring Assistant for MCP evaluation scenarios.',
38
+ 'Goal: help the user author deterministic scenario prompt, Checks (pass/fail), Value Capture Rules, and snapshot settings.',
39
+ 'Use the available MCP tools and schemas to ground suggestions.',
40
+ 'If you need live MCP information, call a tool and wait for approval.',
41
+ 'Use user-facing terminology in your text responses: "Checks" and "Value Capture Rules" (not "eval rules" / "extract rules").',
42
+ 'Respond ONLY as JSON with one of these envelopes:',
43
+ `{"type":"assistant_message","text":"...","suggestions":{...optional...}}`,
44
+ `{"type":"tool_call_request","text":"...","toolCall":{"name":"PUBLIC_TOOL_NAME","arguments":{}},"suggestions":{...optional...}}`,
45
+ 'For suggestions, use keys: prompt, evalRules, extractRules, snapshotEval, notes.',
46
+ 'prompt: { replacement: string, rationale?: string }',
47
+ 'evalRules: { replacement: [{ type, value }...], rationale?: string }',
48
+ 'extractRules: { replacement: [{ name, pattern }...], rationale?: string }',
49
+ 'snapshotEval: { patch: { enabled?: boolean, baselineSnapshotId?: string }, rationale?: string }',
50
+ 'If you propose any edits to the scenario (prompt, Checks, Value Capture Rules, or snapshot settings), you MUST include the corresponding structured suggestions payload.',
51
+ 'Do not describe "suggested updates" in text only. Include suggestions so the UI can render Apply actions.',
52
+ 'Keep rule types limited to: required_tool, forbidden_tool, response_contains, response_not_contains.',
53
+ 'Ask clarifying questions if the scenario intent is unclear.',
54
+ `Scenario context: ${JSON.stringify({
55
+ id: scenario.id,
56
+ name: scenario.name ?? '',
57
+ prompt: scenario.prompt,
58
+ serverNames: scenario.serverNames,
59
+ evalRules: scenario.evalRules,
60
+ extractRules: scenario.extractRules,
61
+ snapshotEval: scenario.snapshotEval ?? null,
62
+ configSnapshotPolicy: configSnapshotPolicy ?? null
63
+ })}`,
64
+ toolLines.length > 0
65
+ ? `Available MCP tools:\n${toolLines.join('\n')}`
66
+ : 'No MCP tools available.'
67
+ ].join('\n');
68
+ session.systemPromptCache = prompt;
69
+ return prompt;
70
+ }
71
+ function formatAssistantMcpPreloadError(serverName, error) {
72
+ const raw = error instanceof Error ? error.message : String(error);
73
+ const htmlErrorMatch = raw.match(/Error code\s+(\d{3})/i) ??
74
+ raw.match(/<title>[^<]*\b(\d{3})\b[^<]*<\/title>/i) ??
75
+ raw.match(/\b(502|503|504)\b/);
76
+ const cloudflare = /cloudflare/i.test(raw);
77
+ if (/<html/i.test(raw) || /<!doctype html/i.test(raw)) {
78
+ const code = htmlErrorMatch?.[1];
79
+ const provider = cloudflare ? ' (Cloudflare)' : '';
80
+ return `Scenario Assistant MCP preload failed for server '${serverName}': Upstream MCP endpoint returned an HTML error page${code ? ` (${code})` : ''}${provider}. Check that the MCP server is reachable and healthy.`;
81
+ }
82
+ return `Scenario Assistant MCP preload failed for server '${serverName}': ${raw}`;
83
+ }
84
+ export async function preloadAssistantTools(session, serversByName, selectedServerNames) {
85
+ const usedNames = new Set();
86
+ for (const serverName of selectedServerNames) {
87
+ const server = serversByName[serverName];
88
+ if (!server) {
89
+ session.warnings.push(`Scenario Assistant: server '${serverName}' not found in config.`);
90
+ continue;
91
+ }
92
+ try {
93
+ await session.mcp.connectAll({ [serverName]: server });
94
+ const tools = await session.mcp.listTools(serverName);
95
+ for (const tool of tools) {
96
+ const publicName = makeAssistantToolPublicName(serverName, tool.name, usedNames);
97
+ session.toolPublicMap.set(publicName, { server: serverName, tool: tool.name });
98
+ session.tools.push({
99
+ ...tool,
100
+ name: publicName,
101
+ description: `${tool.description ?? ''}\n[server=${serverName} tool=${tool.name}]`.trim()
102
+ });
103
+ }
104
+ }
105
+ catch (error) {
106
+ session.warnings.push(formatAssistantMcpPreloadError(serverName, error));
107
+ }
108
+ }
109
+ }
110
+ function parseAssistantModelOutput(text) {
111
+ const cleaned = text.trim();
112
+ let parsed;
113
+ try {
114
+ parsed = JSON.parse(cleaned);
115
+ }
116
+ catch {
117
+ const fenced = cleaned.match(/```json\s*([\s\S]+?)```/i) ?? cleaned.match(/```\s*([\s\S]+?)```/i);
118
+ if (fenced) {
119
+ parsed = JSON.parse(fenced[1]);
120
+ }
121
+ else {
122
+ throw new Error('Assistant returned invalid JSON');
123
+ }
124
+ }
125
+ if (!parsed || typeof parsed !== 'object') {
126
+ throw new Error('Assistant response must be a JSON object');
127
+ }
128
+ const parsedObj = parsed;
129
+ if (parsedObj.type !== 'assistant_message' && parsedObj.type !== 'tool_call_request') {
130
+ throw new Error("Assistant response type must be 'assistant_message' or 'tool_call_request'");
131
+ }
132
+ if (typeof parsedObj.text !== 'string') {
133
+ throw new Error('Assistant response missing text');
134
+ }
135
+ if (parsedObj.type === 'tool_call_request') {
136
+ if (!parsedObj.toolCall || typeof parsedObj.toolCall !== 'object') {
137
+ throw new Error('Assistant tool_call_request missing toolCall');
138
+ }
139
+ if (typeof parsedObj.toolCall.name !== 'string' || !parsedObj.toolCall.name.trim()) {
140
+ throw new Error('Assistant toolCall.name must be a non-empty string');
141
+ }
142
+ }
143
+ return parsedObj;
144
+ }
145
+ function safeAssistantTextFromResponse(rawText) {
146
+ try {
147
+ return parseAssistantModelOutput(rawText).text;
148
+ }
149
+ catch {
150
+ return rawText.trim();
151
+ }
152
+ }
153
+ async function assistantChatModel(session) {
154
+ return chatWithJsonRetry({
155
+ agent: session.agentConfig,
156
+ messages: session.llmMessages,
157
+ tools: session.tools,
158
+ system: assistantSystemPrompt(session),
159
+ parse: parseAssistantModelOutput,
160
+ toolCallFallbackText: (toolName) => `I need to call '${toolName}' to help answer.`
161
+ });
162
+ }
163
+ export async function continueAssistantTurn(session) {
164
+ const pendingCountForTurn = session.pendingToolCalls.filter((c) => c.status === 'pending').length;
165
+ if (pendingCountForTurn > SCENARIO_ASSISTANT_MAX_TOOL_CALLS_PER_TURN) {
166
+ throw new Error('Scenario Assistant exceeded maximum pending tool calls for this turn');
167
+ }
168
+ const modelOutput = await assistantChatModel(session);
169
+ if (modelOutput.type === 'tool_call_request') {
170
+ const requested = modelOutput.toolCall;
171
+ const mapping = session.toolPublicMap.get(requested.name);
172
+ if (!mapping) {
173
+ throw new Error(`Scenario Assistant requested unknown tool '${requested.name}'. Available tools: ${session.tools.map((t) => t.name).join(', ')}`);
174
+ }
175
+ const pending = {
176
+ id: newAssistantEntityId('satc'),
177
+ server: mapping.server,
178
+ tool: mapping.tool,
179
+ publicToolName: requested.name,
180
+ arguments: requested.arguments ?? {},
181
+ status: 'pending',
182
+ createdAt: new Date().toISOString()
183
+ };
184
+ session.pendingToolCalls.push(pending);
185
+ session.chatMessages.push({
186
+ id: newAssistantEntityId('msg'),
187
+ role: 'assistant',
188
+ text: modelOutput.text,
189
+ createdAt: new Date().toISOString(),
190
+ suggestions: modelOutput.suggestions,
191
+ pendingToolCallId: pending.id,
192
+ toolRequestServer: pending.server,
193
+ toolRequestName: pending.tool,
194
+ toolRequestPublicName: pending.publicToolName
195
+ });
196
+ session.llmMessages.push({
197
+ role: 'assistant',
198
+ content: modelOutput.text,
199
+ tool_calls: [
200
+ {
201
+ id: pending.id,
202
+ name: pending.publicToolName,
203
+ arguments: pending.arguments
204
+ }
205
+ ]
206
+ });
207
+ touchAssistantSession(session);
208
+ return {
209
+ session: assistantSessionView(session),
210
+ response: {
211
+ type: 'tool_call_request',
212
+ text: modelOutput.text,
213
+ suggestions: modelOutput.suggestions,
214
+ pendingToolCall: pending
215
+ }
216
+ };
217
+ }
218
+ session.chatMessages.push({
219
+ id: newAssistantEntityId('msg'),
220
+ role: 'assistant',
221
+ text: modelOutput.text,
222
+ createdAt: new Date().toISOString(),
223
+ suggestions: modelOutput.suggestions
224
+ });
225
+ session.llmMessages.push({
226
+ role: 'assistant',
227
+ content: JSON.stringify(modelOutput)
228
+ });
229
+ touchAssistantSession(session);
230
+ return {
231
+ session: assistantSessionView(session),
232
+ response: {
233
+ type: 'assistant_message',
234
+ text: modelOutput.text,
235
+ suggestions: modelOutput.suggestions
236
+ }
237
+ };
238
+ }
239
+ export async function executeAssistantToolCall(session, pending) {
240
+ const timeoutMs = 10_000;
241
+ return withTimeout(() => session.mcp.callTool(pending.server, pending.tool, pending.arguments), timeoutMs, `Tool call timed out after ${timeoutMs}ms`);
242
+ }
243
+ export function summarizeToolResultForAssistant(result) {
244
+ return truncateJson(result, SCENARIO_ASSISTANT_TOOL_RESULT_PREVIEW_CHARS);
245
+ }
246
+ export function resolveAssistantAgentFromConfig(config, selectedAssistantAgentName) {
247
+ const agent = config.agents[selectedAssistantAgentName];
248
+ if (!agent) {
249
+ throw new Error(`Scenario Assistant agent '${selectedAssistantAgentName}' not found in resolved config agents.`);
250
+ }
251
+ return agent;
252
+ }
253
+ export function resolveAssistantAgentFromLibraries(libraries, selectedAssistantAgentName) {
254
+ const agent = libraries.agents[selectedAssistantAgentName];
255
+ if (!agent) {
256
+ throw new Error(`Scenario Assistant agent '${selectedAssistantAgentName}' not found in library agents. Configure the central Scenario Assistant Agent in Libraries > Scenarios.`);
257
+ }
258
+ return agent;
259
+ }
260
+ export function pickDefaultAssistantAgentName(params) {
261
+ const requested = params.requested?.trim();
262
+ if (requested)
263
+ return requested;
264
+ const settingsDefault = params.settingsDefault?.trim();
265
+ if (settingsDefault)
266
+ return settingsDefault;
267
+ return params.agentNames[0] ?? '';
268
+ }
269
+ //# sourceMappingURL=scenario-assistant-domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-assistant-domain.js","sourceRoot":"","sources":["../../src/app-server/scenario-assistant-domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { AppRouteDeps, AppRouteRequestContext, AssistantSessionsMap } from './app-context.js';
3
+ export type ScenarioAssistantRouteDeps = Pick<
4
+ AppRouteDeps,
5
+ | 'parseBody'
6
+ | 'asJson'
7
+ | 'cleanupAssistantSessions'
8
+ | 'touchAssistantSession'
9
+ | 'assistantSessionView'
10
+ | 'ensureInsideRoot'
11
+ | 'readLibraries'
12
+ | 'pickDefaultAssistantAgentName'
13
+ | 'resolveAssistantAgentFromConfig'
14
+ | 'resolveAssistantAgentFromLibraries'
15
+ | 'preloadAssistantTools'
16
+ | 'continueAssistantTurn'
17
+ | 'executeAssistantToolCall'
18
+ | 'summarizeToolResultForAssistant'
19
+ >;
20
+ export declare function handleScenarioAssistantRoutes(params: {
21
+ req: IncomingMessage;
22
+ res: ServerResponse;
23
+ pathname: string;
24
+ method: string;
25
+ settings: AppRouteRequestContext['settings'];
26
+ assistantSessions: AssistantSessionsMap;
27
+ deps: ScenarioAssistantRouteDeps;
28
+ }): Promise<boolean>;
29
+ //# sourceMappingURL=scenario-assistant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenario-assistant.d.ts","sourceRoot":"","sources":["../../src/app-server/scenario-assistant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAQjE,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGnG,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,YAAY,EACV,WAAW,GACX,QAAQ,GACR,0BAA0B,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,eAAe,GACf,+BAA+B,GAC/B,iCAAiC,GACjC,oCAAoC,GACpC,uBAAuB,GACvB,uBAAuB,GACvB,0BAA0B,GAC1B,iCAAiC,CACpC,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7C,iBAAiB,EAAE,oBAAoB,CAAC;IACxC,IAAI,EAAE,0BAA0B,CAAC;CAClC,GAAG,OAAO,CAAC,OAAO,CAAC,CAyRnB"}