tryassay 0.34.0 → 0.35.1

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 (133) hide show
  1. package/dist/bayesian/__tests__/bas-calculator.test.d.ts +1 -0
  2. package/dist/bayesian/__tests__/bas-calculator.test.js +63 -0
  3. package/dist/bayesian/__tests__/bas-calculator.test.js.map +1 -0
  4. package/dist/bayesian/__tests__/structural-entropy.test.d.ts +1 -0
  5. package/dist/bayesian/__tests__/structural-entropy.test.js +21 -0
  6. package/dist/bayesian/__tests__/structural-entropy.test.js.map +1 -0
  7. package/dist/bayesian/bas-calculator.d.ts +41 -0
  8. package/dist/bayesian/bas-calculator.js +198 -0
  9. package/dist/bayesian/bas-calculator.js.map +1 -0
  10. package/dist/bayesian/index.d.ts +3 -0
  11. package/dist/bayesian/index.js +3 -0
  12. package/dist/bayesian/index.js.map +1 -0
  13. package/dist/bayesian/structural-entropy.d.ts +12 -0
  14. package/dist/bayesian/structural-entropy.js +37 -0
  15. package/dist/bayesian/structural-entropy.js.map +1 -0
  16. package/dist/bayesian/types.d.ts +37 -0
  17. package/dist/bayesian/types.js +6 -0
  18. package/dist/bayesian/types.js.map +1 -0
  19. package/dist/cli.js +28 -0
  20. package/dist/cli.js.map +1 -1
  21. package/dist/commands/__tests__/assess-formal.test.d.ts +1 -0
  22. package/dist/commands/__tests__/assess-formal.test.js +72 -0
  23. package/dist/commands/__tests__/assess-formal.test.js.map +1 -0
  24. package/dist/commands/activate.d.ts +1 -0
  25. package/dist/commands/activate.js +48 -0
  26. package/dist/commands/activate.js.map +1 -0
  27. package/dist/commands/assess.js +100 -5
  28. package/dist/commands/assess.js.map +1 -1
  29. package/dist/commands/bas-score.d.ts +13 -0
  30. package/dist/commands/bas-score.js +310 -0
  31. package/dist/commands/bas-score.js.map +1 -0
  32. package/dist/commands/bounty-watch.js.map +1 -1
  33. package/dist/commands/hunt.js +32 -0
  34. package/dist/commands/hunt.js.map +1 -1
  35. package/dist/commands/runtime.js +11 -10
  36. package/dist/commands/runtime.js.map +1 -1
  37. package/dist/commands/stream-verify.d.ts +16 -0
  38. package/dist/commands/stream-verify.js +228 -0
  39. package/dist/commands/stream-verify.js.map +1 -0
  40. package/dist/commands/watch.js.map +1 -1
  41. package/dist/hunt/__tests__/deep-dive.test.js.map +1 -1
  42. package/dist/hunt/__tests__/e2e.test.js.map +1 -1
  43. package/dist/hunt/__tests__/finding-to-template.test.js +10 -1
  44. package/dist/hunt/__tests__/finding-to-template.test.js.map +1 -1
  45. package/dist/hunt/__tests__/orchestrator.test.js.map +1 -1
  46. package/dist/hunt/__tests__/templates.test.js +2 -2
  47. package/dist/hunt/__tests__/triage.test.js.map +1 -1
  48. package/dist/hunt/deep-dive.js +7 -7
  49. package/dist/hunt/deep-dive.js.map +1 -1
  50. package/dist/hunt/parse-utils.d.ts +1 -1
  51. package/dist/hunt/state.js.map +1 -1
  52. package/dist/hunt/templates/injection.js +1 -1
  53. package/dist/hunt/templates/injection.js.map +1 -1
  54. package/dist/hunt/triage.js +5 -5
  55. package/dist/hunt/triage.js.map +1 -1
  56. package/dist/lib/__tests__/arithmetic-quick-test.js +10 -9
  57. package/dist/lib/__tests__/arithmetic-quick-test.js.map +1 -1
  58. package/dist/lib/__tests__/arithmetic-real-llm-test.js +8 -8
  59. package/dist/lib/__tests__/arithmetic-real-llm-test.js.map +1 -1
  60. package/dist/lib/__tests__/formal-verifier-api-misuse.test.js +4 -3
  61. package/dist/lib/__tests__/formal-verifier-api-misuse.test.js.map +1 -1
  62. package/dist/lib/__tests__/formal-verifier-behavioral.test.d.ts +18 -0
  63. package/dist/lib/__tests__/formal-verifier-behavioral.test.js +576 -0
  64. package/dist/lib/__tests__/formal-verifier-behavioral.test.js.map +1 -0
  65. package/dist/lib/__tests__/formal-verifier-claimless-async.test.d.ts +1 -0
  66. package/dist/lib/__tests__/formal-verifier-claimless-async.test.js +154 -0
  67. package/dist/lib/__tests__/formal-verifier-claimless-async.test.js.map +1 -0
  68. package/dist/lib/__tests__/formal-verifier-claimless-quality.test.d.ts +1 -0
  69. package/dist/lib/__tests__/formal-verifier-claimless-quality.test.js +121 -0
  70. package/dist/lib/__tests__/formal-verifier-claimless-quality.test.js.map +1 -0
  71. package/dist/lib/__tests__/formal-verifier-claimless-realworld.test.d.ts +1 -0
  72. package/dist/lib/__tests__/formal-verifier-claimless-realworld.test.js +119 -0
  73. package/dist/lib/__tests__/formal-verifier-claimless-realworld.test.js.map +1 -0
  74. package/dist/lib/__tests__/formal-verifier-claimless.test.d.ts +1 -0
  75. package/dist/lib/__tests__/formal-verifier-claimless.test.js +667 -0
  76. package/dist/lib/__tests__/formal-verifier-claimless.test.js.map +1 -0
  77. package/dist/lib/__tests__/mr-gsm8k-benchmark.js +6 -6
  78. package/dist/lib/__tests__/mr-gsm8k-benchmark.js.map +1 -1
  79. package/dist/lib/__tests__/pr-harvester.test.js.map +1 -1
  80. package/dist/lib/assessment-reporter.d.ts +1 -1
  81. package/dist/lib/assessment-reporter.js +2 -1
  82. package/dist/lib/assessment-reporter.js.map +1 -1
  83. package/dist/lib/chain-analyzer.d.ts +4 -3
  84. package/dist/lib/chain-analyzer.js.map +1 -1
  85. package/dist/lib/formal-verifier.d.ts +20 -1
  86. package/dist/lib/formal-verifier.js +1182 -24
  87. package/dist/lib/formal-verifier.js.map +1 -1
  88. package/dist/lib/issue-reporter.d.ts +2 -1
  89. package/dist/lib/issue-reporter.js.map +1 -1
  90. package/dist/lib/remediation-generator.js.map +1 -1
  91. package/dist/lib/report-generator.js.map +1 -1
  92. package/dist/lib/rule-harvester/ground-truth.js +13 -2
  93. package/dist/lib/rule-harvester/ground-truth.js.map +1 -1
  94. package/dist/lib/rule-harvester/scanner.d.ts +1 -1
  95. package/dist/lib/user-config.d.ts +1 -0
  96. package/dist/lib/user-config.js.map +1 -1
  97. package/dist/realtime/__tests__/entropy-detector.test.d.ts +1 -0
  98. package/dist/realtime/__tests__/entropy-detector.test.js +200 -0
  99. package/dist/realtime/__tests__/entropy-detector.test.js.map +1 -0
  100. package/dist/realtime/__tests__/entropy-live-demo.d.ts +1 -0
  101. package/dist/realtime/__tests__/entropy-live-demo.js +103 -0
  102. package/dist/realtime/__tests__/entropy-live-demo.js.map +1 -0
  103. package/dist/realtime/__tests__/entropy-live.d.ts +8 -0
  104. package/dist/realtime/__tests__/entropy-live.js +114 -0
  105. package/dist/realtime/__tests__/entropy-live.js.map +1 -0
  106. package/dist/realtime/__tests__/streaming-checks.test.js +3 -4
  107. package/dist/realtime/__tests__/streaming-checks.test.js.map +1 -1
  108. package/dist/realtime/entropy-detector.d.ts +143 -0
  109. package/dist/realtime/entropy-detector.js +504 -0
  110. package/dist/realtime/entropy-detector.js.map +1 -0
  111. package/dist/realtime/mcp-server.d.ts +7 -1
  112. package/dist/realtime/mcp-server.js +378 -2
  113. package/dist/realtime/mcp-server.js.map +1 -1
  114. package/dist/realtime/stream-interceptor.d.ts +28 -0
  115. package/dist/realtime/stream-interceptor.js +204 -0
  116. package/dist/realtime/stream-interceptor.js.map +1 -1
  117. package/dist/realtime/streaming-checks.js +28 -0
  118. package/dist/realtime/streaming-checks.js.map +1 -1
  119. package/dist/realtime/streaming-verifier.d.ts +45 -0
  120. package/dist/realtime/streaming-verifier.js +98 -5
  121. package/dist/realtime/streaming-verifier.js.map +1 -1
  122. package/dist/realtime/types.d.ts +56 -0
  123. package/dist/runtime/agents/research-agent.js +10 -1
  124. package/dist/runtime/agents/research-agent.js.map +1 -1
  125. package/dist/runtime/agents/test-agent.js +10 -7
  126. package/dist/runtime/agents/test-agent.js.map +1 -1
  127. package/dist/runtime/composition-verifier.js +13 -3
  128. package/dist/runtime/composition-verifier.js.map +1 -1
  129. package/dist/runtime/fs-helpers.js.map +1 -1
  130. package/dist/runtime/prompt-safety-analyzer.js.map +1 -1
  131. package/dist/sdk/verified-generate.js.map +1 -1
  132. package/dist/types.d.ts +14 -0
  133. package/package.json +3 -2
