tryassay 0.33.2 → 0.35.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 (164) 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 +46 -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/mcp.d.ts +14 -0
  36. package/dist/commands/mcp.js +18 -0
  37. package/dist/commands/mcp.js.map +1 -0
  38. package/dist/commands/runtime.js +11 -10
  39. package/dist/commands/runtime.js.map +1 -1
  40. package/dist/commands/stream-verify.d.ts +16 -0
  41. package/dist/commands/stream-verify.js +228 -0
  42. package/dist/commands/stream-verify.js.map +1 -0
  43. package/dist/commands/watch.d.ts +19 -0
  44. package/dist/commands/watch.js +158 -0
  45. package/dist/commands/watch.js.map +1 -0
  46. package/dist/hunt/__tests__/deep-dive.test.js.map +1 -1
  47. package/dist/hunt/__tests__/e2e.test.js.map +1 -1
  48. package/dist/hunt/__tests__/finding-to-template.test.js +10 -1
  49. package/dist/hunt/__tests__/finding-to-template.test.js.map +1 -1
  50. package/dist/hunt/__tests__/orchestrator.test.js.map +1 -1
  51. package/dist/hunt/__tests__/templates.test.js +2 -2
  52. package/dist/hunt/__tests__/triage.test.js.map +1 -1
  53. package/dist/hunt/deep-dive.js +7 -7
  54. package/dist/hunt/deep-dive.js.map +1 -1
  55. package/dist/hunt/parse-utils.d.ts +1 -1
  56. package/dist/hunt/state.js.map +1 -1
  57. package/dist/hunt/templates/injection.js +1 -1
  58. package/dist/hunt/templates/injection.js.map +1 -1
  59. package/dist/hunt/triage.js +5 -5
  60. package/dist/hunt/triage.js.map +1 -1
  61. package/dist/lib/__tests__/arithmetic-quick-test.js +10 -9
  62. package/dist/lib/__tests__/arithmetic-quick-test.js.map +1 -1
  63. package/dist/lib/__tests__/arithmetic-real-llm-test.js +8 -8
  64. package/dist/lib/__tests__/arithmetic-real-llm-test.js.map +1 -1
  65. package/dist/lib/__tests__/formal-verifier-behavioral.test.d.ts +18 -0
  66. package/dist/lib/__tests__/formal-verifier-behavioral.test.js +576 -0
  67. package/dist/lib/__tests__/formal-verifier-behavioral.test.js.map +1 -0
  68. package/dist/lib/__tests__/formal-verifier-claimless-async.test.d.ts +1 -0
  69. package/dist/lib/__tests__/formal-verifier-claimless-async.test.js +154 -0
  70. package/dist/lib/__tests__/formal-verifier-claimless-async.test.js.map +1 -0
  71. package/dist/lib/__tests__/formal-verifier-claimless-quality.test.d.ts +1 -0
  72. package/dist/lib/__tests__/formal-verifier-claimless-quality.test.js +121 -0
  73. package/dist/lib/__tests__/formal-verifier-claimless-quality.test.js.map +1 -0
  74. package/dist/lib/__tests__/formal-verifier-claimless-realworld.test.d.ts +1 -0
  75. package/dist/lib/__tests__/formal-verifier-claimless-realworld.test.js +119 -0
  76. package/dist/lib/__tests__/formal-verifier-claimless-realworld.test.js.map +1 -0
  77. package/dist/lib/__tests__/formal-verifier-claimless.test.d.ts +1 -0
  78. package/dist/lib/__tests__/formal-verifier-claimless.test.js +667 -0
  79. package/dist/lib/__tests__/formal-verifier-claimless.test.js.map +1 -0
  80. package/dist/lib/__tests__/mr-gsm8k-benchmark.js +6 -6
  81. package/dist/lib/__tests__/mr-gsm8k-benchmark.js.map +1 -1
  82. package/dist/lib/__tests__/pr-harvester.test.js.map +1 -1
  83. package/dist/lib/assessment-reporter.d.ts +1 -1
  84. package/dist/lib/assessment-reporter.js +2 -1
  85. package/dist/lib/assessment-reporter.js.map +1 -1
  86. package/dist/lib/chain-analyzer.d.ts +4 -3
  87. package/dist/lib/chain-analyzer.js.map +1 -1
  88. package/dist/lib/formal-verifier.d.ts +20 -1
  89. package/dist/lib/formal-verifier.js +1180 -23
  90. package/dist/lib/formal-verifier.js.map +1 -1
  91. package/dist/lib/issue-reporter.d.ts +2 -1
  92. package/dist/lib/issue-reporter.js.map +1 -1
  93. package/dist/lib/remediation-generator.js.map +1 -1
  94. package/dist/lib/report-generator.js.map +1 -1
  95. package/dist/lib/rule-harvester/ground-truth.js +13 -2
  96. package/dist/lib/rule-harvester/ground-truth.js.map +1 -1
  97. package/dist/lib/rule-harvester/scanner.d.ts +1 -1
  98. package/dist/lib/user-config.d.ts +1 -0
  99. package/dist/lib/user-config.js.map +1 -1
  100. package/dist/realtime/__tests__/catch-real-bugs.test.d.ts +9 -0
  101. package/dist/realtime/__tests__/catch-real-bugs.test.js +205 -0
  102. package/dist/realtime/__tests__/catch-real-bugs.test.js.map +1 -0
  103. package/dist/realtime/__tests__/code-buffer.test.d.ts +1 -0
  104. package/dist/realtime/__tests__/code-buffer.test.js +202 -0
  105. package/dist/realtime/__tests__/code-buffer.test.js.map +1 -0
  106. package/dist/realtime/__tests__/correction-injector.test.d.ts +1 -0
  107. package/dist/realtime/__tests__/correction-injector.test.js +168 -0
  108. package/dist/realtime/__tests__/correction-injector.test.js.map +1 -0
  109. package/dist/realtime/__tests__/entropy-detector.test.d.ts +1 -0
  110. package/dist/realtime/__tests__/entropy-detector.test.js +200 -0
  111. package/dist/realtime/__tests__/entropy-detector.test.js.map +1 -0
  112. package/dist/realtime/__tests__/entropy-live-demo.d.ts +1 -0
  113. package/dist/realtime/__tests__/entropy-live-demo.js +103 -0
  114. package/dist/realtime/__tests__/entropy-live-demo.js.map +1 -0
  115. package/dist/realtime/__tests__/entropy-live.d.ts +8 -0
  116. package/dist/realtime/__tests__/entropy-live.js +114 -0
  117. package/dist/realtime/__tests__/entropy-live.js.map +1 -0
  118. package/dist/realtime/__tests__/stream-interceptor.test.d.ts +1 -0
  119. package/dist/realtime/__tests__/stream-interceptor.test.js +193 -0
  120. package/dist/realtime/__tests__/stream-interceptor.test.js.map +1 -0
  121. package/dist/realtime/__tests__/streaming-checks.test.d.ts +1 -0
  122. package/dist/realtime/__tests__/streaming-checks.test.js +478 -0
  123. package/dist/realtime/__tests__/streaming-checks.test.js.map +1 -0
  124. package/dist/realtime/__tests__/streaming-verifier.test.d.ts +1 -0
  125. package/dist/realtime/__tests__/streaming-verifier.test.js +157 -0
  126. package/dist/realtime/__tests__/streaming-verifier.test.js.map +1 -0
  127. package/dist/realtime/code-buffer.d.ts +52 -0
  128. package/dist/realtime/code-buffer.js +276 -0
  129. package/dist/realtime/code-buffer.js.map +1 -0
  130. package/dist/realtime/correction-injector.d.ts +56 -0
  131. package/dist/realtime/correction-injector.js +96 -0
  132. package/dist/realtime/correction-injector.js.map +1 -0
  133. package/dist/realtime/entropy-detector.d.ts +143 -0
  134. package/dist/realtime/entropy-detector.js +504 -0
  135. package/dist/realtime/entropy-detector.js.map +1 -0
  136. package/dist/realtime/index.d.ts +14 -0
  137. package/dist/realtime/index.js +11 -0
  138. package/dist/realtime/index.js.map +1 -0
  139. package/dist/realtime/mcp-server.d.ts +20 -0
  140. package/dist/realtime/mcp-server.js +576 -0
  141. package/dist/realtime/mcp-server.js.map +1 -0
  142. package/dist/realtime/stream-interceptor.d.ts +93 -0
  143. package/dist/realtime/stream-interceptor.js +378 -0
  144. package/dist/realtime/stream-interceptor.js.map +1 -0
  145. package/dist/realtime/streaming-checks.d.ts +55 -0
  146. package/dist/realtime/streaming-checks.js +480 -0
  147. package/dist/realtime/streaming-checks.js.map +1 -0
  148. package/dist/realtime/streaming-verifier.d.ts +102 -0
  149. package/dist/realtime/streaming-verifier.js +227 -0
  150. package/dist/realtime/streaming-verifier.js.map +1 -0
  151. package/dist/realtime/types.d.ts +155 -0
  152. package/dist/realtime/types.js +8 -0
  153. package/dist/realtime/types.js.map +1 -0
  154. package/dist/runtime/agents/research-agent.js +10 -1
  155. package/dist/runtime/agents/research-agent.js.map +1 -1
  156. package/dist/runtime/agents/test-agent.js +10 -7
  157. package/dist/runtime/agents/test-agent.js.map +1 -1
  158. package/dist/runtime/composition-verifier.js +13 -3
  159. package/dist/runtime/composition-verifier.js.map +1 -1
  160. package/dist/runtime/fs-helpers.js.map +1 -1
  161. package/dist/runtime/prompt-safety-analyzer.js.map +1 -1
  162. package/dist/sdk/verified-generate.js.map +1 -1
  163. package/dist/types.d.ts +14 -0
  164. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entropy-detector.js","sourceRoot":"","sources":["../../src/realtime/entropy-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Real-time verification pipeline — verify code as it streams from the LLM.
