projscan 4.11.0 → 4.12.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.
- package/README.md +93 -39
- package/dist/cli/commands/assess.js +27 -0
- package/dist/cli/commands/assess.js.map +1 -1
- package/dist/cli/commands/simulate.js +23 -0
- package/dist/cli/commands/simulate.js.map +1 -1
- package/dist/core/assess.d.ts +1 -0
- package/dist/core/assess.js +28 -7
- package/dist/core/assess.js.map +1 -1
- package/dist/core/proofCardTrustMemory.d.ts +11 -0
- package/dist/core/proofCardTrustMemory.js +162 -0
- package/dist/core/proofCardTrustMemory.js.map +1 -0
- package/dist/core/proofCards.d.ts +2 -0
- package/dist/core/proofCards.js +123 -16
- package/dist/core/proofCards.js.map +1 -1
- package/dist/core/simulate.js +91 -0
- package/dist/core/simulate.js.map +1 -1
- package/dist/core/startMissionPolicy.js +18 -0
- package/dist/core/startMissionPolicy.js.map +1 -1
- package/dist/core/startPreflightRouteCriteria.js +2 -0
- package/dist/core/startPreflightRouteCriteria.js.map +1 -1
- package/dist/core/startResume.js +7 -0
- package/dist/core/startResume.js.map +1 -1
- package/dist/mcp/tools/assess.js +5 -0
- package/dist/mcp/tools/assess.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/tool-manifest.json +6 -2
- package/dist/types/assess.d.ts +35 -0
- package/dist/types/simulate.d.ts +14 -0
- package/docs/GUIDE.md +20 -9
- package/docs/demos/projscan-4-1-demo.html +214 -2
- package/docs/projscan-mission-control.png +0 -0
- package/docs/projscan-proof-cards.png +0 -0
- package/package.json +2 -1
- package/scripts/capture-readme-assets.mjs +6 -0
|
@@ -377,6 +377,109 @@
|
|
|
377
377
|
background: var(--red);
|
|
378
378
|
}
|
|
379
379
|
|
|
380
|
+
.assess {
|
|
381
|
+
padding-top: 74px;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.assess-header {
|
|
385
|
+
display: grid;
|
|
386
|
+
grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
|
|
387
|
+
gap: 24px;
|
|
388
|
+
align-items: end;
|
|
389
|
+
margin-bottom: 24px;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
.assess-header h2 {
|
|
393
|
+
margin-bottom: 10px;
|
|
394
|
+
font-size: 44px;
|
|
395
|
+
line-height: 1.06;
|
|
396
|
+
letter-spacing: 0;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
.assess-header p {
|
|
400
|
+
margin-bottom: 0;
|
|
401
|
+
color: var(--muted);
|
|
402
|
+
font-size: 18px;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.proof-card-grid {
|
|
406
|
+
display: grid;
|
|
407
|
+
grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
|
|
408
|
+
gap: 22px;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.proof-card {
|
|
412
|
+
min-height: 470px;
|
|
413
|
+
padding: 24px;
|
|
414
|
+
border: 1px solid var(--line);
|
|
415
|
+
border-radius: 8px;
|
|
416
|
+
background: var(--panel);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.proof-card h3 {
|
|
420
|
+
margin-bottom: 8px;
|
|
421
|
+
font-size: 30px;
|
|
422
|
+
line-height: 1.12;
|
|
423
|
+
letter-spacing: 0;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
.proof-card p {
|
|
427
|
+
margin-bottom: 18px;
|
|
428
|
+
color: var(--muted);
|
|
429
|
+
font-size: 15px;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.evidence-list {
|
|
433
|
+
display: grid;
|
|
434
|
+
gap: 10px;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
.evidence-item {
|
|
438
|
+
display: grid;
|
|
439
|
+
grid-template-columns: 118px minmax(0, 1fr);
|
|
440
|
+
gap: 12px;
|
|
441
|
+
padding: 13px 0;
|
|
442
|
+
border-top: 1px solid var(--line);
|
|
443
|
+
font-size: 14px;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
.evidence-item strong {
|
|
447
|
+
color: var(--ink);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.evidence-item span {
|
|
451
|
+
color: var(--muted);
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.delta-row {
|
|
455
|
+
display: grid;
|
|
456
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
457
|
+
gap: 10px;
|
|
458
|
+
margin-top: 18px;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.delta {
|
|
462
|
+
min-height: 82px;
|
|
463
|
+
padding: 13px;
|
|
464
|
+
border: 1px solid var(--line);
|
|
465
|
+
border-radius: 8px;
|
|
466
|
+
background: #fbf7ef;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.delta strong {
|
|
470
|
+
display: block;
|
|
471
|
+
margin-bottom: 5px;
|
|
472
|
+
font-size: 24px;
|
|
473
|
+
line-height: 1;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.delta span {
|
|
477
|
+
color: var(--muted);
|
|
478
|
+
font-size: 12px;
|
|
479
|
+
font-weight: 800;
|
|
480
|
+
text-transform: uppercase;
|
|
481
|
+
}
|
|
482
|
+
|
|
380
483
|
@media (max-width: 980px) {
|
|
381
484
|
.page {
|
|
382
485
|
width: min(100% - 32px, 760px);
|
|
@@ -385,6 +488,8 @@
|
|
|
385
488
|
|
|
386
489
|
.hero,
|
|
387
490
|
.proof-header,
|
|
491
|
+
.assess-header,
|
|
492
|
+
.proof-card-grid,
|
|
388
493
|
.workflow,
|
|
389
494
|
.grid {
|
|
390
495
|
grid-template-columns: 1fr;
|
|
@@ -408,7 +513,11 @@
|
|
|
408
513
|
}
|
|
409
514
|
|
|
410
515
|
body.proof-only .hero,
|
|
411
|
-
body.proof-only .grid
|
|
516
|
+
body.proof-only .grid,
|
|
517
|
+
body.proof-only .assess,
|
|
518
|
+
body.assess-only .hero,
|
|
519
|
+
body.assess-only .grid,
|
|
520
|
+
body.assess-only .proof {
|
|
412
521
|
display: none;
|
|
413
522
|
}
|
|
414
523
|
|
|
@@ -419,6 +528,14 @@
|
|
|
419
528
|
body.proof-only .proof-header {
|
|
420
529
|
margin-top: 0;
|
|
421
530
|
}
|
|
531
|
+
|
|
532
|
+
body.assess-only .assess {
|
|
533
|
+
padding-top: 0;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
body.assess-only .assess-header {
|
|
537
|
+
margin-top: 0;
|
|
538
|
+
}
|
|
422
539
|
</style>
|
|
423
540
|
</head>
|
|
424
541
|
<body>
|
|
@@ -448,7 +565,7 @@
|
|
|
448
565
|
<span>mission and proof</span>
|
|
449
566
|
</div>
|
|
450
567
|
<div class="metric">
|
|
451
|
-
<strong>
|
|
568
|
+
<strong>47</strong>
|
|
452
569
|
<span>MCP tools</span>
|
|
453
570
|
</div>
|
|
454
571
|
<div class="metric">
|
|
@@ -617,11 +734,106 @@
|
|
|
617
734
|
</div>
|
|
618
735
|
</div>
|
|
619
736
|
</section>
|
|
737
|
+
|
|
738
|
+
<section class="assess" id="assess" aria-label="Proof Cards assessment view">
|
|
739
|
+
<div class="assess-header">
|
|
740
|
+
<div>
|
|
741
|
+
<p class="eyebrow">Proof-first assessment</p>
|
|
742
|
+
<h2>Pick the safest next fix.</h2>
|
|
743
|
+
</div>
|
|
744
|
+
<p>
|
|
745
|
+
<code>projscan assess</code> turns local quality, bug-hunt, and preflight evidence into
|
|
746
|
+
Proof Cards. Each card names the risk, the safest change shape, and the commands that
|
|
747
|
+
prove the risk went down.
|
|
748
|
+
</p>
|
|
749
|
+
</div>
|
|
750
|
+
|
|
751
|
+
<div class="proof-card-grid">
|
|
752
|
+
<section class="terminal compact-terminal" aria-label="Assess terminal output">
|
|
753
|
+
<div class="terminal-bar">
|
|
754
|
+
<span class="dot red"></span>
|
|
755
|
+
<span class="dot amber"></span>
|
|
756
|
+
<span class="dot green"></span>
|
|
757
|
+
<span class="terminal-title">projscan assess --mode fix-first</span>
|
|
758
|
+
</div>
|
|
759
|
+
<div class="terminal-body">
|
|
760
|
+
<span class="line"
|
|
761
|
+
><span class="prompt">$</span>
|
|
762
|
+
<span class="cmd">projscan assess --mode fix-first --format markdown</span></span
|
|
763
|
+
>
|
|
764
|
+
<span class="line dim">Proof-first assessment</span>
|
|
765
|
+
<span class="line"> </span>
|
|
766
|
+
<span class="line term-heading">Fix first: maintainability hotspot</span>
|
|
767
|
+
<span class="line">src/core/bugHunt.ts combines ranking, evidence, and output.</span>
|
|
768
|
+
<span class="line success">Confidence: high</span>
|
|
769
|
+
<span class="line notice">Risk delta: 76 -> 61 if split behind tests</span>
|
|
770
|
+
<span class="line"> </span>
|
|
771
|
+
<span class="line term-heading">Proof commands</span>
|
|
772
|
+
<span class="line success">npm run typecheck</span>
|
|
773
|
+
<span class="line success">npm run lint</span>
|
|
774
|
+
<span class="line success">vitest tests/core/bugHunt.test.ts</span>
|
|
775
|
+
<span class="line"> </span>
|
|
776
|
+
<span class="line term-heading">Simulate before editing</span>
|
|
777
|
+
<span class="line notice"
|
|
778
|
+
>projscan simulate --plan "split bugHunt.ts into ranking..."</span
|
|
779
|
+
>
|
|
780
|
+
</div>
|
|
781
|
+
</section>
|
|
782
|
+
|
|
783
|
+
<article class="proof-card" aria-label="Proof Card">
|
|
784
|
+
<span class="label blue">Proof Card</span>
|
|
785
|
+
<h3>Maintainability hotspot</h3>
|
|
786
|
+
<p>
|
|
787
|
+
Fix the extraction only when local evidence shows lower coupling and focused tests can
|
|
788
|
+
prove behavior stayed stable.
|
|
789
|
+
</p>
|
|
790
|
+
<div class="evidence-list">
|
|
791
|
+
<div class="evidence-item">
|
|
792
|
+
<strong>Evidence</strong>
|
|
793
|
+
<span>high churn, high complexity, broad imports, direct bug-hunt tests</span>
|
|
794
|
+
</div>
|
|
795
|
+
<div class="evidence-item">
|
|
796
|
+
<strong>Impact</strong>
|
|
797
|
+
<span>bug ranking, MCP findings, release review, PR evidence packs</span>
|
|
798
|
+
</div>
|
|
799
|
+
<div class="evidence-item">
|
|
800
|
+
<strong>Safe shape</strong>
|
|
801
|
+
<span>extract ranking, evidence, and markdown output behind existing tests</span>
|
|
802
|
+
</div>
|
|
803
|
+
<div class="evidence-item">
|
|
804
|
+
<strong>Verify</strong>
|
|
805
|
+
<span>typecheck, lint, focused Vitest, then bug-hunt smoke</span>
|
|
806
|
+
</div>
|
|
807
|
+
<div class="evidence-item">
|
|
808
|
+
<strong>Feedback</strong>
|
|
809
|
+
<span>accept, suppress, or feed false-positive notes back into trust memory</span>
|
|
810
|
+
</div>
|
|
811
|
+
</div>
|
|
812
|
+
<div class="delta-row" aria-label="Risk delta">
|
|
813
|
+
<div class="delta">
|
|
814
|
+
<strong>76</strong>
|
|
815
|
+
<span>before risk</span>
|
|
816
|
+
</div>
|
|
817
|
+
<div class="delta">
|
|
818
|
+
<strong>61</strong>
|
|
819
|
+
<span>after risk</span>
|
|
820
|
+
</div>
|
|
821
|
+
<div class="delta">
|
|
822
|
+
<strong>3</strong>
|
|
823
|
+
<span>proof commands</span>
|
|
824
|
+
</div>
|
|
825
|
+
</div>
|
|
826
|
+
</article>
|
|
827
|
+
</div>
|
|
828
|
+
</section>
|
|
620
829
|
</main>
|
|
621
830
|
<script>
|
|
622
831
|
if (window.location.hash === '#proof') {
|
|
623
832
|
document.body.classList.add('proof-only');
|
|
624
833
|
}
|
|
834
|
+
if (window.location.hash === '#assess') {
|
|
835
|
+
document.body.classList.add('assess-only');
|
|
836
|
+
}
|
|
625
837
|
document.documentElement.dataset.ready = 'true';
|
|
626
838
|
</script>
|
|
627
839
|
</body>
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projscan",
|
|
3
3
|
"mcpName": "io.github.abhiyoheswaran1/projscan",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.12.0",
|
|
5
5
|
"description": "Local code intelligence for agent-assisted engineering. Focused daily workflows for repo orientation before edits, proof before handoff or commit, and release-candidate review, with AST-backed evidence through an MCP server and CLI. Runs locally by default.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"docs/examples/swarm-coordination.md",
|
|
26
26
|
"docs/projscan-mission-control.png",
|
|
27
27
|
"docs/projscan-mission-control.gif",
|
|
28
|
+
"docs/projscan-proof-cards.png",
|
|
28
29
|
"docs/projscan-proof-router.png",
|
|
29
30
|
"docs/projscan-mission-proof.gif",
|
|
30
31
|
"docs/examples/plugins",
|
|
@@ -24,6 +24,12 @@ const captures = [
|
|
|
24
24
|
output: path.join(repoRoot, 'docs', 'projscan-proof-router.png'),
|
|
25
25
|
viewport: '1440,760',
|
|
26
26
|
},
|
|
27
|
+
{
|
|
28
|
+
name: 'Proof Cards assessment',
|
|
29
|
+
url: `${pathToFileURL(demoPath).href}#assess`,
|
|
30
|
+
output: path.join(repoRoot, 'docs', 'projscan-proof-cards.png'),
|
|
31
|
+
viewport: '1440,820',
|
|
32
|
+
},
|
|
27
33
|
];
|
|
28
34
|
|
|
29
35
|
for (const capture of captures) {
|