@@ -1,9 +1,15 @@
1
1
  /**
2
2
  * MCP Server for Assay real-time verification.
3
3
  *
4
- * Exposes two tools over stdio transport:
4
+ * Exposes tools over stdio transport:
5
5
  * - verify_code: One-shot verification of a code snippet
6
6
  * - verify_and_fix: Verify code and return fix suggestions
7
+ * - stream_verify: BAS-guided verification with optional logprobs
8
+ * - get_annotations: Cached annotations from last stream_verify
9
+ * - configure: Set BAS thresholds
10
+ *
11
+ * Resources:
12
+ * - assay://bas_heatmap: Per-token BAS scores (unstable, debugging)
7
13
  *
8
14
  * Usage with Claude Code:
9
15
  * npx tryassay mcp
@@ -1,9 +1,15 @@
1
1
  /**
2
2
  * MCP Server for Assay real-time verification.
3
3
  *
4
- * Exposes two tools over stdio transport:
4
+ * Exposes tools over stdio transport:
5
5
  * - verify_code: One-shot verification of a code snippet
6
6
  * - verify_and_fix: Verify code and return fix suggestions
7
+ * - stream_verify: BAS-guided verification with optional logprobs
8
+ * - get_annotations: Cached annotations from last stream_verify
9
+ * - configure: Set BAS thresholds
10
+ *
11
+ * Resources:
12
+ * - assay://bas_heatmap: Per-token BAS scores (unstable, debugging)
7
13
  *
8
14
  * Usage with Claude Code:
9
15
  * npx tryassay mcp
@@ -13,8 +19,22 @@
13
19
  */
