@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.
@@ -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===null){el2.innerHTML='';return;} // first run — baseline just recorded, nothing to compare
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===null)return;
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
@@ -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 — name/path/import/structural matching only, not proof'
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) + ' &middot; 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 · weak signal, 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 · 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 = name/path/import/structural matching only, not semantic proof. No link = no direct static or runtime signal found. Broad e2e or integration coverage may still exist.
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.41",
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",