tryassay 0.11.1 → 0.12.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.
- package/README.md +128 -52
- package/dist/cli.js +12 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts +10 -0
- package/dist/commands/generate.js +117 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/formal-verifier.d.ts +44 -0
- package/dist/lib/formal-verifier.js +481 -0
- package/dist/lib/formal-verifier.js.map +1 -0
- package/dist/sdk/forward-verify.d.ts +20 -0
- package/dist/sdk/forward-verify.js +239 -0
- package/dist/sdk/forward-verify.js.map +1 -0
- package/dist/sdk/index.d.ts +8 -0
- package/dist/sdk/index.js +29 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/types.d.ts +72 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/sdk/verified-generate.d.ts +2 -0
- package/dist/sdk/verified-generate.js +109 -0
- package/dist/sdk/verified-generate.js.map +1 -0
- package/package.json +12 -1
package/README.md
CHANGED
|
@@ -205,33 +205,104 @@ npm run build
|
|
|
205
205
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
206
206
|
```
|
|
207
207
|
|
|
208
|
-
###
|
|
208
|
+
### Generate Verified Code (Fastest Way to Try Assay)
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
npm install -g tryassay
|
|
212
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
213
|
+
|
|
214
|
+
# Generate code with Layer 2 verification built in
|
|
215
|
+
tryassay generate --task "Write a function that validates email addresses" --lang typescript --verbose
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Verification runs automatically. You get the code + a proof showing every claim that was checked. No "skip verification" option exists.
|
|
219
|
+
|
|
220
|
+
### Or Use the SDK Programmatically
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
import { AssaySDK } from 'tryassay';
|
|
224
|
+
|
|
225
|
+
const sdk = new AssaySDK();
|
|
226
|
+
const result = await sdk.generate({
|
|
227
|
+
task: 'Write a CSV parser that handles quoted fields',
|
|
228
|
+
language: 'typescript'
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
console.log(result.verified); // true if all critical claims pass
|
|
232
|
+
console.log(result.verification.passed); // claims that passed
|
|
233
|
+
console.log(result.verification.formalStats); // deterministic vs LLM verdicts
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Run the Full LUCID Cycle
|
|
209
237
|
|
|
210
238
|
```bash
|
|
211
239
|
# 1. Initialize an Assay project
|
|
212
|
-
|
|
240
|
+
tryassay init
|
|
213
241
|
|
|
214
242
|
# 2. Generate a hallucinated Terms of Service
|
|
215
|
-
|
|
243
|
+
tryassay hallucinate
|
|
216
244
|
|
|
217
245
|
# 3. Extract testable claims from the hallucination
|
|
218
|
-
|
|
246
|
+
tryassay extract
|
|
219
247
|
|
|
220
248
|
# 4. Verify claims against your codebase
|
|
221
|
-
|
|
249
|
+
tryassay verify --repo /path/to/your/project
|
|
222
250
|
|
|
223
251
|
# 5. Generate a gap report
|
|
224
|
-
|
|
252
|
+
tryassay report
|
|
225
253
|
|
|
226
254
|
# 6. Generate remediation tasks for gaps
|
|
227
|
-
|
|
255
|
+
tryassay remediate --repo /path/to/your/project
|
|
228
256
|
|
|
229
257
|
# 7. After fixing gaps, regenerate for the next iteration
|
|
230
|
-
|
|
258
|
+
tryassay regenerate
|
|
231
259
|
```
|
|
232
260
|
|
|
233
261
|
Each iteration stores artifacts in `.assay/iterations/{N}/`, maintaining a complete audit trail.
|
|
234
262
|
|
|
263
|
+
### Assess a Codebase (One Command)
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Assess any local project or GitHub repo
|
|
267
|
+
tryassay assess /path/to/your/project
|
|
268
|
+
tryassay assess https://github.com/org/repo --publish
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## SDK (Programmatic API)
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
npm install tryassay
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
```typescript
|
|
280
|
+
import { AssaySDK } from 'tryassay';
|
|
281
|
+
|
|
282
|
+
const sdk = new AssaySDK({ anthropicApiKey: 'sk-ant-...' });
|
|
283
|
+
|
|
284
|
+
// Generate verified code — verification runs automatically
|
|
285
|
+
const result = await sdk.generate({
|
|
286
|
+
task: 'Write a function that parses CSV with quoted fields',
|
|
287
|
+
language: 'typescript'
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
// result.verified: boolean — did all critical/high claims pass?
|
|
291
|
+
// result.code: string — the generated code
|
|
292
|
+
// result.verification: full claim-by-claim proof
|
|
293
|
+
// result.verification.formalStats: { formallyVerified, llmVerified, formalOverrides }
|
|
294
|
+
|
|
295
|
+
// Verify existing code
|
|
296
|
+
const check = await sdk.verify({
|
|
297
|
+
code: myCode,
|
|
298
|
+
language: 'typescript'
|
|
299
|
+
});
|
|
300
|
+
// check.claims: every implicit claim extracted
|
|
301
|
+
// check.verifications: each claim's verdict (PASS/PARTIAL/FAIL)
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
The SDK enforces Layer 2 — `generate()` always returns a verification proof alongside the code. The formal verifier runs deterministic pattern checks (regex, not LLM) and can override LLM verdicts. On its first production call, it caught the LLM hallucinating PASS on code with SQL injection.
|
|
305
|
+
|
|
235
306
|
---
|
|
236
307
|
|
|
237
308
|
## MCP Server (Claude Code, Cursor, Windsurf)
|
|
@@ -279,26 +350,30 @@ Two modes: **Assay API** (recommended, uses your Assay key) or **BYOK** (bring y
|
|
|
279
350
|
|
|
280
351
|
## CLI Reference
|
|
281
352
|
|
|
282
|
-
| Command |
|
|
283
|
-
|
|
284
|
-
| `
|
|
285
|
-
| `
|
|
286
|
-
| `
|
|
287
|
-
| `
|
|
288
|
-
| `
|
|
289
|
-
| `
|
|
290
|
-
| `
|
|
291
|
-
| `
|
|
353
|
+
| Command | Description |
|
|
354
|
+
|---------|-------------|
|
|
355
|
+
| `tryassay generate` | Generate verified code — Layer 2 verification below the model call |
|
|
356
|
+
| `tryassay assess <target>` | Run autonomous LVR assessment against a codebase or GitHub URL |
|
|
357
|
+
| `tryassay init` | Initialize project configuration |
|
|
358
|
+
| `tryassay hallucinate` | Generate a hallucinated ToS/API docs/user manual |
|
|
359
|
+
| `tryassay describe` | Fetch an existing ToS from a URL |
|
|
360
|
+
| `tryassay extract` | Extract testable claims from a document |
|
|
361
|
+
| `tryassay verify` | Verify extracted claims against a codebase |
|
|
362
|
+
| `tryassay report` | Generate a gap report from verification results |
|
|
363
|
+
| `tryassay remediate` | Generate code-level fix tasks from gaps |
|
|
364
|
+
| `tryassay regenerate` | Feed verified reality back, regenerate spec for next iteration |
|
|
365
|
+
| `tryassay reverse` | Generate code with hallucination prevention |
|
|
366
|
+
| `tryassay runtime start` | Start the Verified Agent Runtime |
|
|
292
367
|
|
|
293
368
|
### Options
|
|
294
369
|
|
|
295
370
|
```bash
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
371
|
+
tryassay generate --task "..." --lang typescript --verbose # Verified code generation
|
|
372
|
+
tryassay assess /path/to/project --publish # Assess + publish dashboard
|
|
373
|
+
tryassay hallucinate --type tos|api-docs|user-manual # Document type (default: tos)
|
|
374
|
+
tryassay extract --iteration 3 # Specify iteration (default: latest)
|
|
375
|
+
tryassay verify --repo /path/to/code --iteration 3 # Verify specific iteration
|
|
376
|
+
tryassay remediate --threshold 95 # Set compliance target (default: 95%)
|
|
302
377
|
```
|
|
303
378
|
|
|
304
379
|
---
|
|
@@ -403,37 +478,38 @@ After iterative remediation and regeneration, compliance converges toward 90%+.
|
|
|
403
478
|
|
|
404
479
|
```
|
|
405
480
|
hallucination-reversing-system/
|
|
406
|
-
├── src/
|
|
407
|
-
│ ├── cli.ts #
|
|
408
|
-
│ ├──
|
|
409
|
-
│
|
|
410
|
-
│ │ ├──
|
|
411
|
-
│ │ ├──
|
|
412
|
-
│ │ ├──
|
|
413
|
-
│ │
|
|
414
|
-
│
|
|
415
|
-
│ │ ├──
|
|
416
|
-
│ │
|
|
481
|
+
├── src/
|
|
482
|
+
│ ├── cli.ts # CLI entry point (Commander.js)
|
|
483
|
+
│ ├── index.ts # SDK entry point (package export)
|
|
484
|
+
│ ├── sdk/ # Programmatic SDK
|
|
485
|
+
│ │ ├── index.ts # AssaySDK class
|
|
486
|
+
│ │ ├── types.ts # SDK type definitions
|
|
487
|
+
│ │ ├── forward-verify.ts # Claim extraction + verification pipeline
|
|
488
|
+
│ │ └── verified-generate.ts # Generate-verify-regenerate loop
|
|
489
|
+
│ ├── commands/ # CLI commands
|
|
490
|
+
│ │ ├── generate.ts # Verified code generation
|
|
491
|
+
│ │ ├── assess.ts # Autonomous LVR assessment
|
|
492
|
+
│ │ ├── runtime.ts # Verified Agent Runtime commands
|
|
493
|
+
│ │ └── ... # init, hallucinate, extract, verify, etc.
|
|
417
494
|
│ ├── lib/ # Core modules
|
|
418
495
|
│ │ ├── anthropic.ts # Claude SDK wrapper
|
|
419
|
-
│ │ ├──
|
|
420
|
-
│ │ ├──
|
|
421
|
-
│ │ ├──
|
|
422
|
-
│ │ ├──
|
|
423
|
-
│ │ ├── prompts.ts # LLM prompt templates
|
|
496
|
+
│ │ ├── formal-verifier.ts # Deterministic formal verifier (no LLM)
|
|
497
|
+
│ │ ├── spec-synthesizer.ts # Spec synthesis from task descriptions
|
|
498
|
+
│ │ ├── constraint-engine.ts # Domain constraint generation
|
|
499
|
+
│ │ ├── guided-generator.ts # Constraint-guided code generation
|
|
424
500
|
│ │ └── ...
|
|
425
|
-
│ └──
|
|
426
|
-
├──
|
|
427
|
-
│
|
|
428
|
-
│
|
|
429
|
-
│
|
|
430
|
-
├──
|
|
431
|
-
├──
|
|
432
|
-
|
|
433
|
-
├──
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
501
|
+
│ └── runtime/ # Verified Agent Runtime
|
|
502
|
+
│ ├── agent-loop.ts # Core agent decision-execution cycle
|
|
503
|
+
│ ├── layer2-guardian.ts # 4-level immutability enforcement
|
|
504
|
+
│ ├── kill-switch.ts # Strict hierarchy kill switch
|
|
505
|
+
│ └── ... # 30+ runtime modules
|
|
506
|
+
├── api/ # Vercel serverless API
|
|
507
|
+
│ ├── v1/forward.ts # Forward verification endpoint
|
|
508
|
+
│ └── lib/formal-verifier.ts # Production formal verifier
|
|
509
|
+
├── mcp-server/ # MCP server for AI editors
|
|
510
|
+
├── github-action/ # GitHub Action for CI/CD
|
|
511
|
+
├── docs/ # Research papers, plans, specs
|
|
512
|
+
└── results/ # Benchmark data (HumanEval, SWE-bench)
|
|
437
513
|
```
|
|
438
514
|
|
|
439
515
|
---
|
package/dist/cli.js
CHANGED
|
@@ -12,11 +12,12 @@ import { reverseCommand } from './commands/reverse.js';
|
|
|
12
12
|
import { assessCommand } from './commands/assess.js';
|
|
13
13
|
import { runtimeCommand, runtimeInitCommand, runtimeStatusCommand, runtimeStopCommand, runtimeExtractCommand, runtimeGapsCommand, runtimeTeamCommand, runtimeFullTeamCommand, runtimeToolsListCommand, runtimeToolsApproveCommand, runtimeToolsRollbackCommand, runtimeAgentsListCommand, runtimeAgentsSpawnCommand, runtimeAgentsRetireCommand, runtimeRulesProposeCommand, runtimeRulesShadowCommand, runtimeRulesPromoteCommand, runtimeSafetyStatusCommand, runtimeSafetySignCommand, runtimeSafetyRollbackCommand, runtimeSafetyKillswitchCommand } from './commands/runtime.js';
|
|
14
14
|
import { apiStartCommand } from './commands/api.js';
|
|
15
|
+
import { generateCommand } from './commands/generate.js';
|
|
15
16
|
const program = new Command();
|
|
16
17
|
program
|
|
17
18
|
.name('assay')
|
|
18
19
|
.description('Assay — AI code verification using the LUCID methodology')
|
|
19
|
-
.version('0.
|
|
20
|
+
.version('0.12.1');
|
|
20
21
|
program
|
|
21
22
|
.command('init')
|
|
22
23
|
.description('Initialize an Assay project in the current directory')
|
|
@@ -69,6 +70,16 @@ program
|
|
|
69
70
|
.option('-o, --output <path>', 'Output file path')
|
|
70
71
|
.option('-v, --verbose', 'Show detailed progress')
|
|
71
72
|
.action(reverseCommand);
|
|
73
|
+
program
|
|
74
|
+
.command('generate')
|
|
75
|
+
.description('Generate verified code — Layer 2 verification below the model call')
|
|
76
|
+
.option('-t, --task <task>', 'Coding task description')
|
|
77
|
+
.option('-f, --task-file <path>', 'Read task from file')
|
|
78
|
+
.option('-l, --lang <language>', 'Target language', 'typescript')
|
|
79
|
+
.option('-o, --output <path>', 'Output file path')
|
|
80
|
+
.option('-n, --max-iterations <n>', 'Max regeneration attempts', '3')
|
|
81
|
+
.option('-v, --verbose', 'Show detailed progress')
|
|
82
|
+
.action(generateCommand);
|
|
72
83
|
program
|
|
73
84
|
.command('assess')
|
|
74
85
|
.description('Run autonomous LVR Loop 1 assessment against a codebase')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC;AACtjB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface GenerateCommandOptions {
|
|
2
|
+
task?: string;
|
|
3
|
+
taskFile?: string;
|
|
4
|
+
lang: string;
|
|
5
|
+
output?: string;
|
|
6
|
+
maxIterations?: string;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateCommand(options: GenerateCommandOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { AssaySDK } from '../sdk/index.js';
|
|
4
|
+
export async function generateCommand(options) {
|
|
5
|
+
// Resolve task description
|
|
6
|
+
let task;
|
|
7
|
+
if (options.task) {
|
|
8
|
+
task = options.task;
|
|
9
|
+
}
|
|
10
|
+
else if (options.taskFile) {
|
|
11
|
+
try {
|
|
12
|
+
task = (await readFile(options.taskFile, 'utf-8')).trim();
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
console.error(`Error: Cannot read task file: ${options.taskFile}`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.error('Error: Provide --task or --task-file');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
if (!task) {
|
|
24
|
+
console.error('Error: Task description is empty');
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const language = options.lang;
|
|
28
|
+
const maxIterations = options.maxIterations ? parseInt(options.maxIterations, 10) : 3;
|
|
29
|
+
const verbose = options.verbose ?? false;
|
|
30
|
+
// Progress callback
|
|
31
|
+
const onProgress = verbose
|
|
32
|
+
? (event) => {
|
|
33
|
+
const phaseIcons = {
|
|
34
|
+
spec: '📋',
|
|
35
|
+
constraints: '🔒',
|
|
36
|
+
generate: '⚡',
|
|
37
|
+
extract: '🔍',
|
|
38
|
+
verify: '✓',
|
|
39
|
+
formal: '🔬',
|
|
40
|
+
regenerate: '🔄',
|
|
41
|
+
};
|
|
42
|
+
const icon = phaseIcons[event.phase] ?? '▸';
|
|
43
|
+
console.error(` ${icon} [${event.iteration}/${event.totalIterations}] ${event.message}`);
|
|
44
|
+
}
|
|
45
|
+
: undefined;
|
|
46
|
+
console.error('\n┌─ ASSAY GENERATE (Layer 2) ──────────────────────┐');
|
|
47
|
+
console.error(`│ Task: ${task.slice(0, 45)}${task.length > 45 ? '...' : ''}`);
|
|
48
|
+
console.error(`│ Language: ${language}`);
|
|
49
|
+
console.error(`│ Max iterations: ${maxIterations}`);
|
|
50
|
+
console.error('└─────────────────────────────────────────────────┘\n');
|
|
51
|
+
// Initialize SDK and generate
|
|
52
|
+
const sdk = new AssaySDK({
|
|
53
|
+
maxIterations,
|
|
54
|
+
onProgress,
|
|
55
|
+
});
|
|
56
|
+
let result;
|
|
57
|
+
try {
|
|
58
|
+
result = await sdk.generate({ task, language });
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.error(`\nError: ${err instanceof Error ? err.message : String(err)}`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
// Output code
|
|
65
|
+
if (options.output) {
|
|
66
|
+
await mkdir(dirname(options.output), { recursive: true });
|
|
67
|
+
await writeFile(options.output, result.code, 'utf-8');
|
|
68
|
+
console.error(`\n✓ Code written to: ${options.output}`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
process.stdout.write(result.code);
|
|
72
|
+
}
|
|
73
|
+
// Summary
|
|
74
|
+
const v = result.verification;
|
|
75
|
+
console.error('\n┌─ VERIFICATION RESULT ───────────────────────────┐');
|
|
76
|
+
console.error(`│ Status: ${result.verified ? '✓ VERIFIED' : '✗ UNVERIFIED'}`);
|
|
77
|
+
console.error(`│ Iterations: ${result.iterations}/${maxIterations}`);
|
|
78
|
+
console.error(`│ Claims: ${v.total} extracted`);
|
|
79
|
+
console.error(`│ Passed: ${v.passed}/${v.total}`);
|
|
80
|
+
if (v.failed > 0)
|
|
81
|
+
console.error(`│ Failed: ${v.failed}`);
|
|
82
|
+
if (v.partial > 0)
|
|
83
|
+
console.error(`│ Partial: ${v.partial}`);
|
|
84
|
+
console.error(`│ Formal: ${v.formalStats.formallyVerified} deterministic, ${v.formalStats.llmVerified} LLM`);
|
|
85
|
+
if (v.formalStats.formalOverrides > 0) {
|
|
86
|
+
console.error(`│ Overrides: ${v.formalStats.formalOverrides} (formal corrected LLM)`);
|
|
87
|
+
}
|
|
88
|
+
console.error(`│ Specs: ${result.specs}`);
|
|
89
|
+
console.error(`│ Constraints: ${result.constraints}`);
|
|
90
|
+
console.error(`│ Tokens: ${result.usage.inputTokens.toLocaleString()} in / ${result.usage.outputTokens.toLocaleString()} out`);
|
|
91
|
+
console.error(`│ Duration: ${(result.usage.durationMs / 1000).toFixed(1)}s`);
|
|
92
|
+
console.error('└─────────────────────────────────────────────────┘');
|
|
93
|
+
// Write sidecar JSON
|
|
94
|
+
if (options.output) {
|
|
95
|
+
const sidecarPath = options.output.replace(/\.[^.]+$/, '.assay.json');
|
|
96
|
+
await writeFile(sidecarPath, JSON.stringify(result, null, 2), 'utf-8');
|
|
97
|
+
console.error(`✓ Verification proof written to: ${sidecarPath}`);
|
|
98
|
+
}
|
|
99
|
+
// Verbose: show individual claim results
|
|
100
|
+
if (verbose && v.verifications.length > 0) {
|
|
101
|
+
console.error('\n── Claim Details ──');
|
|
102
|
+
for (const cv of v.verifications) {
|
|
103
|
+
const icon = cv.verdict === 'PASS' ? '✓'
|
|
104
|
+
: cv.verdict === 'PARTIAL' ? '◐'
|
|
105
|
+
: cv.verdict === 'FAIL' ? '✗'
|
|
106
|
+
: '–';
|
|
107
|
+
const method = cv.method === 'formal' ? ' [formal]' : '';
|
|
108
|
+
const override = cv.formalOverride ? ` (overrode LLM ${cv.formalOverride.originalLlmVerdict})` : '';
|
|
109
|
+
console.error(` ${icon} ${cv.claimId}: ${cv.reasoning.slice(0, 80)}${method}${override}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Exit with non-zero if unverified
|
|
113
|
+
if (!result.verified) {
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formal Verifier — Deterministic claim verification that can't hallucinate.
|
|
3
|
+
*
|
|
4
|
+
* This is a local copy of api/lib/formal-verifier.ts for use within the SDK.
|
|
5
|
+
* The canonical version lives at api/lib/formal-verifier.ts.
|
|
6
|
+
*/
|
|
7
|
+
export interface ForwardClaim {
|
|
8
|
+
id: string;
|
|
9
|
+
category: 'correctness' | 'security' | 'performance' | 'error-handling' | 'edge-case' | 'type-safety';
|
|
10
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
11
|
+
description: string;
|
|
12
|
+
assertion: string;
|
|
13
|
+
testable?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ForwardVerification {
|
|
16
|
+
claimId: string;
|
|
17
|
+
verdict: 'PASS' | 'PARTIAL' | 'FAIL' | 'N/A';
|
|
18
|
+
reasoning: string;
|
|
19
|
+
evidence?: string;
|
|
20
|
+
verification_method?: 'formal' | 'llm';
|
|
21
|
+
formal_override?: {
|
|
22
|
+
original_llm_verdict: 'PASS' | 'PARTIAL' | 'FAIL' | 'N/A';
|
|
23
|
+
formal_verdict: 'PASS' | 'FAIL';
|
|
24
|
+
reason: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface FormalVerificationStats {
|
|
28
|
+
formally_verified: number;
|
|
29
|
+
llm_verified: number;
|
|
30
|
+
disagreements: number;
|
|
31
|
+
formal_overrides: number;
|
|
32
|
+
}
|
|
33
|
+
export type FormalCheckType = 'function_exists' | 'parameter_check' | 'error_handling' | 'null_check' | 'type_annotation' | 'sql_parameterized' | 'input_validation';
|
|
34
|
+
export interface FormalCheckResult {
|
|
35
|
+
claimId: string;
|
|
36
|
+
checkType: FormalCheckType;
|
|
37
|
+
verdict: 'PASS' | 'FAIL';
|
|
38
|
+
evidence: string;
|
|
39
|
+
confidence: 1;
|
|
40
|
+
}
|
|
41
|
+
export declare function runFormalVerification(code: string, language: string, claims: ForwardClaim[], llmVerifications: ForwardVerification[]): {
|
|
42
|
+
verifications: ForwardVerification[];
|
|
43
|
+
stats: FormalVerificationStats;
|
|
44
|
+
};
|