14
20
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
15
21
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
16
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
22
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
17
23
  import { StreamingVerifier } from './streaming-verifier.js';
24
+ import { EntropyDetector } from './entropy-detector.js';
25
+ import { BASCalculator } from '../bayesian/bas-calculator.js';
26
+ import { learnFromFinding } from '../lib/learned-rules/index.js';
27
+ // ── Server state (cached between calls) ─────────────────────
28
+ let lastAnnotations = [];
29
+ let lastBASHeatmap = [];
30
+ let basConfig = {
31
+ greenThreshold: 0.3,
32
+ redThreshold: 0.7,
33
+ weights: {
34
+ weights: [0.35, 0.25, -0.30, -0.10, 0.20, 0.15, 0.10, 0.20],
35
+ intercept: -0.5,
36
+ },
37
+ };
18
38
  // ── Core verification logic ─────────────────────────────────
19
39
  function verifyCode(code, language, projectPath) {
20
40
  const verifier = new StreamingVerifier({
@@ -62,6 +82,151 @@ function buildFixInstructions(findings) {
62
82
  lines.push('Apply the fixes above and re-verify to confirm resolution.');
63
83
  return lines.join('\n');
64
84
  }
85
+ // ── BAS-guided stream verification ──────────────────────────
86
+ function streamVerify(code, language, logprobs) {
87
+ const hasLogprobs = logprobs && logprobs.length > 0;
88
+ const mode = hasLogprobs ? 'bas-guided' : 'formal-only';
89
+ // Compute per-token BAS if logprobs provided
90
+ let basScores = [];
91
+ const perTokenHeatmap = [];
92
+ if (hasLogprobs) {
93
+ const calculator = new BASCalculator(basConfig);
94
+ calculator.setLanguage(language);
95
+ for (let i = 0; i < logprobs.length; i++) {
96
+ const lp = logprobs[i];
97
+ const tokenInput = {
98
+ token: lp.token,
99
+ topLogprobs: lp.top_logprobs.map(t => ({
100
+ token: t.token,
101
+ logprob: t.logprob,
102
+ })),
103
+ };
104
+ const result = calculator.processToken(tokenInput);
105
+ basScores.push(result);
106
+ perTokenHeatmap.push({
107
+ index: i,
108
+ token: lp.token,
109
+ score: Math.round(result.score * 1000) / 1000,
110
+ depth: result.depth,
111
+ });
112
+ }
113
+ }
114
+ // Create verifier with adaptive depth when BAS is available
115
+ const entropyDetector = hasLogprobs
116
+ ? new EntropyDetector({ useLegacyDynamics: false, basConfig })
117
+ : undefined;
118
+ const verifier = new StreamingVerifier({
119
+ language,
120
+ adaptiveDepth: hasLogprobs,
121
+ entropyDetector,
122
+ });
123
+ // If we have logprobs, feed them to the entropy detector before pushing code
124
+ if (hasLogprobs && entropyDetector && logprobs) {
125
+ for (const lp of logprobs) {
126
+ entropyDetector.pushToken({
127
+ token: lp.token,
128
+ logprob: lp.top_logprobs[0]?.logprob ?? 0,
129
+ topLogprobs: lp.top_logprobs.map(t => ({
130
+ token: t.token,
131
+ logprob: t.logprob,
132
+ })),
133
+ });
134
+ }
135
+ }
136
+ // Push code through the verifier
137
+ verifier.push(code);
138
+ verifier.flush();
139
+ const rawFindings = verifier.getFindings();
140
+ const stats = verifier.getStats();
141
+ const findings = rawFindings.map((f) => ({
142
+ checkName: f.checkName,
143
+ severity: f.severity,
144
+ evidence: f.evidence,
145
+ suggestion: f.suggestion,
146
+ }));
147
+ // Build annotations with line numbers
148
+ const codeLines = code.split('\n');
149
+ const annotations = rawFindings.map((f) => {
150
+ // Find line number from code unit offset
151
+ const offset = f.codeUnit.startOffset;
152
+ let line = 1;
153
+ let pos = 0;
154
+ for (let i = 0; i < codeLines.length; i++) {
155
+ pos += codeLines[i].length + 1; // +1 for newline
156
+ if (pos > offset) {
157
+ line = i + 1;
158
+ break;
159
+ }
160
+ }
161
+ return {
162
+ line,
163
+ severity: f.severity,
164
+ message: f.evidence,
165
+ checkName: f.checkName,
166
+ depth: f.entropyContext?.verificationDepth,
167
+ };
168
+ });
169
+ // Cache for get_annotations and bas_heatmap
170
+ lastAnnotations = annotations;
171
+ lastBASHeatmap = perTokenHeatmap;
172
+ // Compute BAS summary
173
+ const basSummary = hasLogprobs && basScores.length > 0
174
+ ? {
175
+ meanScore: Math.round((basScores.reduce((sum, s) => sum + s.score, 0) / basScores.length) * 1000) / 1000,
176
+ tokenCount: basScores.length,
177
+ depthDistribution: {
178
+ green: basScores.filter(s => s.depth === 'green').length,
179
+ amber: basScores.filter(s => s.depth === 'amber').length,
180
+ red: basScores.filter(s => s.depth === 'red').length,
181
+ },
182
+ }
183
+ : undefined;
184
+ return {
185
+ mode,
186
+ findings,
187
+ annotations,
188
+ bas: basSummary,
189
+ stats: {
190
+ unitsProcessed: stats.unitsProcessed,
191
+ checksRun: stats.checksRun,
192
+ findings: stats.findings,
193
+ avgLatencyMs: Math.round(stats.avgLatencyMs * 100) / 100,
194
+ },
195
+ clean: findings.length === 0,
196
+ };
197
+ }
198
+ // ── Auto-learn from findings ─────────────────────────────────
199
+ /**
200
+ * Convert MCP verification findings into learned rules.
201
+ * Runs async — doesn't block the response to Claude Code.
202
+ */
203
+ function autoLearnFromFindings(findings, code, language, projectPath) {
204
+ if (findings.length === 0)
205
+ return;
206
+ const root = projectPath || process.cwd();
207
+ for (const finding of findings) {
208
+ const input = {
209
+ claim: {
210
+ id: `mcp-${Date.now()}-${finding.checkName}`,
211
+ category: finding.checkName,
212
+ severity: finding.severity,
213
+ description: finding.evidence,
214
+ assertion: `Code should not contain: ${finding.checkName}`,
215
+ },
216
+ verification: {
217
+ verdict: 'FAIL',
218
+ reasoning: finding.evidence,
219
+ evidence: finding.suggestion,
220
+ },
221
+ code,
222
+ language,
223
+ filePath: 'mcp-verified-code',
224
+ };
225
+ learnFromFinding(root, input).catch(() => {
226
+ // Silently ignore learning failures — don't break the MCP response
227
+ });
228
+ }
229
+ }
65
230
  // ── MCP Server ──────────────────────────────────────────────
66
231
  export async function startMcpServer() {
67
232
  const server = new Server({
@@ -70,6 +235,7 @@ export async function startMcpServer() {
70
235
  }, {
71
236
  capabilities: {
72
237
  tools: {},
238
+ resources: {},
73
239
  },
74
240
  });
75
241
  // List available tools
@@ -119,8 +285,118 @@ export async function startMcpServer() {
119
285
  required: ['code', 'language'],
120
286
  },
121
287
  },
288
+ {
289
+ name: 'stream_verify',
290
+ description: 'BAS-guided verification of a code block. If logprobs are provided, computes Bayesian Anomaly Scores to route verification depth (GREEN=skip, AMBER=defer, RED=immediate). Without logprobs, runs all formal checks (formal-only mode). Returns findings, annotations, and BAS summary.',
291
+ inputSchema: {
292
+ type: 'object',
293
+ properties: {
294
+ code: {
295
+ type: 'string',
296
+ description: 'The code block to verify',
297
+ },
298
+ language: {
299
+ type: 'string',
300
+ enum: ['typescript', 'python', 'javascript'],
301
+ description: 'Language of the code',
302
+ },
303
+ logprobs: {
304
+ type: 'array',
305
+ description: 'Optional per-token logprob data from the LLM provider. Each item contains the token and its top logprob alternatives.',
306
+ items: {
307
+ type: 'object',
308
+ properties: {
309
+ token: { type: 'string', description: 'The token text' },
310
+ top_logprobs: {
311
+ type: 'array',
312
+ description: 'Top logprob alternatives',
313
+ items: {
314
+ type: 'object',
315
+ properties: {
316
+ token: { type: 'string' },
317
+ logprob: { type: 'number' },
318
+ },
319
+ required: ['token', 'logprob'],
320
+ },
321
+ },
322
+ },
323
+ required: ['token', 'top_logprobs'],
324
+ },
325
+ },
326
+ },
327
+ required: ['code', 'language'],
328
+ },
329
+ },
330
+ {
331
+ name: 'get_annotations',
332
+ description: 'Returns cached verification annotations from the last stream_verify call. Each annotation includes line number, severity, message, and check name.',
333
+ inputSchema: {
334
+ type: 'object',
335
+ properties: {},
336
+ },
337
+ },
338
+ {
339
+ name: 'configure',
340
+ description: 'Configure BAS thresholds for adaptive verification depth routing. Scores below greenThreshold are skipped (GREEN), above redThreshold get immediate checks (RED), between is deferred (AMBER).',
341
+ inputSchema: {
342
+ type: 'object',
343
+ properties: {
344
+ greenThreshold: {
345
+ type: 'number',
346
+ description: 'BAS score below which verification is skipped (default: 0.3)',
347
+ },
348
+ redThreshold: {
349
+ type: 'number',
350
+ description: 'BAS score above which verification runs immediately (default: 0.7)',
351
+ },
352
+ },
353
+ },
354
+ },
122
355
  ],
123
356
  }));
