@orangepro/orangepro-mcp 0.2.41 → 0.2.42
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/dist/local/analyze/analyzer.js +163 -29
- package/dist/local/analyze/classify.js +5 -1
- package/dist/local/analyze/confirm.js +90 -6
- package/dist/local/analyze/frameworks.js +3 -0
- package/dist/local/flows/flowWalker.js +1 -1
- package/dist/local/operations.js +30 -5
- package/dist/local/proofDoctor.js +5 -4
- package/dist/local/provenance.js +84 -0
- package/dist/local/resolve/importGraph.js +15 -1
- package/dist/local/score/rankEligibility.js +15 -0
- package/dist/local/score/risk.js +96 -24
- package/dist/local/viz/behaviorReportData.js +91 -12
- package/dist/local/viz/behaviorReportHtml.js +19 -2
- package/dist/local/viz/html.js +3 -3
- package/package.json +1 -1
|
@@ -50,6 +50,7 @@ a{color:var(--blue);text-decoration:none}
|
|
|
50
50
|
.kpi[data-t="nosig"]{--kw:var(--rbg)} .kpi[data-t="nosig"] .kpi-num{color:var(--red)}
|
|
51
51
|
.kpi[data-t="priority"]{--kw:var(--obg)} .kpi[data-t="priority"] .kpi-num{color:var(--orange)}
|
|
52
52
|
.metric-scope{margin:9px 2px 0;color:var(--muted);font-size:11.5px;line-height:1.5}
|
|
53
|
+
.scope-note{margin:9px 0 0;padding:9px 11px;border:1px solid var(--abd);background:var(--abg);color:var(--ink2);font-size:11.5px;line-height:1.5;border-radius:6px}
|
|
53
54
|
|
|
54
55
|
/* TABS */
|
|
55
56
|
nav.tabs{display:flex;gap:2px;margin:18px 0 0;border-bottom:1px solid var(--bd)}
|
|
@@ -343,6 +344,7 @@ body[data-mode="expert"] .simple-only{display:none!important}
|
|
|
343
344
|
</div>
|
|
344
345
|
</header>
|
|
345
346
|
<div class="provenance" id="provenance"></div>
|
|
347
|
+
<div class="scope-note" id="cli-exclusions" hidden></div>
|
|
346
348
|
|
|
347
349
|
<section class="kpis" id="kpis"></section>
|
|
348
350
|
<p class="metric-scope" id="metric-scope"></p>
|
|
@@ -465,9 +467,13 @@ const D=window.DATA,$=(s)=>document.querySelector(s);
|
|
|
465
467
|
var el2=document.getElementById("delta-banner");
|
|
466
468
|
var d=D.delta;
|
|
467
469
|
if(!el2||d===undefined)return;
|
|
468
|
-
if(d===
|
|
470
|
+
if(d.comparisonState==='first_run'){el2.innerHTML='';return;}
|
|
469
471
|
var when=new Date(d.baselineTs);
|
|
470
472
|
var ago=isNaN(when.getTime())?"last run":when.toLocaleString();
|
|
473
|
+
if(d.comparisonState!=='comparable'){
|
|
474
|
+
el2.innerHTML='<div class="delta-wrap"><span class="delta-chip dc-none">Comparison withheld: '+d.comparisonReason+'</span></div>';
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
471
477
|
if(!d.changed){
|
|
472
478
|
el2.innerHTML='<div class="delta-wrap"><span class="delta-chip dc-none">No report changes since last run ('+ago+') for the recorded inputs</span></div>';
|
|
473
479
|
return;
|
|
@@ -515,7 +521,12 @@ function scrollToRisk(path){
|
|
|
515
521
|
(function(){
|
|
516
522
|
var hero=document.getElementById("delta-hero");
|
|
517
523
|
var d=D.delta;
|
|
518
|
-
if(!hero||d===undefined||d===
|
|
524
|
+
if(!hero||d===undefined||d.comparisonState==='first_run')return;
|
|
525
|
+
if(d.comparisonState!=='comparable'){
|
|
526
|
+
hero.className="delta-hero simple-only dh-clear";
|
|
527
|
+
hero.innerHTML='<h3>Comparison withheld</h3><p>'+d.comparisonReason+'</p>';
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
519
530
|
if(!d.changed){
|
|
520
531
|
var when=new Date(d.baselineTs);
|
|
521
532
|
var ago=isNaN(when.getTime())?"last run":when.toLocaleDateString();
|
|
@@ -677,6 +688,12 @@ const prov=$("#provenance");
|
|
|
677
688
|
const provisional=P.churn!=="available";
|
|
678
689
|
prov.classList.toggle("warn",provisional);
|
|
679
690
|
prov.textContent=(provisional?"PROVISIONAL RANKING · ":"VERIFIED INPUTS · ")+"source "+P.source+" · commit "+(P.commit?P.commit.slice(0,12):"unavailable")+" · history "+P.history+" · churn "+P.churn+" ("+P.churnWindow+") · OrangePro "+P.toolVersion+" · input "+P.inputFingerprint+(P.reason?" · "+P.reason:"");
|
|
691
|
+
const excludedCli=D.scan.excludedCliCommands||[];
|
|
692
|
+
if(excludedCli.length){
|
|
693
|
+
const note=$("#cli-exclusions");
|
|
694
|
+
note.hidden=false;
|
|
695
|
+
note.textContent="CLI command entries excluded from the behavior count: "+excludedCli.map(x=>x.path+" ("+x.reason+")").join(" · ");
|
|
696
|
+
}
|
|
680
697
|
$("#fw-pill").textContent=D.framework;
|
|
681
698
|
|
|
682
699
|
// bridge text in codebase tab
|
package/dist/local/viz/html.js
CHANGED
|
@@ -415,7 +415,7 @@ function initViz() {
|
|
|
415
415
|
function dotTip(e){
|
|
416
416
|
var label = (dt.tier === 'proven') ? 'Proven — dynamic targeted proof'
|
|
417
417
|
: (dt.tier === 'runtime') ? 'Runtime-covered — executed by a coverage report, not proof'
|
|
418
|
-
: (dt.tier === 'associated') ? 'Associated —
|
|
418
|
+
: (dt.tier === 'associated') ? 'Associated — resolved static test-to-behavior invocation; not execution or mutation proof'
|
|
419
419
|
: 'No link — no static or runtime signal';
|
|
420
420
|
showTip('<div class="tt">' + esc(dt.area) + ' · symbol</div>' +
|
|
421
421
|
'<div class="trow"><span>tier</span><span class="v" style="color:' + col + '">' + TIER[dt.tier].label + '</span></div>' +
|
|
@@ -1022,12 +1022,12 @@ const HTML_TEMPLATE = `<!DOCTYPE html>
|
|
|
1022
1022
|
<h3>Tiers</h3>
|
|
1023
1023
|
<div class="legend-row"><svg class="gly" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5.2" fill="var(--proven)"/></svg><div><div class="lt">Dynamic Proven</div><div class="ld">disc · dynamic targeted proof</div></div></div>
|
|
1024
1024
|
<div class="legend-row"><svg class="gly" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5.2" fill="var(--runtime)"/></svg><div><div class="lt">Runtime-covered</div><div class="ld">disc · executed by coverage, not proof</div></div></div>
|
|
1025
|
-
<div class="legend-row"><svg class="gly" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5" fill="none" stroke="var(--assoc)" stroke-width="2.4"/></svg><div><div class="lt">Associated</div><div class="ld">ring ·
|
|
1025
|
+
<div class="legend-row"><svg class="gly" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="5" fill="none" stroke="var(--assoc)" stroke-width="2.4"/></svg><div><div class="lt">Associated</div><div class="ld">ring · invocation-backed static signal, not proof</div></div></div>
|
|
1026
1026
|
<div class="legend-row"><svg class="gly" viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="4.4" fill="none" stroke="var(--none)" stroke-width="2.2"/><circle cx="8" cy="8" r="7" fill="none" stroke="var(--none)" stroke-width="1" opacity=".55"/></svg><div><div class="lt">No link</div><div class="ld">glowing ring · no test signal</div></div></div>
|
|
1027
1027
|
</div>
|
|
1028
1028
|
<div><h3>Code areas</h3><div class="areafilters" id="areafilters"></div></div>
|
|
1029
1029
|
<div class="explain">
|
|
1030
|
-
<b>Tier definitions.</b> Proven = dynamic targeted mutation proof recorded in the local ledger, not static matching or LLM. Runtime-covered = executed by a repo coverage report. Associated signal =
|
|
1030
|
+
<b>Tier definitions.</b> Proven = dynamic targeted mutation proof recorded in the local ledger, not static matching or LLM. Runtime-covered = executed by a repo coverage report. Associated signal = a resolved static test-to-behavior invocation. It is not execution evidence and does not prove the test detects failure. No link = no direct static or runtime signal found. Broad e2e or integration coverage may still exist.
|
|
1031
1031
|
</div>
|
|
1032
1032
|
</div>
|
|
1033
1033
|
<div class="stage" id="stage">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orangepro/orangepro-mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.42",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "OrangePro (`opro`) — a local-first, BYOK CLI + MCP server that builds an evidence graph from a local checkout, ingests runtime coverage, and generates grounded tests. Metadata-only exports; no source upload; generated tests stay local.",
|
|
6
6
|
"license": "MIT",
|