vigiles 10.0.0 → 12.0.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/.claude-plugin/plugin.json +9 -0
- package/README.md +121 -86
- package/action.yml +13 -2
- package/dist/adapter-conformance.js +6 -0
- package/dist/adapter-registry.d.ts +20 -0
- package/dist/adapter-registry.js +27 -0
- package/dist/adapters/claude-code/dialect.js +15 -0
- package/dist/adapters/claude-code/hook-protocol.js +4 -0
- package/dist/adapters/claude-code/runtime.js +12 -0
- package/dist/adapters/codex/eval.js +3 -0
- package/dist/adapters/codex/hook-protocol.d.ts +9 -1
- package/dist/adapters/codex/hook-protocol.js +10 -0
- package/dist/adapters/codex/runtime.js +10 -0
- package/dist/adapters/opencode/runtime.js +4 -0
- package/dist/audit-report.d.ts +1 -1
- package/dist/audit-report.template.html +1 -1
- package/dist/audit-score.d.ts +19 -12
- package/dist/audit-score.js +65 -11
- package/dist/cli-commands.d.ts +1 -1
- package/dist/cli-commands.js +1 -0
- package/dist/cli.js +460 -29
- package/dist/core/CLAUDE.md.spec.d.ts +3 -0
- package/dist/core/CLAUDE.md.spec.js +26 -0
- package/dist/core/delegation-trifecta.d.ts +64 -0
- package/dist/core/delegation-trifecta.js +124 -0
- package/dist/core/dialect.d.ts +18 -0
- package/dist/core/hook-block-ineffective.d.ts +62 -0
- package/dist/core/hook-block-ineffective.js +153 -0
- package/dist/core/hook-matcher.d.ts +66 -0
- package/dist/core/hook-matcher.js +182 -0
- package/dist/core/hook-normalize.d.ts +43 -0
- package/dist/core/hook-normalize.js +78 -0
- package/dist/core/hook-protocol.d.ts +15 -0
- package/dist/core/lethal-trifecta.d.ts +100 -0
- package/dist/core/lethal-trifecta.js +197 -0
- package/dist/core/plugin-dir-layout.d.ts +30 -0
- package/dist/core/plugin-dir-layout.js +73 -0
- package/dist/core/rule-meta.d.ts +82 -0
- package/dist/core/rule-meta.js +266 -0
- package/dist/core/runtime.d.ts +20 -0
- package/dist/core/skill-missing-fence.d.ts +47 -0
- package/dist/core/skill-missing-fence.js +119 -0
- package/dist/core/skill-resources.d.ts +27 -0
- package/dist/core/skill-resources.js +167 -0
- package/dist/core/types.d.ts +83 -0
- package/dist/core/validate.d.ts +1 -0
- package/dist/core/validate.js +26 -4
- package/dist/eval-cache.d.ts +6 -0
- package/dist/eval-cache.js +2 -0
- package/dist/eval-lock.d.ts +192 -0
- package/dist/eval-lock.js +286 -0
- package/dist/eval.d.ts +33 -20
- package/dist/eval.js +199 -51
- package/dist/leaderboard.d.ts +1 -0
- package/dist/leaderboard.js +42 -4
- package/dist/scan.d.ts +106 -0
- package/dist/scan.js +251 -45
- package/dist/setup-plan.d.ts +43 -3
- package/dist/setup-plan.js +78 -6
- package/hooks/eval-lock-nudge.sh +21 -0
- package/package.json +1 -1
- package/skills/test-harness/SKILL.md +27 -0
|
@@ -122,7 +122,7 @@ Error generating stack: `+a.message+`
|
|
|
122
122
|
*
|
|
123
123
|
* This source code is licensed under the ISC license.
|
|
124
124
|
* See the LICENSE file in the root directory of this source tree.
|
|
125
|
-
*/const P0=Bt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function Fd(f){var b,v,s="";if(typeof f=="string"||typeof f=="number")s+=f;else if(typeof f=="object")if(Array.isArray(f)){var E=f.length;for(b=0;b<E;b++)f[b]&&(v=Fd(f[b]))&&(s&&(s+=" "),s+=v)}else for(v in f)f[v]&&(s&&(s+=" "),s+=v);return s}function Id(){for(var f,b,v=0,s="",E=arguments.length;v<E;v++)(f=arguments[v])&&(b=Fd(f))&&(s&&(s+=" "),s+=b);return s}const Df="-",lh=f=>{const b=eh(f),{conflictingClassGroups:v,conflictingClassGroupModifiers:s}=f;return{getClassGroupId:j=>{const D=j.split(Df);return D[0]===""&&D.length!==1&&D.shift(),Pd(D,b)||th(j)},getConflictingClassGroupIds:(j,D)=>{const N=v[j]||[];return D&&s[j]?[...N,...s[j]]:N}}},Pd=(f,b)=>{var j;if(f.length===0)return b.classGroupId;const v=f[0],s=b.nextPart.get(v),E=s?Pd(f.slice(1),s):void 0;if(E)return E;if(b.validators.length===0)return;const O=f.join(Df);return(j=b.validators.find(({validator:D})=>D(O)))==null?void 0:j.classGroupId},Vd=/^\[(.+)\]$/,th=f=>{if(Vd.test(f)){const b=Vd.exec(f)[1],v=b==null?void 0:b.substring(0,b.indexOf(":"));if(v)return"arbitrary.."+v}},eh=f=>{const{theme:b,prefix:v}=f,s={nextPart:new Map,validators:[]};return uh(Object.entries(f.classGroups),v).forEach(([O,j])=>{Mf(j,s,O,b)}),s},Mf=(f,b,v,s)=>{f.forEach(E=>{if(typeof E=="string"){const O=E===""?b:Kd(b,E);O.classGroupId=v;return}if(typeof E=="function"){if(ah(E)){Mf(E(s),b,v,s);return}b.validators.push({validator:E,classGroupId:v});return}Object.entries(E).forEach(([O,j])=>{Mf(j,Kd(b,O),v,s)})})},Kd=(f,b)=>{let v=f;return b.split(Df).forEach(s=>{v.nextPart.has(s)||v.nextPart.set(s,{nextPart:new Map,validators:[]}),v=v.nextPart.get(s)}),v},ah=f=>f.isThemeGetter,uh=(f,b)=>b?f.map(([v,s])=>{const E=s.map(O=>typeof O=="string"?b+O:typeof O=="object"?Object.fromEntries(Object.entries(O).map(([j,D])=>[b+j,D])):O);return[v,E]}):f,nh=f=>{if(f<1)return{get:()=>{},set:()=>{}};let b=0,v=new Map,s=new Map;const E=(O,j)=>{v.set(O,j),b++,b>f&&(b=0,s=v,v=new Map)};return{get(O){let j=v.get(O);if(j!==void 0)return j;if((j=s.get(O))!==void 0)return E(O,j),j},set(O,j){v.has(O)?v.set(O,j):E(O,j)}}},lm="!",ih=f=>{const{separator:b,experimentalParseClassName:v}=f,s=b.length===1,E=b[0],O=b.length,j=D=>{const N=[];let S=0,Y=0,R;for(let el=0;el<D.length;el++){let fl=D[el];if(S===0){if(fl===E&&(s||D.slice(el,el+O)===b)){N.push(D.slice(Y,el)),Y=el+O;continue}if(fl==="/"){R=el;continue}}fl==="["?S++:fl==="]"&&S--}const L=N.length===0?D:D.substring(Y),bl=L.startsWith(lm),vl=bl?L.substring(1):L,P=R&&R>Y?R-Y:void 0;return{modifiers:N,hasImportantModifier:bl,baseClassName:vl,maybePostfixModifierPosition:P}};return v?D=>v({className:D,parseClassName:j}):j},ch=f=>{if(f.length<=1)return f;const b=[];let v=[];return f.forEach(s=>{s[0]==="["?(b.push(...v.sort(),s),v=[]):v.push(s)}),b.push(...v.sort()),b},fh=f=>({cache:nh(f.cacheSize),parseClassName:ih(f),...lh(f)}),sh=/\s+/,oh=(f,b)=>{const{parseClassName:v,getClassGroupId:s,getConflictingClassGroupIds:E}=b,O=[],j=f.trim().split(sh);let D="";for(let N=j.length-1;N>=0;N-=1){const S=j[N],{modifiers:Y,hasImportantModifier:R,baseClassName:L,maybePostfixModifierPosition:bl}=v(S);let vl=!!bl,P=s(vl?L.substring(0,bl):L);if(!P){if(!vl){D=S+(D.length>0?" "+D:D);continue}if(P=s(L),!P){D=S+(D.length>0?" "+D:D);continue}vl=!1}const el=ch(Y).join(":"),fl=R?el+lm:el,_l=fl+P;if(O.includes(_l))continue;O.push(_l);const Al=E(P,vl);for(let Dl=0;Dl<Al.length;++Dl){const wl=Al[Dl];O.push(fl+wl)}D=S+(D.length>0?" "+D:D)}return D};function rh(){let f=0,b,v,s="";for(;f<arguments.length;)(b=arguments[f++])&&(v=tm(b))&&(s&&(s+=" "),s+=v);return s}const tm=f=>{if(typeof f=="string")return f;let b,v="";for(let s=0;s<f.length;s++)f[s]&&(b=tm(f[s]))&&(v&&(v+=" "),v+=b);return v};function dh(f,...b){let v,s,E,O=j;function j(N){const S=b.reduce((Y,R)=>R(Y),f());return v=fh(S),s=v.cache.get,E=v.cache.set,O=D,D(N)}function D(N){const S=s(N);if(S)return S;const Y=oh(N,v);return E(N,Y),Y}return function(){return O(rh.apply(null,arguments))}}const zl=f=>{const b=v=>v[f]||[];return b.isThemeGetter=!0,b},em=/^\[(?:([a-z-]+):)?(.+)\]$/i,mh=/^\d+\/\d+$/,yh=new Set(["px","full","screen"]),hh=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,vh=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,gh=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,bh=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ph=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ee=f=>qa(f)||yh.has(f)||mh.test(f),Ne=f=>Ba(f,"length",Mh),qa=f=>!!f&&!Number.isNaN(Number(f)),Ef=f=>Ba(f,"number",qa),ju=f=>!!f&&Number.isInteger(Number(f)),Sh=f=>f.endsWith("%")&&qa(f.slice(0,-1)),J=f=>em.test(f),De=f=>hh.test(f),zh=new Set(["length","size","percentage"]),xh=f=>Ba(f,zh,am),Ah=f=>Ba(f,"position",am),Th=new Set(["image","url"]),Eh=f=>Ba(f,Th,Nh),_h=f=>Ba(f,"",Oh),Ru=()=>!0,Ba=(f,b,v)=>{const s=em.exec(f);return s?s[1]?typeof b=="string"?s[1]===b:b.has(s[1]):v(s[2]):!1},Mh=f=>vh.test(f)&&!gh.test(f),am=()=>!1,Oh=f=>bh.test(f),Nh=f=>ph.test(f),Dh=()=>{const f=zl("colors"),b=zl("spacing"),v=zl("blur"),s=zl("brightness"),E=zl("borderColor"),O=zl("borderRadius"),j=zl("borderSpacing"),D=zl("borderWidth"),N=zl("contrast"),S=zl("grayscale"),Y=zl("hueRotate"),R=zl("invert"),L=zl("gap"),bl=zl("gradientColorStops"),vl=zl("gradientColorStopPositions"),P=zl("inset"),el=zl("margin"),fl=zl("opacity"),_l=zl("padding"),Al=zl("saturate"),Dl=zl("scale"),wl=zl("sepia"),Yl=zl("skew"),W=zl("space"),Gl=zl("translate"),Wl=()=>["auto","contain","none"],Ut=()=>["auto","hidden","clip","visible","scroll"],$l=()=>["auto",J,b],k=()=>[J,b],Ct=()=>["",ee,Ne],Fl=()=>["auto",qa,J],Il=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],z=()=>["solid","dashed","dotted","double","none"],U=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],X=()=>["start","end","center","between","around","evenly","stretch"],ul=()=>["","0",J],sl=()=>["auto","avoid","all","avoid-page","page","left","right","column"],r=()=>[qa,J];return{cacheSize:500,separator:":",theme:{colors:[Ru],spacing:[ee,Ne],blur:["none","",De,J],brightness:r(),borderColor:[f],borderRadius:["none","","full",De,J],borderSpacing:k(),borderWidth:Ct(),contrast:r(),grayscale:ul(),hueRotate:r(),invert:ul(),gap:k(),gradientColorStops:[f],gradientColorStopPositions:[Sh,Ne],inset:$l(),margin:$l(),opacity:r(),padding:k(),saturate:r(),scale:r(),sepia:ul(),skew:r(),space:k(),translate:k()},classGroups:{aspect:[{aspect:["auto","square","video",J]}],container:["container"],columns:[{columns:[De]}],"break-after":[{"break-after":sl()}],"break-before":[{"break-before":sl()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Il(),J]}],overflow:[{overflow:Ut()}],"overflow-x":[{"overflow-x":Ut()}],"overflow-y":[{"overflow-y":Ut()}],overscroll:[{overscroll:Wl()}],"overscroll-x":[{"overscroll-x":Wl()}],"overscroll-y":[{"overscroll-y":Wl()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[P]}],"inset-x":[{"inset-x":[P]}],"inset-y":[{"inset-y":[P]}],start:[{start:[P]}],end:[{end:[P]}],top:[{top:[P]}],right:[{right:[P]}],bottom:[{bottom:[P]}],left:[{left:[P]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ju,J]}],basis:[{basis:$l()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",J]}],grow:[{grow:ul()}],shrink:[{shrink:ul()}],order:[{order:["first","last","none",ju,J]}],"grid-cols":[{"grid-cols":[Ru]}],"col-start-end":[{col:["auto",{span:["full",ju,J]},J]}],"col-start":[{"col-start":Fl()}],"col-end":[{"col-end":Fl()}],"grid-rows":[{"grid-rows":[Ru]}],"row-start-end":[{row:["auto",{span:[ju,J]},J]}],"row-start":[{"row-start":Fl()}],"row-end":[{"row-end":Fl()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",J]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",J]}],gap:[{gap:[L]}],"gap-x":[{"gap-x":[L]}],"gap-y":[{"gap-y":[L]}],"justify-content":[{justify:["normal",...X()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...X(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...X(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[_l]}],px:[{px:[_l]}],py:[{py:[_l]}],ps:[{ps:[_l]}],pe:[{pe:[_l]}],pt:[{pt:[_l]}],pr:[{pr:[_l]}],pb:[{pb:[_l]}],pl:[{pl:[_l]}],m:[{m:[el]}],mx:[{mx:[el]}],my:[{my:[el]}],ms:[{ms:[el]}],me:[{me:[el]}],mt:[{mt:[el]}],mr:[{mr:[el]}],mb:[{mb:[el]}],ml:[{ml:[el]}],"space-x":[{"space-x":[W]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[W]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",J,b]}],"min-w":[{"min-w":[J,b,"min","max","fit"]}],"max-w":[{"max-w":[J,b,"none","full","min","max","fit","prose",{screen:[De]},De]}],h:[{h:[J,b,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[J,b,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[J,b,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[J,b,"auto","min","max","fit"]}],"font-size":[{text:["base",De,Ne]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Ef]}],"font-family":[{font:[Ru]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",J]}],"line-clamp":[{"line-clamp":["none",qa,Ef]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ee,J]}],"list-image":[{"list-image":["none",J]}],"list-style-type":[{list:["none","disc","decimal",J]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[f]}],"placeholder-opacity":[{"placeholder-opacity":[fl]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[f]}],"text-opacity":[{"text-opacity":[fl]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...z(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ee,Ne]}],"underline-offset":[{"underline-offset":["auto",ee,J]}],"text-decoration-color":[{decoration:[f]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:k()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",J]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",J]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[fl]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Il(),Ah]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",xh]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Eh]}],"bg-color":[{bg:[f]}],"gradient-from-pos":[{from:[vl]}],"gradient-via-pos":[{via:[vl]}],"gradient-to-pos":[{to:[vl]}],"gradient-from":[{from:[bl]}],"gradient-via":[{via:[bl]}],"gradient-to":[{to:[bl]}],rounded:[{rounded:[O]}],"rounded-s":[{"rounded-s":[O]}],"rounded-e":[{"rounded-e":[O]}],"rounded-t":[{"rounded-t":[O]}],"rounded-r":[{"rounded-r":[O]}],"rounded-b":[{"rounded-b":[O]}],"rounded-l":[{"rounded-l":[O]}],"rounded-ss":[{"rounded-ss":[O]}],"rounded-se":[{"rounded-se":[O]}],"rounded-ee":[{"rounded-ee":[O]}],"rounded-es":[{"rounded-es":[O]}],"rounded-tl":[{"rounded-tl":[O]}],"rounded-tr":[{"rounded-tr":[O]}],"rounded-br":[{"rounded-br":[O]}],"rounded-bl":[{"rounded-bl":[O]}],"border-w":[{border:[D]}],"border-w-x":[{"border-x":[D]}],"border-w-y":[{"border-y":[D]}],"border-w-s":[{"border-s":[D]}],"border-w-e":[{"border-e":[D]}],"border-w-t":[{"border-t":[D]}],"border-w-r":[{"border-r":[D]}],"border-w-b":[{"border-b":[D]}],"border-w-l":[{"border-l":[D]}],"border-opacity":[{"border-opacity":[fl]}],"border-style":[{border:[...z(),"hidden"]}],"divide-x":[{"divide-x":[D]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[D]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[fl]}],"divide-style":[{divide:z()}],"border-color":[{border:[E]}],"border-color-x":[{"border-x":[E]}],"border-color-y":[{"border-y":[E]}],"border-color-s":[{"border-s":[E]}],"border-color-e":[{"border-e":[E]}],"border-color-t":[{"border-t":[E]}],"border-color-r":[{"border-r":[E]}],"border-color-b":[{"border-b":[E]}],"border-color-l":[{"border-l":[E]}],"divide-color":[{divide:[E]}],"outline-style":[{outline:["",...z()]}],"outline-offset":[{"outline-offset":[ee,J]}],"outline-w":[{outline:[ee,Ne]}],"outline-color":[{outline:[f]}],"ring-w":[{ring:Ct()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[f]}],"ring-opacity":[{"ring-opacity":[fl]}],"ring-offset-w":[{"ring-offset":[ee,Ne]}],"ring-offset-color":[{"ring-offset":[f]}],shadow:[{shadow:["","inner","none",De,_h]}],"shadow-color":[{shadow:[Ru]}],opacity:[{opacity:[fl]}],"mix-blend":[{"mix-blend":[...U(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":U()}],filter:[{filter:["","none"]}],blur:[{blur:[v]}],brightness:[{brightness:[s]}],contrast:[{contrast:[N]}],"drop-shadow":[{"drop-shadow":["","none",De,J]}],grayscale:[{grayscale:[S]}],"hue-rotate":[{"hue-rotate":[Y]}],invert:[{invert:[R]}],saturate:[{saturate:[Al]}],sepia:[{sepia:[wl]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[v]}],"backdrop-brightness":[{"backdrop-brightness":[s]}],"backdrop-contrast":[{"backdrop-contrast":[N]}],"backdrop-grayscale":[{"backdrop-grayscale":[S]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Y]}],"backdrop-invert":[{"backdrop-invert":[R]}],"backdrop-opacity":[{"backdrop-opacity":[fl]}],"backdrop-saturate":[{"backdrop-saturate":[Al]}],"backdrop-sepia":[{"backdrop-sepia":[wl]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[j]}],"border-spacing-x":[{"border-spacing-x":[j]}],"border-spacing-y":[{"border-spacing-y":[j]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",J]}],duration:[{duration:r()}],ease:[{ease:["linear","in","out","in-out",J]}],delay:[{delay:r()}],animate:[{animate:["none","spin","ping","pulse","bounce",J]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[Dl]}],"scale-x":[{"scale-x":[Dl]}],"scale-y":[{"scale-y":[Dl]}],rotate:[{rotate:[ju,J]}],"translate-x":[{"translate-x":[Gl]}],"translate-y":[{"translate-y":[Gl]}],"skew-x":[{"skew-x":[Yl]}],"skew-y":[{"skew-y":[Yl]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",J]}],accent:[{accent:["auto",f]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",J]}],"caret-color":[{caret:[f]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":k()}],"scroll-mx":[{"scroll-mx":k()}],"scroll-my":[{"scroll-my":k()}],"scroll-ms":[{"scroll-ms":k()}],"scroll-me":[{"scroll-me":k()}],"scroll-mt":[{"scroll-mt":k()}],"scroll-mr":[{"scroll-mr":k()}],"scroll-mb":[{"scroll-mb":k()}],"scroll-ml":[{"scroll-ml":k()}],"scroll-p":[{"scroll-p":k()}],"scroll-px":[{"scroll-px":k()}],"scroll-py":[{"scroll-py":k()}],"scroll-ps":[{"scroll-ps":k()}],"scroll-pe":[{"scroll-pe":k()}],"scroll-pt":[{"scroll-pt":k()}],"scroll-pr":[{"scroll-pr":k()}],"scroll-pb":[{"scroll-pb":k()}],"scroll-pl":[{"scroll-pl":k()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",J]}],fill:[{fill:[f,"none"]}],"stroke-w":[{stroke:[ee,Ne,Ef]}],stroke:[{stroke:[f,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Uh=dh(Dh);function _t(...f){return Uh(Id(f))}function Ue({className:f,...b}){return M.jsx("div",{className:_t("rounded-lg border border-border bg-card text-foreground shadow-sm",f),...b})}const wd=f=>typeof f=="boolean"?`${f}`:f===0?"0":f,Jd=Id,Ch=(f,b)=>v=>{var s;if((b==null?void 0:b.variants)==null)return Jd(f,v==null?void 0:v.class,v==null?void 0:v.className);const{variants:E,defaultVariants:O}=b,j=Object.keys(E).map(S=>{const Y=v==null?void 0:v[S],R=O==null?void 0:O[S];if(Y===null)return null;const L=wd(Y)||wd(R);return E[S][L]}),D=v&&Object.entries(v).reduce((S,Y)=>{let[R,L]=Y;return L===void 0||(S[R]=L),S},{}),N=b==null||(s=b.compoundVariants)===null||s===void 0?void 0:s.reduce((S,Y)=>{let{class:R,className:L,...bl}=Y;return Object.entries(bl).every(vl=>{let[P,el]=vl;return Array.isArray(el)?el.includes({...O,...D}[P]):{...O,...D}[P]===el})?[...S,R,L]:S},[]);return Jd(f,j,N,v==null?void 0:v.class,v==null?void 0:v.className)},jh=Ch("inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold uppercase tracking-wide",{variants:{variant:{default:"border-border bg-background text-muted-foreground",outline:"border-border text-muted-foreground"}},defaultVariants:{variant:"default"}});function Uf({className:f,variant:b,...v}){return M.jsx("span",{className:_t(jh({variant:b}),f),...v})}function um(f){return f===null?"na":f>=90?"good":f>=70?"warn":"bad"}const Dt={good:"text-good",warn:"text-warn",bad:"text-bad",na:"text-na"},Rh={good:"bg-good",warn:"bg-warn",bad:"bg-bad",na:"bg-na"},Hh={good:"stroke-good",warn:"stroke-warn",bad:"stroke-bad",na:"stroke-na"},qh={good:"fill-good",warn:"fill-warn",bad:"fill-bad",na:"fill-na"},nm={good:"border-l-good",warn:"border-l-warn",bad:"border-l-bad",na:"border-l-na"};function im({score:f,size:b=80,stroke:v=7,advisory:s=!1}){const E=b/2-v,O=2*Math.PI*E,j=f===null?0:Math.max(0,Math.min(100,f))/100,D=s?"na":um(f),N=b/2;return M.jsxs("svg",{width:b,height:b,viewBox:`0 0 ${b} ${b}`,role:"img",children:[M.jsx("circle",{cx:N,cy:N,r:E,fill:"none",strokeWidth:v,className:"stroke-border"}),M.jsx("circle",{cx:N,cy:N,r:E,fill:"none",strokeWidth:v,strokeLinecap:"round",strokeDasharray:`${j*O} ${O}`,transform:`rotate(-90 ${N} ${N})`,className:Hh[D]}),M.jsx("text",{x:"50%",y:"50%",textAnchor:"middle",dominantBaseline:"central",fontSize:Math.round(b*.28),className:_t("font-extrabold",qh[D]),children:f===null?"n/a":f})]})}const Bh={enforce:"rule",file:"file",cmd:"cmd",dir:"dir"};function Yh({r:f}){return M.jsxs("div",{className:_t("border-l-4 p-3",nm.bad),children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[M.jsx(Uf,{children:Bh[f.kind]}),M.jsx("code",{className:"font-mono text-xs text-foreground",children:f.ref})]}),M.jsx("div",{className:"mt-0.5 text-xs text-muted-foreground",children:f.issue})]})}function Gh({data:f}){if(f.total===0)return M.jsxs(Ue,{className:"p-4 text-sm text-muted-foreground",children:["No machine-verifiable references found — add"," ",M.jsx("code",{className:"font-mono text-xs",children:"enforce()"})," calls to a"," ",M.jsx("code",{className:"font-mono text-xs",children:".spec.ts"})," to unlock cross-referencing."]});const b=f.broken===0;return M.jsxs(Ue,{className:"p-5",children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[M.jsxs("div",{className:"flex items-baseline gap-1.5",children:[M.jsx("span",{className:_t("text-3xl font-bold tabular-nums",b?Dt.good:Dt.bad),children:f.broken}),M.jsxs("span",{className:"text-sm text-muted-foreground",children:["/ ",f.total," broken"]})]}),b?M.jsxs("span",{className:_t("flex items-center gap-1 text-sm",Dt.good),children:[M.jsx(Nf,{size:14})," all ",f.total," reference",f.total===1?"":"s"," resolve"]}):M.jsxs("span",{className:_t("flex items-center gap-1 text-sm",Dt.bad),children:[M.jsx(W0,{size:14})," ",f.broken," broken reference",f.broken===1?"":"s"," found"]})]}),f.brokenRefs.length>0&&M.jsx("div",{className:"mt-4 flex flex-col gap-2",children:f.brokenRefs.map((v,s)=>M.jsx(Yh,{r:v},s))})]})}function cm(){const f=window.__VIGILES_SERVE__;return f&&typeof f.token=="string"?f:null}async function Xh(f,b,v){try{const s=await fetch(f,{method:"POST",headers:{"content-type":"application/json","x-vigiles-token":v},body:JSON.stringify(b)}),E=await s.json();return{ok:E.ok??s.ok,message:E.message??""}}catch(s){return{ok:!1,message:s instanceof Error?s.message:String(s)}}}const fm="inline-flex items-center gap-2 rounded-md border border-border bg-card px-3 py-1.5 text-left text-xs font-medium hover:border-foreground disabled:opacity-60";function sm({command:f,label:b}){const[v,s]=ae.useState(!1),E=()=>{var O;(O=navigator.clipboard)==null||O.writeText(f).then(()=>{s(!0),setTimeout(()=>s(!1),1500)},()=>{})};return M.jsxs("button",{type:"button",onClick:E,title:`Copy: ${f}`,className:fm,children:[v?M.jsx(Wd,{size:14,className:Dt.good}):M.jsx(J0,{size:14,className:"text-muted-foreground"}),M.jsx("span",{className:_t(v&&Dt.good),children:v?"copied!":b})]})}function om({endpoint:f,body:b,token:v,label:s}){const[E,O]=ae.useState("idle"),[j,D]=ae.useState(""),N=()=>{O("running"),Xh(f,b,v).then(S=>{O(S.ok?"done":"error"),D(S.message)})};return M.jsxs("button",{type:"button",onClick:N,disabled:E==="running"||E==="done",title:E==="error"?j:s,className:fm,children:[E==="running"&&M.jsx($0,{size:14,className:"animate-spin text-muted-foreground"}),E==="done"&&M.jsx(Wd,{size:14,className:Dt.good}),E==="error"&&M.jsx(P0,{size:14,className:Dt.bad}),E==="idle"&&M.jsx($d,{size:14,className:"text-muted-foreground"}),M.jsx("span",{className:_t(E==="done"&&Dt.good,E==="error"&&Dt.bad),children:E==="done"?"created":E==="error"?"failed":E==="running"?"creating…":s})]})}function Qh({path:f,command:b}){const v=cm();return M.jsxs("div",{className:"flex flex-wrap items-center gap-3 border-l-4 border-l-warn p-3",children:[M.jsx("code",{className:"font-mono text-xs text-foreground",children:f}),M.jsx("div",{className:"ml-auto",children:v?M.jsx(om,{endpoint:"/adopt",body:{target:f},token:v.token,label:"Create spec"}):M.jsx(sm,{command:b,label:"Create spec"})})]})}function Zh({data:f}){const b=cm();return M.jsxs(Ue,{className:"p-5",children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[M.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold",children:[M.jsx($d,{size:16,className:"text-muted-foreground"}),f.surfaces.length," surface",f.surfaces.length===1?"":"s"," not yet spec-managed"]}),M.jsx("div",{className:"ml-auto",children:b?M.jsx(om,{endpoint:"/adopt-all",body:{},token:b.token,label:"Create all specs"}):M.jsx(sm,{command:f.createAllCommand,label:"Create all specs"})})]}),M.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:b?"Click to create the typed spec — this report is live, so the CLI writes it for you (re-run audit to see it spec-managed).":"Copy the command and run it in your terminal — the CLI writes the typed spec (the browser can’t write files)."}),f.surfaces.length>0&&M.jsx("div",{className:"mt-4 flex flex-col gap-2",children:f.surfaces.map(v=>M.jsx(Qh,{path:v.path,command:v.command},v.path))})]})}function Lh({c:f}){return M.jsxs(Ue,{className:"flex flex-col items-center gap-3 p-5 text-center",children:[M.jsx(im,{score:f.score,advisory:f.advisory}),M.jsxs("div",{children:[M.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-sm font-semibold",children:[f.key,f.advisory&&M.jsx(Uf,{variant:"outline",className:"text-na",children:"advisory"})]}),M.jsxs("div",{className:"mt-1 min-h-8 text-xs text-muted-foreground",children:[f.advisory&&M.jsx("div",{className:"text-na",children:"not graded — hardening signal"}),f.findings.length>0?f.findings.join("; "):M.jsxs("span",{className:"inline-flex items-center gap-1 text-good",children:[M.jsx(Nf,{size:12})," clean"]})]})]})]})}function Vh({r:f}){const b=f.action==="fix"?I0:k0,v=f.confidence==="likely"?"bad":"warn";return M.jsxs(Ue,{className:_t("border-l-4 p-4",nm[v]),children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[M.jsxs(Uf,{children:[M.jsx(b,{size:12,className:"mr-1"}),f.action]}),M.jsx("strong",{children:f.surface}),M.jsx("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:f.detector})]}),M.jsx("div",{className:"mt-1.5 text-sm text-muted-foreground",children:f.rationale}),M.jsxs("div",{className:"mt-1 text-sm text-good",children:["→ ",f.fix]})]})}function Ha({n:f,label:b}){return M.jsxs(Ue,{className:"p-4 text-center",children:[M.jsx("div",{className:"text-2xl font-bold",children:f}),M.jsx("div",{className:"mt-0.5 text-xs uppercase tracking-wide text-muted-foreground",children:b})]})}function Kh({data:f}){const{score:b,recommendations:v,inventory:s,meta:E,adoptability:O,adoptable:j}=f,D=b.empty?null:b.overall,N=um(D);return M.jsxs("div",{className:"mx-auto max-w-5xl px-6 pb-16 pt-10",children:[M.jsxs(Ue,{className:"flex items-center gap-7 p-7",children:[M.jsx(im,{score:D,size:128,stroke:11}),M.jsxs("div",{children:[M.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Harness audit"}),M.jsxs("div",{className:"mt-1 text-sm text-muted-foreground",children:[E.dir," · ",E.harness]}),M.jsxs("div",{className:_t("mt-3 inline-flex items-center gap-2 rounded-full border border-border px-3 py-1 text-sm font-semibold",Dt[N]),children:[M.jsx("span",{className:_t("h-2 w-2 rounded-full",Rh[N])}),"Harness health: ",b.grade," (",b.overall,"/100)"]})]})]}),M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Categories"}),M.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5",children:b.categories.map(S=>M.jsx(Lh,{c:S},S.key))}),M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:v.length>0?`Fixes (${v.length})`:"Fixes"}),v.length>0?M.jsx("div",{className:"flex flex-col gap-2.5",children:v.map((S,Y)=>M.jsx(Vh,{r:S},Y))}):M.jsxs(Ue,{className:"flex items-center gap-2 p-4 text-sm text-good",children:[M.jsx(Nf,{size:16})," No deterministic fixes — the structure is clean."]}),j&&j.surfaces.length>0&&M.jsxs(M.Fragment,{children:[M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Create specs"}),M.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:"Turn these surfaces into typed specs so vigiles can verify their references — fully, or one at a time."}),M.jsx(Zh,{data:j})]}),O&&M.jsxs(M.Fragment,{children:[M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Adoptability"}),M.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:"What vigiles would catch in your repo — machine-verifiable references in your instruction file checked against your actual config."}),M.jsx(Gh,{data:O})]}),M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"What it ships"}),M.jsxs("div",{className:"grid grid-cols-3 gap-2.5 sm:grid-cols-6",children:[M.jsx(Ha,{n:s.skills,label:"skills"}),M.jsx(Ha,{n:s.agents,label:"agents"}),M.jsx(Ha,{n:s.hooks,label:"hooks"}),M.jsx(Ha,{n:s.commands,label:"commands"}),M.jsx(Ha,{n:s.mcp?"yes":"no",label:"MCP"}),M.jsx(Ha,{n:s.untested,label:"untested"})]}),M.jsxs("footer",{className:"mt-12 flex items-center justify-center gap-1.5 text-center text-xs text-muted-foreground",children:[M.jsx(F0,{size:12})," Generated by vigiles — we run your harness, not just read it."]})]})}const wh={meta:{schemaVersion:1,tool:"vigiles",vigilesVersion:"0.0.0",harness:"claude-code",dir:"demo"},score:{overall:77,grade:"C",empty:!1,categories:[{key:"Truthfulness",score:100,weight:1,findings:[]},{key:"Triggering",score:92,weight:1,findings:["1 near-identical skill description(s) (wrong one fires)"]},{key:"Structure",score:92,weight:1,findings:["1 agent tool(s) that don't exist (typo / never-available)"]},{key:"Tested",score:88,weight:1,findings:["4 untested surface(s)"]}]},recommendations:[{surface:"reviewer",action:"fix",rationale:`Unknown tool "Reed" — silently dropped, the agent can't use it.`,fix:'change the tool "Reed" to "Read"',detector:"subagent-tool-contract",confidence:"likely"},{surface:"deploy ↔ ship",action:"differentiate",rationale:"Near-identical descriptions (0.92 similar) — the selector can't tell them apart.",fix:"differentiate the descriptions of deploy and ship",detector:"description-overlap",confidence:"possible"}],inventory:{skills:2,agents:1,hooks:1,commands:0,mcp:!1,untested:4},adoptable:{createAllCommand:"npx vigiles init",surfaces:[{path:"skills/deploy/SKILL.md",command:"npx vigiles init --target=skills/deploy/SKILL.md"},{path:"agents/reviewer.md",command:"npx vigiles init --target=agents/reviewer.md"}]},adoptability:{total:5,broken:2,brokenRefs:[{kind:"enforce",ref:"@typescript-eslint/no-floating-promises",issue:"rule not found in eslint config"},{kind:"file",ref:"src/auth/login.ts",issue:"file does not exist"}]}},_f=window.__VIGILES_DATA__,Jh=_f&&typeof _f=="object"?_f:wh;L0.createRoot(document.getElementById("root")).render(M.jsx(ae.StrictMode,{children:M.jsx(Kh,{data:Jh})}));</script>
|
|
125
|
+
*/const P0=Bt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function Fd(f){var b,v,s="";if(typeof f=="string"||typeof f=="number")s+=f;else if(typeof f=="object")if(Array.isArray(f)){var E=f.length;for(b=0;b<E;b++)f[b]&&(v=Fd(f[b]))&&(s&&(s+=" "),s+=v)}else for(v in f)f[v]&&(s&&(s+=" "),s+=v);return s}function Id(){for(var f,b,v=0,s="",E=arguments.length;v<E;v++)(f=arguments[v])&&(b=Fd(f))&&(s&&(s+=" "),s+=b);return s}const Df="-",lh=f=>{const b=eh(f),{conflictingClassGroups:v,conflictingClassGroupModifiers:s}=f;return{getClassGroupId:j=>{const D=j.split(Df);return D[0]===""&&D.length!==1&&D.shift(),Pd(D,b)||th(j)},getConflictingClassGroupIds:(j,D)=>{const N=v[j]||[];return D&&s[j]?[...N,...s[j]]:N}}},Pd=(f,b)=>{var j;if(f.length===0)return b.classGroupId;const v=f[0],s=b.nextPart.get(v),E=s?Pd(f.slice(1),s):void 0;if(E)return E;if(b.validators.length===0)return;const O=f.join(Df);return(j=b.validators.find(({validator:D})=>D(O)))==null?void 0:j.classGroupId},Vd=/^\[(.+)\]$/,th=f=>{if(Vd.test(f)){const b=Vd.exec(f)[1],v=b==null?void 0:b.substring(0,b.indexOf(":"));if(v)return"arbitrary.."+v}},eh=f=>{const{theme:b,prefix:v}=f,s={nextPart:new Map,validators:[]};return uh(Object.entries(f.classGroups),v).forEach(([O,j])=>{Mf(j,s,O,b)}),s},Mf=(f,b,v,s)=>{f.forEach(E=>{if(typeof E=="string"){const O=E===""?b:Kd(b,E);O.classGroupId=v;return}if(typeof E=="function"){if(ah(E)){Mf(E(s),b,v,s);return}b.validators.push({validator:E,classGroupId:v});return}Object.entries(E).forEach(([O,j])=>{Mf(j,Kd(b,O),v,s)})})},Kd=(f,b)=>{let v=f;return b.split(Df).forEach(s=>{v.nextPart.has(s)||v.nextPart.set(s,{nextPart:new Map,validators:[]}),v=v.nextPart.get(s)}),v},ah=f=>f.isThemeGetter,uh=(f,b)=>b?f.map(([v,s])=>{const E=s.map(O=>typeof O=="string"?b+O:typeof O=="object"?Object.fromEntries(Object.entries(O).map(([j,D])=>[b+j,D])):O);return[v,E]}):f,nh=f=>{if(f<1)return{get:()=>{},set:()=>{}};let b=0,v=new Map,s=new Map;const E=(O,j)=>{v.set(O,j),b++,b>f&&(b=0,s=v,v=new Map)};return{get(O){let j=v.get(O);if(j!==void 0)return j;if((j=s.get(O))!==void 0)return E(O,j),j},set(O,j){v.has(O)?v.set(O,j):E(O,j)}}},lm="!",ih=f=>{const{separator:b,experimentalParseClassName:v}=f,s=b.length===1,E=b[0],O=b.length,j=D=>{const N=[];let S=0,Y=0,R;for(let el=0;el<D.length;el++){let fl=D[el];if(S===0){if(fl===E&&(s||D.slice(el,el+O)===b)){N.push(D.slice(Y,el)),Y=el+O;continue}if(fl==="/"){R=el;continue}}fl==="["?S++:fl==="]"&&S--}const L=N.length===0?D:D.substring(Y),bl=L.startsWith(lm),vl=bl?L.substring(1):L,P=R&&R>Y?R-Y:void 0;return{modifiers:N,hasImportantModifier:bl,baseClassName:vl,maybePostfixModifierPosition:P}};return v?D=>v({className:D,parseClassName:j}):j},ch=f=>{if(f.length<=1)return f;const b=[];let v=[];return f.forEach(s=>{s[0]==="["?(b.push(...v.sort(),s),v=[]):v.push(s)}),b.push(...v.sort()),b},fh=f=>({cache:nh(f.cacheSize),parseClassName:ih(f),...lh(f)}),sh=/\s+/,oh=(f,b)=>{const{parseClassName:v,getClassGroupId:s,getConflictingClassGroupIds:E}=b,O=[],j=f.trim().split(sh);let D="";for(let N=j.length-1;N>=0;N-=1){const S=j[N],{modifiers:Y,hasImportantModifier:R,baseClassName:L,maybePostfixModifierPosition:bl}=v(S);let vl=!!bl,P=s(vl?L.substring(0,bl):L);if(!P){if(!vl){D=S+(D.length>0?" "+D:D);continue}if(P=s(L),!P){D=S+(D.length>0?" "+D:D);continue}vl=!1}const el=ch(Y).join(":"),fl=R?el+lm:el,_l=fl+P;if(O.includes(_l))continue;O.push(_l);const Al=E(P,vl);for(let Dl=0;Dl<Al.length;++Dl){const wl=Al[Dl];O.push(fl+wl)}D=S+(D.length>0?" "+D:D)}return D};function rh(){let f=0,b,v,s="";for(;f<arguments.length;)(b=arguments[f++])&&(v=tm(b))&&(s&&(s+=" "),s+=v);return s}const tm=f=>{if(typeof f=="string")return f;let b,v="";for(let s=0;s<f.length;s++)f[s]&&(b=tm(f[s]))&&(v&&(v+=" "),v+=b);return v};function dh(f,...b){let v,s,E,O=j;function j(N){const S=b.reduce((Y,R)=>R(Y),f());return v=fh(S),s=v.cache.get,E=v.cache.set,O=D,D(N)}function D(N){const S=s(N);if(S)return S;const Y=oh(N,v);return E(N,Y),Y}return function(){return O(rh.apply(null,arguments))}}const zl=f=>{const b=v=>v[f]||[];return b.isThemeGetter=!0,b},em=/^\[(?:([a-z-]+):)?(.+)\]$/i,mh=/^\d+\/\d+$/,yh=new Set(["px","full","screen"]),hh=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,vh=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,gh=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,bh=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ph=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ee=f=>qa(f)||yh.has(f)||mh.test(f),Ne=f=>Ba(f,"length",Mh),qa=f=>!!f&&!Number.isNaN(Number(f)),Ef=f=>Ba(f,"number",qa),ju=f=>!!f&&Number.isInteger(Number(f)),Sh=f=>f.endsWith("%")&&qa(f.slice(0,-1)),J=f=>em.test(f),De=f=>hh.test(f),zh=new Set(["length","size","percentage"]),xh=f=>Ba(f,zh,am),Ah=f=>Ba(f,"position",am),Th=new Set(["image","url"]),Eh=f=>Ba(f,Th,Nh),_h=f=>Ba(f,"",Oh),Ru=()=>!0,Ba=(f,b,v)=>{const s=em.exec(f);return s?s[1]?typeof b=="string"?s[1]===b:b.has(s[1]):v(s[2]):!1},Mh=f=>vh.test(f)&&!gh.test(f),am=()=>!1,Oh=f=>bh.test(f),Nh=f=>ph.test(f),Dh=()=>{const f=zl("colors"),b=zl("spacing"),v=zl("blur"),s=zl("brightness"),E=zl("borderColor"),O=zl("borderRadius"),j=zl("borderSpacing"),D=zl("borderWidth"),N=zl("contrast"),S=zl("grayscale"),Y=zl("hueRotate"),R=zl("invert"),L=zl("gap"),bl=zl("gradientColorStops"),vl=zl("gradientColorStopPositions"),P=zl("inset"),el=zl("margin"),fl=zl("opacity"),_l=zl("padding"),Al=zl("saturate"),Dl=zl("scale"),wl=zl("sepia"),Yl=zl("skew"),W=zl("space"),Gl=zl("translate"),Wl=()=>["auto","contain","none"],Ut=()=>["auto","hidden","clip","visible","scroll"],$l=()=>["auto",J,b],k=()=>[J,b],Ct=()=>["",ee,Ne],Fl=()=>["auto",qa,J],Il=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],z=()=>["solid","dashed","dotted","double","none"],U=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],X=()=>["start","end","center","between","around","evenly","stretch"],ul=()=>["","0",J],sl=()=>["auto","avoid","all","avoid-page","page","left","right","column"],r=()=>[qa,J];return{cacheSize:500,separator:":",theme:{colors:[Ru],spacing:[ee,Ne],blur:["none","",De,J],brightness:r(),borderColor:[f],borderRadius:["none","","full",De,J],borderSpacing:k(),borderWidth:Ct(),contrast:r(),grayscale:ul(),hueRotate:r(),invert:ul(),gap:k(),gradientColorStops:[f],gradientColorStopPositions:[Sh,Ne],inset:$l(),margin:$l(),opacity:r(),padding:k(),saturate:r(),scale:r(),sepia:ul(),skew:r(),space:k(),translate:k()},classGroups:{aspect:[{aspect:["auto","square","video",J]}],container:["container"],columns:[{columns:[De]}],"break-after":[{"break-after":sl()}],"break-before":[{"break-before":sl()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...Il(),J]}],overflow:[{overflow:Ut()}],"overflow-x":[{"overflow-x":Ut()}],"overflow-y":[{"overflow-y":Ut()}],overscroll:[{overscroll:Wl()}],"overscroll-x":[{"overscroll-x":Wl()}],"overscroll-y":[{"overscroll-y":Wl()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[P]}],"inset-x":[{"inset-x":[P]}],"inset-y":[{"inset-y":[P]}],start:[{start:[P]}],end:[{end:[P]}],top:[{top:[P]}],right:[{right:[P]}],bottom:[{bottom:[P]}],left:[{left:[P]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",ju,J]}],basis:[{basis:$l()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",J]}],grow:[{grow:ul()}],shrink:[{shrink:ul()}],order:[{order:["first","last","none",ju,J]}],"grid-cols":[{"grid-cols":[Ru]}],"col-start-end":[{col:["auto",{span:["full",ju,J]},J]}],"col-start":[{"col-start":Fl()}],"col-end":[{"col-end":Fl()}],"grid-rows":[{"grid-rows":[Ru]}],"row-start-end":[{row:["auto",{span:[ju,J]},J]}],"row-start":[{"row-start":Fl()}],"row-end":[{"row-end":Fl()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",J]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",J]}],gap:[{gap:[L]}],"gap-x":[{"gap-x":[L]}],"gap-y":[{"gap-y":[L]}],"justify-content":[{justify:["normal",...X()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...X(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...X(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[_l]}],px:[{px:[_l]}],py:[{py:[_l]}],ps:[{ps:[_l]}],pe:[{pe:[_l]}],pt:[{pt:[_l]}],pr:[{pr:[_l]}],pb:[{pb:[_l]}],pl:[{pl:[_l]}],m:[{m:[el]}],mx:[{mx:[el]}],my:[{my:[el]}],ms:[{ms:[el]}],me:[{me:[el]}],mt:[{mt:[el]}],mr:[{mr:[el]}],mb:[{mb:[el]}],ml:[{ml:[el]}],"space-x":[{"space-x":[W]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[W]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",J,b]}],"min-w":[{"min-w":[J,b,"min","max","fit"]}],"max-w":[{"max-w":[J,b,"none","full","min","max","fit","prose",{screen:[De]},De]}],h:[{h:[J,b,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[J,b,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[J,b,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[J,b,"auto","min","max","fit"]}],"font-size":[{text:["base",De,Ne]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Ef]}],"font-family":[{font:[Ru]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",J]}],"line-clamp":[{"line-clamp":["none",qa,Ef]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",ee,J]}],"list-image":[{"list-image":["none",J]}],"list-style-type":[{list:["none","disc","decimal",J]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[f]}],"placeholder-opacity":[{"placeholder-opacity":[fl]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[f]}],"text-opacity":[{"text-opacity":[fl]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...z(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",ee,Ne]}],"underline-offset":[{"underline-offset":["auto",ee,J]}],"text-decoration-color":[{decoration:[f]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:k()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",J]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",J]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[fl]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...Il(),Ah]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",xh]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},Eh]}],"bg-color":[{bg:[f]}],"gradient-from-pos":[{from:[vl]}],"gradient-via-pos":[{via:[vl]}],"gradient-to-pos":[{to:[vl]}],"gradient-from":[{from:[bl]}],"gradient-via":[{via:[bl]}],"gradient-to":[{to:[bl]}],rounded:[{rounded:[O]}],"rounded-s":[{"rounded-s":[O]}],"rounded-e":[{"rounded-e":[O]}],"rounded-t":[{"rounded-t":[O]}],"rounded-r":[{"rounded-r":[O]}],"rounded-b":[{"rounded-b":[O]}],"rounded-l":[{"rounded-l":[O]}],"rounded-ss":[{"rounded-ss":[O]}],"rounded-se":[{"rounded-se":[O]}],"rounded-ee":[{"rounded-ee":[O]}],"rounded-es":[{"rounded-es":[O]}],"rounded-tl":[{"rounded-tl":[O]}],"rounded-tr":[{"rounded-tr":[O]}],"rounded-br":[{"rounded-br":[O]}],"rounded-bl":[{"rounded-bl":[O]}],"border-w":[{border:[D]}],"border-w-x":[{"border-x":[D]}],"border-w-y":[{"border-y":[D]}],"border-w-s":[{"border-s":[D]}],"border-w-e":[{"border-e":[D]}],"border-w-t":[{"border-t":[D]}],"border-w-r":[{"border-r":[D]}],"border-w-b":[{"border-b":[D]}],"border-w-l":[{"border-l":[D]}],"border-opacity":[{"border-opacity":[fl]}],"border-style":[{border:[...z(),"hidden"]}],"divide-x":[{"divide-x":[D]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[D]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[fl]}],"divide-style":[{divide:z()}],"border-color":[{border:[E]}],"border-color-x":[{"border-x":[E]}],"border-color-y":[{"border-y":[E]}],"border-color-s":[{"border-s":[E]}],"border-color-e":[{"border-e":[E]}],"border-color-t":[{"border-t":[E]}],"border-color-r":[{"border-r":[E]}],"border-color-b":[{"border-b":[E]}],"border-color-l":[{"border-l":[E]}],"divide-color":[{divide:[E]}],"outline-style":[{outline:["",...z()]}],"outline-offset":[{"outline-offset":[ee,J]}],"outline-w":[{outline:[ee,Ne]}],"outline-color":[{outline:[f]}],"ring-w":[{ring:Ct()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[f]}],"ring-opacity":[{"ring-opacity":[fl]}],"ring-offset-w":[{"ring-offset":[ee,Ne]}],"ring-offset-color":[{"ring-offset":[f]}],shadow:[{shadow:["","inner","none",De,_h]}],"shadow-color":[{shadow:[Ru]}],opacity:[{opacity:[fl]}],"mix-blend":[{"mix-blend":[...U(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":U()}],filter:[{filter:["","none"]}],blur:[{blur:[v]}],brightness:[{brightness:[s]}],contrast:[{contrast:[N]}],"drop-shadow":[{"drop-shadow":["","none",De,J]}],grayscale:[{grayscale:[S]}],"hue-rotate":[{"hue-rotate":[Y]}],invert:[{invert:[R]}],saturate:[{saturate:[Al]}],sepia:[{sepia:[wl]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[v]}],"backdrop-brightness":[{"backdrop-brightness":[s]}],"backdrop-contrast":[{"backdrop-contrast":[N]}],"backdrop-grayscale":[{"backdrop-grayscale":[S]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Y]}],"backdrop-invert":[{"backdrop-invert":[R]}],"backdrop-opacity":[{"backdrop-opacity":[fl]}],"backdrop-saturate":[{"backdrop-saturate":[Al]}],"backdrop-sepia":[{"backdrop-sepia":[wl]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[j]}],"border-spacing-x":[{"border-spacing-x":[j]}],"border-spacing-y":[{"border-spacing-y":[j]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",J]}],duration:[{duration:r()}],ease:[{ease:["linear","in","out","in-out",J]}],delay:[{delay:r()}],animate:[{animate:["none","spin","ping","pulse","bounce",J]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[Dl]}],"scale-x":[{"scale-x":[Dl]}],"scale-y":[{"scale-y":[Dl]}],rotate:[{rotate:[ju,J]}],"translate-x":[{"translate-x":[Gl]}],"translate-y":[{"translate-y":[Gl]}],"skew-x":[{"skew-x":[Yl]}],"skew-y":[{"skew-y":[Yl]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",J]}],accent:[{accent:["auto",f]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",J]}],"caret-color":[{caret:[f]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":k()}],"scroll-mx":[{"scroll-mx":k()}],"scroll-my":[{"scroll-my":k()}],"scroll-ms":[{"scroll-ms":k()}],"scroll-me":[{"scroll-me":k()}],"scroll-mt":[{"scroll-mt":k()}],"scroll-mr":[{"scroll-mr":k()}],"scroll-mb":[{"scroll-mb":k()}],"scroll-ml":[{"scroll-ml":k()}],"scroll-p":[{"scroll-p":k()}],"scroll-px":[{"scroll-px":k()}],"scroll-py":[{"scroll-py":k()}],"scroll-ps":[{"scroll-ps":k()}],"scroll-pe":[{"scroll-pe":k()}],"scroll-pt":[{"scroll-pt":k()}],"scroll-pr":[{"scroll-pr":k()}],"scroll-pb":[{"scroll-pb":k()}],"scroll-pl":[{"scroll-pl":k()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",J]}],fill:[{fill:[f,"none"]}],"stroke-w":[{stroke:[ee,Ne,Ef]}],stroke:[{stroke:[f,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},Uh=dh(Dh);function _t(...f){return Uh(Id(f))}function Ue({className:f,...b}){return M.jsx("div",{className:_t("rounded-lg border border-border bg-card text-foreground shadow-sm",f),...b})}const wd=f=>typeof f=="boolean"?`${f}`:f===0?"0":f,Jd=Id,Ch=(f,b)=>v=>{var s;if((b==null?void 0:b.variants)==null)return Jd(f,v==null?void 0:v.class,v==null?void 0:v.className);const{variants:E,defaultVariants:O}=b,j=Object.keys(E).map(S=>{const Y=v==null?void 0:v[S],R=O==null?void 0:O[S];if(Y===null)return null;const L=wd(Y)||wd(R);return E[S][L]}),D=v&&Object.entries(v).reduce((S,Y)=>{let[R,L]=Y;return L===void 0||(S[R]=L),S},{}),N=b==null||(s=b.compoundVariants)===null||s===void 0?void 0:s.reduce((S,Y)=>{let{class:R,className:L,...bl}=Y;return Object.entries(bl).every(vl=>{let[P,el]=vl;return Array.isArray(el)?el.includes({...O,...D}[P]):{...O,...D}[P]===el})?[...S,R,L]:S},[]);return Jd(f,j,N,v==null?void 0:v.class,v==null?void 0:v.className)},jh=Ch("inline-flex items-center rounded-md border px-2 py-0.5 text-xs font-semibold uppercase tracking-wide",{variants:{variant:{default:"border-border bg-background text-muted-foreground",outline:"border-border text-muted-foreground"}},defaultVariants:{variant:"default"}});function Uf({className:f,variant:b,...v}){return M.jsx("span",{className:_t(jh({variant:b}),f),...v})}function um(f){return f===null?"na":f>=90?"good":f>=70?"warn":"bad"}const Dt={good:"text-good",warn:"text-warn",bad:"text-bad",na:"text-na"},Rh={good:"bg-good",warn:"bg-warn",bad:"bg-bad",na:"bg-na"},Hh={good:"stroke-good",warn:"stroke-warn",bad:"stroke-bad",na:"stroke-na"},qh={good:"fill-good",warn:"fill-warn",bad:"fill-bad",na:"fill-na"},nm={good:"border-l-good",warn:"border-l-warn",bad:"border-l-bad",na:"border-l-na"};function im({score:f,size:b=80,stroke:v=7,advisory:s=!1}){const E=b/2-v,O=2*Math.PI*E,j=f===null?0:Math.max(0,Math.min(100,f))/100,D=s?"na":um(f),N=b/2;return M.jsxs("svg",{width:b,height:b,viewBox:`0 0 ${b} ${b}`,role:"img",children:[M.jsx("circle",{cx:N,cy:N,r:E,fill:"none",strokeWidth:v,className:"stroke-border"}),M.jsx("circle",{cx:N,cy:N,r:E,fill:"none",strokeWidth:v,strokeLinecap:"round",strokeDasharray:`${j*O} ${O}`,transform:`rotate(-90 ${N} ${N})`,className:Hh[D]}),M.jsx("text",{x:"50%",y:"50%",textAnchor:"middle",dominantBaseline:"central",fontSize:Math.round(b*.28),className:_t("font-extrabold",qh[D]),children:f===null?"n/a":f})]})}const Bh={enforce:"rule",file:"file",cmd:"cmd",dir:"dir"};function Yh({r:f}){return M.jsxs("div",{className:_t("border-l-4 p-3",nm.bad),children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[M.jsx(Uf,{children:Bh[f.kind]}),M.jsx("code",{className:"font-mono text-xs text-foreground",children:f.ref})]}),M.jsx("div",{className:"mt-0.5 text-xs text-muted-foreground",children:f.issue})]})}function Gh({data:f}){if(f.total===0)return M.jsxs(Ue,{className:"p-4 text-sm text-muted-foreground",children:["No machine-verifiable references found — add"," ",M.jsx("code",{className:"font-mono text-xs",children:"enforce()"})," calls to a"," ",M.jsx("code",{className:"font-mono text-xs",children:".spec.ts"})," to unlock cross-referencing."]});const b=f.broken===0;return M.jsxs(Ue,{className:"p-5",children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[M.jsxs("div",{className:"flex items-baseline gap-1.5",children:[M.jsx("span",{className:_t("text-3xl font-bold tabular-nums",b?Dt.good:Dt.bad),children:f.broken}),M.jsxs("span",{className:"text-sm text-muted-foreground",children:["/ ",f.total," broken"]})]}),b?M.jsxs("span",{className:_t("flex items-center gap-1 text-sm",Dt.good),children:[M.jsx(Nf,{size:14})," all ",f.total," reference",f.total===1?"":"s"," resolve"]}):M.jsxs("span",{className:_t("flex items-center gap-1 text-sm",Dt.bad),children:[M.jsx(W0,{size:14})," ",f.broken," broken reference",f.broken===1?"":"s"," found"]})]}),f.brokenRefs.length>0&&M.jsx("div",{className:"mt-4 flex flex-col gap-2",children:f.brokenRefs.map((v,s)=>M.jsx(Yh,{r:v},s))})]})}function cm(){const f=window.__VIGILES_SERVE__;return f&&typeof f.token=="string"?f:null}async function Xh(f,b,v){try{const s=await fetch(f,{method:"POST",headers:{"content-type":"application/json","x-vigiles-token":v},body:JSON.stringify(b)}),E=await s.json();return{ok:E.ok??s.ok,message:E.message??""}}catch(s){return{ok:!1,message:s instanceof Error?s.message:String(s)}}}const fm="inline-flex items-center gap-2 rounded-md border border-border bg-card px-3 py-1.5 text-left text-xs font-medium hover:border-foreground disabled:opacity-60";function sm({command:f,label:b}){const[v,s]=ae.useState(!1),E=()=>{var O;(O=navigator.clipboard)==null||O.writeText(f).then(()=>{s(!0),setTimeout(()=>s(!1),1500)},()=>{})};return M.jsxs("button",{type:"button",onClick:E,title:`Copy: ${f}`,className:fm,children:[v?M.jsx(Wd,{size:14,className:Dt.good}):M.jsx(J0,{size:14,className:"text-muted-foreground"}),M.jsx("span",{className:_t(v&&Dt.good),children:v?"copied!":b})]})}function om({endpoint:f,body:b,token:v,label:s}){const[E,O]=ae.useState("idle"),[j,D]=ae.useState(""),N=()=>{O("running"),Xh(f,b,v).then(S=>{O(S.ok?"done":"error"),D(S.message)})};return M.jsxs("button",{type:"button",onClick:N,disabled:E==="running"||E==="done",title:E==="error"?j:s,className:fm,children:[E==="running"&&M.jsx($0,{size:14,className:"animate-spin text-muted-foreground"}),E==="done"&&M.jsx(Wd,{size:14,className:Dt.good}),E==="error"&&M.jsx(P0,{size:14,className:Dt.bad}),E==="idle"&&M.jsx($d,{size:14,className:"text-muted-foreground"}),M.jsx("span",{className:_t(E==="done"&&Dt.good,E==="error"&&Dt.bad),children:E==="done"?"created":E==="error"?"failed":E==="running"?"creating…":s})]})}function Qh({path:f,command:b}){const v=cm();return M.jsxs("div",{className:"flex flex-wrap items-center gap-3 border-l-4 border-l-warn p-3",children:[M.jsx("code",{className:"font-mono text-xs text-foreground",children:f}),M.jsx("div",{className:"ml-auto",children:v?M.jsx(om,{endpoint:"/adopt",body:{target:f},token:v.token,label:"Create spec"}):M.jsx(sm,{command:b,label:"Create spec"})})]})}function Zh({data:f}){const b=cm();return M.jsxs(Ue,{className:"p-5",children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[M.jsxs("div",{className:"flex items-center gap-2 text-sm font-semibold",children:[M.jsx($d,{size:16,className:"text-muted-foreground"}),f.surfaces.length," surface",f.surfaces.length===1?"":"s"," not yet spec-managed"]}),M.jsx("div",{className:"ml-auto",children:b?M.jsx(om,{endpoint:"/adopt-all",body:{},token:b.token,label:"Create all specs"}):M.jsx(sm,{command:f.createAllCommand,label:"Create all specs"})})]}),M.jsx("p",{className:"mt-2 text-xs text-muted-foreground",children:b?"Click to create the typed spec — this report is live, so the CLI writes it for you (re-run audit to see it spec-managed).":"Copy the command and run it in your terminal — the CLI writes the typed spec (the browser can’t write files)."}),f.surfaces.length>0&&M.jsx("div",{className:"mt-4 flex flex-col gap-2",children:f.surfaces.map(v=>M.jsx(Qh,{path:v.path,command:v.command},v.path))})]})}function Lh({c:f}){return M.jsxs(Ue,{className:"flex flex-col items-center gap-3 p-5 text-center",children:[M.jsx(im,{score:f.score,advisory:f.advisory}),M.jsxs("div",{children:[M.jsxs("div",{className:"flex items-center justify-center gap-1.5 text-sm font-semibold",children:[f.key,f.advisory&&M.jsx(Uf,{variant:"outline",className:"text-na",children:"advisory"})]}),M.jsxs("div",{className:"mt-1 min-h-8 text-xs text-muted-foreground",children:[f.advisory&&M.jsx("div",{className:"text-na",children:"not graded — hardening signal"}),f.findings.length>0?f.findings.join("; "):M.jsxs("span",{className:"inline-flex items-center gap-1 text-good",children:[M.jsx(Nf,{size:12})," clean"]})]})]})]})}function Vh({r:f}){const b=f.action==="fix"?I0:k0,v=f.confidence==="likely"?"bad":"warn";return M.jsxs(Ue,{className:_t("border-l-4 p-4",nm[v]),children:[M.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[M.jsxs(Uf,{children:[M.jsx(b,{size:12,className:"mr-1"}),f.action]}),M.jsx("strong",{children:f.surface}),M.jsx("span",{className:"ml-auto font-mono text-xs text-muted-foreground",children:f.detector})]}),M.jsx("div",{className:"mt-1.5 text-sm text-muted-foreground",children:f.rationale}),M.jsxs("div",{className:"mt-1 text-sm text-good",children:["→ ",f.fix]})]})}function Ha({n:f,label:b}){return M.jsxs(Ue,{className:"p-4 text-center",children:[M.jsx("div",{className:"text-2xl font-bold",children:f}),M.jsx("div",{className:"mt-0.5 text-xs uppercase tracking-wide text-muted-foreground",children:b})]})}function Kh({data:f}){const{score:b,recommendations:v,inventory:s,meta:E,adoptability:O,adoptable:j}=f,D=b.empty?null:b.overall,N=um(D);return M.jsxs("div",{className:"mx-auto max-w-5xl px-6 pb-16 pt-10",children:[M.jsxs(Ue,{className:"flex items-center gap-7 p-7",children:[M.jsx(im,{score:D,size:128,stroke:11}),M.jsxs("div",{children:[M.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Harness audit"}),M.jsxs("div",{className:"mt-1 text-sm text-muted-foreground",children:[E.dir," · ",E.harness]}),M.jsxs("div",{className:_t("mt-3 inline-flex items-center gap-2 rounded-full border border-border px-3 py-1 text-sm font-semibold",Dt[N]),children:[M.jsx("span",{className:_t("h-2 w-2 rounded-full",Rh[N])}),"Harness health: ",b.grade," (",b.overall,"/100)"]})]})]}),M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Categories"}),M.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-5",children:b.categories.map(S=>M.jsx(Lh,{c:S},S.key))}),M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:v.length>0?`Fixes (${v.length})`:"Fixes"}),v.length>0?M.jsx("div",{className:"flex flex-col gap-2.5",children:v.map((S,Y)=>M.jsx(Vh,{r:S},Y))}):M.jsxs(Ue,{className:"flex items-center gap-2 p-4 text-sm text-good",children:[M.jsx(Nf,{size:16})," No deterministic fixes — the structure is clean."]}),j&&j.surfaces.length>0&&M.jsxs(M.Fragment,{children:[M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Create specs"}),M.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:"Turn these surfaces into typed specs so vigiles can verify their references — fully, or one at a time."}),M.jsx(Zh,{data:j})]}),O&&M.jsxs(M.Fragment,{children:[M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"Adoptability"}),M.jsx("p",{className:"mb-3 text-xs text-muted-foreground",children:"What vigiles would catch in your repo — machine-verifiable references in your instruction file checked against your actual config."}),M.jsx(Gh,{data:O})]}),M.jsx("h2",{className:"mb-3 mt-9 text-xs font-semibold uppercase tracking-widest text-muted-foreground",children:"What it ships"}),M.jsxs("div",{className:"grid grid-cols-3 gap-2.5 sm:grid-cols-6",children:[M.jsx(Ha,{n:s.skills,label:"skills"}),M.jsx(Ha,{n:s.agents,label:"agents"}),M.jsx(Ha,{n:s.hooks,label:"hooks"}),M.jsx(Ha,{n:s.commands,label:"commands"}),M.jsx(Ha,{n:s.mcp?"yes":"no",label:"MCP"}),M.jsx(Ha,{n:s.untested,label:"untested"})]}),M.jsxs("footer",{className:"mt-12 flex items-center justify-center gap-1.5 text-center text-xs text-muted-foreground",children:[M.jsx(F0,{size:12})," Generated by vigiles — we run your harness, not just read it."]})]})}const wh={meta:{schemaVersion:1,tool:"vigiles",vigilesVersion:"0.0.0",harness:"claude-code",dir:"demo"},score:{overall:77,grade:"C",empty:!1,categories:[{key:"Truthfulness",score:100,weight:1,findings:[]},{key:"Triggering",score:92,weight:1,findings:["1 near-identical skill description(s) (wrong one fires)"]},{key:"Structure",score:92,weight:1,findings:["1 agent tool(s) that don't exist (typo / never-available)"]},{key:"Safety",score:80,weight:1,findings:["1 unit(s) holding all three lethal-trifecta legs (prompt-injection exfil path)"]},{key:"Tested",score:88,weight:1,findings:["4 untested surface(s)"]}]},recommendations:[{surface:"reviewer",action:"fix",rationale:`Unknown tool "Reed" — silently dropped, the agent can't use it.`,fix:'change the tool "Reed" to "Read"',detector:"subagent-tool-contract",confidence:"likely"},{surface:"deploy ↔ ship",action:"differentiate",rationale:"Near-identical descriptions (0.92 similar) — the selector can't tell them apart.",fix:"differentiate the descriptions of deploy and ship",detector:"description-overlap",confidence:"possible"}],inventory:{skills:2,agents:1,hooks:1,commands:0,mcp:!1,untested:4},adoptable:{createAllCommand:"npx vigiles init",surfaces:[{path:"skills/deploy/SKILL.md",command:"npx vigiles init --target=skills/deploy/SKILL.md"},{path:"agents/reviewer.md",command:"npx vigiles init --target=agents/reviewer.md"}]},adoptability:{total:5,broken:2,brokenRefs:[{kind:"enforce",ref:"@typescript-eslint/no-floating-promises",issue:"rule not found in eslint config"},{kind:"file",ref:"src/auth/login.ts",issue:"file does not exist"}]}},_f=window.__VIGILES_DATA__,Jh=_f&&typeof _f=="object"?_f:wh;L0.createRoot(document.getElementById("root")).render(M.jsx(ae.StrictMode,{children:M.jsx(Kh,{data:Jh})}));</script>
|
|
126
126
|
<style rel="stylesheet" crossorigin>/*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--animate-spin:spin 1s linear infinite;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-good:var(--good)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}body{background-color:var(--background);color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@layer components;@layer utilities{.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-9{margin-top:calc(var(--spacing) * 9)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mr-1{margin-right:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing) * 2)}.min-h-8{min-height:calc(var(--spacing) * 8)}.w-2{width:calc(var(--spacing) * 2)}.max-w-5xl{max-width:var(--container-5xl)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-7{gap:calc(var(--spacing) * 7)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-border{border-color:var(--border)}.border-l-bad{border-left-color:var(--bad)}.border-l-good{border-left-color:var(--good)}.border-l-na{border-left-color:var(--na)}.border-l-warn{border-left-color:var(--warn)}.bg-background{background-color:var(--background)}.bg-bad{background-color:var(--bad)}.bg-card{background-color:var(--card)}.bg-good{background-color:var(--good)}.bg-na{background-color:var(--na)}.bg-warn{background-color:var(--warn)}.fill-bad{fill:var(--bad)}.fill-good{fill:var(--good)}.fill-na{fill:var(--na)}.fill-warn{fill:var(--warn)}.stroke-bad{stroke:var(--bad)}.stroke-border{stroke:var(--border)}.stroke-good{stroke:var(--good)}.stroke-na{stroke:var(--na)}.stroke-warn{stroke:var(--warn)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-7{padding:calc(var(--spacing) * 7)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-bad{color:var(--bad)}.text-foreground{color:var(--foreground)}.text-good{color:var(--good)}.text-muted-foreground{color:var(--muted)}.text-na{color:var(--na)}.text-warn{color:var(--warn)}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}@media(hover:hover){.hover\:border-foreground:hover{border-color:var(--foreground)}}.disabled\:opacity-60:disabled{opacity:.6}@media(min-width:40rem){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}:root{--background:#fafafa;--card:#fff;--border:#e4e4e7;--foreground:#09090b;--muted:#71717a;--good:#16a34a;--warn:#f59e0b;--bad:#ef4444;--na:#a1a1aa;--radius:.75rem}@media(prefers-color-scheme:dark){:root{--background:#0b0f17;--card:#121826;--border:#1e2636;--foreground:#e6e9ef;--muted:#9aa4b2;--good:#16c784;--warn:#ffb020;--bad:#ff5c5c;--na:#6b7280}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes spin{to{transform:rotate(360deg)}}</style>
|
|
127
127
|
</head>
|
|
128
128
|
<body>
|
package/dist/audit-score.d.ts
CHANGED
|
@@ -3,23 +3,30 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A single structural-health number (the leaderboard's `scoreReport`) ranks
|
|
5
5
|
* plugins, but it hides WHERE a harness is weak. This buckets the SAME
|
|
6
|
-
* deterministic findings into
|
|
7
|
-
* Structure, Tested — each a 0–100 ring, as a DIAGNOSTIC breakdown
|
|
8
|
-
* headline `overall` = `100 − Σ(all graded penalties)` (the SAME
|
|
9
|
-
* the leaderboard's single health number, via the shared
|
|
10
|
-
* — so the two surfaces never disagree). Same detectors,
|
|
11
|
-
* (one-detector-no-drift); all deterministic, no execution.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
6
|
+
* deterministic findings into five categories — Truthfulness, Triggering,
|
|
7
|
+
* Structure, Safety, Tested — each a 0–100 ring, as a DIAGNOSTIC breakdown
|
|
8
|
+
* beneath one headline `overall` = `100 − Σ(all graded penalties)` (the SAME
|
|
9
|
+
* summed model as the leaderboard's single health number, via the shared
|
|
10
|
+
* `computeIntegrityScore` — so the two surfaces never disagree). Same detectors,
|
|
11
|
+
* no re-detection (one-detector-no-drift); all deterministic, no execution.
|
|
12
|
+
*
|
|
13
|
+
* SAFETY is fed by the STATIC lethal-trifecta capability check
|
|
14
|
+
* (`lethalTrifectaIssues` → `report.trifectaFindings`): a unit holding all three
|
|
15
|
+
* capability legs is a prompt-injection exfil path detectable from the tool-SET
|
|
16
|
+
* alone — nothing executes, so it sidesteps the confinement blocker. A `"hard"`
|
|
17
|
+
* (explicit all-three) finding is GRADED into the overall; a `"advisory"`
|
|
18
|
+
* (inherits-all) finding is SHOWN in the ring but not graded. NB the EXECUTING
|
|
19
|
+
* "do your hooks actually block?" disaster-battery is STILL not an `audit` ring:
|
|
20
|
+
* running arbitrary hooks safely needs cross-platform confinement that isn't
|
|
21
|
+
* shipped yet, so the battery lives in the `vigiles/testing` API via
|
|
22
|
+
* `guardrail-check`/`assertBlocksDisasters`, where you opt in explicitly.
|
|
16
23
|
*
|
|
17
24
|
* A category that can't be assessed scores `null` (n/a) and is EXCLUDED from the
|
|
18
25
|
* overall — never a false 0. Pure over the `ScanReport`, so it's fully testable.
|
|
19
26
|
*/
|
|
20
27
|
import { type PluginScore } from "./leaderboard.js";
|
|
21
28
|
import type { ScanReport } from "./scan.js";
|
|
22
|
-
export type CategoryKey = "Truthfulness" | "Triggering" | "Structure" | "Tested";
|
|
29
|
+
export type CategoryKey = "Truthfulness" | "Triggering" | "Structure" | "Safety" | "Tested";
|
|
23
30
|
export interface CategoryScore {
|
|
24
31
|
readonly key: CategoryKey;
|
|
25
32
|
/** 0–100, or `null` when the category isn't assessable (n/a — excluded from overall). */
|
|
@@ -52,7 +59,7 @@ export interface AuditScore {
|
|
|
52
59
|
readonly empty: boolean;
|
|
53
60
|
}
|
|
54
61
|
/**
|
|
55
|
-
* Bucket a scan report into the
|
|
62
|
+
* Bucket a scan report into the five deterministic Lighthouse categories as a
|
|
56
63
|
* DIAGNOSTIC breakdown, with the headline `overall` = `100 − Σ(all graded
|
|
57
64
|
* penalties)` (the shared summed model — NOT the average of the rings — so it
|
|
58
65
|
* equals the leaderboard's single health number). The advisory Tested ring and
|
package/dist/audit-score.js
CHANGED
|
@@ -7,16 +7,23 @@ exports.formatAuditScore = formatAuditScore;
|
|
|
7
7
|
*
|
|
8
8
|
* A single structural-health number (the leaderboard's `scoreReport`) ranks
|
|
9
9
|
* plugins, but it hides WHERE a harness is weak. This buckets the SAME
|
|
10
|
-
* deterministic findings into
|
|
11
|
-
* Structure, Tested — each a 0–100 ring, as a DIAGNOSTIC breakdown
|
|
12
|
-
* headline `overall` = `100 − Σ(all graded penalties)` (the SAME
|
|
13
|
-
* the leaderboard's single health number, via the shared
|
|
14
|
-
* — so the two surfaces never disagree). Same detectors,
|
|
15
|
-
* (one-detector-no-drift); all deterministic, no execution.
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
10
|
+
* deterministic findings into five categories — Truthfulness, Triggering,
|
|
11
|
+
* Structure, Safety, Tested — each a 0–100 ring, as a DIAGNOSTIC breakdown
|
|
12
|
+
* beneath one headline `overall` = `100 − Σ(all graded penalties)` (the SAME
|
|
13
|
+
* summed model as the leaderboard's single health number, via the shared
|
|
14
|
+
* `computeIntegrityScore` — so the two surfaces never disagree). Same detectors,
|
|
15
|
+
* no re-detection (one-detector-no-drift); all deterministic, no execution.
|
|
16
|
+
*
|
|
17
|
+
* SAFETY is fed by the STATIC lethal-trifecta capability check
|
|
18
|
+
* (`lethalTrifectaIssues` → `report.trifectaFindings`): a unit holding all three
|
|
19
|
+
* capability legs is a prompt-injection exfil path detectable from the tool-SET
|
|
20
|
+
* alone — nothing executes, so it sidesteps the confinement blocker. A `"hard"`
|
|
21
|
+
* (explicit all-three) finding is GRADED into the overall; a `"advisory"`
|
|
22
|
+
* (inherits-all) finding is SHOWN in the ring but not graded. NB the EXECUTING
|
|
23
|
+
* "do your hooks actually block?" disaster-battery is STILL not an `audit` ring:
|
|
24
|
+
* running arbitrary hooks safely needs cross-platform confinement that isn't
|
|
25
|
+
* shipped yet, so the battery lives in the `vigiles/testing` API via
|
|
26
|
+
* `guardrail-check`/`assertBlocksDisasters`, where you opt in explicitly.
|
|
20
27
|
*
|
|
21
28
|
* A category that can't be assessed scores `null` (n/a) and is EXCLUDED from the
|
|
22
29
|
* overall — never a false 0. Pure over the `ScanReport`, so it's fully testable.
|
|
@@ -138,6 +145,51 @@ function structure(r) {
|
|
|
138
145
|
findings: [...findings, ...advisory],
|
|
139
146
|
};
|
|
140
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* SAFETY — fed by the STATIC lethal-trifecta check (`report.trifectaFindings`).
|
|
150
|
+
* A `"hard"` finding (an explicit contract naming all three capability legs) is a
|
|
151
|
+
* declared prompt-injection exfil path and is GRADED (`W_TRIFECTA` each, the same
|
|
152
|
+
* weight `reportDeductions` sums into the overall, so the ring and the headline
|
|
153
|
+
* agree). A `"advisory"` finding (inherits-all) is SHOWN in the ring's findings
|
|
154
|
+
* but NOT graded — aligned with the inherits-all-is-advisory stance.
|
|
155
|
+
*
|
|
156
|
+
* Scores `null` (n/a, excluded from the overall) when there's NO tool-bearing
|
|
157
|
+
* surface to assess at all — no subagents AND no model-invocable skills. A
|
|
158
|
+
* user-invoked skill carries no model-driven trifecta risk, so it doesn't count
|
|
159
|
+
* as an assessable surface. When there ARE assessable surfaces but no trifecta,
|
|
160
|
+
* the ring is a clean 100.
|
|
161
|
+
*/
|
|
162
|
+
function safety(r) {
|
|
163
|
+
const modelInvocableSkills = r.skills.filter((s) => !s.userInvoked).length;
|
|
164
|
+
const assessable = r.agents.length + modelInvocableSkills;
|
|
165
|
+
if (assessable === 0) {
|
|
166
|
+
return {
|
|
167
|
+
key: "Safety",
|
|
168
|
+
score: null,
|
|
169
|
+
weight: 1,
|
|
170
|
+
findings: ["no tool-bearing surface to assess"],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const hard = r.trifectaFindings.filter((f) => f.finding.severity === "hard");
|
|
174
|
+
const { score, findings } = scoreFrom([
|
|
175
|
+
{
|
|
176
|
+
n: hard.length,
|
|
177
|
+
weight: leaderboard_js_1.W_TRIFECTA,
|
|
178
|
+
label: "unit(s) holding all three lethal-trifecta legs (prompt-injection exfil path)",
|
|
179
|
+
},
|
|
180
|
+
]);
|
|
181
|
+
// inherits-all trifecta findings are ADVISORY: surfaced as a maximal-blast-radius
|
|
182
|
+
// note but never graded (mirrors the Structure inherits-all advisory).
|
|
183
|
+
const advisory = r.trifectaFindings
|
|
184
|
+
.filter((f) => f.finding.severity === "advisory")
|
|
185
|
+
.map((f) => `${f.name} inherits all tools — maximal trifecta blast radius (advisory)`);
|
|
186
|
+
return {
|
|
187
|
+
key: "Safety",
|
|
188
|
+
score,
|
|
189
|
+
weight: 1,
|
|
190
|
+
findings: [...findings, ...advisory],
|
|
191
|
+
};
|
|
192
|
+
}
|
|
141
193
|
function tested(r) {
|
|
142
194
|
const { score, findings } = scoreFrom([
|
|
143
195
|
{ n: r.untested, weight: W_UNTESTED, label: "untested surface(s)" },
|
|
@@ -157,7 +209,7 @@ function isEmptyAudit(r) {
|
|
|
157
209
|
return (0, leaderboard_js_1.isEmptyMachine)(r) && !r.instructions;
|
|
158
210
|
}
|
|
159
211
|
/**
|
|
160
|
-
* Bucket a scan report into the
|
|
212
|
+
* Bucket a scan report into the five deterministic Lighthouse categories as a
|
|
161
213
|
* DIAGNOSTIC breakdown, with the headline `overall` = `100 − Σ(all graded
|
|
162
214
|
* penalties)` (the shared summed model — NOT the average of the rings — so it
|
|
163
215
|
* equals the leaderboard's single health number). The advisory Tested ring and
|
|
@@ -169,6 +221,7 @@ function auditScore(report) {
|
|
|
169
221
|
"Truthfulness",
|
|
170
222
|
"Triggering",
|
|
171
223
|
"Structure",
|
|
224
|
+
"Safety",
|
|
172
225
|
"Tested",
|
|
173
226
|
];
|
|
174
227
|
return {
|
|
@@ -187,6 +240,7 @@ function auditScore(report) {
|
|
|
187
240
|
truthfulness(report),
|
|
188
241
|
triggering(report),
|
|
189
242
|
structure(report),
|
|
243
|
+
safety(report),
|
|
190
244
|
tested(report),
|
|
191
245
|
];
|
|
192
246
|
// The headline is the SUMMED model (the shared integrity score), NOT the average
|
package/dist/cli-commands.d.ts
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
/** Human-facing verbs (printed in help; typed by a human/agent/CI). */
|
|
14
14
|
export declare const VERBS: readonly ["init", "compile", "eject", "lint", "test", "eval", "audit", "scaffold-test", "generate", "hook-runtime"];
|
|
15
15
|
/** Runtime entrypoint kinds under `vigiles hook-runtime <kind>` (emitted, not typed). */
|
|
16
|
-
export declare const HOOK_RUNTIME_KINDS: readonly ["run-program", "agent", "agent-start", "agent-done", "skill", "skill-tool", "skill-start", "skill-done", "run-skill", "intercept-tool", "guard", "action", "refs", "effect-enter", "effect-exit"];
|
|
16
|
+
export declare const HOOK_RUNTIME_KINDS: readonly ["run-program", "agent", "agent-start", "agent-done", "skill", "skill-tool", "skill-start", "skill-done", "run-skill", "intercept-tool", "guard", "action", "refs", "eval-lock-nudge", "effect-enter", "effect-exit"];
|
|
17
17
|
export type Verb = (typeof VERBS)[number];
|
|
18
18
|
export type HookRuntimeKind = (typeof HOOK_RUNTIME_KINDS)[number];
|
|
19
19
|
//# sourceMappingURL=cli-commands.d.ts.map
|