357
+ // List available resources
358
+ server.setRequestHandler(ListResourcesRequestSchema, async () => ({
359
+ resources: [
360
+ {
361
+ uri: 'assay://bas_heatmap',
362
+ name: 'BAS Heatmap',
363
+ description: '[UNSTABLE] Per-token Bayesian Anomaly Scores from the last stream_verify call. Debugging tool — format may change.',
364
+ mimeType: 'application/json',
365
+ },
366
+ ],
367
+ }));
368
+ // Read resources
369
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
370
+ const { uri } = request.params;
371
+ if (uri === 'assay://bas_heatmap') {
372
+ return {
373
+ contents: [
374
+ {
375
+ uri: 'assay://bas_heatmap',
376
+ mimeType: 'application/json',
377
+ text: JSON.stringify({
378
+ _warning: 'UNSTABLE — format may change between versions',
379
+ tokenCount: lastBASHeatmap.length,
380
+ tokens: lastBASHeatmap,
381
+ thresholds: {
382
+ green: basConfig.greenThreshold,
383
+ red: basConfig.redThreshold,
384
+ },
385
+ }, null, 2),
386
+ },
387
+ ],
388
+ };
389
+ }
390
+ return {
391
+ contents: [
392
+ {
393
+ uri,
394
+ mimeType: 'text/plain',
395
+ text: JSON.stringify({ error: `Unknown resource: ${uri}` }),
396
+ },
397
+ ],
398
+ };
399
+ });
124
400
  // Handle tool calls