3
+ *
4
+ * Phase 2 of the 10x roadmap.
5
+ */
6
+ export { CodeBuffer } from './code-buffer.js';
7
+ export { getFormalChecks, loadLearnedChecks, compileCheckSet, runChecks, } from './streaming-checks.js';
8
+ export { StreamingVerifier } from './streaming-verifier.js';
9
+ export type { StreamingVerifierOptions } from './streaming-verifier.js';
10
+ export { CorrectionInjector } from './correction-injector.js';
11
+ export type { CorrectionInjectorOptions, CorrectionMessage } from './correction-injector.js';
12
+ export { createVerifiedStream, createVerifiedStreamFromTokens, } from './stream-interceptor.js';
13
+ export type { VerifiedStreamOptions, VerifiedStreamResult, } from './stream-interceptor.js';
14
+ export type { CheckSeverity, CodeUnit, CodeUnitKind, CompiledCheckSet, CorrectionResult, StreamingCheck, StreamingVerifierStats, VerificationEvent, } from './types.js';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Real-time verification pipeline — verify code as it streams from the LLM.
3
+ *
4
+ * Phase 2 of the 10x roadmap.
5
+ */
6
+ export { CodeBuffer } from './code-buffer.js';
7
+ export { getFormalChecks, loadLearnedChecks, compileCheckSet, runChecks, } from './streaming-checks.js';
8
+ export { StreamingVerifier } from './streaming-verifier.js';
9
+ export { CorrectionInjector } from './correction-injector.js';
10
+ export { createVerifiedStream, createVerifiedStreamFromTokens, } from './stream-interceptor.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/realtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * MCP Server for Assay real-time verification.
3
+ *
4
+ * Exposes tools over stdio transport:
5
+ * - verify_code: One-shot verification of a code snippet
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)
13
+ *
14
+ * Usage with Claude Code:
15
+ * npx tryassay mcp
16
+ *
17
+ * Claude Code config (~/.claude.json):
18
+ * { "mcpServers": { "assay": { "command": "npx", "args": ["tryassay", "mcp"] } } }
19
+ */
20
+ export declare function startMcpServer(): Promise<void>;
@@ -0,0 +1,576 @@
1
+ /**
2
+ * MCP Server for Assay real-time verification.
3
+ *
4
+ * Exposes tools over stdio transport:
5
+ * - verify_code: One-shot verification of a code snippet
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)
13
+ *
14
+ * Usage with Claude Code:
15
+ * npx tryassay mcp
16
+ *
17
+ * Claude Code config (~/.claude.json):
18
+ * { "mcpServers": { "assay": { "command": "npx", "args": ["tryassay", "mcp"] } } }
19
+ */
20
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
21
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
22
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
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
+ };
38
+ // ── Core verification logic ─────────────────────────────────
39
+ function verifyCode(code, language, projectPath) {
40
+ const verifier = new StreamingVerifier({
41
+ language,
42
+ projectPath: projectPath || undefined,
43
+ });
44
+ verifier.push(code);
45
+ verifier.flush();
46
+ const rawFindings = verifier.getFindings();
47
+ const stats = verifier.getStats();
48
+ const findings = rawFindings.map((f) => ({
49
+ checkName: f.checkName,
50
+ severity: f.severity,
51
+ evidence: f.evidence,
52
+ suggestion: f.suggestion,
53
+ }));
54
+ return {
55
+ findings,
56
+ stats: {
57
+ unitsProcessed: stats.unitsProcessed,
58
+ checksRun: stats.checksRun,
59
+ findings: stats.findings,
60
+ avgLatencyMs: Math.round(stats.avgLatencyMs * 100) / 100,
61
+ },
62
+ clean: findings.length === 0,
63
+ };
64
+ }
65
+ function buildFixInstructions(findings) {
66
+ if (findings.length === 0) {
67
+ return 'No issues found. Code is clean.';
68
+ }
69
+ const lines = [
70
+ `Found ${findings.length} issue${findings.length > 1 ? 's' : ''} to fix:`,
71
+ '',
72
+ ];
73
+ for (let i = 0; i < findings.length; i++) {
74
+ const f = findings[i];
75
+ lines.push(`${i + 1}. [${f.severity.toUpperCase()}] ${f.checkName}`);
76
+ lines.push(` Problem: ${f.evidence}`);
77
+ if (f.suggestion) {
78
+ lines.push(` Fix: ${f.suggestion}`);
79
+ }
80
+ lines.push('');
81
+ }
82
+ lines.push('Apply the fixes above and re-verify to confirm resolution.');
83
+ return lines.join('\n');
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
+ }
230
+ // ── MCP Server ──────────────────────────────────────────────
231
+ export async function startMcpServer() {
232
+ const server = new Server({
233
+ name: 'assay',
234
+ version: '0.33.2',
235
+ }, {
236
+ capabilities: {
237
+ tools: {},
238
+ resources: {},
239
+ },
240
+ });
241
+ // List available tools
242
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
243
+ tools: [
244
+ {
245
+ name: 'verify_code',
246
+ description: 'Verify a code snippet for security vulnerabilities, error handling gaps, and common bugs. Returns structured findings with severity levels. Use this after generating code to catch issues before they ship.',
247
+ inputSchema: {
248
+ type: 'object',
249
+ properties: {
250
+ code: {
251
+ type: 'string',
252
+ description: 'The code to verify',
253
+ },
254
+ language: {
255
+ type: 'string',
256
+ description: 'Language of the code (typescript, javascript, python, etc.)',
257
+ },
258
+ projectPath: {
259
+ type: 'string',
260
+ description: 'Optional project path for loading learned verification rules',
261
+ },
262
+ },
263
+ required: ['code', 'language'],
264
+ },
265
+ },
266
+ {
267
+ name: 'verify_and_fix',
268
+ description: 'Verify a code snippet and return actionable fix instructions. Use this to self-correct generated code. Returns findings plus step-by-step fix instructions.',
269
+ inputSchema: {
270
+ type: 'object',
271
+ properties: {
272
+ code: {
273
+ type: 'string',
274
+ description: 'The code to verify',
275
+ },
276
+ language: {
277
+ type: 'string',
278
+ description: 'Language of the code (typescript, javascript, python, etc.)',
279
+ },
280
+ projectPath: {
281
+ type: 'string',
282
+ description: 'Optional project path for loading learned verification rules',
283
+ },
284
+ },
285
+ required: ['code', 'language'],
286
+ },
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
+ },
355
+ ],
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
+ });
400
+ // Handle tool calls
401
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
402
+ const { name, arguments: args } = request.params;
403
+ if (name === 'verify_code') {
404
+ const code = args?.code;
405
+ const language = args?.language;
406
+ const projectPath = args?.projectPath;
407
+ if (!code || !language) {
408
+ return {
409
+ content: [
410
+ {
411
+ type: 'text',
412
+ text: JSON.stringify({
413
+ error: 'Both "code" and "language" are required',
414
+ }),
415
+ },
416
+ ],
417
+ isError: true,
418
+ };
419
+ }
420
+ const result = verifyCode(code, language, projectPath);
421
+ autoLearnFromFindings(result.findings, code, language, projectPath);
422
+ return {
423
+ content: [
424
+ {
425
+ type: 'text',
426
+ text: JSON.stringify(result, null, 2),
427
+ },
428
+ ],
429
+ };
430
+ }
431
+ if (name === 'verify_and_fix') {
432
+ const code = args?.code;
433
+ const language = args?.language;
434
+ const projectPath = args?.projectPath;
435
+ if (!code || !language) {
436
+ return {
437
+ content: [
438
+ {
439
+ type: 'text',
440
+ text: JSON.stringify({
441
+ error: 'Both "code" and "language" are required',
442
+ }),
443
+ },
444
+ ],
445
+ isError: true,
446
+ };
447
+ }
448
+ const verifyResult = verifyCode(code, language, projectPath);
449
+ autoLearnFromFindings(verifyResult.findings, code, language, projectPath);
450
+ const fixInstructions = buildFixInstructions(verifyResult.findings);
451
+ const result = {
452
+ ...verifyResult,
453
+ fixInstructions,
454
+ };
455
+ return {
456
+ content: [
457
+ {
458
+ type: 'text',
459
+ text: JSON.stringify(result, null, 2),
460
+ },
461
+ ],
462
+ };
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
+ }
562
+ return {
563
+ content: [
564
+ {
565
+ type: 'text',
566
+ text: JSON.stringify({ error: `Unknown tool: ${name}` }),
567
+ },
568
+ ],
569
+ isError: true,
570
+ };
571
+ });
572
+ // Connect via stdio
573
+ const transport = new StdioServerTransport();
574
+ await server.connect(transport);
575
+ }
576
+ //# sourceMappingURL=mcp-server.js.map