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":"mcp-server.js","sourceRoot":"","sources":["../../src/realtime/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * StreamInterceptor — wraps the Anthropic streaming API to pipe tokens
3
+ * through the real-time verification pipeline transparently.
4
+ *
5
+ * Consumers get a verified text stream: code with bugs gets flagged
6
+ * (and optionally corrected) mid-generation.
7
+ *
8
+ * Phase 2, Milestone 3 of the 10x roadmap.
9
+ */
10
+ import type { EntropyDetectorOptions } from './entropy-detector.js';
11
+ import type { CheckSeverity, StreamingVerifierStats, VerificationEvent } from './types.js';
12
+ export interface VerifiedStreamOptions {
13
+ /** Anthropic API key (falls back to ANTHROPIC_API_KEY env) */
14
+ apiKey?: string;
15
+ /** Model to use. Default: 'claude-sonnet-4-20250514' */
16
+ model?: string;
17
+ /** System prompt for code generation */
18
+ systemPrompt?: string;
19
+ /** User prompt (the code request) */
20
+ userPrompt: string;
21
+ /** Language of the code being generated */
22
+ language: string;
23
+ /** Max tokens. Default: 4096 */
24
+ maxTokens?: number;
25
+ /** Project path for loading learned rules */
26
+ projectPath?: string;
27
+ /** Callback for each text chunk */
28
+ onText?: (text: string) => void;
29
+ /** Callback for each verification event */
30
+ onVerification?: (event: VerificationEvent) => void;
31
+ /** Callback when a correction is triggered */
32
+ onCorrection?: (info: {
33
+ finding: VerificationEvent;
34
+ generatedSoFar: string;
35
+ }) => void;
36
+ /** Enable auto-correction. Default: false for MVP */
37
+ autoCorrect?: boolean;
38
+ /** Min severity for auto-correction. Default: 'high' */
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;
49
+ }
50
+ export interface VerifiedStreamResult {
51
+ /** The full generated text */
52
+ text: string;
53
+ /** All verification events */
54
+ events: VerificationEvent[];
55
+ /** Only the findings (FAIL events) */
56
+ findings: VerificationEvent[];
57
+ /** Verifier statistics */
58
+ stats: StreamingVerifierStats;
59
+ /** API usage */
60
+ inputTokens: number;
61
+ outputTokens: number;
62
+ /** Total wall time */
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
+ }>;
76
+ }
77
+ /**
78
+ * Create and run a verified stream using the Anthropic API.
79
+ * Returns when generation is complete.
80
+ */
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>;
88
+ /**
89
+ * Simulate a verified stream by pushing an array of token strings through
90
+ * the verification pipeline. Same logic as createVerifiedStream but without
91
+ * the Anthropic client. Useful for deterministic testing.
92
+ */
93
+ export declare function createVerifiedStreamFromTokens(tokens: string[], options: Omit<VerifiedStreamOptions, 'userPrompt' | 'apiKey' | 'model' | 'systemPrompt' | 'maxTokens'>): VerifiedStreamResult;
@@ -0,0 +1,378 @@
1
+ /**
2
+ * StreamInterceptor — wraps the Anthropic streaming API to pipe tokens
3
+ * through the real-time verification pipeline transparently.
4
+ *
5
+ * Consumers get a verified text stream: code with bugs gets flagged
6
+ * (and optionally corrected) mid-generation.
7
+ *
8
+ * Phase 2, Milestone 3 of the 10x roadmap.
9
+ */
10
+ import Anthropic from '@anthropic-ai/sdk';
11
+ import { StreamingVerifier } from './streaming-verifier.js';
12
+ import { EntropyDetector } from './entropy-detector.js';
13
+ // ---------------------------------------------------------------------------
14
+ // Severity ordering for comparison
15
+ // ---------------------------------------------------------------------------
16
+ const SEVERITY_RANK = {
17
+ critical: 4,
18
+ high: 3,
19
+ medium: 2,
20
+ low: 1,
21
+ };
22
+ function meetsMinSeverity(severity, minSeverity) {
23
+ return SEVERITY_RANK[severity] >= SEVERITY_RANK[minSeverity];
24
+ }
25
+ // ---------------------------------------------------------------------------
26
+ // Core pipeline logic (shared between real and test entrypoints)
27
+ // ---------------------------------------------------------------------------
28
+ /**
29
+ * Process a sequence of text chunks through the verification pipeline.
30
+ * This is the shared core used by both createVerifiedStream (real API)
31
+ * and createVerifiedStreamFromTokens (test helper).
32
+ */
33
+ function processTokensThroughPipeline(tokens, verifier, options) {
34
+ const allEvents = [];
35
+ const autoCorrect = options.autoCorrect ?? false;
36
+ const minCorrectionSeverity = options.minCorrectionSeverity ?? 'high';
37
+ for (const chunk of tokens) {
38
+ // Fire text callback
39
+ options.onText?.(chunk);
40
+ // Push through verifier
41
+ const events = verifier.push(chunk);
42
+ for (const event of events) {
43
+ allEvents.push(event);
44
+ options.onVerification?.(event);
45
+ // Auto-correction callback for critical/high findings
46
+ if (autoCorrect &&
47
+ event.verdict === 'FAIL' &&
48
+ meetsMinSeverity(event.severity, minCorrectionSeverity)) {
49
+ options.onCorrection?.({
50
+ finding: event,
51
+ generatedSoFar: verifier.getGeneratedCode(),
52
+ });
53
+ }
54
+ }
55
+ }
56
+ // Flush trailing code that never hit a structural boundary
57
+ const flushEvents = verifier.flush();
58
+ for (const event of flushEvents) {
59
+ allEvents.push(event);
60
+ options.onVerification?.(event);
61
+ if (autoCorrect &&
62
+ event.verdict === 'FAIL' &&
63
+ meetsMinSeverity(event.severity, minCorrectionSeverity)) {
64
+ options.onCorrection?.({
65
+ finding: event,
66
+ generatedSoFar: verifier.getGeneratedCode(),
67
+ });
68
+ }
69
+ }
70
+ return { allEvents };
71
+ }
72
+ // ---------------------------------------------------------------------------
73
+ // createVerifiedStream — real Anthropic API
74
+ // ---------------------------------------------------------------------------
75
+ /**
76
+ * Create and run a verified stream using the Anthropic API.
77
+ * Returns when generation is complete.
78
+ */
79
+ export async function createVerifiedStream(options) {
80
+ const start = Date.now();
81
+ const model = options.model ?? 'claude-sonnet-4-20250514';
82
+ const maxTokens = options.maxTokens ?? 4096;
83
+ // Create verifier
84
+ const verifier = new StreamingVerifier({
85
+ language: options.language,
86
+ projectPath: options.projectPath,
87
+ });
88
+ // Create Anthropic client
89
+ const apiKey = options.apiKey ?? process.env.ANTHROPIC_API_KEY;
90
+ if (!apiKey) {
91
+ throw new Error('ANTHROPIC_API_KEY is required for createVerifiedStream.\n' +
92
+ 'Set it via the apiKey option or ANTHROPIC_API_KEY env var.');
93
+ }
94
+ const client = new Anthropic({ apiKey });
95
+ // Start streaming
96
+ const stream = client.messages.stream({
97
+ model,
98
+ max_tokens: maxTokens,
99
+ ...(options.systemPrompt ? { system: options.systemPrompt } : {}),
100
+ messages: [{ role: 'user', content: options.userPrompt }],
101
+ });
102
+ // Collect text events into an array, then process them
103
+ const allEvents = [];
104
+ const autoCorrect = options.autoCorrect ?? false;
105
+ const minCorrectionSeverity = options.minCorrectionSeverity ?? 'high';
106
+ stream.on('text', (text) => {
107
+ options.onText?.(text);
108
+ const events = verifier.push(text);
109
+ for (const event of events) {
110
+ allEvents.push(event);
111
+ options.onVerification?.(event);
112
+ if (autoCorrect &&
113
+ event.verdict === 'FAIL' &&
114
+ meetsMinSeverity(event.severity, minCorrectionSeverity)) {
115
+ options.onCorrection?.({
116
+ finding: event,
117
+ generatedSoFar: verifier.getGeneratedCode(),
118
+ });
119
+ }
120
+ }
121
+ });
122
+ // Wait for stream to complete
123
+ const finalMessage = await stream.finalMessage();
124
+ // Flush trailing code
125
+ const flushEvents = verifier.flush();
126
+ for (const event of flushEvents) {
127
+ allEvents.push(event);
128
+ options.onVerification?.(event);
129
+ if (autoCorrect &&
130
+ event.verdict === 'FAIL' &&
131
+ meetsMinSeverity(event.severity, minCorrectionSeverity)) {
132
+ options.onCorrection?.({
133
+ finding: event,
134
+ generatedSoFar: verifier.getGeneratedCode(),
135
+ });
136
+ }
137
+ }
138
+ const findings = allEvents.filter(e => e.verdict === 'FAIL');
139
+ return {
140
+ text: verifier.getGeneratedCode(),
141
+ events: allEvents,
142
+ findings,
143
+ stats: verifier.getStats(),
144
+ inputTokens: finalMessage.usage.input_tokens,
145
+ outputTokens: finalMessage.usage.output_tokens,
146
+ durationMs: Date.now() - start,
147
+ };
148
+ }
149
+ // ---------------------------------------------------------------------------
150
+ // createVerifiedStreamOpenAI — OpenAI API with logprob entropy detection
151
+ // ---------------------------------------------------------------------------
152
+ /**
153
+ * Create and run a verified stream using the OpenAI API.
154
+ * Captures per-token logprobs and runs the entropy hallucination detector
155
+ * alongside the standard pattern-based checks.
156
+ */
157
+ async function createVerifiedStreamOpenAI(options) {
158
+ const start = Date.now();
159
+ const model = options.model ?? 'gpt-4o-mini';
160
+ const maxTokens = options.maxTokens ?? 4096;
161
+ // Dynamically import OpenAI SDK (optional dependency)
162
+ const { default: OpenAI } = await import('openai');
163
+ const apiKey = options.openaiApiKey ?? process.env.OPENAI_API_KEY;
164
+ if (!apiKey) {
165
+ throw new Error('OPENAI_API_KEY is required when provider="openai".\n' +
166
+ 'Set it via the openaiApiKey option or OPENAI_API_KEY env var.');
167
+ }
168
+ const client = new OpenAI({ apiKey });
169
+ // Create verifier + entropy detector
170
+ const verifier = new StreamingVerifier({
171
+ language: options.language,
172
+ projectPath: options.projectPath,
173
+ });
174
+ const entropy = new EntropyDetector(options.entropyDetector);
175
+ const allEvents = [];
176
+ const autoCorrect = options.autoCorrect ?? false;
177
+ const minCorrectionSeverity = options.minCorrectionSeverity ?? 'high';
178
+ // Start streaming with logprobs
179
+ // GPT-5.x models require max_completion_tokens instead of max_tokens
180
+ const isGpt5 = model.startsWith('gpt-5');
181
+ const stream = await client.chat.completions.create({
182
+ model,
183
+ ...(isGpt5 ? { max_completion_tokens: maxTokens } : { max_tokens: maxTokens }),
184
+ temperature: 0,
185
+ stream: true,
186
+ stream_options: { include_usage: true },
187
+ logprobs: true,
188
+ top_logprobs: isGpt5 ? 5 : 20, // GPT-5.x caps at 5
189
+ messages: [
190
+ ...(options.systemPrompt ? [{ role: 'system', content: options.systemPrompt }] : []),
191
+ { role: 'user', content: options.userPrompt },
192
+ ],
193
+ });
194
+ let inputTokens = 0;
195
+ let outputTokens = 0;
196
+ // Collect raw logprob data for downstream BAS analysis (MCP stream_verify)
197
+ const collectedLogprobs = [];
198
+ for await (const chunk of stream) {
199
+ // Extract usage from final chunk
200
+ if (chunk.usage) {
201
+ inputTokens = chunk.usage.prompt_tokens;
202
+ outputTokens = chunk.usage.completion_tokens;
203
+ }
204
+ const choice = chunk.choices?.[0];
205
+ if (!choice)
206
+ continue;
207
+ const delta = choice.delta;
208
+ const text = delta?.content;
209
+ if (!text)
210
+ continue;
211
+ // Fire text callback
212
+ options.onText?.(text);
213
+ // -- Entropy detector (token-level) --
214
+ const logprobContent = choice.logprobs?.content;
215
+ if (logprobContent) {
216
+ for (const tokenInfo of logprobContent) {
217
+ const tokenLogprob = {
218
+ token: tokenInfo.token,
219
+ logprob: tokenInfo.logprob,
220
+ topLogprobs: (tokenInfo.top_logprobs ?? []).map(t => ({
221
+ token: t.token,
222
+ logprob: t.logprob,
223
+ })),
224
+ };
225
+ // Collect raw logprob data for downstream consumers
226
+ collectedLogprobs.push({
227
+ token: tokenInfo.token,
228
+ top_logprobs: (tokenInfo.top_logprobs ?? []).map(t => ({
229
+ token: t.token,
230
+ logprob: t.logprob,
231
+ })),
232
+ });
233
+ const entropyEvent = entropy.pushToken(tokenLogprob);
234
+ if (entropyEvent) {
235
+ // Set the language on the code unit
236
+ entropyEvent.codeUnit.language = options.language;
237
+ allEvents.push(entropyEvent);
238
+ options.onVerification?.(entropyEvent);
239
+ if (autoCorrect &&
240
+ meetsMinSeverity(entropyEvent.severity, minCorrectionSeverity)) {
241
+ options.onCorrection?.({
242
+ finding: entropyEvent,
243
+ generatedSoFar: verifier.getGeneratedCode(),
244
+ });
245
+ }
246
+ }
247
+ }
248
+ }
249
+ // -- Pattern checks (code-unit level) + entropy context --
250
+ const events = verifier.push(text);
251
+ for (const event of events) {
252
+ // Attach entropy context from the tokens that formed this code unit
253
+ const unitEntropy = entropy.consumeUnitEntropy();
254
+ if (unitEntropy) {
255
+ event.entropyContext = unitEntropy;
256
+ // Severity escalation: pattern match + low model confidence = escalate
257
+ if (event.verdict === 'FAIL' && unitEntropy.confidence === 'low') {
258
+ // Model is uncertain AND pattern check failed — escalate
259
+ const dynamicsNote = unitEntropy.dynamicsScore > 0.5
260
+ ? `, dynamics=${(unitEntropy.dynamicsScore * 100).toFixed(0)}%`
261
+ : '';
262
+ event.evidence += ` [ESCALATED: model confidence is LOW (${(unitEntropy.highEntropyFraction * 100).toFixed(0)}% high-entropy tokens${dynamicsNote})]`;
263
+ if (event.severity === 'medium')
264
+ event.severity = 'high';
265
+ if (event.severity === 'low')
266
+ event.severity = 'medium';
267
+ }
268
+ // Emit soft warning: no pattern match but model is very uncertain
269
+ // Triggers on EITHER high-entropy fraction OR high dynamics score
270
+ if (event.verdict !== 'FAIL' && unitEntropy.confidence === 'low') {
271
+ const dynamicsInfo = unitEntropy.dynamicsScore > 0.5
272
+ ? ` Dynamics score: ${(unitEntropy.dynamicsScore * 100).toFixed(0)}% ` +
273
+ `(entropy variance=${unitEntropy.entropyStd.toFixed(3)}, ` +
274
+ `window variance=${unitEntropy.windowMaxVariance.toFixed(4)}, ` +
275
+ `competitive=${(unitEntropy.competitiveFraction * 100).toFixed(0)}%).`
276
+ : '';
277
+ const reviewEvent = {
278
+ type: 'finding',
279
+ codeUnit: event.codeUnit,
280
+ checkId: 'entropy_review',
281
+ checkName: 'Entropy Review Flag',
282
+ verdict: 'FAIL',
283
+ evidence: `Model confidence is low for this code unit: ${(unitEntropy.highEntropyFraction * 100).toFixed(0)}% of tokens ` +
284
+ `have high entropy (mean=${unitEntropy.meanEntropy.toFixed(3)}, max=${unitEntropy.maxEntropy.toFixed(3)}).${dynamicsInfo} ` +
285
+ `No pattern-based issues detected, but the model may be confabulating.`,
286
+ severity: 'low',
287
+ suggestion: 'Review this code section — the model showed uncertainty even though no known bad patterns were found.',
288
+ latencyMs: 0,
289
+ entropyContext: unitEntropy,
290
+ };
291
+ allEvents.push(reviewEvent);
292
+ options.onVerification?.(reviewEvent);
293
+ }
294
+ }
295
+ allEvents.push(event);
296
+ options.onVerification?.(event);
297
+ if (autoCorrect &&
298
+ event.verdict === 'FAIL' &&
299
+ meetsMinSeverity(event.severity, minCorrectionSeverity)) {
300
+ options.onCorrection?.({
301
+ finding: event,
302
+ generatedSoFar: verifier.getGeneratedCode(),
303
+ });
304
+ }
305
+ }
306
+ }
307
+ // Flush trailing code
308
+ const flushEvents = verifier.flush();
309
+ for (const event of flushEvents) {
310
+ // Attach final entropy context
311
+ const unitEntropy = entropy.consumeUnitEntropy();
312
+ if (unitEntropy) {
313
+ event.entropyContext = unitEntropy;
314
+ }
315
+ allEvents.push(event);
316
+ options.onVerification?.(event);
317
+ }
318
+ const findings = allEvents.filter(e => e.verdict === 'FAIL');
319
+ const entropyStats = entropy.getStats();
320
+ return {
321
+ text: verifier.getGeneratedCode(),
322
+ events: allEvents,
323
+ findings,
324
+ stats: {
325
+ ...verifier.getStats(),
326
+ // Augment with entropy stats
327
+ ...entropyStats,
328
+ },
329
+ inputTokens,
330
+ outputTokens,
331
+ durationMs: Date.now() - start,
332
+ collectedLogprobs: collectedLogprobs.length > 0 ? collectedLogprobs : undefined,
333
+ };
334
+ }
335
+ // ---------------------------------------------------------------------------
336
+ // createVerifiedStream — unified entrypoint (routes by provider)
337
+ // ---------------------------------------------------------------------------
338
+ // Re-export the original as the Anthropic-specific implementation
339
+ const createVerifiedStreamAnthropic = createVerifiedStream;
340
+ /**
341
+ * Create a verified stream using the specified provider.
342
+ * - provider='anthropic' (default): pattern checks only
343
+ * - provider='openai': pattern checks + entropy hallucination detection
344
+ */
345
+ export async function createVerifiedStreamAuto(options) {
346
+ const provider = options.provider ?? 'anthropic';
347
+ if (provider === 'openai') {
348
+ return createVerifiedStreamOpenAI(options);
349
+ }
350
+ return createVerifiedStreamAnthropic(options);
351
+ }
352
+ // ---------------------------------------------------------------------------
353
+ // createVerifiedStreamFromTokens — test helper (no API calls)
354
+ // ---------------------------------------------------------------------------
355
+ /**
356
+ * Simulate a verified stream by pushing an array of token strings through
357
+ * the verification pipeline. Same logic as createVerifiedStream but without
358
+ * the Anthropic client. Useful for deterministic testing.
359
+ */
360
+ export function createVerifiedStreamFromTokens(tokens, options) {
361
+ const start = Date.now();
362
+ const verifier = new StreamingVerifier({
363
+ language: options.language,
364
+ projectPath: options.projectPath,
365
+ });
366
+ const { allEvents } = processTokensThroughPipeline(tokens, verifier, options);
367
+ const findings = allEvents.filter(e => e.verdict === 'FAIL');
368
+ return {
369
+ text: verifier.getGeneratedCode(),
370
+ events: allEvents,
371
+ findings,
372
+ stats: verifier.getStats(),
373
+ inputTokens: 0,
374
+ outputTokens: 0,
375
+ durationMs: Date.now() - start,
376
+ };
377
+ }
378
+ //# sourceMappingURL=stream-interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-interceptor.js","sourceRoot":"","sources":["../../src/realtime/stream-interceptor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Streaming Checks — stateless, pre-compiled pattern matchers for real-time verification.
3
+ *
4
+ * Extracts the regex-based formal verification checks from the existing
5
+ * formal-verifier.ts into standalone StreamingCheck objects. Also loads
6
+ * learned rules from the catalog and compiles them into the same format.
7
+ *
8
+ * All regex patterns are created once at module load time and reused across
9
+ * invocations. The `runChecks` function targets <10ms for the full check set
10
+ * against a single code unit.
11
+ */
12
+ import type { StreamingCheck, CompiledCheckSet, CodeUnit, VerificationEvent } from './types.js';
13
+ import type { LearnedRule } from '../lib/learned-rules/types.js';
14
+ /**
15
+ * Returns all hand-crafted formal checks as StreamingCheck objects.
16
+ *
17
+ * These cover the key vulnerability patterns from formal-verifier.ts,
18
+ * adapted for streaming (line/statement-level) detection during generation.
19
+ */
20
+ export declare function getFormalChecks(): StreamingCheck[];
21
+ /**
22
+ * Derive context keywords for a learned rule based on its name, description,
23
+ * and category. Returns undefined if no specific context can be inferred
24
+ * (the rule will run against all code units).
25
+ */
26
+ declare function deriveContextKeywords(rule: LearnedRule): string[] | undefined;
27
+ /**
28
+ * Extract literal substrings (4+ alphanumeric chars) from a regex pattern.
29
+ * These are likely the actual identifiers the rule is looking for.
30
+ */
31
+ declare function extractRegexLiterals(regexStr: string): string[];
32
+ /**
33
+ * Load learned rules from the catalog and convert them to StreamingCheck format.
34
+ *
35
+ * Default path: `.assay/learned/rules.json` relative to process.cwd().
36
+ * Falls back to an empty set if the file doesn't exist (starter rules
37
+ * are loaded separately by getFormalChecks equivalent in the catalog).
38
+ *
39
+ * Each rule is assigned contextKeywords for relevance filtering — the check
40
+ * only runs on code units that contain at least one keyword.
41
+ */
42
+ export declare function loadLearnedChecks(catalogPath?: string): StreamingCheck[];
43
+ export { deriveContextKeywords as _deriveContextKeywords, extractRegexLiterals as _extractRegexLiterals };
44
+ /**
45
+ * Filter checks by language and return a pre-compiled set ready for fast execution.
46
+ *
47
+ * If no checks are provided, uses the built-in formal checks.
48
+ */
49
+ export declare function compileCheckSet(language: string, checks?: StreamingCheck[]): CompiledCheckSet;
50
+ /**
51
+ * Run all checks in the set against a code unit. Returns verification events.
52
+ *
53
+ * Designed to complete in <10ms for the full check set against a typical code unit.
54
+ */
55
+ export declare function runChecks(unit: CodeUnit, checkSet: CompiledCheckSet): VerificationEvent[];