125
401
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
126
402
  const { name, arguments: args } = request.params;
@@ -142,6 +418,7 @@ export async function startMcpServer() {
142
418
  };
143
419
  }
144
420
  const result = verifyCode(code, language, projectPath);
421
+ autoLearnFromFindings(result.findings, code, language, projectPath);
145
422
  return {
146
423
  content: [
147
424
  {
@@ -169,6 +446,7 @@ export async function startMcpServer() {
169
446
  };
170
447
  }
171
448
  const verifyResult = verifyCode(code, language, projectPath);
449
+ autoLearnFromFindings(verifyResult.findings, code, language, projectPath);
172
450
  const fixInstructions = buildFixInstructions(verifyResult.findings);
173
451
  const result = {
174
452
  ...verifyResult,
@@ -183,6 +461,104 @@ export async function startMcpServer() {
183
461
  ],
184
462
  };
185
463
  }
464
+ if (name === 'stream_verify') {
465
+ const code = args?.code;
466
+ const language = args?.language;
467
+ const logprobs = args?.logprobs;
468
+ if (!code || !language) {
469
+ return {
470
+ content: [
471
+ {
472
+ type: 'text',
473
+ text: JSON.stringify({
474
+ error: 'Both "code" and "language" are required',
475
+ }),
476
+ },
477
+ ],
478
+ isError: true,
479
+ };
480
+ }
481
+ const result = streamVerify(code, language, logprobs);
482
+ autoLearnFromFindings(result.findings, code, language);
483
+ return {
484
+ content: [
485
+ {
486
+ type: 'text',
487
+ text: JSON.stringify(result, null, 2),
488
+ },
489
+ ],
490
+ };
491
+ }
492
+ if (name === 'get_annotations') {
493
+ return {
494
+ content: [
495
+ {
496
+ type: 'text',
497
+ text: JSON.stringify({
498
+ count: lastAnnotations.length,
499
+ annotations: lastAnnotations,
500
+ }, null, 2),
501
+ },
502
+ ],
503
+ };
504
+ }
505
+ if (name === 'configure') {
506
+ const greenThreshold = args?.greenThreshold;
507
+ const redThreshold = args?.redThreshold;
508
+ if (greenThreshold !== undefined) {
509
+ if (greenThreshold < 0 || greenThreshold > 1) {
510
+ return {
511
+ content: [
512
+ {
513
+ type: 'text',
514
+ text: JSON.stringify({ error: 'greenThreshold must be between 0 and 1' }),
515
+ },
516
+ ],
517
+ isError: true,
518
+ };
519
+ }
520
+ basConfig.greenThreshold = greenThreshold;
521
+ }
522
+ if (redThreshold !== undefined) {
523
+ if (redThreshold < 0 || redThreshold > 1) {
524
+ return {
525
+ content: [
526
+ {
527
+ type: 'text',
528
+ text: JSON.stringify({ error: 'redThreshold must be between 0 and 1' }),
529
+ },
530
+ ],
531
+ isError: true,
532
+ };
533
+ }
534
+ basConfig.redThreshold = redThreshold;
535
+ }
536
+ if (basConfig.greenThreshold >= basConfig.redThreshold) {
537
+ return {
538
+ content: [
539
+ {
540
+ type: 'text',
541
+ text: JSON.stringify({
542
+ error: 'greenThreshold must be less than redThreshold',
543
+ }),
544
+ },
545
+ ],
546
+ isError: true,
547
+ };
548
+ }
549
+ return {
550
+ content: [
551
+ {
552
+ type: 'text',
553
+ text: JSON.stringify({
554
+ message: 'Configuration updated',
555
+ greenThreshold: basConfig.greenThreshold,
556
+ redThreshold: basConfig.redThreshold,
557
+ }, null, 2),
558
+ },
559
+ ],
560
+ };
561
+ }
186
562
  return {
187
563
  content: [
188
564
  {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/realtime/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/realtime/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@
7
7
  *
8
8
  * Phase 2, Milestone 3 of the 10x roadmap.
9
9
  */
10
+ import type { EntropyDetectorOptions } from './entropy-detector.js';
10
11
  import type { CheckSeverity, StreamingVerifierStats, VerificationEvent } from './types.js';
11
12
  export interface VerifiedStreamOptions {
12
13
  /** Anthropic API key (falls back to ANTHROPIC_API_KEY env) */
@@ -36,6 +37,15 @@ export interface VerifiedStreamOptions {
36
37
  autoCorrect?: boolean;
37
38
  /** Min severity for auto-correction. Default: 'high' */
38
39
  minCorrectionSeverity?: CheckSeverity;
40
+ /**
41
+ * LLM provider. Default: 'anthropic'.
42
+ * Use 'openai' for logprob-based entropy hallucination detection.
43
+ */
44
+ provider?: 'anthropic' | 'openai';
45
+ /** OpenAI API key (falls back to OPENAI_API_KEY env). Required when provider='openai'. */
46
+ openaiApiKey?: string;
47
+ /** Entropy detector options. Only active when provider='openai'. */
48
+ entropyDetector?: EntropyDetectorOptions;
39
49
  }
40
50
  export interface VerifiedStreamResult {
41
51
  /** The full generated text */
@@ -51,12 +61,30 @@ export interface VerifiedStreamResult {
51
61
  outputTokens: number;
52
62
  /** Total wall time */
53
63
  durationMs: number;
64
+ /**
65
+ * Collected per-token logprob data from the provider stream.
66
+ * Present when provider supports logprobs (e.g., OpenAI), undefined otherwise.
67
+ * Can be passed to BAS calculator or stream_verify MCP tool for analysis.
68
+ */
69
+ collectedLogprobs?: Array<{
70
+ token: string;
71
+ top_logprobs: Array<{
72
+ token: string;
73
+ logprob: number;
74
+ }>;
75
+ }>;
54
76
  }
55
77
  /**
56
78
  * Create and run a verified stream using the Anthropic API.
57
79
  * Returns when generation is complete.
58
80
  */
59
81
  export declare function createVerifiedStream(options: VerifiedStreamOptions): Promise<VerifiedStreamResult>;
82
+ /**
83
+ * Create a verified stream using the specified provider.
84
+ * - provider='anthropic' (default): pattern checks only
85
+ * - provider='openai': pattern checks + entropy hallucination detection
86
+ */
87
+ export declare function createVerifiedStreamAuto(options: VerifiedStreamOptions): Promise<VerifiedStreamResult>;
60
88
  /**
61
89
  * Simulate a verified stream by pushing an array of token strings through
62
90
  * the verification pipeline. Same logic as createVerifiedStream but without