@latysh-development/monolith 0.1.0-alpha.2 → 0.1.0-alpha.4

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.
Files changed (90) hide show
  1. package/README.md +24 -1
  2. package/dist/brief/cli.d.ts.map +1 -1
  3. package/dist/brief/cli.js +8 -2
  4. package/dist/brief/collect.d.ts.map +1 -1
  5. package/dist/brief/collect.js +17 -5
  6. package/dist/brief/freshness.d.ts +50 -7
  7. package/dist/brief/freshness.d.ts.map +1 -1
  8. package/dist/brief/freshness.js +89 -17
  9. package/dist/brief/git-signals.d.ts +32 -5
  10. package/dist/brief/git-signals.d.ts.map +1 -1
  11. package/dist/brief/git-signals.js +169 -39
  12. package/dist/brief/knowledge.d.ts +62 -0
  13. package/dist/brief/knowledge.d.ts.map +1 -0
  14. package/dist/brief/knowledge.js +123 -0
  15. package/dist/brief/markdown-context.d.ts +22 -0
  16. package/dist/brief/markdown-context.d.ts.map +1 -0
  17. package/dist/brief/markdown-context.js +66 -0
  18. package/dist/brief/reconcile.d.ts +7 -1
  19. package/dist/brief/reconcile.d.ts.map +1 -1
  20. package/dist/brief/reconcile.js +42 -2
  21. package/dist/brief/story.d.ts +2 -10
  22. package/dist/brief/story.d.ts.map +1 -1
  23. package/dist/brief/story.js +21 -7
  24. package/dist/cli/index.js +1 -1
  25. package/dist/cli/style.d.ts +26 -0
  26. package/dist/cli/style.d.ts.map +1 -0
  27. package/dist/cli/style.js +76 -0
  28. package/dist/cli/ui.d.ts.map +1 -1
  29. package/dist/cli/ui.js +33 -6
  30. package/dist/coordinatorium/cli.d.ts.map +1 -1
  31. package/dist/coordinatorium/cli.js +13 -0
  32. package/dist/finalize/cli.d.ts.map +1 -1
  33. package/dist/finalize/cli.js +30 -13
  34. package/dist/finalize/consistency.d.ts +51 -0
  35. package/dist/finalize/consistency.d.ts.map +1 -0
  36. package/dist/finalize/consistency.js +57 -0
  37. package/dist/finalize/core.d.ts +28 -0
  38. package/dist/finalize/core.d.ts.map +1 -1
  39. package/dist/finalize/core.js +186 -41
  40. package/dist/ideas/cli.d.ts +1 -0
  41. package/dist/ideas/cli.d.ts.map +1 -1
  42. package/dist/ideas/cli.js +14 -3
  43. package/dist/ideas/format.d.ts +31 -1
  44. package/dist/ideas/format.d.ts.map +1 -1
  45. package/dist/ideas/format.js +109 -1
  46. package/dist/ideas/store.d.ts +2 -0
  47. package/dist/ideas/store.d.ts.map +1 -1
  48. package/dist/ideas/store.js +4 -1
  49. package/dist/ideas/types.d.ts +10 -0
  50. package/dist/ideas/types.d.ts.map +1 -1
  51. package/dist/ideas/types.js +3 -0
  52. package/dist/readmodel/dashboard.d.ts.map +1 -1
  53. package/dist/readmodel/dashboard.js +19 -1
  54. package/dist/readmodel/index.d.ts +2 -1
  55. package/dist/readmodel/index.d.ts.map +1 -1
  56. package/dist/readmodel/index.js +1 -0
  57. package/dist/readmodel/roadmap.d.ts +34 -0
  58. package/dist/readmodel/roadmap.d.ts.map +1 -0
  59. package/dist/readmodel/roadmap.js +254 -0
  60. package/dist/readmodel/types.d.ts +88 -0
  61. package/dist/readmodel/types.d.ts.map +1 -1
  62. package/dist/root/safe-write.d.ts +15 -4
  63. package/dist/root/safe-write.d.ts.map +1 -1
  64. package/dist/root/safe-write.js +264 -50
  65. package/dist/ui/apple-touch-icon.png +0 -0
  66. package/dist/ui/assets/index-BJKxUDPD.css +1 -0
  67. package/dist/ui/assets/index-ioC9DPHQ.js +28 -0
  68. package/dist/ui/assets/monolith-mark-Ct0ammrU.webp +0 -0
  69. package/dist/ui/favicon-16x16.png +0 -0
  70. package/dist/ui/favicon-32x32.png +0 -0
  71. package/dist/ui/favicon.ico +0 -0
  72. package/dist/ui/index.html +6 -2
  73. package/dist/update/cli.d.ts +1 -1
  74. package/dist/update/cli.d.ts.map +1 -1
  75. package/dist/update/cli.js +10 -3
  76. package/dist/update/index.d.ts +9 -0
  77. package/dist/update/index.d.ts.map +1 -1
  78. package/dist/update/index.js +50 -1
  79. package/dist/update/legacy-skills.d.ts +15 -0
  80. package/dist/update/legacy-skills.d.ts.map +1 -0
  81. package/dist/update/legacy-skills.js +20 -0
  82. package/dist/validate/index.d.ts.map +1 -1
  83. package/dist/validate/index.js +4 -3
  84. package/dist/version.d.ts +1 -1
  85. package/dist/version.js +1 -1
  86. package/package.json +5 -2
  87. package/templates/default-instance/monolith/context/MONOLITH-CHAT-CONTEXT.md +183 -0
  88. package/templates/default-instance/monolith/skills/finalize-story/SKILL.md +19 -3
  89. package/dist/ui/assets/index-C4NhMaq7.js +0 -28
  90. package/dist/ui/assets/index-DMZ7ZvZY.css +0 -1
@@ -0,0 +1,28 @@
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function s(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function n(i){if(i.ep)return;i.ep=!0;const r=s(i);fetch(i.href,r)}})();/**
2
+ * @vue/shared v3.5.44
3
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
+ * @license MIT
5
+ **/function vn(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const Q={},Et=[],ze=()=>{},ki=()=>!1,ks=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ms=e=>e.startsWith("onUpdate:"),ue=Object.assign,_n=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},to=Object.prototype.hasOwnProperty,W=(e,t)=>to.call(e,t),P=Array.isArray,dt=e=>ls(e)==="[object Map]",kt=e=>ls(e)==="[object Set]",Kn=e=>ls(e)==="[object Date]",D=e=>typeof e=="function",re=e=>typeof e=="string",Ye=e=>typeof e=="symbol",G=e=>e!==null&&typeof e=="object",Mi=e=>(G(e)||D(e))&&D(e.then)&&D(e.catch),Pi=Object.prototype.toString,ls=e=>Pi.call(e),so=e=>ls(e).slice(8,-1),Ni=e=>ls(e)==="[object Object]",bn=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Gt=vn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ps=e=>{const t=Object.create(null);return(s=>t[s]||(t[s]=e(s)))},no=/-\w/g,Fe=Ps(e=>e.replace(no,t=>t.slice(1).toUpperCase())),io=/\B([A-Z])/g,Mt=Ps(e=>e.replace(io,"-$1").toLowerCase()),$i=Ps(e=>e.charAt(0).toUpperCase()+e.slice(1)),Bs=Ps(e=>e?`on${$i(e)}`:""),qe=(e,t)=>!Object.is(e,t),ys=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Ri=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},Li=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ro=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Wn;const Ns=()=>Wn||(Wn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Sn(e){if(P(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],i=re(n)?co(n):Sn(n);if(i)for(const r in i)t[r]=i[r]}return t}else if(re(e)||G(e))return e}const oo=/;(?![^(]*\))/g,lo=/:([^]+)/,ao=/"(?:[^"\\]|\\[^])*"|'(?:[^'\\]|\\[^])*'|\\[^]|\/\*[^]*?\*\//g;function co(e){const t={};return e.replace(ao,s=>s.startsWith("/*")?"":s).split(oo).forEach(s=>{if(s){const n=s.split(lo);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ht(e){let t="";if(re(e))t=e;else if(P(e))for(let s=0;s<e.length;s++){const n=ht(e[s]);n&&(t+=n+" ")}else if(G(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const uo="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly",fo=vn(uo);function Di(e){return!!e||e===""}function ho(e,t,s){if(e.length!==t.length)return!1;let n=!0;for(let i=0;n&&i<e.length;i++)n=gt(e[i],t[i],s);return n}function Gn(e,t,s){if(e.size!==t.size)return!1;const n=Array.from(t),i=new Uint8Array(n.length);for(const r of e){let o=-1;for(let l=0;l<n.length;l++)if(!i[l]&&gt(r,n[l],s)){o=l;break}if(o<0)return!1;i[o]=1}return!0}function po(e,t,s){let n=dt(e),i=dt(t);if(n||i||(n=kt(e),i=kt(t),n||i))return n&&i?Gn(e,t,s):!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const l in e){const a=e.hasOwnProperty(l),d=t.hasOwnProperty(l);if(a&&!d||!a&&d||!gt(e[l],t[l],s))return!1}return String(e)===String(t)}function qn(e,t,s,n){s||(s=[new Map,new Map]);const[i,r]=s;if(i.has(e)||r.has(t))return i.get(e)===t&&r.get(t)===e;i.set(e,t),r.set(t,e);const o=n(e,t,s);return i.delete(e),r.delete(t),o}function gt(e,t,s){if(e===t)return!0;let n=Kn(e),i=Kn(t);return n||i?n&&i?e.getTime()===t.getTime():!1:(n=Ye(e),i=Ye(t),n||i?e===t:(n=P(e),i=P(t),n||i?n&&i?qn(e,t,s,ho):!1:(n=G(e),i=G(t),n||i?!n||!i?!1:qn(e,t,s,po):String(e)===String(t))))}function go(e,t){return e.findIndex(s=>gt(s,t))}const Fi=e=>!!(e&&e.__v_isRef===!0),V=e=>re(e)?e:e==null?"":P(e)||G(e)&&(e.toString===Pi||!D(e.toString))?Fi(e)?V(e.value):JSON.stringify(e,Hi,2):String(e),Hi=(e,t)=>Fi(t)?Hi(e,t.value):dt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,i],r)=>(s[Ks(n,r)+" =>"]=i,s),{})}:kt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Ks(s))}:Ye(t)?Ks(t):G(t)&&!P(t)&&!Ni(t)?String(t):t,Ks=(e,t="")=>{var s;return Ye(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
6
+ * @vue/reactivity v3.5.44
7
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
8
+ * @license MIT
9
+ **/let pe;class mo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&pe&&(pe.active?(this.parent=pe,this.index=(pe.scopes||(pe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const n=this.scopes.slice();for(t=0,s=n.length;t<s;t++)n[t].pause()}for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes){const i=this.scopes.slice();for(t=0,s=i.length;t<s;t++)i[t].resume()}const n=this.effects.slice();for(t=0,s=n.length;t<s;t++)n[t].resume()}}run(t){if(this._active){const s=pe;try{return pe=this,t()}finally{pe=s}}}on(){++this._on===1&&(this.prevScope=pe,pe=this)}off(){if(this._on>0&&--this._on===0){if(pe===this)pe=this.prevScope;else{let t=pe;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){const i=this.scopes.slice();for(s=0,n=i.length;s<n;s++)i[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const i=this.parent.scopes.pop();i&&i!==this&&(this.parent.scopes[this.index]=i,i.index=this.index)}this.parent=void 0}}}function yo(){return pe}let se;const Ws=new WeakSet;class Vi{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,pe&&(pe.active?pe.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ws.has(this)&&(Ws.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ui(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,zn(this),Bi(this);const t=se,s=He;se=this,He=!0;try{return this.fn()}finally{Ki(this),se=t,He=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)An(t);this.deps=this.depsTail=void 0,zn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ws.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){rn(this)&&this.run()}get dirty(){return rn(this)}}let ji=0,qt,zt;function Ui(e,t=!1){if(e.flags|=8,t){e.next=zt,zt=e;return}e.next=qt,qt=e}function Tn(){ji++}function wn(){if(--ji>0)return;if(zt){let t=zt;for(zt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;qt;){let t=qt;for(qt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function Bi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ki(e){let t,s=e.depsTail,n=s;for(;n;){const i=n.prevDep;n.version===-1?(n===s&&(s=i),An(n),vo(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=i}e.deps=t,e.depsTail=s}function rn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Wi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Wi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Xt)||(e.globalVersion=Xt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!rn(e))))return;e.flags|=2;const t=e.dep,s=se,n=He;se=e,He=!0;try{Bi(e);const i=e.fn(e._value);(t.version===0||qe(i,e._value))&&(e.flags|=128,e._value=i,t.version++)}catch(i){throw t.version++,i}finally{se=s,He=n,Ki(e),e.flags&=-3}}function An(e,t=!1){const{dep:s,prevSub:n,nextSub:i}=e;if(n&&(n.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)An(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function vo(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let He=!0;const Gi=[];function Ze(){Gi.push(He),He=!1}function Je(){const e=Gi.pop();He=e===void 0?!0:e}function zn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=se;se=void 0;try{t()}finally{se=s}}}let Xt=0;class _o{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class xn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!se||!He||se===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==se)s=this.activeLink=new _o(se,this),se.deps?(s.prevDep=se.depsTail,se.depsTail.nextDep=s,se.depsTail=s):se.deps=se.depsTail=s,qi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=se.depsTail,s.nextDep=void 0,se.depsTail.nextDep=s,se.depsTail=s,se.deps===s&&(se.deps=n)}return s}trigger(t){this.version++,Xt++,this.notify(t)}notify(t){Tn();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{wn()}}}function qi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)qi(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const on=new WeakMap,Ot=Symbol(""),ln=Symbol(""),Qt=Symbol("");function me(e,t,s){if(He&&se){let n=on.get(e);n||on.set(e,n=new Map);let i=n.get(s);i||(n.set(s,i=new xn),i.map=n,i.key=s),i.track()}}function rt(e,t,s,n,i,r){const o=on.get(e);if(!o){Xt++;return}const l=a=>{a&&a.trigger()};if(Tn(),t==="clear")o.forEach(l);else{const a=P(e),d=a&&bn(s);if(a&&s==="length"){const u=Number(n);o.forEach((h,m)=>{(m==="length"||m===Qt||!Ye(m)&&m>=u)&&l(h)})}else switch((s!==void 0||o.has(void 0))&&l(o.get(s)),d&&l(o.get(Qt)),t){case"add":a?d&&l(o.get("length")):(l(o.get(Ot)),dt(e)&&l(o.get(ln)));break;case"delete":a||(l(o.get(Ot)),dt(e)&&l(o.get(ln)));break;case"set":dt(e)&&l(o.get(Ot));break}}wn()}function Pt(e){const t=K(e);return t===e||(me(t,"iterate",Qt),Ne(e))?t:Xe(e)?pt(e)?t.map(s=>mt($e(s))):t.map(mt):t.map($e)}function $s(e){return me(e=K(e),"iterate",Qt),e}function Ke(e,t){return Xe(e)?mt(pt(e)?$e(t):t):$e(t)}const bo={__proto__:null,[Symbol.iterator](){return Gs(this,Symbol.iterator,e=>Ke(this,e))},concat(...e){return Pt(this).concat(...e.map(t=>P(t)?Pt(t):t))},entries(){return Gs(this,"entries",e=>(e[1]=Ke(this,e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,s=>s.map(n=>Ke(this,n)),arguments)},find(e,t){return tt(this,"find",e,t,s=>Ke(this,s),arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,s=>Ke(this,s),arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return qs(this,"includes",e)},indexOf(...e){return qs(this,"indexOf",e)},join(e){return Pt(this).join(e)},lastIndexOf(...e){return qs(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return Vt(this,"pop")},push(...e){return Vt(this,"push",e)},reduce(e,...t){return Zn(this,"reduce",e,t)},reduceRight(e,...t){return Zn(this,"reduceRight",e,t)},shift(){return Vt(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return Vt(this,"splice",e)},toReversed(){return Pt(this).toReversed()},toSorted(e){return Pt(this).toSorted(e)},toSpliced(...e){return Pt(this).toSpliced(...e)},unshift(...e){return Vt(this,"unshift",e)},values(){return Gs(this,"values",e=>Ke(this,e))}};function Gs(e,t,s){const n=$s(e),i=n[t],r=i.call(n);if(n!==e&&!Ne(e)){if(r[Symbol.toStringTag]==="Array Iterator"){const o=Object.create(Object.getPrototypeOf(r));return o.next=()=>Yn(r.next(),s),i!==zi[t]&&Object.defineProperties(o,{return:{get(){const l=r.return;return typeof l=="function"?l.bind(r):l}},throw:{get(){const l=r.throw;return typeof l=="function"?l.bind(r):l}}}),o}r._next=r.next,r.next=()=>Yn(r._next(),s)}return r}function Yn(e,t){return e.done||(e.value=t(e.value)),e}const zi=Array.prototype;function tt(e,t,s,n,i,r){const o=$s(e),l=o!==e&&!Ne(e),a=o[t];if(a!==zi[t]){const h=a.apply(e,r);return l?$e(h):h}let d=s;o!==e&&(l?d=function(h,m){return s.call(this,Ke(e,h),m,e)}:s.length>2&&(d=function(h,m){return s.call(this,h,m,e)}));const u=a.call(o,d,n);return l&&i?i(u):u}function Zn(e,t,s,n){const i=$s(e),r=i!==e&&!Ne(e);let o=s,l=!1;i!==e&&(r?(l=n.length===0,o=function(d,u,h){return l&&(l=!1,d=Ke(e,d)),s.call(this,d,Ke(e,u),h,e)}):s.length>3&&(o=function(d,u,h){return s.call(this,d,u,h,e)}));const a=i[t](o,...n);return l?Ke(e,a):a}function qs(e,t,s){const n=K(e);me(n,"iterate",Qt);const i=n[t](...s);return(i===-1||i===!1)&&In(s[0])?(s[0]=K(s[0]),n[t](...s)):i}function Vt(e,t,s=[]){Ze(),Tn();const n=K(e)[t].apply(e,s);return wn(),Je(),n}const So=vn("__proto__,__v_isRef,__isVue"),Yi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ye));function To(e){Ye(e)||(e=String(e));const t=K(this);return me(t,"has",e),t.hasOwnProperty(e)}class Zi{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const i=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!i;if(s==="__v_isReadonly")return i;if(s==="__v_isShallow")return r;if(s==="__v_raw")return n===(i?r?Po:er:r?Qi:Xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=P(t);if(!i){let a;if(o&&(a=bo[s]))return a;if(s==="hasOwnProperty")return To}const l=Reflect.get(t,s,ve(t)?t:n);if((Ye(s)?Yi.has(s):So(s))||(i||me(t,"get",s),r))return l;if(ve(l)){const a=o&&bn(s)?l:l.value;return i&&G(a)?cn(a):a}return G(l)?i?cn(l):En(l):l}}class Ji extends Zi{constructor(t=!1){super(!1,t)}set(t,s,n,i){let r=t[s];const o=P(t)&&bn(s);if(!this._isShallow){const d=Xe(r);if(!Ne(n)&&!Xe(n)&&(r=K(r),n=K(n)),!o&&ve(r)&&!ve(n))return d||(r.value=n),!0}const l=o?Number(s)<t.length:W(t,s),a=Reflect.set(t,s,n,ve(t)?t:i);return t===K(i)&&a&&(l?qe(n,r)&&rt(t,"set",s,n):rt(t,"add",s,n)),a}deleteProperty(t,s){const n=W(t,s);t[s];const i=Reflect.deleteProperty(t,s);return i&&n&&rt(t,"delete",s,void 0),i}has(t,s){const n=Reflect.has(t,s);return(!Ye(s)||!Yi.has(s))&&me(t,"has",s),n}ownKeys(t){return me(t,"iterate",P(t)?"length":Ot),Reflect.ownKeys(t)}}class wo extends Zi{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Ao=new Ji,xo=new wo,Co=new Ji(!0);const an=e=>e,ds=e=>Reflect.getPrototypeOf(e);function Eo(e,t,s){return function(...n){const i=this.__v_raw,r=K(i),o=dt(r),l=e==="entries"||e===Symbol.iterator&&o,a=e==="keys"&&o,d=i[e](...n),u=s?an:t?mt:$e;return!t&&me(r,"iterate",a?ln:Ot),ue(Object.create(d),{next(){const{value:h,done:m}=d.next();return m?{value:h,done:m}:{value:l?[u(h[0]),u(h[1])]:u(h),done:m}}})}}function hs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Oo(e,t){const s={get(i){const r=this.__v_raw,o=K(r),l=K(i);e||(qe(i,l)&&me(o,"get",i),me(o,"get",l));const{has:a}=ds(o),d=t?an:e?mt:$e;if(a.call(o,i))return d(r.get(i));if(a.call(o,l))return d(r.get(l));r!==o&&r.get(i)},get size(){const i=this.__v_raw;return!e&&me(K(i),"iterate",Ot),i.size},has(i){const r=this.__v_raw,o=K(r),l=K(i);return e||(qe(i,l)&&me(o,"has",i),me(o,"has",l)),i===l?r.has(i):r.has(i)||r.has(l)},forEach(i,r){const o=this,l=o.__v_raw,a=K(l),d=t?an:e?mt:$e;return!e&&me(a,"iterate",Ot),l.forEach((u,h)=>i.call(r,d(u),d(h),o))}};return ue(s,e?{add:hs("add"),set:hs("set"),delete:hs("delete"),clear:hs("clear")}:{add(i){const r=K(this),o=ds(r),l=K(i),a=!t&&!Ne(i)&&!Xe(i)?l:i;return o.has.call(r,a)||qe(i,a)&&o.has.call(r,i)||qe(l,a)&&o.has.call(r,l)||(r.add(a),rt(r,"add",a,a)),this},set(i,r){!t&&!Ne(r)&&!Xe(r)&&(r=K(r));const o=K(this),{has:l,get:a}=ds(o);let d=l.call(o,i);d||(i=K(i),d=l.call(o,i));const u=a.call(o,i);return o.set(i,r),d?qe(r,u)&&rt(o,"set",i,r):rt(o,"add",i,r),this},delete(i){const r=K(this),{has:o,get:l}=ds(r);let a=o.call(r,i);a||(i=K(i),a=o.call(r,i)),l&&l.call(r,i);const d=r.delete(i);return a&&rt(r,"delete",i,void 0),d},clear(){const i=K(this),r=i.size!==0,o=i.clear();return r&&rt(i,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(i=>{s[i]=Eo(i,e,t)}),s}function Cn(e,t){const s=Oo(e,t);return(n,i,r)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_isShallow"?t:i==="__v_raw"?n:Reflect.get(W(s,i)&&i in n?s:n,i,r)}const Io={get:Cn(!1,!1)},ko={get:Cn(!1,!0)},Mo={get:Cn(!0,!1)};const Xi=new WeakMap,Qi=new WeakMap,er=new WeakMap,Po=new WeakMap;function No(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function En(e){return Xe(e)?e:On(e,!1,Ao,Io,Xi)}function $o(e){return On(e,!1,Co,ko,Qi)}function cn(e){return On(e,!0,xo,Mo,er)}function On(e,t,s,n,i){if(!G(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const r=i.get(e);if(r)return r;const o=No(so(e));if(o===0)return e;const l=new Proxy(e,o===2?n:s);return i.set(e,l),l}function pt(e){return Xe(e)?pt(e.__v_raw):!!(e&&e.__v_isReactive)}function Xe(e){return!!(e&&e.__v_isReadonly)}function Ne(e){return!!(e&&e.__v_isShallow)}function In(e){return e?!!e.__v_raw:!1}function K(e){const t=e&&e.__v_raw;return t?K(t):e}function Ro(e){return!W(e,"__v_skip")&&Object.isExtensible(e)&&Ri(e,"__v_skip",!0),e}const $e=e=>G(e)?En(e):e,mt=e=>G(e)?cn(e):e;function ve(e){return e?e.__v_isRef===!0:!1}function $t(e){return Lo(e,!1)}function Lo(e,t){return ve(e)?e:new Do(e,t)}class Do{constructor(t,s){this.dep=new xn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:K(t),this._value=s?t:$e(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Ne(t)||Xe(t);t=n?t:K(t),qe(t,s)&&(this._rawValue=t,this._value=n?t:$e(t),this.dep.trigger())}}function Rs(e){return ve(e)?e.value:e}const Fo={get:(e,t,s)=>t==="__v_raw"?e:Rs(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const i=e[t];return ve(i)&&!ve(s)?(i.value=s,!0):Reflect.set(e,t,s,n)}};function tr(e){return pt(e)?e:new Proxy(e,Fo)}class Ho{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new xn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Xt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&se!==this)return Ui(this,!0),!0}get value(){const t=this.dep.track();return Wi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Vo(e,t,s=!1){let n,i;return D(e)?n=e:(n=e.get,i=e.set),new Ho(n,i,s)}const ps={},bs=new WeakMap;let At;function jo(e,t=!1,s=At){if(s){let n=bs.get(s);n||bs.set(s,n=[]),n.push(e)}}function Uo(e,t,s=Q){const{immediate:n,deep:i,once:r,scheduler:o,augmentJob:l,call:a}=s,d=k=>i?k:Ne(k)||i===!1||i===0?ot(k,1):ot(k);let u,h,m,_,R=!1,I=!1;if(ve(e)?(h=()=>e.value,R=Ne(e)):pt(e)?(h=()=>d(e),R=!0):P(e)?(I=!0,R=e.some(k=>pt(k)||Ne(k)),h=()=>e.map(k=>{if(ve(k))return k.value;if(pt(k))return d(k);if(D(k))return a?a(k,2):k()})):D(e)?t?h=a?()=>a(e,2):e:h=()=>{if(m){Ze();try{m()}finally{Je()}}const k=At;At=u;try{return a?a(e,3,[_]):e(_)}finally{At=k}}:h=ze,t&&i){const k=h,Z=i===!0?1/0:i;h=()=>ot(k(),Z)}const F=yo(),j=()=>{u.stop(),F&&F.active&&_n(F.effects,u)};if(r&&t){const k=t;t=(...Z)=>{try{return k(...Z)}finally{j()}}}let L=I?new Array(e.length).fill(ps):ps;const U=k=>{if(!(!(u.flags&1)||!u.dirty&&!k))if(t){const Z=u.run();if(k||i||R||(I?Z.some((fe,_e)=>qe(fe,L[_e])):qe(Z,L))){const fe=At;Ze();try{m&&m(),At=u;const _e=[Z,L===ps?void 0:I&&L[0]===ps?[]:L,_];L=Z,a?a(t,3,_e):t(..._e)}finally{At=fe,Je()}}}else u.run()};return l&&l(U),u=new Vi(h),u.scheduler=o?()=>o(U,!1):U,_=k=>jo(k,!1,u),m=u.onStop=()=>{const k=bs.get(u);if(k){if(a)a(k,4);else for(const Z of k)Z();bs.delete(u)}},t?n?U(!0):L=u.run():o?o(U.bind(null,!0),!0):u.run(),j.pause=u.pause.bind(u),j.resume=u.resume.bind(u),j.stop=j,j}function ot(e,t=1/0,s){if(t<=0||!G(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,ve(e))ot(e.value,t,s);else if(P(e))for(let n=0;n<e.length;n++)ot(e[n],t,s);else if(kt(e)||dt(e))e.forEach(n=>{ot(n,t,s)});else if(Ni(e)){for(const n in e)ot(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&ot(e[n],t,s)}return e}/**
10
+ * @vue/runtime-core v3.5.44
11
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
12
+ * @license MIT
13
+ **/function as(e,t,s,n){try{return n?e(...n):e()}catch(i){Ls(i,t,s)}}function Re(e,t,s,n){if(D(e)){const i=as(e,t,s,n);return i&&Mi(i)&&i.catch(r=>{Ls(r,t,s)}),i}if(P(e)){const i=[];for(let r=0;r<e.length;r++)i.push(Re(e[r],t,s,n));return i}}function Ls(e,t,s,n=!0){const i=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:o}=t&&t.appContext.config||Q;if(t){let l=t.parent;const a=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${s}`;for(;l;){const u=l.ec;if(u){for(let h=0;h<u.length;h++)if(u[h](e,a,d)===!1)return}l=l.parent}if(r){Ze(),as(r,null,10,[e,a,d]),Je();return}}Bo(e,s,i,n,o)}function Bo(e,t,s,n=!0,i=!1){if(i)throw e;console.error(e)}const Se=[];let De=-1;const We=[];let ft=null,Nt=0;const sr=Promise.resolve();let Ss=null;function nr(e){const t=Ss||sr;return e?t.then(this?e.bind(this):e):t}function Ko(e){let t=De+1,s=Se.length;for(;t<s;){const n=t+s>>>1,i=Se[n],r=es(i);r<e||r===e&&i.flags&2?t=n+1:s=n}return t}function kn(e){if(!(e.flags&1)){const t=es(e),s=Se[Se.length-1];!s||!(e.flags&2)&&t>=es(s)?Se.push(e):Se.splice(Ko(t),0,e),e.flags|=1,ir()}}function ir(){Ss||(Ss=sr.then(lr))}function Wo(e){if(!P(e))ft&&e.id===-1?ft.splice(Nt+1,0,e):e.flags&1||(We.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)We.push(e[t]);ir()}function rr(e,t,s,n=De+1){for(;n<Se.length;n++){const i=Se[n];if(i&&i.flags&2){if(e&&i.id!==e.uid||t!==void 0&&!(i.id>=t))continue;Se.splice(n,1),n=e?n-1:De,i.flags&4&&(i.flags&=-2),i(),i.flags&4||(i.flags&=-2)}}}function or(e,t,s=0){if(We.length){let n=We,i=0;if(t){n=[];for(let o=0;o<We.length;o++){const l=We[o];(l.i!==void 0?!l.i||l.i.uid<s:t.has(l))?We[i++]=l:n.push(l)}}const r=[...new Set(n)].sort((o,l)=>es(o)-es(l));if(We.length=i,ft){for(let o=0;o<r.length;o++)ft.push(r[o]);return}for(ft=r,Nt=0;Nt<ft.length;Nt++){const o=ft[Nt];o.flags&4&&(o.flags&=-2),o.flags&8||o(),o.flags&=-2}ft=null,Nt=0}}let zs=!1;function Go(e,t){if(zs){e();return}const s=t===void 0?void 0:new Set(We);e(),zs=!0;try{rr(void 0,t),or(void 0,s,t)}finally{zs=!1}}const es=e=>e.id==null?e.flags&2?-1:1/0:e.id;function lr(e){try{for(De=0;De<Se.length;De++){const t=Se[De];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),as(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;De<Se.length;De++){const t=Se[De];t&&(t.flags&=-2)}De=-1,Se.length=0,or(),Ss=null,(Se.length||We.length)&&lr()}}let Pe=null,ar=null;function Ts(e){const t=Pe;return Pe=e,ar=e&&e.type.__scopeId||null,t}function cr(e,t=Pe,s){if(!t||e._n)return e;const n=(...i)=>{n._d&&Cs(-1);const r=Ts(t),o=It.length;let l;try{l=e(...i)}finally{for(let a=It.length;a>o;a--)Lr();Ts(r),n._d&&Cs(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function qo(e,t){if(Pe===null)return e;const s=Us(Pe),n=e.dirs||(e.dirs=[]);for(let i=0;i<t.length;i++){let[r,o,l,a=Q]=t[i];r&&(D(r)&&(r={mounted:r,updated:r}),r.deep&&ot(o),n.push({dir:r,instance:s,value:o,oldValue:void 0,arg:l,modifiers:a}))}return e}function bt(e,t,s,n){const i=e.dirs,r=t&&t.dirs;for(let o=0;o<i.length;o++){const l=i[o];r&&(l.oldValue=r[o].value);let a=l.dir[n];a&&(Ze(),Re(a,s,8,[e.el,l,e,t]),Je())}}function zo(e,t){if(Te){let s=Te.provides;const n=Te.parent&&Te.parent.provides;n===s&&(s=Te.provides=Object.create(n)),s[e]=t}}function vs(e,t,s=!1){const n=Vr();if(n||Rt){let i=Rt?Rt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return s&&D(t)?t.call(n&&n.proxy):t}}const Yo=Symbol.for("v-scx"),Zo=()=>vs(Yo);function Ys(e,t,s){return ur(e,t,s)}function ur(e,t,s=Q){const{immediate:n,deep:i,flush:r,once:o}=s,l=ue({},s),a=t&&n||!t&&r!=="post";let d;if(rs){if(r==="sync"){const _=Zo();d=_.__watcherHandles||(_.__watcherHandles=[])}else if(!a){const _=()=>{};return _.stop=ze,_.resume=ze,_.pause=ze,_}}const u=Te;l.call=(_,R,I)=>Re(_,u,R,I);let h=!1;r==="post"?l.scheduler=_=>{_.i=u,Ae(_,u&&u.suspense)}:r!=="sync"&&(h=!0,l.scheduler=(_,R)=>{R?_():kn(_)}),l.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,u&&(_.id=u.uid,_.i=u))};const m=Uo(e,t,l);return rs&&(d?d.push(m):a&&m()),m}function Jo(e,t,s){const n=this.proxy,i=re(e)?e.includes(".")?fr(n,e):()=>n[e]:e.bind(n,n);let r;D(t)?r=t:(r=t.handler,s=t);const o=cs(this),l=ur(i,r.bind(n),s);return o(),l}function fr(e,t){const s=t.split(".");return()=>{let n=e;for(let i=0;i<s.length&&n;i++)n=n[s[i]];return n}}const Xo=Symbol("_vte"),Ds=e=>e.__isTeleport,Ie=Symbol("_leaveCb"),jt=Symbol("_enterCb");function Qo(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Mn(()=>{e.isMounted=!0}),Pn(()=>{e.isUnmounting=!0}),e}const Oe=[Function,Array],dr={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Oe,onEnter:Oe,onAfterEnter:Oe,onEnterCancelled:Oe,onBeforeLeave:Oe,onLeave:Oe,onAfterLeave:Oe,onLeaveCancelled:Oe,onBeforeAppear:Oe,onAppear:Oe,onAfterAppear:Oe,onAppearCancelled:Oe},el={name:"BaseTransition",props:dr,setup(e,{slots:t}){const s=Vr(),n=Qo();return()=>{const i=t.default&&gr(t.default(),!0),r=i&&i.length?hr(i):s.subTree?ce():void 0;if(!r)return;const o=K(e),{mode:l}=o;if(n.isLeaving)return Zs(r);const a=ws(r);if(!a)return Zs(r);let d=un(a,o,n,s,h=>d=h);a.type!==ye&&Lt(a,d);let u=s.subTree&&ws(s.subTree);if(u&&u.type!==ye&&!Ct(u,a)&&ts(s.subTree)){let h=un(u,o,n,s);if(Lt(u,h),l==="out-in"&&a.type!==ye)return n.isLeaving=!0,h.afterLeave=()=>{n.isLeaving=!1,s.job.flags&8||s.update(),delete h.afterLeave,u=void 0},Zs(r);l==="in-out"&&a.type!==ye?h.delayLeave=(m,_,R)=>{const I=pr(n,u);I[String(u.key)]=u,m[Ie]=()=>{_(),m[Ie]=void 0,delete d.delayedLeave,u=void 0},d.delayedLeave=()=>{R(),delete d.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return r}}};function hr(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==ye){t=s;break}}return t}const tl=el;function pr(e,t){const{leavingVNodes:s}=e;let n=s.get(t.type);return n||(n=Object.create(null),s.set(t.type,n)),n}function un(e,t,s,n,i){const{appear:r,mode:o,persisted:l=!1,onBeforeEnter:a,onEnter:d,onAfterEnter:u,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:R,onLeaveCancelled:I,onBeforeAppear:F,onAppear:j,onAfterAppear:L,onAppearCancelled:U}=t,k=String(e.key),Z=pr(s,e),fe=(H,z)=>{H&&Re(H,n,9,z)},_e=(H,z)=>{const ne=z[1];fe(H,z),P(H)?H.every(O=>O.length<=1)&&ne():H.length<=1&&ne()},we={mode:o,persisted:l,beforeEnter(H){let z=a;if(!s.isMounted)if(r)z=F||a;else return;H[Ie]&&H[Ie](!0);const ne=Z[k];if(ne&&Ct(e,ne)){let O=ne.el[Ie];if(!O){const J=ts(ne);O=J&&J.el[Ie]}O&&O()}fe(z,[H])},enter(H){if(Z[k]===e)return;let z=d,ne=u,O=h;if(!s.isMounted)if(r)z=j||d,ne=L||u,O=U||h;else return;let J=!1;H[jt]=et=>{J||(J=!0,et?fe(O,[H]):fe(ne,[H]),we.delayedLeave&&we.delayedLeave(),H[jt]=void 0)};const ge=H[jt].bind(null,!1);z?_e(z,[H,ge]):ge()},leave(H,z){const ne=String(e.key);if(H[jt]&&H[jt](!0),s.isUnmounting)return z();fe(m,[H]);let O=!1;H[Ie]=ge=>{O||(O=!0,z(),ge?fe(I,[H]):fe(R,[H]),H[Ie]=void 0,Z[ne]===e&&delete Z[ne])};const J=H[Ie].bind(null,!1);Z[ne]=e,_?_e(_,[H,J]):J()},clone(H){const z=un(H,t,s,n,i);return i&&i(z),z}};return we}function Zs(e){if(Fs(e))return e=yt(e),e.children=null,e}function ws(e){if(!Fs(e))return Ds(e.type)&&e.children?hr(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&D(s.default))return s.default()}}function Lt(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;Lt(Ds(s.type)&&ws(s)||s,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===q&&P(e.children)){const s=wr(e.children,!1);s&&Lt(s,t)}}function gr(e,t=!1,s){let n=[],i=0;for(let r=0;r<e.length;r++){let o=e[r];const l=s==null?o.key:String(s)+String(o.key!=null?o.key:r);o.type===q?(o.patchFlag&128&&i++,n=n.concat(gr(o.children,t,l))):(t||o.type!==ye)&&n.push(l!=null?yt(o,{key:l}):o)}if(i>1)for(let r=0;r<n.length;r++)n[r].patchFlag=-2;return n}function ts(e){if(e.component)return ts(e.component.subTree);if(e.type===q){const t=P(e.children)&&wr(e.children,!1);return t?ts(t):void 0}if(e.type!==ye)return e}function at(e,t){return D(e)?ue({name:e.name},t,{setup:e}):e}function mr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Jn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const As=new WeakMap;function Yt(e,t,s,n,i=!1){if(P(e)){e.forEach((I,F)=>Yt(I,t&&(P(t)?t[F]:t),s,n,i));return}if(Zt(n)&&!i){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Yt(e,t,s,n.component.subTree);return}const r=n.shapeFlag&4?Us(n.component):n.el,o=i?null:r,{i:l,r:a}=e,d=t&&t.r,u=l.refs===Q?l.refs={}:l.refs,h=l.setupState,m=K(h),_=h===Q?ki:I=>Jn(u,I)?!1:W(m,I),R=(I,F)=>!(F&&Jn(u,F));if(d!=null&&d!==a){if(Xn(t),re(d))u[d]=null,_(d)&&(h[d]=null);else if(ve(d)){const I=t;R(d,I.k)&&(d.value=null),I.k&&(u[I.k]=null)}}if(D(a))as(a,l,12,[o,u]);else{const I=re(a),F=ve(a);if(I||F){const j=()=>{if(e.f){const L=I?_(a)?h[a]:u[a]:R()||!e.k?a.value:u[e.k];if(i)P(L)&&_n(L,r);else if(P(L))L.includes(r)||L.push(r);else if(I)u[a]=[r],_(a)&&(h[a]=u[a]);else{const U=[r];R(a,e.k)&&(a.value=U),e.k&&(u[e.k]=U)}}else I?(u[a]=o,_(a)&&(h[a]=o)):F&&(R(a,e.k)&&(a.value=o),e.k&&(u[e.k]=o))};if(o){const L=()=>{j(),As.delete(e)};L.id=-1,As.set(e,L),Ae(L,s)}else Xn(e),j()}}}function Xn(e){const t=As.get(e);t&&(t.flags|=8,As.delete(e))}Ns().requestIdleCallback;Ns().cancelIdleCallback;const Zt=e=>!!e.type.__asyncLoader,Fs=e=>e.type.__isKeepAlive;function sl(e,t){yr(e,"a",t)}function nl(e,t){yr(e,"da",t)}function yr(e,t,s=Te){const n=e.__wdc||(e.__wdc=()=>{let i=s;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(Hs(t,n,s),s){let i=s.parent;for(;i&&i.parent;)Fs(i.parent.vnode)&&il(n,t,s,i),i=i.parent}}function il(e,t,s,n){const i=Hs(t,e,n,!0);vr(()=>{_n(n[t],i)},s)}function Hs(e,t,s=Te,n=!1){if(s){const i=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...o)=>{Ze();const l=cs(s),a=Re(t,s,e,o);return l(),Je(),a});return n?i.unshift(r):i.push(r),r}}const ct=e=>(t,s=Te)=>{(!rs||e==="sp")&&Hs(e,(...n)=>t(...n),s)},rl=ct("bm"),Mn=ct("m"),ol=ct("bu"),ll=ct("u"),Pn=ct("bum"),vr=ct("um"),al=ct("sp"),cl=ct("rtg"),ul=ct("rtc");function fl(e,t=Te){Hs("ec",e,t)}const dl=Symbol.for("v-ndc");function Qe(e,t,s,n){let i;const r=s,o=P(e);if(o||re(e)){const l=o&&pt(e);let a=!1,d=!1;l&&(a=!Ne(e),d=Xe(e),e=$s(e)),i=new Array(e.length);for(let u=0,h=e.length;u<h;u++)i[u]=t(a?d?mt($e(e[u])):$e(e[u]):e[u],u,void 0,r)}else if(typeof e=="number")if(!Number.isInteger(e)||e<0)i=[];else{i=new Array(e);for(let l=0;l<e;l++)i[l]=t(l+1,l,void 0,r)}else if(G(e))if(e[Symbol.iterator])i=Array.from(e,(l,a)=>t(l,a,void 0,r));else{const l=Object.keys(e);i=new Array(l.length);for(let a=0,d=l.length;a<d;a++){const u=l[a];i[a]=t(e[u],u,a,r)}}else i=[];return i}const fn=e=>e?jr(e)?Us(e):fn(e.parent):null,Jt=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>fn(e.parent),$root:e=>fn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>br(e),$forceUpdate:e=>e.f||(e.f=()=>{kn(e.update)}),$nextTick:e=>e.n||(e.n=nr.bind(e.proxy)),$watch:e=>Jo.bind(e)}),Js=(e,t)=>e!==Q&&!e.__isScriptSetup&&W(e,t),hl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:i,props:r,accessCache:o,type:l,appContext:a}=e;if(t[0]!=="$"){const m=o[t];if(m!==void 0)switch(m){case 1:return n[t];case 2:return i[t];case 4:return s[t];case 3:return r[t]}else{if(Js(n,t))return o[t]=1,n[t];if(i!==Q&&W(i,t))return o[t]=2,i[t];if(W(r,t))return o[t]=3,r[t];if(s!==Q&&W(s,t))return o[t]=4,s[t];dn&&(o[t]=0)}}const d=Jt[t];let u,h;if(d)return t==="$attrs"&&me(e.attrs,"get",""),d(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(s!==Q&&W(s,t))return o[t]=4,s[t];if(h=a.config.globalProperties,W(h,t))return h[t]},set({_:e},t,s){const{data:n,setupState:i,ctx:r}=e;return Js(i,t)?(i[t]=s,!0):n!==Q&&W(n,t)?(n[t]=s,!0):W(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:i,props:r,type:o}},l){let a;return!!(s[l]||e!==Q&&l[0]!=="$"&&W(e,l)||Js(t,l)||W(r,l)||W(n,l)||W(Jt,l)||W(i.config.globalProperties,l)||(a=o.__cssModules)&&a[l])},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:W(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function Qn(e){return P(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let dn=!0;function pl(e){const t=br(e),s=e.proxy,n=e.ctx;dn=!1,t.beforeCreate&&ei(t.beforeCreate,e,"bc");const{data:i,computed:r,methods:o,watch:l,provide:a,inject:d,created:u,beforeMount:h,mounted:m,beforeUpdate:_,updated:R,activated:I,deactivated:F,beforeDestroy:j,beforeUnmount:L,destroyed:U,unmounted:k,render:Z,renderTracked:fe,renderTriggered:_e,errorCaptured:we,serverPrefetch:H,expose:z,inheritAttrs:ne,components:O,directives:J,filters:ge}=t;if(d&&gl(d,n,null),o)for(const ie in o){const te=o[ie];D(te)&&(n[ie]=te.bind(s))}if(i){const ie=i.call(s,s);G(ie)&&(e.data=En(ie))}if(dn=!0,r)for(const ie in r){const te=r[ie],vt=D(te)?te.bind(s,s):D(te.get)?te.get.bind(s,s):ze,us=!D(te)&&D(te.set)?te.set.bind(s):ze,_t=Me({get:vt,set:us});Object.defineProperty(n,ie,{enumerable:!0,configurable:!0,get:()=>_t.value,set:Le=>_t.value=Le})}if(l)for(const ie in l)_r(l[ie],n,s,ie);if(a){const ie=D(a)?a.call(s):a;Reflect.ownKeys(ie).forEach(te=>{zo(te,ie[te])})}u&&ei(u,e,"c");function de(ie,te){P(te)?te.forEach(vt=>ie(vt.bind(s))):te&&ie(te.bind(s))}if(de(rl,h),de(Mn,m),de(ol,_),de(ll,R),de(sl,I),de(nl,F),de(fl,we),de(ul,fe),de(cl,_e),de(Pn,L),de(vr,k),de(al,H),P(z))if(z.length){const ie=e.exposed||(e.exposed={});z.forEach(te=>{Object.defineProperty(ie,te,{get:()=>s[te],set:vt=>s[te]=vt,enumerable:!0})})}else e.exposed||(e.exposed={});Z&&e.render===ze&&(e.render=Z),ne!=null&&(e.inheritAttrs=ne),O&&(e.components=O),J&&(e.directives=J),H&&mr(e)}function gl(e,t,s=ze){P(e)&&(e=hn(e));for(const n in e){const i=e[n];let r;G(i)?"default"in i?r=vs(i.from||n,i.default,!0):r=vs(i.from||n):r=vs(i),ve(r)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>r.value,set:o=>r.value=o}):t[n]=r}}function ei(e,t,s){Re(P(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function _r(e,t,s,n){let i=n.includes(".")?fr(s,n):()=>s[n];if(re(e)){const r=t[e];D(r)&&Ys(i,r)}else if(D(e))Ys(i,e.bind(s));else if(G(e))if(P(e))e.forEach(r=>_r(r,t,s,n));else{const r=D(e.handler)?e.handler.bind(s):t[e.handler];D(r)&&Ys(i,r,e)}}function br(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:i,optionsCache:r,config:{optionMergeStrategies:o}}=e.appContext,l=r.get(t);let a;return l?a=l:!i.length&&!s&&!n?a=t:(a={},i.length&&i.forEach(d=>xs(a,d,o,!0)),xs(a,t,o)),G(t)&&r.set(t,a),a}function xs(e,t,s,n=!1){const{mixins:i,extends:r}=t;r&&xs(e,r,s,!0),i&&i.forEach(o=>xs(e,o,s,!0));for(const o in t)if(!(n&&o==="expose")){const l=ml[o]||s&&s[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const ml={data:ti,props:si,emits:si,methods:Bt,computed:Bt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:Bt,directives:Bt,watch:vl,provide:ti,inject:yl};function ti(e,t){return t?e?function(){return ue(D(e)?e.call(this,this):e,D(t)?t.call(this,this):t)}:t:e}function yl(e,t){return Bt(hn(e),hn(t))}function hn(e){if(P(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function be(e,t){return e?[...new Set([].concat(e,t))]:t}function Bt(e,t){return e?ue(Object.create(null),e,t):t}function si(e,t){return e?P(e)&&P(t)?[...new Set([...e,...t])]:ue(Object.create(null),Qn(e),Qn(t??{})):t}function vl(e,t){if(!e)return t;if(!t)return e;const s=ue(Object.create(null),e);for(const n in t)s[n]=be(e[n],t[n]);return s}function Sr(){return{app:null,config:{isNativeTag:ki,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let _l=0;function bl(e,t){return function(n,i=null){D(n)||(n=ue({},n)),i!=null&&!G(i)&&(i=null);const r=Sr(),o=new WeakSet,l=[];let a=!1;const d=r.app={_uid:_l++,_component:n,_props:i,_container:null,_context:r,_instance:null,version:Jl,get config(){return r.config},set config(u){},use(u,...h){return o.has(u)||(u&&D(u.install)?(o.add(u),u.install(d,...h)):D(u)&&(o.add(u),u(d,...h))),d},mixin(u){return r.mixins.includes(u)||r.mixins.push(u),d},component(u,h){return h?(r.components[u]=h,d):r.components[u]},directive(u,h){return h?(r.directives[u]=h,d):r.directives[u]},mount(u,h,m){if(!a){const _=d._ceVNode||ee(n,i);return _.appContext=r,m===!0?m="svg":m===!1&&(m=void 0),e(_,u,m),a=!0,d._container=u,u.__vue_app__=d,Us(_.component)}},onUnmount(u){l.push(u)},unmount(){a&&(Re(l,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(u,h){return r.provides[u]=h,d},runWithContext(u){const h=Rt;Rt=d;try{return u()}finally{Rt=h}}};return d}}let Rt=null;const Sl=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Fe(t)}Modifiers`]||e[`${Mt(t)}Modifiers`];function Tl(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||Q;let i=s;const r=t.startsWith("update:"),o=r&&Sl(n,t.slice(7));o&&(o.trim&&(i=s.map(u=>re(u)?u.trim():u)),o.number&&(i=i.map(Li)));let l,a=n[l=Bs(t)]||n[l=Bs(Fe(t))];!a&&r&&(a=n[l=Bs(Mt(t))]),a&&Re(a,e,6,i);const d=n[l+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Re(d,e,6,i)}}const wl=new WeakMap;function Tr(e,t,s=!1){const n=s?wl:t.emitsCache,i=n.get(e);if(i!==void 0)return i;const r=e.emits;let o={},l=!1;if(!D(e)){const a=d=>{const u=Tr(d,t,!0);u&&(l=!0,ue(o,u))};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!r&&!l?(G(e)&&n.set(e,null),null):(P(r)?r.forEach(a=>o[a]=null):ue(o,r),G(e)&&n.set(e,o),o)}function Vs(e,t){return!e||!ks(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),W(e,t[0].toLowerCase()+t.slice(1))||W(e,Mt(t))||W(e,t))}function ni(e){const{type:t,vnode:s,proxy:n,withProxy:i,propsOptions:[r],slots:o,attrs:l,emit:a,render:d,renderCache:u,props:h,data:m,setupState:_,ctx:R,inheritAttrs:I}=e,F=Ts(e);let j,L;try{if(s.shapeFlag&4){const k=i||n,Z=k;j=Ge(d.call(Z,k,u,h,_,m,R)),L=l}else{const k=t;j=Ge(k.length>1?k(h,{attrs:l,slots:o,emit:a}):k(h,null)),L=t.props?l:Al(l)}}catch(k){It.length=0,Ls(k,e,1),j=ee(ye)}let U=j;if(L&&I!==!1){const k=Object.keys(L),{shapeFlag:Z}=U;k.length&&Z&7&&(r&&k.some(Ms)&&(L=xl(L,r)),U=yt(U,L,!1,!0))}if(s.dirs&&(U=yt(U,null,!1,!0),U.dirs=U.dirs?U.dirs.concat(s.dirs):s.dirs),s.transition){const k=Ds(U.type)&&ws(U)||U;Lt(k,s.transition)}return j=U,Ts(F),j}function wr(e,t=!0){let s;for(let n=0;n<e.length;n++){const i=e[n];if(ns(i)){if(i.type!==ye||i.children==="v-if"){if(s)return;s=i}}else return}return s}const Al=e=>{let t;for(const s in e)(s==="class"||s==="style"||ks(s))&&((t||(t={}))[s]=e[s]);return t},xl=(e,t)=>{const s={};for(const n in e)(!Ms(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function Cl(e,t,s){const{props:n,children:i,component:r}=e,{props:o,children:l,patchFlag:a}=t,d=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&a>=0){if(a&1024)return!0;if(a&16)return n?ii(n,o,d):!!o;if(a&8){const u=t.dynamicProps;for(let h=0;h<u.length;h++){const m=u[h];if(Ar(o,n,m)&&!Vs(d,m))return!0}}}else return(i||l)&&(!l||!l.$stable)?!0:n===o?!1:n?o?ii(n,o,d):!0:!!o;return!1}function ii(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let i=0;i<n.length;i++){const r=n[i];if(!W(e,r)||Ar(t,e,r)&&!Vs(s,r))return!0}return!1}function Ar(e,t,s){const n=e[s],i=t[s];return s==="style"&&G(n)&&G(i)?!gt(n,i):n!==i}function El({vnode:e,parent:t,suspense:s},n){for(;t;){const i=t.subTree;if(i.suspense&&i.suspense.activeBranch===e&&(i.suspense.vnode.el=i.el=n,e=i),i===e)(e=t.vnode).el=n,t=t.parent;else break}s&&s.activeBranch===e&&(s.vnode.el=n)}const xr={},Cr=()=>Object.create(xr),Er=e=>Object.getPrototypeOf(e)===xr;function Ol(e,t,s,n=!1){const i={},r=Cr();e.propsDefaults=Object.create(null),Or(e,t,i,r);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);s?e.props=n?i:$o(i):e.type.props?e.props=i:e.props=r,e.attrs=r}function Il(e,t,s,n){const{props:i,attrs:r,vnode:{patchFlag:o}}=e,l=K(i),[a]=e.propsOptions;let d=!1;if((n||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let h=0;h<u.length;h++){let m=u[h];if(Vs(e.emitsOptions,m))continue;const _=t[m];if(a)if(W(r,m))_!==r[m]&&(r[m]=_,d=!0);else{const R=Fe(m);i[R]=pn(a,l,R,_,e,!1)}else _!==r[m]&&(r[m]=_,d=!0)}}}else{Or(e,t,i,r)&&(d=!0);let u;for(const h in l)(!t||!W(t,h)&&((u=Mt(h))===h||!W(t,u)))&&(a?s&&(s[h]!==void 0||s[u]!==void 0)&&(i[h]=pn(a,l,h,void 0,e,!0)):delete i[h]);if(r!==l)for(const h in r)(!t||!W(t,h))&&(delete r[h],d=!0)}d&&rt(e.attrs,"set","")}function Or(e,t,s,n){const[i,r]=e.propsOptions;let o=!1,l;if(t)for(let a in t){if(Gt(a))continue;const d=t[a];let u;i&&W(i,u=Fe(a))?!r||!r.includes(u)?s[u]=d:(l||(l={}))[u]=d:Vs(e.emitsOptions,a)||(!(a in n)||d!==n[a])&&(n[a]=d,o=!0)}if(r){const a=K(s),d=l||Q;for(let u=0;u<r.length;u++){const h=r[u];s[h]=pn(i,a,h,d[h],e,!W(d,h))}}return o}function pn(e,t,s,n,i,r){const o=e[s];if(o!=null){const l=W(o,"default");if(l&&n===void 0){const a=o.default;if(o.type!==Function&&!o.skipFactory&&D(a)){const{propsDefaults:d}=i;if(s in d)n=d[s];else{const u=cs(i);n=d[s]=a.call(null,t),u()}}else n=a;i.ce&&i.ce._setProp(s,n)}o[0]&&(r&&!l?n=!1:o[1]&&(n===""||n===Mt(s))&&(n=!0))}return n}const kl=new WeakMap;function Ir(e,t,s=!1){const n=s?kl:t.propsCache,i=n.get(e);if(i)return i;const r=e.props,o={},l=[];let a=!1;if(!D(e)){const u=h=>{a=!0;const[m,_]=Ir(h,t,!0);ue(o,m),_&&l.push(..._)};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!a)return G(e)&&n.set(e,Et),Et;if(P(r))for(let u=0;u<r.length;u++){const h=Fe(r[u]);ri(h)&&(o[h]=Q)}else if(r)for(const u in r){const h=Fe(u);if(ri(h)){const m=r[u],_=o[h]=P(m)||D(m)?{type:m}:ue({},m),R=_.type;let I=!1,F=!0;if(P(R))for(let j=0;j<R.length;++j){const L=R[j],U=D(L)&&L.name;if(U==="Boolean"){I=!0;break}else U==="String"&&(F=!1)}else I=D(R)&&R.name==="Boolean";_[0]=I,_[1]=F,(I||W(_,"default"))&&l.push(h)}}const d=[o,l];return G(e)&&n.set(e,d),d}function ri(e){return e[0]!=="$"&&!Gt(e)}const Nn=e=>e==="_"||e==="_ctx"||e==="$stable",$n=e=>P(e)?e.map(Ge):[Ge(e)],Ml=(e,t,s)=>{if(t._n)return t;const n=cr((...i)=>$n(t(...i)),s);return n._c=!1,n},kr=(e,t,s)=>{const n=e._ctx;for(const i in e){if(Nn(i))continue;const r=e[i];if(D(r))t[i]=Ml(i,r,n);else if(r!=null){const o=$n(r);t[i]=()=>o}}},Mr=(e,t)=>{const s=$n(t);e.slots.default=()=>s},Pr=(e,t,s)=>{for(const n in t)(s||!Nn(n))&&(e[n]=t[n])},Pl=(e,t,s)=>{const n=e.slots=Cr();if(e.vnode.shapeFlag&32){const i=t._;i?(Pr(n,t,s),s&&Ri(n,"_",i,!0)):kr(t,n)}else t&&Mr(e,t)},Nl=(e,t,s)=>{const{vnode:n,slots:i}=e;let r=!0,o=Q;if(n.shapeFlag&32){const l=t._;l?s&&l===1?r=!1:Pr(i,t,s):(r=!t.$stable,kr(t,i)),o=t}else t&&(Mr(e,t),o={default:1});if(r)for(const l in i)!Nn(l)&&o[l]==null&&delete i[l]},Ae=Fl;function $l(e){return Rl(e)}function Rl(e,t){const s=Ns();s.__VUE__=!0;const{insert:n,remove:i,patchProp:r,createElement:o,createText:l,createComment:a,setText:d,setElementText:u,parentNode:h,nextSibling:m,setScopeId:_=ze,insertStaticContent:R}=e,I=(c,f,p,b=null,y=null,v=null,C=void 0,x=null,A=!!f.dynamicChildren)=>{if(c===f)return;c&&!Ct(c,f)&&(b=fs(c),Le(c,y,v,!0),c=null),f.patchFlag===-2&&(A=!1,f.dynamicChildren=null),f.dynamicChildren&&c&&c.dynamicChildren&&c.dynamicChildren.hasOnce&&(f.dynamicChildren===Et&&(f.dynamicChildren=[]),f.dynamicChildren.hasOnce=!0);const{type:g,ref:M,shapeFlag:E}=f;switch(g){case js:F(c,f,p,b);break;case ye:j(c,f,p,b);break;case Qs:c==null&&L(f,p,b,C);break;case q:O(c,f,p,b,y,v,C,x,A);break;default:E&1?Z(c,f,p,b,y,v,C,x,A):E&6?J(c,f,p,b,y,v,C,x,A):(E&64||E&128)&&g.process(c,f,p,b,y,v,C,x,A,Ft)}M!=null&&y?Yt(M,c&&c.ref,v,f||c,!f):M==null&&c&&c.ref!=null&&Yt(c.ref,null,v,c,!0)},F=(c,f,p,b)=>{if(c==null)n(f.el=l(f.children),p,b);else{const y=f.el=c.el;f.children!==c.children&&d(y,f.children)}},j=(c,f,p,b)=>{c==null?n(f.el=a(f.children||""),p,b):f.el=c.el},L=(c,f,p,b)=>{[c.el,c.anchor]=R(c.children,f,p,b,c.el,c.anchor)},U=({el:c,anchor:f},p,b)=>{let y;for(;c&&c!==f;)y=m(c),n(c,p,b),c=y;n(f,p,b)},k=({el:c,anchor:f})=>{let p;for(;c&&c!==f;)p=m(c),i(c),c=p;i(f)},Z=(c,f,p,b,y,v,C,x,A)=>{if(f.type==="svg"?C="svg":f.type==="math"&&(C="mathml"),c==null)fe(f,p,b,y,v,C,x,A);else{const g=c.el&&c.el._isVueCE?c.el:null;try{g&&g._beginPatch(),H(c,f,y,v,C,x,A)}finally{g&&g._endPatch()}}},fe=(c,f,p,b,y,v,C,x)=>{let A,g;const{props:M,shapeFlag:E,transition:N,dirs:$}=c;if(A=c.el=o(c.type,v,M&&M.is,M),E&8?u(A,c.children):E&16&&we(c.children,A,null,b,y,Xs(c,v),C,x),$&&bt(c,null,b,"created"),_e(A,c,c.scopeId,C,b),M){for(const X in M)X!=="value"&&!Gt(X)&&r(A,X,null,M[X],v,b);"value"in M&&r(A,"value",null,M.value,v),(g=M.onVnodeBeforeMount)&&Be(g,b,c)}$&&bt(c,null,b,"beforeMount");const B=Ll(y,N);B&&N.beforeEnter(A),n(A,f,p),((g=M&&M.onVnodeMounted)||B||$)&&Ae(()=>{try{g&&Be(g,b,c),B&&N.enter(A),$&&bt(c,null,b,"mounted")}finally{}},y)},_e=(c,f,p,b,y)=>{if(p&&_(c,p),b)for(let v=0;v<b.length;v++)_(c,b[v]);if(y){let v=y.subTree;if(f===v||Rr(v.type)&&(v.ssContent===f||v.ssFallback===f)){const C=y.vnode;_e(c,C,C.scopeId,C.slotScopeIds,y.parent)}}},we=(c,f,p,b,y,v,C,x,A=0)=>{for(let g=A;g<c.length;g++){const M=c[g]=x?it(c[g]):Ge(c[g]);I(null,M,f,p,b,y,v,C,x)}},H=(c,f,p,b,y,v,C)=>{const x=f.el=c.el;let{patchFlag:A,dynamicChildren:g,dirs:M}=f;A|=c.patchFlag&16;const E=c.props||Q,N=f.props||Q;let $;if(p&&St(p,!1),($=N.onVnodeBeforeUpdate)&&Be($,p,f,c),M&&bt(f,c,p,"beforeUpdate"),p&&St(p,!0),g&&(!c.dynamicChildren||c.dynamicChildren.length!==g.length)&&(A=0,C=!1,g=null),(E.innerHTML&&N.innerHTML==null||E.textContent&&N.textContent==null)&&u(x,""),g?z(c.dynamicChildren,g,x,p,b,Xs(f,y),v):C||te(c,f,x,null,p,b,Xs(f,y),v,!1),A>0){if(A&16)ne(x,E,N,p,y);else if(A&2&&E.class!==N.class&&r(x,"class",null,N.class,y),A&4&&r(x,"style",E.style,N.style,y),A&8){const B=f.dynamicProps;for(let X=0;X<B.length;X++){const Y=B[X],le=E[Y],he=N[Y];(he!==le||Y==="value")&&r(x,Y,le,he,y,p)}}A&1&&c.children!==f.children&&u(x,f.children)}else!C&&g==null&&ne(x,E,N,p,y);(($=N.onVnodeUpdated)||M)&&Ae(()=>{$&&Be($,p,f,c),M&&bt(f,c,p,"updated")},b)},z=(c,f,p,b,y,v,C)=>{for(let x=0;x<f.length;x++){const A=c[x],g=f[x],M=A.el||gn(A),E=M&&(A.type===q||!Ct(A,g)||A.shapeFlag&198)?h(M):p;I(A,g,E,null,b,y,v,C,!0)}},ne=(c,f,p,b,y)=>{if(f!==p){if(f!==Q)for(const v in f)!Gt(v)&&!(v in p)&&r(c,v,f[v],null,y,b);for(const v in p){if(Gt(v))continue;const C=p[v],x=f[v];C!==x&&v!=="value"&&r(c,v,x,C,y,b)}"value"in p&&r(c,"value",f.value,p.value,y)}},O=(c,f,p,b,y,v,C,x,A)=>{const g=f.el=c?c.el:l(""),M=f.anchor=c?c.anchor:l("");let{patchFlag:E,dynamicChildren:N,slotScopeIds:$}=f;$&&(x=x?x.concat($):$),c==null?(n(g,p,b),n(M,p,b),we(f.children||[],p,M,y,v,C,x,A)):E>0&&E&64&&N&&c.dynamicChildren&&c.dynamicChildren.length===N.length?(z(c.dynamicChildren,N,p,y,v,C,x),(f.key!=null||y&&f===y.subTree)&&Nr(c,f,!0)):te(c,f,p,M,y,v,C,x,A)},J=(c,f,p,b,y,v,C,x,A)=>{f.slotScopeIds=x,c==null?f.shapeFlag&512?y.ctx.activate(f,p,b,C,A):ge(f,p,b,y,v,C,A):et(c,f,A)},ge=(c,f,p,b,y,v,C)=>{const x=c.component=Kl(c,b,y);if(Fs(c)&&(x.ctx.renderer=Ft),Wl(x,!1,C),x.asyncDep){if(y&&y.registerDep(x,de,C,v),!c.el){const A=x.subTree=ee(ye);j(null,A,f,p),c.placeholder=A.el}}else de(x,c,f,p,y,v,C)},et=(c,f,p)=>{const b=f.component=c.component;if(Cl(c,f,p))if(b.asyncDep&&!b.asyncResolved){f.el=c.el,f.placeholder=c.placeholder,ie(b,f,p);return}else b.next=f,b.update();else f.el=c.el,f.placeholder=c.placeholder,b.vnode=f},de=(c,f,p,b,y,v,C)=>{const x=()=>{if(c.isMounted){let{next:E,bu:N,u:$,parent:B,vnode:X}=c;{const je=$r(c);if(je){E&&(E.el=X.el,ie(c,E,C)),je.asyncDep.then(()=>{Ae(()=>{c.isUnmounted||g()},y)});return}}let Y=E,le;St(c,!1),E?(E.el=X.el,ie(c,E,C)):E=X,N&&ys(N),(le=E.props&&E.props.onVnodeBeforeUpdate)&&Be(le,B,E,X),St(c,!0);const he=ni(c),Ve=c.subTree;c.subTree=he,I(Ve,he,h(Ve.el),fs(Ve),c,y,v),E.el=he.el,Y===null&&El(c,he.el),$&&Ae($,y),(le=E.props&&E.props.onVnodeUpdated)&&Ae(()=>Be(le,B,E,X),y)}else{let E;const{el:N,props:$}=f,{bm:B,m:X,parent:Y,root:le,type:he}=c,Ve=Zt(f);St(c,!1),B&&ys(B),!Ve&&(E=$&&$.onVnodeBeforeMount)&&Be(E,Y,f),St(c,!0);{le.ce&&le.ce._hasShadowRoot()&&le.ce._injectChildStyle(he,c.parent?c.parent.type:void 0);const je=c.subTree=ni(c);I(null,je,p,b,c,y,v),f.el=je.el}if(X&&Ae(X,y),!Ve&&(E=$&&$.onVnodeMounted)){const je=f;Ae(()=>Be(E,Y,je),y)}(f.shapeFlag&256||Y&&Zt(Y.vnode)&&Y.vnode.shapeFlag&256)&&c.a&&Ae(c.a,y),c.isMounted=!0,f=p=b=null}};c.scope.on();const A=c.effect=new Vi(x);c.scope.off();const g=c.update=A.run.bind(A),M=c.job=A.runIfDirty.bind(A);M.i=c,M.id=c.uid,A.scheduler=()=>kn(M),St(c,!0),g()},ie=(c,f,p)=>{f.component=c;const b=c.vnode.props;c.vnode=f,c.next=null,Il(c,f.props,b,p),Nl(c,f.children,p),Ze(),rr(c),Je()},te=(c,f,p,b,y,v,C,x,A=!1)=>{const g=c&&c.children,M=c?c.shapeFlag:0,E=f.children,{patchFlag:N,shapeFlag:$}=f;if(N>0){if(N&128){us(g,E,p,b,y,v,C,x,A);return}else if(N&256){vt(g,E,p,b,y,v,C,x,A);return}}$&8?(M&16&&Dt(g,y,v),E!==g&&u(p,E)):M&16?$&16?us(g,E,p,b,y,v,C,x,A):Dt(g,y,v,!0):(M&8&&u(p,""),$&16&&we(E,p,b,y,v,C,x,A))},vt=(c,f,p,b,y,v,C,x,A)=>{c=c||Et,f=f||Et;const g=c.length,M=f.length,E=Math.min(g,M);let N;for(N=0;N<E;N++){const $=f[N]=A?it(f[N]):Ge(f[N]);I(c[N],$,p,null,y,v,C,x,A)}g>M?Dt(c,y,v,!0,!1,E):we(f,p,b,y,v,C,x,A,E)},us=(c,f,p,b,y,v,C,x,A)=>{let g=0;const M=f.length;let E=c.length-1,N=M-1;for(;g<=E&&g<=N;){const $=c[g],B=f[g]=A?it(f[g]):Ge(f[g]);if(Ct($,B))I($,B,p,null,y,v,C,x,A);else break;g++}for(;g<=E&&g<=N;){const $=c[E],B=f[N]=A?it(f[N]):Ge(f[N]);if(Ct($,B))I($,B,p,null,y,v,C,x,A);else break;E--,N--}if(g>E){if(g<=N){const $=N+1,B=$<M?f[$].el:b;for(;g<=N;)I(null,f[g]=A?it(f[g]):Ge(f[g]),p,B,y,v,C,x,A),g++}}else if(g>N)for(;g<=E;)Le(c[g],y,v,!0),g++;else{const $=g,B=g,X=new Map;for(g=B;g<=N;g++){const Ce=f[g]=A?it(f[g]):Ge(f[g]);Ce.key!=null&&X.set(Ce.key,g)}let Y,le=0;const he=N-B+1;let Ve=!1,je=0;const Ht=new Array(he);for(g=0;g<he;g++)Ht[g]=0;for(g=$;g<=E;g++){const Ce=c[g];if(le>=he){Le(Ce,y,v,!0);continue}let Ue;if(Ce.key!=null)Ue=X.get(Ce.key);else for(Y=B;Y<=N;Y++)if(Ht[Y-B]===0&&Ct(Ce,f[Y])){Ue=Y;break}Ue===void 0?Le(Ce,y,v,!0):(Ht[Ue-B]=g+1,Ue>=je?je=Ue:Ve=!0,I(Ce,f[Ue],p,null,y,v,C,x,A),le++)}const jn=Ve?Dl(Ht):Et;for(Y=jn.length-1,g=he-1;g>=0;g--){const Ce=B+g,Ue=f[Ce],Un=f[Ce+1],Bn=Ce+1<M?Un.el||gn(Un):b;Ht[g]===0?I(null,Ue,p,Bn,y,v,C,x,A):Ve&&(Y<0||g!==jn[Y]?_t(Ue,p,Bn,2):Y--)}}},_t=(c,f,p,b,y=null)=>{const{el:v,type:C,transition:x,children:A,shapeFlag:g}=c;if(g&6){_t(c.component.subTree,f,p,b);return}if(g&128){c.suspense.move(f,p,b);return}if(g&64){C.move(c,f,p,Ft);return}if(C===q){n(v,f,p);for(let E=0;E<A.length;E++)_t(A[E],f,p,b);n(c.anchor,f,p);return}if(C===Qs){U(c,f,p);return}if(b!==2&&g&1&&x)if(b===0)x.persisted&&!v[Ie]?n(v,f,p):(x.beforeEnter(v),n(v,f,p),Ae(()=>x.enter(v),y));else{const{leave:E,delayLeave:N,afterLeave:$}=x,B=()=>{c.ctx.isUnmounted?i(v):n(v,f,p)},X=()=>{const Y=v._isLeaving||!!v[Ie];v._isLeaving&&v[Ie](!0),x.persisted&&!Y?B():E(v,()=>{B(),$&&$()})};N?N(v,B,X):X()}else n(v,f,p)},Le=(c,f,p,b=!1,y=!1)=>{const{type:v,props:C,ref:x,children:A,dynamicChildren:g,shapeFlag:M,patchFlag:E,dirs:N,cacheIndex:$,memo:B}=c;if((E===-2||g&&g.hasOnce)&&(y=!1),x!=null&&(Ze(),Yt(x,null,p,c,!0),Je()),$!=null&&(!c.ctx||c.ctx===f)&&(f.renderCache[$]=void 0),M&256){f.ctx.deactivate(c);return}const X=M&1&&N,Y=!Zt(c);let le;if(Y&&(le=C&&C.onVnodeBeforeUnmount)&&Be(le,f,c),M&6)eo(c.component,p,b);else{if(M&128){c.suspense.unmount(p,b);return}X&&bt(c,null,f,"beforeUnmount"),M&64?c.type.remove(c,f,p,Ft,b):g&&!g.hasOnce&&(v!==q||E>0&&E&64)?Dt(g,f,p,!1,!0):(v===q&&E&384||!y&&M&16)&&Dt(A,f,p),b&&Fn(c)}const he=B!=null&&$==null;(Y&&(le=C&&C.onVnodeUnmounted)||X||he)&&Ae(()=>{le&&Be(le,f,c),X&&bt(c,null,f,"unmounted"),he&&(c.el=null)},p)},Fn=c=>{const{type:f,el:p,anchor:b,transition:y}=c,v=f===q;if(v&&!y){Hn(p,b);return}if(f===Qs){k(c),y&&!y.persisted&&y.afterLeave&&y.afterLeave();return}const C=v?ts(c):c,x=()=>{v?h(p)&&Hn(p,b):i(p),y&&!y.persisted&&y.afterLeave&&y.afterLeave()};if(C&&C.shapeFlag&1&&y&&!y.persisted){const{leave:A,delayLeave:g}=y,M=C.el,E=()=>A(M,x);g?g(M,x,E):E()}else x()},Hn=(c,f)=>{let p;for(;c!==f;)p=m(c),i(c),c=p;i(f)},eo=(c,f,p)=>{const{bum:b,scope:y,job:v,subTree:C,um:x,m:A,a:g}=c;oi(A),oi(g),b&&ys(b),y.stop(),v?(v.flags|=8,Le(C,c,f,p)):c.vnode.el&&C&&(C.transition=c.vnode.transition,Le(C,c,f,p)),x&&Ae(x,f),Ae(()=>{c.isUnmounted=!0},f)},Dt=(c,f,p,b=!1,y=!1,v=0)=>{for(let C=v;C<c.length;C++)Le(c[C],f,p,b,y)},fs=c=>{if(c.shapeFlag&6)return fs(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const f=m(c.anchor||c.el),p=f&&f[Xo];return p?m(p):f},Vn=(c,f,p)=>{const b=c&&f._vnode?void 0:c&&c.component?c.component.uid:Bl();Go(()=>{c==null?f._vnode&&Le(f._vnode,null,null,!0):I(f._vnode||null,c,f,null,null,null,p),f._vnode=c},b)},Ft={p:I,um:Le,m:_t,r:Fn,mt:ge,mc:we,pc:te,pbc:z,n:fs,o:e};return{render:Vn,hydrate:void 0,createApp:bl(Vn)}}function Xs({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function St({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ll(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Nr(e,t,s=!1){const n=e.children,i=t.children;if(P(n)&&P(i))for(let r=0;r<n.length;r++){const o=n[r];let l=i[r];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=i[r]=it(i[r]),l.el=o.el),!s&&l.patchFlag!==-2&&Nr(o,l)),l.type===js&&(l.patchFlag===-1&&(l=i[r]=it(l)),l.el=o.el),l.type===ye&&!l.el&&(l.el=o.el)}}function Dl(e){const t=e.slice(),s=[0];let n,i,r,o,l;const a=e.length;for(n=0;n<a;n++){const d=e[n];if(d!==0){if(i=s[s.length-1],e[i]<d){t[n]=i,s.push(n);continue}for(r=0,o=s.length-1;r<o;)l=r+o>>1,e[s[l]]<d?r=l+1:o=l;d<e[s[r]]&&(r>0&&(t[n]=s[r-1]),s[r]=n)}}for(r=s.length,o=s[r-1];r-- >0;)s[r]=o,o=t[o];return s}function $r(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$r(t)}function oi(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function gn(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?gn(t.subTree):null}const Rr=e=>e.__isSuspense;function Fl(e,t){t&&t.pendingBranch?P(e)?t.effects.push(...e):t.effects.push(e):Wo(e)}const q=Symbol.for("v-fgt"),js=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Qs=Symbol.for("v-stc"),It=[];let Ee=null;function S(e=!1){It.push(Ee=e?null:[])}function Lr(){It.pop(),Ee=It[It.length-1]||null}let ss=1;function Cs(e,t=!1){ss+=e,e<0&&Ee&&t&&(Ee.hasOnce=!0)}function Dr(e){return e.dynamicChildren=ss>0?Ee||Et:null,Lr(),ss>0&&Ee&&Ee.push(e),e}function w(e,t,s,n,i,r){return Dr(T(e,t,s,n,i,r,!0))}function xt(e,t,s,n,i){return Dr(ee(e,t,s,n,i,!0))}function ns(e){return e?e.__v_isVNode===!0:!1}function Ct(e,t){return e.type===t.type&&e.key===t.key}const Fr=({key:e})=>e??null,_s=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ve(e)||D(e)?{i:Pe,r:e,k:t,f:!!s}:e:null);function T(e,t=null,s=null,n=0,i=null,r=e===q?0:1,o=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Fr(t),ref:t&&_s(t),scopeId:ar,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Pe};return l?(Es(a,s),r&128&&e.normalize(a)):s&&(a.shapeFlag|=re(s)?8:16),ss>0&&!o&&Ee&&(a.patchFlag>0||r&6)&&a.patchFlag!==32&&Ee.push(a),a}const ee=Hl;function Hl(e,t=null,s=null,n=0,i=null,r=!1){if((!e||e===dl)&&(e=ye),ns(e)){const l=yt(e,t,!0);return s&&Es(l,s),ss>0&&!r&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag=-2,l}if(Yl(e)&&(e=e.__vccOpts),t){t=Vl(t);let{class:l,style:a}=t;l&&!re(l)&&(t.class=ht(l)),G(a)&&(In(a)&&!P(a)&&(a=ue({},a)),t.style=Sn(a))}const o=re(e)?1:Rr(e)?128:Ds(e)?64:G(e)?4:D(e)?2:0;return T(e,t,s,n,i,o,r,!0)}function Vl(e){return e?In(e)||Er(e)?ue({},e):e:null}function yt(e,t,s=!1,n=!1){const{props:i,ref:r,patchFlag:o,children:l,transition:a}=e,d=t?jl(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Fr(d),ref:t&&t.ref?s&&r?P(r)?r.concat(_s(t)):[r,_s(t)]:_s(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==q?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&yt(e.ssContent),ssFallback:e.ssFallback&&yt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return a&&n&&Lt(u,a.clone(u)),u}function xe(e=" ",t=0){return ee(js,null,e,t)}function ce(e="",t=!1){return t?(S(),xt(ye,null,e)):ee(ye,null,e)}function Ge(e){return e==null||typeof e=="boolean"?ee(ye):P(e)?ee(q,null,e.slice()):ns(e)?it(e):ee(js,null,String(e))}function it(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:yt(e)}function Es(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(P(t))s=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),Es(e,i()),i._c&&(i._d=!0));return}else{s=32;const i=t._;!i&&!Er(t)?t._ctx=Pe:i===3&&Pe&&(Pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(D(t)){if(n&65){Es(e,{default:t});return}t={default:t,_ctx:Pe},s=32}else t=String(t),n&64?(s=16,t=[xe(t)]):s=8;e.children=t,e.shapeFlag|=s}function jl(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const i in n)if(i==="class")t.class!==n.class&&(t.class=ht([t.class,n.class]));else if(i==="style")t.style=Sn([t.style,n.style]);else if(ks(i)){const r=t[i],o=n[i];o&&r!==o&&!(P(r)&&r.includes(o))?t[i]=r?[].concat(r,o):o:o==null&&r==null&&!Ms(i)&&(t[i]=o)}else i!==""&&(t[i]=n[i])}return t}function Be(e,t,s,n=null){Re(e,t,7,[s,n])}const Ul=Sr();let Hr=0;function Bl(){return Hr}function Kl(e,t,s){const n=e.type,i=(t?t.appContext:e.appContext)||Ul,r={uid:Hr++,vnode:e,type:n,parent:t,appContext:i,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new mo(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(i.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ir(n,i),emitsOptions:Tr(n,i),emit:null,emitted:null,propsDefaults:Q,inheritAttrs:n.inheritAttrs,ctx:Q,data:Q,props:Q,attrs:Q,slots:Q,refs:Q,setupState:Q,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=Tl.bind(null,r),e.ce&&e.ce(r),r}let Te=null;const Vr=()=>Te||Pe;let Os,is;{const e=Ns(),t=(s,n)=>{let i;return(i=e[s])||(i=e[s]=[]),i.push(n),r=>{i.length>1?i.forEach(o=>o(r)):i[0](r)}};Os=t("__VUE_INSTANCE_SETTERS__",s=>Te=s),is=t("__VUE_SSR_SETTERS__",s=>rs=s)}const cs=e=>{const t=Te;return Os(e),e.scope.on(),()=>{e.scope.off(),Os(t)}},li=()=>{Te&&Te.scope.off(),Os(null)};function jr(e){return e.vnode.shapeFlag&4}let rs=!1;function Wl(e,t=!1,s=!1){t&&is(t);const{props:n,children:i}=e.vnode,r=jr(e);Ol(e,n,r,t),Pl(e,i,s||t);const o=r?Gl(e,t):void 0;return t&&is(!1),o}function Gl(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,hl);const{setup:n}=s;if(n){Ze();const i=e.setupContext=n.length>1?zl(e):null,r=cs(e),o=as(n,e,0,[e.props,i]),l=Mi(o);if(Je(),r(),(l||e.sp)&&!Zt(e)&&mr(e),l){if(o.then(li,li),t)return o.then(a=>{is(!0);try{ai(e,a,t)}finally{is(!1)}}).catch(a=>{Ls(a,e,0)});e.asyncDep=o}else ai(e,o)}else Ur(e)}function ai(e,t,s){D(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:G(t)&&(e.setupState=tr(t)),Ur(e)}function Ur(e,t,s){const n=e.type;e.render||(e.render=n.render||ze);{const i=cs(e);Ze();try{pl(e)}finally{Je(),i()}}}const ql={get(e,t){return me(e,"get",""),e[t]}};function zl(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,ql),slots:e.slots,emit:e.emit,expose:t}}function Us(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(tr(Ro(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Jt)return Jt[s](e)},has(t,s){return s in t||s in Jt}})):e.proxy}function Yl(e){return D(e)&&"__vccOpts"in e}const Me=(e,t)=>Vo(e,t,rs);function Zl(e,t,s){try{Cs(-1);const n=arguments.length;return n===2?G(t)&&!P(t)?ns(t)?ee(e,null,[t]):ee(e,t):ee(e,null,t):(n>3?s=Array.prototype.slice.call(arguments,2):n===3&&ns(s)&&(s=[s]),ee(e,t,s))}finally{Cs(1)}}const Jl="3.5.44";/**
14
+ * @vue/runtime-dom v3.5.44
15
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
16
+ * @license MIT
17
+ **/let mn;const ci=typeof window<"u"&&window.trustedTypes;if(ci)try{mn=ci.createPolicy("vue",{createHTML:e=>e})}catch{}const Br=mn?e=>mn.createHTML(e):e=>e,Xl="http://www.w3.org/2000/svg",Ql="http://www.w3.org/1998/Math/MathML",nt=typeof document<"u"?document:null,ui=nt&&nt.createElement("template"),ea={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,n)=>{const i=t==="svg"?nt.createElementNS(Xl,e):t==="mathml"?nt.createElementNS(Ql,e):s?nt.createElement(e,{is:s}):nt.createElement(e);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>nt.createTextNode(e),createComment:e=>nt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>nt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,i,r){const o=s?s.previousSibling:t.lastChild;if(i&&(i===r||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),s),!(i===r||!(i=i.nextSibling)););else{ui.innerHTML=Br(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const l=ui.content;if(n==="svg"||n==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,s)}return[o?o.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},ut="transition",Ut="animation",os=Symbol("_vtc"),Kr={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ta=ue({},dr,Kr),sa=e=>(e.displayName="Transition",e.props=ta,e),na=sa((e,{slots:t})=>Zl(tl,ia(e),t)),Tt=(e,t=[])=>{P(e)?e.forEach(s=>s(...t)):e&&e(...t)},fi=e=>e?P(e)?e.some(t=>t.length>1):e.length>1:!1;function ia(e){const t={};for(const O in e)O in Kr||(t[O]=e[O]);if(e.css===!1)return t;const{name:s="v",type:n,duration:i,enterFromClass:r=`${s}-enter-from`,enterActiveClass:o=`${s}-enter-active`,enterToClass:l=`${s}-enter-to`,appearFromClass:a=r,appearActiveClass:d=o,appearToClass:u=l,leaveFromClass:h=`${s}-leave-from`,leaveActiveClass:m=`${s}-leave-active`,leaveToClass:_=`${s}-leave-to`}=e,R=ra(i),I=R&&R[0],F=R&&R[1],{onBeforeEnter:j,onEnter:L,onEnterCancelled:U,onLeave:k,onLeaveCancelled:Z,onBeforeAppear:fe=j,onAppear:_e=L,onAppearCancelled:we=U}=t,H=(O,J,ge,et)=>{O._enterCancelled=et,wt(O,J?u:l),wt(O,J?d:o),ge&&ge()},z=(O,J)=>{O._isLeaving=!1,wt(O,h),wt(O,_),wt(O,m),J&&J()},ne=O=>(J,ge)=>{const et=O?_e:L,de=()=>H(J,O,ge);Tt(et,[J,de]),di(()=>{wt(J,O?a:r),st(J,O?u:l),fi(et)||hi(J,n,I,de)})};return ue(t,{onBeforeEnter(O){Tt(j,[O]),st(O,r),st(O,o)},onBeforeAppear(O){Tt(fe,[O]),st(O,a),st(O,d)},onEnter:ne(!1),onAppear:ne(!0),onLeave(O,J){O._isLeaving=!0;const ge=()=>z(O,J);st(O,h),O._enterCancelled?(st(O,m),mi(O)):(mi(O),st(O,m)),di(()=>{O._isLeaving&&(wt(O,h),st(O,_),fi(k)||hi(O,n,F,ge))}),Tt(k,[O,ge])},onEnterCancelled(O){H(O,!1,void 0,!0),Tt(U,[O])},onAppearCancelled(O){H(O,!0,void 0,!0),Tt(we,[O])},onLeaveCancelled(O){z(O),Tt(Z,[O])}})}function ra(e){if(e==null)return null;if(G(e))return[en(e.enter),en(e.leave)];{const t=en(e);return[t,t]}}function en(e){return ro(e)}function st(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.add(s)),(e[os]||(e[os]=new Set)).add(t)}function wt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const s=e[os];s&&(s.delete(t),s.size||(e[os]=void 0))}function di(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let oa=0;function hi(e,t,s,n){const i=e._endId=++oa,r=()=>{i===e._endId&&n()};if(s!=null)return setTimeout(r,s);const{type:o,timeout:l,propCount:a}=la(e,t);if(!o)return n();const d=o+"end";let u=0;const h=()=>{e.removeEventListener(d,m),r()},m=_=>{_.target===e&&++u>=a&&h()};setTimeout(()=>{u<a&&h()},l+1),e.addEventListener(d,m)}function la(e,t){const s=window.getComputedStyle(e),n=R=>(s[R]||"").split(", "),i=n(`${ut}Delay`),r=n(`${ut}Duration`),o=pi(i,r),l=n(`${Ut}Delay`),a=n(`${Ut}Duration`),d=pi(l,a);let u=null,h=0,m=0;t===ut?o>0&&(u=ut,h=o,m=r.length):t===Ut?d>0&&(u=Ut,h=d,m=a.length):(h=Math.max(o,d),u=h>0?o>d?ut:Ut:null,m=u?u===ut?r.length:a.length:0);const _=u===ut&&/\b(?:transform|all)(?:,|$)/.test(n(`${ut}Property`).toString());return{type:u,timeout:h,propCount:m,hasTransform:_}}function pi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((s,n)=>gi(s)+gi(e[n])))}function gi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function mi(e){return(e?e.ownerDocument:document).body.offsetHeight}function aa(e,t,s){const n=e[os];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const yi=Symbol("_vod"),ca=Symbol("_vsh"),ua=Symbol(""),fa=/(?:^|;)\s*display\s*:/;function da(e,t,s){const n=e.style,i=re(s);let r=!1;if(s&&!i){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();s[l]==null&&Kt(n,l,"")}else for(const o in t)s[o]==null&&Kt(n,o,"");for(const o in s){o==="display"&&(r=!0);const l=s[o];l!=null?pa(e,o,!re(t)&&t?t[o]:void 0,l)||Kt(n,o,l):Kt(n,o,"")}}else if(i){if(t!==s){const o=n[ua];o&&(s+=";"+o),n.cssText=s,r=fa.test(s)}}else t&&e.removeAttribute("style");yi in e&&((!i||t!==s)&&(e[yi]=r?n.display:""),e[ca]&&(n.display="none"))}const gs=/\s*!important$/;function Kt(e,t,s){if(P(s))s.forEach(n=>Kt(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))gs.test(s)?e.setProperty(t,s.replace(gs,""),"important"):e.setProperty(t,s);else{const n=ha(e,t);gs.test(s)?e.setProperty(Mt(n),s.replace(gs,""),"important"):e[n]=s}}const vi=["Webkit","Moz","ms"],tn={};function ha(e,t){const s=tn[t];if(s)return s;let n=Fe(t);if(n!=="filter"&&n in e)return tn[t]=n;n=$i(n);for(let i=0;i<vi.length;i++){const r=vi[i]+n;if(r in e)return tn[t]=r}return t}function pa(e,t,s,n){return e.tagName==="TEXTAREA"&&(t==="width"||t==="height")&&re(n)&&s===n}const _i="http://www.w3.org/1999/xlink";function bi(e,t,s,n,i,r=fo(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(_i,t.slice(6,t.length)):e.setAttributeNS(_i,t,s):s==null||r&&!Di(s)?e.removeAttribute(t):e.setAttribute(t,r?"":Ye(s)?String(s):s)}function Si(e,t,s,n,i){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Br(s):s);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const l=r==="OPTION"?e.getAttribute("value")||"":e.value,a=s==null?e.type==="checkbox"?"on":"":String(s);(l!==a||!("_value"in e))&&(e.value=a),s==null&&e.removeAttribute(t),e._value=s;return}let o=!1;if(s===""||s==null){const l=typeof e[t];l==="boolean"?s=Di(s):s==null&&l==="string"?(s="",o=!0):l==="number"&&(s=0,o=!0)}try{e[t]=s}catch{}o&&e.removeAttribute(i||t)}function Wr(e,t,s,n){e.addEventListener(t,s,n)}function ga(e,t,s,n){e.removeEventListener(t,s,n)}const Ti=Symbol("_vei");function ma(e,t,s,n,i=null){const r=e[Ti]||(e[Ti]={}),o=r[t];if(n&&o)o.value=n;else{const[l,a]=_a(t);if(n){const d=r[t]=Ta(n,i);Wr(e,l,d,a)}else o&&(ga(e,l,o,a),r[t]=void 0)}}const ya=/(Once|Passive|Capture)$/,va=/^on:?(?:Once|Passive|Capture)$/;function _a(e){let t,s;for(;(s=e.match(ya))&&!va.test(e);)t||(t={}),e=e.slice(0,e.length-s[1].length),t[s[1].toLowerCase()]=!0;return[e[2]===":"?e.slice(3):Mt(e.slice(2)),t]}let sn=0;const ba=Promise.resolve(),Sa=()=>sn||(ba.then(()=>sn=0),sn=Date.now());function Ta(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;const i=s.value;if(P(i)){const r=n.stopImmediatePropagation;n.stopImmediatePropagation=()=>{r.call(n),n._stopped=!0};const o=i.slice(),l=[n];for(let a=0;a<o.length&&!n._stopped;a++){const d=o[a];d&&Re(d,t,5,l)}}else Re(i,t,5,[n])};return s.value=e,s.attached=Sa(),s}const wi=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,wa=(e,t,s,n,i,r)=>{const o=i==="svg";t==="class"?aa(e,n,o):t==="style"?da(e,s,n):ks(t)?Ms(t)||ma(e,t,s,n,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Aa(e,t,n,o))?(Si(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&bi(e,t,n,o,r,t!=="value")):e._isVueCE&&(xa(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!re(n)))?Si(e,Fe(t),n,r,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),bi(e,t,n,o))};function Aa(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&wi(t)&&D(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return wi(t)&&re(s)?!1:t in e}function xa(e,t){const s=e._def.props;if(!s)return!1;const n=Fe(t);return Array.isArray(s)?s.some(i=>Fe(i)===n):Object.keys(s).some(i=>Fe(i)===n)}const Ai=e=>{const t=e.props["onUpdate:modelValue"]||!1;return P(t)?s=>ys(t,s):t},nn=Symbol("_assign"),Ca={deep:!0,created(e,{value:t,modifiers:{number:s}},n){e._modelValue=t,Wr(e,"change",()=>{const i=Array.prototype.filter.call(e.options,a=>a.selected).map(a=>s?Li(Is(a)):Is(a)),r=e.multiple,o=r?kt(e._modelValue)?new Set(i):i:i[0],l=e._pendingValue=[r,r?P(o)?i.slice():i:o];try{e[nn](o)}finally{nr(()=>{e._pendingValue===l&&(e._pendingValue=void 0)})}}),e[nn]=Ai(n)},mounted(e,{value:t}){xi(e,t)},beforeUpdate(e,{value:t},s){e._modelValue=t,e[nn]=Ai(s)},updated(e,{value:t}){const s=e._pendingValue;e._pendingValue=void 0,(!s||s[0]!==e.multiple||!Ea(t,s[1],s[0]))&&xi(e,t)}};function Ea(e,t,s){if(!s||P(e))return gt(e,t);if(kt(e)){if(e.size!==t.length)return!1;for(const n of t)if(!e.has(n))return!1;return!0}return!1}function xi(e,t){const s=e.multiple,n=P(t);if(!(s&&!n&&!kt(t))){for(let i=0,r=e.options.length;i<r;i++){const o=e.options[i],l=Is(o);if(s)if(n){const a=typeof l;a==="string"||a==="number"?o.selected=t.some(d=>String(d)===String(l)):o.selected=go(t,l)>-1}else o.selected=t.has(l);else if(gt(Is(o),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!s&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Is(e){return"_value"in e?e._value:e.value}const Oa=ue({patchProp:wa},ea);let Ci;function Ia(){return Ci||(Ci=$l(Oa))}const ka=((...e)=>{const t=Ia().createApp(...e),{mount:s}=t;return t.mount=n=>{const i=Pa(n);if(!i)return;const r=t._component;!D(r)&&!r.render&&!r.template&&(r.template=i.innerHTML),i.nodeType===1&&(i.textContent="");const o=s(i,!1,Ma(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t});function Ma(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Pa(e){return re(e)?document.querySelector(e):e}const Na={key:0,class:"unknown"},$a={key:1},ke=at({__name:"ValueOrUnknown",props:{value:{}},setup(e){return(t,s)=>e.value===null||e.value===void 0||e.value===""?(S(),w("span",Na,"UNKNOWN")):(S(),w("span",$a,V(e.value),1))}}),Ra={id:"checkpoints",class:"panel","aria-labelledby":"checkpoints-h"},La={key:0,class:"empty"},Da={key:1,class:"empty"},Fa={key:2,class:"cards"},Ha={class:"card-head"},Va={class:"muted"},ja={key:0,class:"muted","data-testid":"checkpoint-count"},Ua={class:"steps"},Ba={key:0},Ka={key:1,class:"muted"},Wa={key:2},Ga=at({__name:"CheckpointsPanel",props:{checkpoints:{}},setup(e){return(t,s)=>(S(),w("section",Ra,[s[3]||(s[3]=T("h2",{id:"checkpoints-h"},"Checkpoints",-1)),s[4]||(s[4]=T("p",{class:"muted"},"Latest checkpoint per active mission",-1)),e.checkpoints===null?(S(),w("p",La,[...s[0]||(s[0]=[T("span",{class:"unknown"},"NOT AVAILABLE",-1)])])):e.checkpoints.length===0?(S(),w("p",Da,"No checkpoints recorded.")):(S(),w("ul",Fa,[(S(!0),w(q,null,Qe(e.checkpoints,n=>(S(),w("li",{key:n.id,class:"card","data-testid":"checkpoint"},[T("div",Ha,[T("code",null,V(n.id),1),T("span",Va,[ee(ke,{value:n.createdAt},null,8,["value"])])]),n.recordedCount!==void 0?(S(),w("p",ja,V(n.recordedCount)+" recorded "+V(n.recordedCount===1?"checkpoint":"checkpoints"),1)):ce("",!0),T("p",null,[ee(ke,{value:n.summary},null,8,["value"])]),T("div",Ua,[s[2]||(s[2]=T("h4",null,[xe("Remaining steps "),T("span",{class:"tag"},"historical record as of this checkpoint, not the current plan")],-1)),n.remainingSteps===null?(S(),w("p",Ba,[...s[1]||(s[1]=[T("span",{class:"unknown"},"UNKNOWN",-1)])])):n.remainingSteps.length===0?(S(),w("p",Ka,"None recorded.")):(S(),w("ul",Wa,[(S(!0),w(q,null,Qe(n.remainingSteps,(i,r)=>(S(),w("li",{key:r},V(i),1))),128))]))])]))),128))]))]))}}),qa={id:"mission",class:"panel","aria-labelledby":"mission-h"},za={key:0,class:"empty"},Ya={key:1,class:"empty"},Za={key:2,class:"cards"},Ja={class:"card-head"},Xa={class:"status status-active"},Qa={class:"facts compact"},ec=at({__name:"CurrentMission",props:{missions:{}},setup(e){const t=e,s=Me(()=>(t.missions??[]).filter(n=>n.status==="in_progress"));return(n,i)=>(S(),w("section",qa,[i[3]||(i[3]=T("h2",{id:"mission-h"},"Current Mission",-1)),e.missions===null?(S(),w("p",za,[...i[0]||(i[0]=[T("span",{class:"unknown"},"NOT AVAILABLE",-1)])])):s.value.length===0?(S(),w("p",Ya,"No active missions.")):(S(),w("ul",Za,[(S(!0),w(q,null,Qe(s.value,r=>(S(),w("li",{key:r.id,class:"card","data-testid":"mission"},[T("div",Ja,[T("code",null,V(r.id),1),T("span",Xa,V(r.status),1)]),T("h3",null,[ee(ke,{value:r.title},null,8,["value"])]),T("p",null,[ee(ke,{value:r.summary},null,8,["value"])]),T("dl",Qa,[i[1]||(i[1]=T("dt",null,"Started",-1)),T("dd",null,[ee(ke,{value:r.startedAt},null,8,["value"])]),i[2]||(i[2]=T("dt",null,"Updated",-1)),T("dd",null,[ee(ke,{value:r.updatedAt},null,8,["value"])])])]))),128))]))]))}}),tc={id:"diagnostics",class:"panel","aria-labelledby":"diagnostics-h"},sc={class:"facts"},nc={key:0,class:"muted"},ic={key:1,class:"muted"},rc={key:2,class:"empty"},oc={key:3,class:"diag"},lc={class:"sev"},ac={key:4,class:"empty"},cc={key:5,class:"diag","data-testid":"missing"},uc=at({__name:"DiagnosticsPanel",props:{data:{}},setup(e){const t=e,s=Me(()=>{const n=t.data,i=[];n.overview.name===null&&i.push("overview.name"),n.overview.description===null&&i.push("overview.description"),n.overview.stateRevision===null&&i.push("overview.stateRevision"),n.overview.currentStory===null&&i.push("overview.currentStory"),n.roadmapText===null&&i.push("roadmapText"),n.missions===null&&i.push("missions"),n.checkpoints===null&&i.push("checkpoints");for(const r of n.missions??[])for(const o of["title","summary","startedAt","updatedAt"])r[o]===null&&i.push(`mission ${r.id}.${o}`);for(const r of n.checkpoints??[])for(const o of["createdAt","summary","remainingSteps"])r[o]===null&&i.push(`checkpoint ${r.id}.${o}`);return i});return(n,i)=>(S(),w("section",tc,[i[1]||(i[1]=T("h2",{id:"diagnostics-h"},"Diagnostics",-1)),T("dl",sc,[i[0]||(i[0]=T("dt",null,"Data source",-1)),T("dd",null,V(e.data.isDemo?"Synthetic demo fixtures (available)":"MONOLITH HTTP API (GET /api/dashboard)"),1)]),e.data.isDemo?(S(),w("p",nc," No runtime checks of a real project are performed. Security status of MONOLITH Core is not reported here. ")):(S(),w("p",ic," Only the availability of the fixed source files is reported. Project validity and the security status of MONOLITH Core are not reported here. ")),i[2]||(i[2]=T("h3",null,"Messages",-1)),e.data.diagnostics.length===0?(S(),w("p",rc,"No diagnostic messages.")):(S(),w("ul",oc,[(S(!0),w(q,null,Qe(e.data.diagnostics,(r,o)=>(S(),w("li",{key:o,class:ht(`sev-${r.severity}`),"data-testid":"diagnostic"},[T("span",lc,V(r.severity),1),xe(" "+V(r.message),1)],2))),128))])),i[3]||(i[3]=T("h3",null,"Missing values",-1)),s.value.length===0?(S(),w("p",ac,"None.")):(S(),w("ul",cc,[(S(!0),w(q,null,Qe(s.value,r=>(S(),w("li",{key:r},[T("code",null,V(r),1)]))),128))]))]))}}),fc={id:"overview",class:"panel","aria-labelledby":"overview-h"},dc={class:"ov-block","data-testid":"ov-identity"},hc={class:"facts"},pc={key:0,class:"ov-block","data-testid":"ov-focus"},gc={class:"facts"},mc=["data-story-kind"],yc={"data-testid":"story-ids"},vc={key:1,"data-testid":"story-state"},_c={key:2,class:"unknown","data-testid":"story-state"},bc={key:3,class:"unknown","data-testid":"story-state"},Sc={key:4,class:"unknown","data-testid":"story-state"},Tc={key:0,class:"story","data-testid":"current-story"},wc={key:1,class:"ov-block","data-testid":"ov-focus"},Ac={class:"facts"},xc={key:0,class:"story","data-testid":"current-story"},Cc={key:2,class:"ov-block","data-testid":"ov-missions"},Ec={class:"facts"},Oc={"data-testid":"mission-active"},Ic={"data-testid":"mission-finished"},kc=at({__name:"ProjectOverview",props:{overview:{}},setup(e){const t=e,s={absent:"Source absent",corrupt:"Source corrupt",forbidden:"Source forbidden",unreadable:"Source unreadable",unavailable:"Source unavailable"},n=Me(()=>t.overview.story??null),i=Me(()=>t.overview.activeMissionCount!==void 0||t.overview.finishedMissionCount!==void 0);return(r,o)=>(S(),w("section",fc,[o[12]||(o[12]=T("h2",{id:"overview-h"},"Project Overview",-1)),T("div",dc,[o[3]||(o[3]=T("h3",null,"Project",-1)),T("dl",hc,[o[1]||(o[1]=T("dt",null,"Name",-1)),T("dd",null,[ee(ke,{value:e.overview.name},null,8,["value"])]),e.overview.description!==void 0?(S(),w(q,{key:0},[o[0]||(o[0]=T("dt",null,"Description",-1)),T("dd",null,[ee(ke,{value:e.overview.description},null,8,["value"])])],64)):ce("",!0),o[2]||(o[2]=T("dt",null,"State revision",-1)),T("dd",null,[ee(ke,{value:e.overview.stateRevision},null,8,["value"])])])]),n.value!==null?(S(),w("div",pc,[o[6]||(o[6]=T("h3",null,"Current focus",-1)),T("dl",gc,[o[5]||(o[5]=T("dt",null,"Story",-1)),T("dd",{"data-story-kind":n.value.kind},[n.value.kind==="active"?(S(),w(q,{key:0},[o[4]||(o[4]=T("span",{class:"tag","data-testid":"story-state"},"Active",-1)),T("span",yc,V(n.value.ids.join(", ")),1)],64)):n.value.kind==="none"?(S(),w("span",vc,"No active story recorded")):n.value.kind==="unknown"?(S(),w("span",_c,"UNKNOWN — the section could not be classified")):n.value.kind==="no_section"?(S(),w("span",bc,"UNKNOWN — no usable “Current Story” section")):(S(),w("span",Sc,[xe("NOT AVAILABLE — "+V(s[n.value.status]),1),n.value.code!==null?(S(),w(q,{key:0},[xe(" ["+V(n.value.code)+"]",1)],64)):ce("",!0)]))],8,mc)]),(n.value.kind==="active"||n.value.kind==="none"||n.value.kind==="unknown")&&n.value.excerpt?(S(),w("pre",Tc,V(n.value.excerpt),1)):ce("",!0)])):e.overview.currentStory!==void 0?(S(),w("div",wc,[o[8]||(o[8]=T("h3",null,"Current focus",-1)),T("dl",Ac,[o[7]||(o[7]=T("dt",null,"Story",-1)),T("dd",null,[e.overview.currentStory?(S(),w("pre",xc,V(e.overview.currentStory),1)):(S(),xt(ke,{key:1,value:null}))])])])):ce("",!0),i.value?(S(),w("div",Cc,[o[11]||(o[11]=T("h3",null,"Missions",-1)),T("dl",Ec,[o[9]||(o[9]=T("dt",null,"Active",-1)),T("dd",Oc,[ee(ke,{value:e.overview.activeMissionCount??null},null,8,["value"])]),o[10]||(o[10]=T("dt",null,"Finished",-1)),T("dd",Ic,[ee(ke,{value:e.overview.finishedMissionCount??null},null,8,["value"])])])])):ce("",!0)]))}}),Mc={id:"roadmap",class:"panel","aria-labelledby":"roadmap-h"},Pc={key:0,class:"empty"},Nc={key:0,class:"muted","data-testid":"roadmap-legacy"},$c={key:1,class:"empty"},Rc={key:2,class:"roadmap","data-testid":"roadmap-text"},Lc={key:0,class:"empty",role:"status","data-testid":"roadmap-state"},Dc={class:"unknown"},Fc={key:1,class:"muted",role:"status","data-testid":"roadmap-state"},Hc={key:2,class:"muted","data-testid":"roadmap-active-note"},Vc={key:3,class:"phases","data-testid":"roadmap-phases"},jc={class:"phase-title"},Uc={class:"phase-meta"},Bc={key:1,class:"status-badge status-unrecognized","data-testid":"phase-status"},Kc={key:2,class:"tag","data-testid":"phase-active"},Wc={key:0,class:"phase-goal","data-testid":"phase-goal"},Gc={key:0,class:"tag tag-neutral","data-testid":"goal-truncated"},qc={key:1,class:"phase-details","data-testid":"phase-details"},zc={class:"roadmap"},Yc={key:4,class:"diag roadmap-diag","data-testid":"roadmap-diagnostics"},Zc={class:"sev"},Jc={class:"raw","data-testid":"roadmap-raw"},Xc={class:"roadmap","data-testid":"roadmap-text"},Qc=at({__name:"RoadmapPanel",props:{text:{},structured:{}},setup(e){const t=e,s={DOCUMENT_EMPTY:"The roadmap document is empty.",PHASES_SECTION_MISSING:'No "Phases" section was found.',PHASES_SECTION_DUPLICATED:'More than one "Phases" section; only the first was read.',NO_PHASES_FOUND:'The "Phases" section contains no recognisable phase.',PHASE_HEADING_MALFORMED:"A phase heading could not be read and was skipped.",PHASES_TRUNCATED:"Too many phases; the list was truncated.",PHASE_STATUS_MISSING:"The phase states no status.",PHASE_STATUS_EMPTY:"The phase has an empty status field.",PHASE_STATUS_CONFLICT:"The phase states contradicting statuses; none is shown.",PHASE_STATUS_UNRECOGNIZED:"The phase status is not a recognised value.",PHASE_DETAILS_TRUNCATED:"The phase details were truncated.",PHASE_ID_DUPLICATE:"The phase id is used more than once.",ACTIVE_PHASE_CONFLICT:"The document names different active phases.",ACTIVE_PHASE_UNMATCHED:"The active-phase pointer names no recognised phase.",ACTIVE_PHASE_AMBIGUOUS_ID:"The active-phase pointer names a duplicated phase id.",ACTIVE_PHASE_REPORTED_COMPLETE:"The active phase reports itself as complete.",INTERNAL:"The roadmap could not be interpreted (internal error)."},n={empty:"The roadmap document is available but empty.",no_phases:'The roadmap document has a "Phases" section, but no phase could be read from it.',unrecognized:"The roadmap document is available, but its structure was not recognised.",error:"The roadmap could not be interpreted. The structure below is unavailable; see the original Markdown."},i={none:"The document states that there is no active phase.",not_declared:"The document does not declare an active phase.",unmatched:"The document points to an active phase that is not among the recognised phases.",ambiguous:"The document's active-phase indication is ambiguous or contradictory; no phase is marked active."},r=Me(()=>t.structured),o=Me(()=>{var h;return((h=r.value)==null?void 0:h.activePhase.kind)==="phase"?r.value.activePhase.id:null}),l=Me(()=>{var m;const h=(m=r.value)==null?void 0:m.activePhase.kind;return h===void 0||h==="phase"?null:i[h]}),a=Me(()=>{var h;return(((h=r.value)==null?void 0:h.phases.length)??0)>0}),d=Me(()=>{var m;const h=(m=r.value)==null?void 0:m.state;return h==="empty"||h==="no_phases"||h==="unrecognized"||h==="error"?n[h]:null});function u(h){const m=h.id===null?"":`Phase ${h.id}`;return h.title===null?m===""?"Untitled phase":m:m===""?h.title:`${m} · ${h.title}`}return(h,m)=>(S(),w("section",Mc,[m[5]||(m[5]=T("h2",{id:"roadmap-h"},"Roadmap",-1)),e.text===null?(S(),w("p",Pc,[...m[0]||(m[0]=[T("span",{class:"unknown"},"NOT AVAILABLE",-1)])])):e.structured===void 0?(S(),w(q,{key:1},[e.text.trim()!==""?(S(),w("p",Nc," Structured roadmap is not provided by this data source; showing the original Markdown. ")):ce("",!0),e.text.trim()===""?(S(),w("p",$c,"Roadmap is empty.")):(S(),w("pre",Rc,V(e.text),1))],64)):(S(),w(q,{key:2},[d.value?(S(),w("p",Lc,[T("span",Dc,V(e.structured.state.toUpperCase().replace("_"," ")),1),xe(" "+V(d.value),1)])):e.structured.state==="partial"?(S(),w("p",Fc,[...m[1]||(m[1]=[T("span",{class:"unknown"},"PARTIAL",-1),xe(" Only part of the roadmap could be read; see the diagnostics and the original Markdown. ",-1)])])):ce("",!0),a.value&&l.value?(S(),w("p",Hc,V(l.value),1)):ce("",!0),a.value?(S(),w("ol",Vc,[(S(!0),w(q,null,Qe(e.structured.phases,(_,R)=>(S(),w("li",{key:R,class:ht(["phase",{"phase-active":_.id!==null&&_.id===o.value}]),"data-testid":"roadmap-phase"},[T("h3",jc,V(u(_)),1),T("p",Uc,[_.status.value!==null?(S(),w("span",{key:0,class:ht(["status-badge",{"status-unrecognized":!_.status.recognized}]),"data-testid":"phase-status"},[xe(V(_.status.value)+" · REPORTED",1),_.status.recognized?ce("",!0):(S(),w(q,{key:0},[xe(" · UNRECOGNIZED")],64))],2)):(S(),w("span",Bc,"STATUS NOT STATED")),_.id!==null&&_.id===o.value?(S(),w("span",Kc,"ACTIVE")):ce("",!0)]),_.goal!==null?(S(),w("p",Wc,[m[2]||(m[2]=T("span",{class:"muted"},"Goal:",-1)),xe(" "+V(_.goal),1),_.goalTruncated===!0?(S(),w("span",Gc," Truncated")):ce("",!0)])):ce("",!0),_.details!==null?(S(),w("details",qc,[m[3]||(m[3]=T("summary",null,"Details",-1)),T("pre",zc,V(_.details),1)])):ce("",!0)],2))),128))])):ce("",!0),e.structured.diagnostics.length>0?(S(),w("ul",Yc,[(S(!0),w(q,null,Qe(e.structured.diagnostics,(_,R)=>(S(),w("li",{key:R,class:ht(_.severity==="warn"?"sev-warning":"sev-info")},[T("span",Zc,V(_.severity==="warn"?"warn":"info"),1),_.phaseIndex!==null&&e.structured.phases[_.phaseIndex]?(S(),w(q,{key:0},[xe(V(u(e.structured.phases[_.phaseIndex]))+": ",1)],64)):ce("",!0),xe(V(s[_.code]??_.code),1)],2))),128))])):ce("",!0),T("details",Jc,[m[4]||(m[4]=T("summary",null,"View original Markdown",-1)),T("pre",Xc,V(e.text),1)])],64))]))}}),eu=""+new URL("monolith-mark-Ct0ammrU.webp",import.meta.url).href,Rn=[{id:"overview",label:"Project Overview"},{id:"mission",label:"Current Mission"},{id:"checkpoints",label:"Checkpoints"},{id:"roadmap",label:"Roadmap"},{id:"diagnostics",label:"Diagnostics"}],Gr=Rn[0].id;function qr(e){return Rn.some(t=>t.id===e)}function Ei(e){const t=e.replace(/^#/,"");return qr(t)?t:Gr}const zr=["classic","cosmic-glass"],yn="cosmic-glass",Yr="monolith.skin";function Ln(e){return typeof e=="string"&&zr.includes(e)}function tu(){try{const e=window.localStorage.getItem(Yr);return Ln(e)?e:yn}catch{return yn}}function Zr(e){document.documentElement.dataset.skin=e}function su(e){try{window.localStorage.setItem(Yr,e)}catch{}}function nu(e){Zr(e),su(e)}function iu(){const e=tu();return Zr(e),e}function ru(){const e=document.documentElement.dataset.skin;return Ln(e)?e:yn}const ou={class:"skin-switcher"},lu=["value"],au=["value"],cu=at({__name:"SkinSwitcher",setup(e){const t={classic:"Classic","cosmic-glass":"Cosmic Glass"},s=$t(ru());function n(i){const r=i.target.value;Ln(r)&&(s.value=r,nu(r))}return(i,r)=>(S(),w("label",ou,[r[0]||(r[0]=xe(" Appearance ",-1)),T("select",{value:s.value,"data-testid":"skin-select","aria-label":"Appearance",onChange:n},[(S(!0),w(q,null,Qe(Rs(zr),o=>(S(),w("option",{key:o,value:o},V(t[o]),9,au))),128))],40,lu)]))}}),uu=(e,t)=>{const s=e.__vccOpts||e;for(const[n,i]of t)s[n]=i;return s},fu=uu(cu,[["__scopeId","data-v-570e4117"]]),du={class:"sidebar-head"},hu=["aria-expanded"],pu={id:"sidebar-panel",class:"sidebar-panel","data-testid":"sidebar-panel"},gu={key:0,class:"nav","aria-label":"Sections"},mu=["href","aria-current","onClick"],yu=at({__name:"SideNav",props:{sections:{type:Boolean},active:{}},emits:["select"],setup(e,{emit:t}){const s=t;function n(l,a){var d;l.button!==0||l.ctrlKey||l.metaKey||l.shiftKey||l.altKey||(l.preventDefault(),s("select",a),i.value&&(i.value=!1,(d=r.value)==null||d.focus()))}const i=$t(!1),r=$t(null);function o(l){var a;l.key==="Escape"&&i.value&&(i.value=!1,(a=r.value)==null||a.focus())}return(l,a)=>(S(),w("aside",{class:ht(["sidebar",{open:i.value}]),onKeydown:o},[T("div",du,[a[1]||(a[1]=T("div",{class:"brand"},[T("img",{class:"brand-logo",src:eu,alt:"",width:"40",height:"40"}),T("span",{class:"brand-text"},[T("strong",null,"MONOLITH"),T("span",{class:"muted"},"Mission Control")])],-1)),T("button",{ref_key:"toggle",ref:r,type:"button",class:"nav-toggle","data-testid":"nav-toggle","aria-controls":"sidebar-panel","aria-expanded":i.value,onClick:a[0]||(a[0]=d=>i.value=!i.value)},V(i.value?"Close menu":"Menu"),9,hu)]),T("div",pu,[ee(fu),e.sections?(S(),w("nav",gu,[(S(!0),w(q,null,Qe(Rs(Rn),d=>(S(),w("a",{key:d.id,href:`#${d.id}`,"aria-current":d.id===e.active?"location":void 0,onClick:u=>n(u,d.id)},V(d.label),9,mu))),128))])):ce("",!0)])],34))}}),vu=`# Tidewatch roadmap (demo text)
18
+
19
+ Phase 1 - Ingest
20
+ - Sensor adapter for harbor gauges
21
+ - Draft: <phase> parser (HTML-like text is shown as plain text)
22
+
23
+ Phase 2 - Reporting
24
+ - Daily tide summary
25
+ - Export to CSV
26
+
27
+ Phase 3 - Alerts
28
+ - Threshold notifications`,_u={isDemo:!0,overview:{name:"Tidewatch (demo)",description:"Fictional harbor tide-logging service used to exercise the dashboard.",stateRevision:14},missions:[{id:"MIS-0003",title:"Add gauge calibration import",status:"in_progress",summary:"Import calibration offsets from a CSV file.",startedAt:"2026-03-02T09:15:00.000Z",updatedAt:"2026-03-04T16:40:00.000Z"},{id:"MIS-0004",title:"Fix timezone drift in daily summary",status:"in_progress",summary:"Summaries cross midnight incorrectly for UTC+13.",startedAt:"2026-03-03T11:00:00.000Z",updatedAt:"2026-03-03T11:00:00.000Z"},{id:"MIS-0002",title:"Initial ingest adapter",status:"completed",summary:"Adapter shipped.",startedAt:"2026-02-10T08:00:00.000Z",updatedAt:"2026-02-20T18:30:00.000Z"}],checkpoints:[{id:"MIS-0003-CKPT-0002",missionId:"MIS-0003",createdAt:"2026-03-04T16:40:00.000Z",summary:"CSV parser done; offset validation pending.",remainingSteps:["Validate offset ranges","Write import tests","Document CSV format"]},{id:"MIS-0003-CKPT-0001",missionId:"MIS-0003",createdAt:"2026-03-03T10:05:00.000Z",summary:"Scoped the CSV format.",remainingSteps:["Implement parser","Validate offset ranges"]}],roadmapText:vu,diagnostics:[{severity:"info",message:'Fixture "normal" loaded.'},{severity:"warning",message:"Sample warning: fixture state revision is older than expected."}]},bu={isDemo:!0,overview:{name:"Tidewatch (demo)",description:null,stateRevision:null},missions:[{id:"MIS-0007",title:null,status:"in_progress",summary:null,startedAt:"2026-03-05T09:00:00.000Z",updatedAt:null}],checkpoints:[{id:"MIS-0007-CKPT-0001",missionId:"MIS-0007",createdAt:null,summary:null,remainingSteps:null}],roadmapText:null,diagnostics:[{severity:"info",message:'Fixture "partial" loaded.'},{severity:"error",message:"Sample error: roadmap source could not be read."}]},Su={isDemo:!0,overview:{name:"Tidewatch (demo)",description:"Fictional project with no recorded work.",stateRevision:0},missions:[],checkpoints:[],roadmapText:"",diagnostics:[{severity:"info",message:'Fixture "empty" loaded.'}]},Jr={normal:_u,partial:bu,empty:Su},Oi=Object.keys(Jr),Tu={available:"info",absent:"warning",corrupt:"error",forbidden:"error",unreadable:"error"};function wu(e){const t=e.path===null?"path unknown":e.path;return`${e.id} (${t}): ${e.status}${e.code===null?"":` [${e.code}]`}`}function Au(e){var r;const t=e.diagnostics.sources.find(o=>o.id==="activeStory");if(t===void 0)return{kind:"source",status:"unavailable",code:null};if(t.status!=="available")return{kind:"source",status:t.status,code:t.code};const s=e.projectOverview.data;if(s===null)return{kind:"source",status:"unavailable",code:null};const n=((r=s.currentStory)==null?void 0:r.excerpt)??null;if(s.currentStory===null)return{kind:"no_section"};const i=s.storyClaim;return i==null?{kind:"unknown",excerpt:n}:i.kind==="ids"?{kind:"active",ids:i.ids,excerpt:n}:{kind:i.kind,excerpt:n}}function xu(e){var o;const t=e.projectOverview.data,s=e.currentMissions.data,n=e.checkpoints.data,i=e.roadmap.data,r=[{severity:"info",message:"Source availability only; monolith validate was not run."},...e.diagnostics.sources.map(l=>({severity:Tu[l.status],message:wu(l)})),...e.diagnostics.notes.map(l=>({severity:l.severity==="warn"?"warning":"info",message:l.code}))];return{isDemo:!1,overview:{name:(t==null?void 0:t.name)??null,stateRevision:(t==null?void 0:t.stateRevision)??null,currentStory:t===null?null:((o=t.currentStory)==null?void 0:o.excerpt)??null,story:Au(e),activeMissionCount:(t==null?void 0:t.activeMissionCount)??null,finishedMissionCount:(t==null?void 0:t.finishedMissionCount)??null},missions:s===null?null:s.active.map(l=>({id:l.id,title:l.title,status:l.status,summary:l.summary,startedAt:l.startedAt,updatedAt:l.updatedAt})),checkpoints:n===null?null:n.byActiveMission.flatMap(l=>l.latest===null?[]:[{id:l.latest.id,missionId:l.latest.missionId,createdAt:l.latest.createdAt,summary:l.latest.summary,remainingSteps:l.latest.remainingSteps,recordedCount:l.count}]),roadmapText:i===null?null:i.text,roadmap:i==null?void 0:i.structured,diagnostics:r}}const ae=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),oe=e=>typeof e=="string",lt=e=>e===null||typeof e=="string",Cu=e=>e===null||typeof e=="number"&&Number.isFinite(e),Eu=e=>typeof e=="number"&&Number.isFinite(e),Xr=e=>typeof e=="number"&&Number.isInteger(e)&&e>=0,Ii=e=>e===null||Xr(e),Dn=(e,t)=>Array.isArray(e)&&e.every(t),Ou=["in_progress","completed","failed","cancelled"],Iu=["available","absent","corrupt","forbidden","unreadable"];function Qr(e){return ae(e)&&oe(e.id)&&lt(e.path)&&oe(e.status)&&Iu.includes(e.status)&&lt(e.code)}function ms(e,t){return ae(e)&&Dn(e.sources,Qr)&&(e.data===null||t(e.data))}function ku(e){return ae(e)&&oe(e.id)&&oe(e.title)&&oe(e.status)&&Ou.includes(e.status)&&lt(e.summary)&&oe(e.startedAt)&&oe(e.updatedAt)}function Mu(e){return ae(e)&&oe(e.id)&&oe(e.missionId)&&oe(e.createdAt)&&oe(e.summary)&&Dn(e.remainingSteps,oe)}function Pu(e){return ae(e)&&(e.kind==="none"||e.kind==="unknown"||e.kind==="ids"&&Dn(e.ids,oe)&&e.ids.length>0)}const Nu=["ok","partial","empty","no_phases","unrecognized","error"],$u=["info","warn"];function Ru(e){return ae(e)&&lt(e.id)&&lt(e.title)&&ae(e.status)&&lt(e.status.value)&&typeof e.status.recognized=="boolean"&&(e.status.value!==null||e.status.recognized===!1)&&e.status.provenance==="REPORTED"&&lt(e.goal)&&(e.goalTruncated===void 0||typeof e.goalTruncated=="boolean")&&lt(e.details)}function Lu(e,t){return ae(e)?e.kind==="phase"?oe(e.id)&&t.filter(s=>ae(s)&&s.id===e.id).length===1:e.kind==="none"||e.kind==="not_declared"||e.kind==="unmatched"||e.kind==="ambiguous":!1}function Du(e){return!ae(e)||!oe(e.state)||!Nu.includes(e.state)||!Array.isArray(e.phases)||!e.phases.every(Ru)||e.phases.length>0&&!(e.state==="ok"||e.state==="partial")?!1:Lu(e.activePhase,e.phases)&&Array.isArray(e.diagnostics)&&e.diagnostics.every(t=>ae(t)&&oe(t.code)&&oe(t.severity)&&$u.includes(t.severity)&&(t.phaseIndex===null||Xr(t.phaseIndex)&&t.phaseIndex<e.phases.length))}function Fu(e){return ae(e)&&lt(e.name)&&Cu(e.stateRevision)&&(e.activeMissionCount===void 0||Ii(e.activeMissionCount))&&(e.finishedMissionCount===void 0||Ii(e.finishedMissionCount))&&(e.storyClaim===void 0||e.storyClaim===null||Pu(e.storyClaim))&&(e.currentStory===null||ae(e.currentStory)&&oe(e.currentStory.excerpt)&&oe(e.currentStory.lineRange))}function Hu(e){if(!ae(e))return!1;const t=e.diagnostics;return ms(e.projectOverview,Fu)&&ms(e.currentMissions,s=>ae(s)&&Array.isArray(s.active)&&s.active.every(ku))&&ms(e.checkpoints,s=>ae(s)&&Array.isArray(s.byActiveMission)&&s.byActiveMission.every(n=>ae(n)&&oe(n.missionId)&&Eu(n.count)&&(n.latest===null||Mu(n.latest))))&&ms(e.roadmap,s=>ae(s)&&oe(s.text)&&(s.structured===void 0||Du(s.structured)))&&ae(t)&&Array.isArray(t.sources)&&t.sources.every(Qr)&&Array.isArray(t.notes)&&t.notes.every(s=>ae(s)&&oe(s.code)&&(s.severity==="info"||s.severity==="warn"))}const Vu="/api/dashboard",ju=["HOST_NOT_ALLOWED","ORIGIN_NOT_ALLOWED","NOT_FOUND","METHOD_NOT_ALLOWED","RESPONSE_TOO_LARGE","INTERNAL_ERROR"];class Wt extends Error{}async function Uu(e){var t;try{const s=await e.json(),n=(t=s==null?void 0:s.error)==null?void 0:t.code;return typeof n=="string"&&ju.includes(n)?n:null}catch{return null}}async function Bu(e=fetch){let t;try{t=await e(Vu,{method:"GET",headers:{Accept:"application/json"},cache:"no-store",credentials:"omit",redirect:"error"})}catch{throw new Wt("The MONOLITH API is unreachable.")}if(!t.ok){const n=await Uu(t);throw new Wt(`Dashboard request failed (HTTP ${t.status}${n?`, ${n}`:""}). Check whether the MONOLITH dev API is running.`)}let s;try{s=await t.json()}catch{throw new Wt("The MONOLITH API returned a response that is not valid JSON.")}if(!Hu(s))throw new Wt("The MONOLITH API returned an unexpected data shape.");return s}const Ku={class:"shell"},Wu={class:"shell-main"},Gu={class:"topbar"},qu={class:"project"},zu={class:"topbar-right"},Yu={key:0,class:"scenario"},Zu=["value"],Ju=["disabled"],Xu={key:2,class:"demo-badge","data-testid":"demo-badge"},Qu={key:3,class:"live-badge","data-testid":"live-badge"},ef={key:4,class:"live-badge live-badge-off","data-testid":"live-badge"},tf={key:0,class:"content"},sf={key:1,class:"content"},nf={key:0,class:"panel",role:"alert","data-testid":"load-error"},rf={key:1,class:"panel",role:"status","data-testid":"loading"},of=at({__name:"App",setup(e){const t=new URLSearchParams(window.location.search),s=t.get("mode")==="demo";function n(){return Oi.find(I=>I===t.get("scenario"))??"normal"}const i=$t(n()),r=$t({status:"loading"});let o=0;async function l(){const I=++o;r.value={status:"loading"};try{const F=await Bu();I===o&&(r.value={status:"ready",data:F})}catch(F){if(I!==o)return;const j=F instanceof Wt?F.message:"The dashboard could not be loaded.";r.value={status:"error",message:j}}}const a=$t(Ei(window.location.hash));function d(){const I=window.location.hash;I!==""&&!qr(I.slice(1))&&window.history.replaceState(window.history.state,"",`#${Gr}`)}function u(){d(),a.value=Ei(window.location.hash)}function h(I){I===a.value&&window.location.hash===`#${I}`||(window.history.pushState(window.history.state,"",`#${I}`),a.value=I)}function m(){window.scrollY>0&&window.scrollTo({top:0})}Mn(()=>{d(),window.addEventListener("hashchange",u),window.addEventListener("popstate",u),s||l()}),Pn(()=>{window.removeEventListener("hashchange",u),window.removeEventListener("popstate",u)});const _=Me(()=>s?Jr[i.value]:r.value.status==="ready"?xu(r.value.data):null),R=Me(()=>!s&&r.value.status==="loading");return(I,F)=>{var j;return S(),w("div",Ku,[ee(yu,{sections:_.value!==null,active:a.value,onSelect:h},null,8,["sections","active"]),T("div",Wu,[T("header",Gu,[T("div",qu,V(((j=_.value)==null?void 0:j.overview.name)??"UNKNOWN"),1),T("div",zu,[s?(S(),w("label",Yu,[F[1]||(F[1]=xe(" Scenario ",-1)),qo(T("select",{"onUpdate:modelValue":F[0]||(F[0]=L=>i.value=L),"data-testid":"scenario-select"},[(S(!0),w(q,null,Qe(Rs(Oi),L=>(S(),w("option",{key:L,value:L},V(L),9,Zu))),128))],512),[[Ca,i.value]])])):(S(),w("button",{key:1,type:"button","data-testid":"refresh",disabled:R.value,onClick:l},"Refresh",8,Ju)),s?(S(),w("span",Xu,"DEMO DATA")):_.value?(S(),w("span",Qu,"LIVE DATA")):(S(),w("span",ef,"LIVE · NO DATA"))])]),_.value?(S(),w("main",tf,[ee(na,{name:"section-fade",mode:"out-in",onAfterLeave:m},{default:cr(()=>[a.value==="overview"?(S(),xt(kc,{key:"overview",overview:_.value.overview},null,8,["overview"])):a.value==="mission"?(S(),xt(ec,{key:"mission",missions:_.value.missions},null,8,["missions"])):a.value==="checkpoints"?(S(),xt(Ga,{key:"checkpoints",checkpoints:_.value.checkpoints},null,8,["checkpoints"])):a.value==="roadmap"?(S(),xt(Qc,{key:"roadmap",text:_.value.roadmapText,structured:_.value.roadmap},null,8,["text","structured"])):(S(),xt(uc,{key:"diagnostics",data:_.value},null,8,["data"]))]),_:1})])):(S(),w("main",sf,[r.value.status==="error"?(S(),w("section",nf,[F[2]||(F[2]=T("h2",null,"Live data could not be loaded",-1)),T("p",null,V(r.value.message),1),F[3]||(F[3]=T("p",{class:"muted"},"No data is shown. Demo data is never substituted for live data.",-1)),T("button",{type:"button","data-testid":"retry",onClick:l},"Retry")])):(S(),w("section",rf,[...F[4]||(F[4]=[T("p",{class:"muted"},"Loading live data…",-1)])]))]))])])}}});iu();ka(of).mount("#app");
Binary file
Binary file
Binary file
@@ -3,9 +3,13 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <link rel="icon" href="./favicon.ico" sizes="16x16 32x32 48x48" />
7
+ <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32x32.png" />
8
+ <link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png" />
9
+ <link rel="apple-touch-icon" href="./apple-touch-icon.png" />
6
10
  <title>MONOLITH Mission Control</title>
7
- <script type="module" crossorigin src="./assets/index-C4NhMaq7.js"></script>
8
- <link rel="stylesheet" crossorigin href="./assets/index-DMZ7ZvZY.css">
11
+ <script type="module" crossorigin src="./assets/index-ioC9DPHQ.js"></script>
12
+ <link rel="stylesheet" crossorigin href="./assets/index-BJKxUDPD.css">
9
13
  </head>
10
14
  <body>
11
15
  <div id="app"></div>
@@ -3,6 +3,6 @@
3
3
  * Exit codes: 0 ok (preview, or apply with integration complete), 1 error,
4
4
  * 2 apply finished but manual actions remain (integration incomplete).
5
5
  */
6
- export declare const UPDATE_USAGE = "Usage: monolith update [--apply]\n\nBrings an existing MONOLITH instance up to the current agent integration: a\nstable entry point (<root>/AGENT.md), the idea-capture skill, its routing and the\npointer in your AI instruction files.\n (no flag) Preview: shows the plan, writes nothing.\n --apply Performs the plan: ADD creates a missing MONOLITH file, UPDATE adds\n or refreshes a managed block inside a file of yours.\n\nWhat is written, and what is not:\n - MONOLITH text goes only into checksummed managed blocks\n (<!-- monolith:begin ... -->). Appending leaves every existing byte in place;\n refreshing replaces only an unedited block.\n - A block you edited, a malformed block, a clashing section of yours, an\n unclosed code fence (backticks or tildes) or HTML comment that would hide the block, a file that is not\n valid UTF-8 (no encoding is converted) or an unreadable file is CONFLICT: nothing is written there and the plan says how\n to resolve it. SKIP means left alone on purpose (e.g. your own skill).\n - Your existing skills, memory, state.json, ideas and text are never overwritten.\n Nothing is executed.\nInstances carry no template version, so state is read from the files. Safe to\nre-run. Not transactional and not coordinated between simultaneous runs: apply\nre-checks each file just before writing and skips one that changed. Exit code 2\nafter --apply means the integration is not complete (conflicts or skipped\nchanges remain).";
6
+ export declare const UPDATE_USAGE = "Usage: monolith update [--apply]\n\nBrings an existing MONOLITH instance up to the current agent integration: a\nstable entry point (<root>/AGENT.md), the idea-capture skill, its routing and the\npointer in your AI instruction files, and an up-to-date finalize-story skill.\n (no flag) Preview: shows the plan, writes nothing.\n --apply Performs the plan: ADD creates a missing MONOLITH file, UPDATE adds\n or refreshes a managed block inside a file of yours.\n\nWhat is written, and what is not:\n - MONOLITH text goes only into checksummed managed blocks\n (<!-- monolith:begin ... -->). Appending leaves every existing byte in place;\n refreshing replaces only an unedited block.\n - A block you edited, a malformed block, a clashing section of yours, an\n unclosed code fence (backticks or tildes) or HTML comment that would hide the block, a file that is not\n valid UTF-8 (no encoding is converted) or an unreadable file is CONFLICT: nothing is written there and the plan says how\n to resolve it. SKIP means left alone on purpose (e.g. your own skill).\n - Your existing skills, memory, state.json, ideas and text are never overwritten.\n The one exception: a finalize-story skill byte-identical to a known older\n MONOLITH template (nothing of yours in it) is replaced by the current one. Any\n other finalize-story skill (edited, or the current text in different bytes such\n as CRLF/BOM) is a CONFLICT: it is kept, and its compatibility with the\n Finalization Contract is not verified, even if it mentions `monolith finalize\n plan` / `apply` (it may still allow finalizing by hand). The integration is\n then INCOMPLETE and --apply exits 2 until the file equals the current template.\n Nothing is executed.\nInstances carry no template version, so state is read from the files. Safe to\nre-run. Not transactional and not coordinated between simultaneous runs: apply\nre-checks each file just before writing and skips one that changed. Exit code 2\nafter --apply means the integration is not complete (conflicts or skipped\nchanges remain).";
7
7
  export declare function runUpdate(args: string[], targetDir?: string): Promise<number>;
8
8
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/update/cli.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAKH,eAAO,MAAM,YAAY,+9CAuBR,CAAC;AA6ClB,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC1F"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/update/cli.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAKH,eAAO,MAAM,YAAY,okEA8BR,CAAC;AA6ClB,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC1F"}
@@ -10,7 +10,7 @@ export const UPDATE_USAGE = `Usage: monolith update [--apply]
10
10
 
11
11
  Brings an existing MONOLITH instance up to the current agent integration: a
12
12
  stable entry point (<root>/AGENT.md), the idea-capture skill, its routing and the
13
- pointer in your AI instruction files.
13
+ pointer in your AI instruction files, and an up-to-date finalize-story skill.
14
14
  (no flag) Preview: shows the plan, writes nothing.
15
15
  --apply Performs the plan: ADD creates a missing MONOLITH file, UPDATE adds
16
16
  or refreshes a managed block inside a file of yours.
@@ -24,6 +24,13 @@ What is written, and what is not:
24
24
  valid UTF-8 (no encoding is converted) or an unreadable file is CONFLICT: nothing is written there and the plan says how
25
25
  to resolve it. SKIP means left alone on purpose (e.g. your own skill).
26
26
  - Your existing skills, memory, state.json, ideas and text are never overwritten.
27
+ The one exception: a finalize-story skill byte-identical to a known older
28
+ MONOLITH template (nothing of yours in it) is replaced by the current one. Any
29
+ other finalize-story skill (edited, or the current text in different bytes such
30
+ as CRLF/BOM) is a CONFLICT: it is kept, and its compatibility with the
31
+ Finalization Contract is not verified, even if it mentions \`monolith finalize
32
+ plan\` / \`apply\` (it may still allow finalizing by hand). The integration is
33
+ then INCOMPLETE and --apply exits 2 until the file equals the current template.
27
34
  Nothing is executed.
28
35
  Instances carry no template version, so state is read from the files. Safe to
29
36
  re-run. Not transactional and not coordinated between simultaneous runs: apply
@@ -64,7 +71,7 @@ function verdict(plan, stale = []) {
64
71
  const manual = plan.items.filter((i) => i.action === 'CONFLICT').length;
65
72
  const broken = plan.chain.filter((c) => !c.ok).length;
66
73
  if (pending === 0 && manual === 0 && broken === 0 && stale.length === 0)
67
- return 'Idea Capture integration: COMPLETE (the managed components are installed and pass the structural check; how an AI assistant behaves is not verified).';
74
+ return 'Agent integration: COMPLETE (the managed components are installed and pass the structural check; how an AI assistant behaves is not verified).';
68
75
  const parts = [];
69
76
  if (pending > 0)
70
77
  parts.push(`${pending} change(s) to apply`);
@@ -74,7 +81,7 @@ function verdict(plan, stale = []) {
74
81
  parts.push(`${stale.length} change(s) skipped because the file changed meanwhile`);
75
82
  if (broken > 0 && parts.length === 0)
76
83
  parts.push(`${broken} consistency check(s) failing`);
77
- return `Idea Capture integration: INCOMPLETE (${parts.join(', ')}). A partly installed integration is not active.`;
84
+ return `Agent integration: INCOMPLETE (${parts.join(', ')}). A partly installed integration is not active.`;
78
85
  }
79
86
  export async function runUpdate(args, targetDir = process.cwd()) {
80
87
  let apply = false;
@@ -7,6 +7,15 @@
7
7
  * read from the files themselves):
8
8
  * - MONOLITH-owned, created when absent: `<root>/AGENT.md`, the `idea-capture`
9
9
  * skill. An existing skill is never overwritten, whatever it contains.
10
+ * - `finalize-story` skill (DOGFOOD-002): created when absent; replaced ONLY when
11
+ * it is byte-identical to a known older MONOLITH template (sha256 list in
12
+ * legacy-skills.ts), so nothing of the user's is lost. Any other content is
13
+ * never replaced and is a CONFLICT (DOGFOOD-005): compatibility with the
14
+ * Finalization Contract is unverified, so the integration cannot be COMPLETE.
15
+ * Mentioning `finalize plan` / `finalize apply` is not evidence of compliance
16
+ * and does not change that; only a byte-identical current template is
17
+ * UNCHANGED. Its content is only classified, never trusted as authority and
18
+ * never executed.
10
19
  * - Mixed (user-owned file + MONOLITH text): CLAUDE.md / AGENTS.md /
11
20
  * .cursorrules / .windsurfrules, routing-map, skills index. MONOLITH text
12
21
  * lives only in checksummed managed blocks (src/managed). A missing block is
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/update/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,EAEL,oBAAoB,EAQpB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAK1B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AA+ED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAgGrD;AAiCD;;;iKAGiK;AACjK,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE7D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qGAAqG;IACrG,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAUD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,CAsCvE;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/update/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAKH,OAAO,EAEL,oBAAoB,EAQpB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAM1B,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wEAAwE;AACxE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAkHD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAkGrD;AAwCD;;;iKAGiK;AACjK,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAE7D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qGAAqG;IACrG,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAUD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,WAAW,CAsCvE;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -7,6 +7,15 @@
7
7
  * read from the files themselves):
8
8
  * - MONOLITH-owned, created when absent: `<root>/AGENT.md`, the `idea-capture`
9
9
  * skill. An existing skill is never overwritten, whatever it contains.
10
+ * - `finalize-story` skill (DOGFOOD-002): created when absent; replaced ONLY when
11
+ * it is byte-identical to a known older MONOLITH template (sha256 list in
12
+ * legacy-skills.ts), so nothing of the user's is lost. Any other content is
13
+ * never replaced and is a CONFLICT (DOGFOOD-005): compatibility with the
14
+ * Finalization Contract is unverified, so the integration cannot be COMPLETE.
15
+ * Mentioning `finalize plan` / `finalize apply` is not evidence of compliance
16
+ * and does not change that; only a byte-identical current template is
17
+ * UNCHANGED. Its content is only classified, never trusted as authority and
18
+ * never executed.
10
19
  * - Mixed (user-owned file + MONOLITH text): CLAUDE.md / AGENTS.md /
11
20
  * .cursorrules / .windsurfrules, routing-map, skills index. MONOLITH text
12
21
  * lives only in checksummed managed blocks (src/managed). A missing block is
@@ -28,6 +37,7 @@ import { dirname, join, basename, resolve } from 'path';
28
37
  import { SafeWriteError, RootContainmentError, createFile, openParent, projectBoundary, readConfigFile, readProjectFile, replaceFile, resolveMonolithRoot, } from '../root/index.js';
29
38
  import { TEMPLATES_ROOT, substitute } from '../init/scaffold.js';
30
39
  import { listIdeas, ideaStore } from '../ideas/store.js';
40
+ import { FINALIZE_STORY_LEGACY } from './legacy-skills.js';
31
41
  import { blockBody, inspectBlock, planAppend, planRefresh, prose, renderBlock } from '../managed/index.js';
32
42
  const INSTRUCTION_FILES = ['CLAUDE.md', '.cursorrules', '.windsurfrules'];
33
43
  const AI_TOOL_FILE = { claude: 'CLAUDE.md', cursor: '.cursorrules', windsurf: '.windsurfrules' };
@@ -93,6 +103,42 @@ function blockItem(projectRoot, root, spec) {
93
103
  }
94
104
  }
95
105
  }
106
+ const FINALIZE_SKILL_TEMPLATE = 'monolith/skills/finalize-story/SKILL.md';
107
+ /**
108
+ * The `finalize-story` skill against the current template (DOGFOOD-002). A known older template
109
+ * is recognised by exact hash, not by searching text, so a user's file is never "recognised" by
110
+ * a phrase it happens to contain.
111
+ */
112
+ function finalizeSkillItem(projectRoot, r, vars) {
113
+ const rel = `${r}/skills/finalize-story/SKILL.md`;
114
+ const template = readTemplate(FINALIZE_SKILL_TEMPLATE, vars);
115
+ const effect = 'the finalize-story skill requires the deterministic plan → approval → apply flow and forbids manual finalization';
116
+ const read = readInstanceFile(projectRoot, rel, true);
117
+ if (read.kind === 'unsafe')
118
+ return { path: rel, action: 'CONFLICT', reason: `cannot be read safely (${read.detail}); not inspected or changed` };
119
+ if (read.kind === 'missing')
120
+ return { path: rel, action: 'ADD', reason: 'new file from the current template', content: template, effect };
121
+ const text = read.content;
122
+ if (text === template)
123
+ return { path: rel, action: 'UNCHANGED', reason: 'identical to the current template' };
124
+ const known = FINALIZE_STORY_LEGACY[sha(text)];
125
+ if (known !== undefined) {
126
+ return { path: rel, action: 'UPDATE', reason: `unedited older MONOLITH template (${known}); replace with the current one`, content: template, before: sha(text), effect };
127
+ }
128
+ // Anything else is unverified. Mentioning `finalize plan` / `apply` proves nothing about the rest of the file
129
+ // (it may still allow manual finalization), so there is no heuristic that upgrades trust (DOGFOOD-005).
130
+ // The byte-variant hint below only improves the message; it never changes the verdict or writes.
131
+ const bytesOnly = text.replace(/^/, '').replace(/\r\n/g, '\n').replace(/\n+$/, '') === template.replace(/\n+$/, '');
132
+ const why = bytesOnly
133
+ ? 'has the current template text but different bytes (line endings, BOM or trailing newline)'
134
+ : 'differs from the current template and from every known MONOLITH template';
135
+ return {
136
+ path: rel,
137
+ action: 'CONFLICT',
138
+ reason: `${why}: compatibility with the Finalization Contract is not verified (it may still tell an assistant to finalize by hand). Your file is not changed`,
139
+ proposal: `Compare your file with the current template (templates/default-instance/${FINALIZE_SKILL_TEMPLATE} in the monolith package) and merge its "Deterministic Execution" section, or rename ${rel} and re-run \`monolith update --apply\` to get the current skill. Until the file equals the current template, the integration is reported INCOMPLETE.\n`,
140
+ };
141
+ }
96
142
  /**
97
143
  * Read-only. Throws RootContainmentError when the root/config is unusable and
98
144
  * `Error` when the directory is not a MONOLITH instance.
@@ -135,6 +181,7 @@ export function planUpdate(target) {
135
181
  skillText = skill.content;
136
182
  items.push({ path: skillRel, action: 'SKIP', reason: 'exists and differs from the current template (customized or older); not overwritten' });
137
183
  }
184
+ items.push(finalizeSkillItem(pr, r, vars));
138
185
  items.push(blockItem(pr, r, {
139
186
  id: 'agent',
140
187
  rel: `${r}/AGENT.md`,
@@ -206,6 +253,8 @@ function chainChecks(projectRoot, r, items, skillText) {
206
253
  const skillPresent = skillItem?.action === 'UNCHANGED' || skillItem?.action === 'SKIP';
207
254
  add('skill', skillPresent, 'the idea-capture skill exists', 'the idea-capture skill is missing or unreadable');
208
255
  add('skill → CLI', skillPresent && skillText !== null && /monolith idea add/.test(prose(skillText)), 'the skill calls `monolith idea add`', 'the skill does not call `monolith idea add` (a customized skill may have dropped it)');
256
+ const finItem = state(`${r}/skills/finalize-story/SKILL.md`);
257
+ add('finalize skill → CLI', finItem?.action === 'UNCHANGED', 'the finalize-story skill is identical to the current template', 'the finalize-story skill is missing, outdated, unreadable, or not verified to match the current template (a customized one is never assumed compatible)');
209
258
  let storage = '';
210
259
  try {
211
260
  listIdeas(ideaStore(projectRoot));
@@ -225,7 +274,7 @@ export function integrationComplete(plan) {
225
274
  }
226
275
  /** Apply order: MONOLITH-owned files first, the pointer in the root instruction files last. */
227
276
  function rank(item, r) {
228
- if (item.path.startsWith(`${r}/skills/idea-capture/`))
277
+ if (item.path.startsWith(`${r}/skills/idea-capture/`) || item.path.startsWith(`${r}/skills/finalize-story/`))
229
278
  return 0;
230
279
  if (item.path === `${r}/AGENT.md`)
231
280
  return 1;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Known historic bytes of MONOLITH-owned skills (DOGFOOD-002). An installed skill
3
+ * whose sha256 is listed here is an unedited copy of an older template, so
4
+ * replacing it loses nothing. Anything else is the user's text and is never
5
+ * replaced. Hashes are over the file as `init` wrote it (the skill has no
6
+ * `{{VARS}}`, so nothing was substituted).
7
+ */
8
+ export declare const FINALIZE_STORY_LEGACY: Readonly<Record<string, string>>;
9
+ /**
10
+ * sha256 of the CURRENT `finalize-story` template. A test pins it: editing the template fails
11
+ * that test until the previous hash is moved into FINALIZE_STORY_LEGACY (so instances that
12
+ * carry the unedited previous text keep updating) and this value is replaced.
13
+ */
14
+ export declare const FINALIZE_STORY_CURRENT = "9a779ee52327b5dfe64917228eb4dda60bf4901e2ac0cd116339eb70d51d2723";
15
+ //# sourceMappingURL=legacy-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-skills.d.ts","sourceRoot":"","sources":["../../src/update/legacy-skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,qEAAqE,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Known historic bytes of MONOLITH-owned skills (DOGFOOD-002). An installed skill
3
+ * whose sha256 is listed here is an unedited copy of an older template, so
4
+ * replacing it loses nothing. Anything else is the user's text and is never
5
+ * replaced. Hashes are over the file as `init` wrote it (the skill has no
6
+ * `{{VARS}}`, so nothing was substituted).
7
+ */
8
+ export const FINALIZE_STORY_LEGACY = {
9
+ '7a42dbaad1b0908bad820903e2e22b6e06e06f0ddc44d61d003e3cd5ad36f2c6': 'initial template (manual steps only)',
10
+ '8d7011640de68df5e4aad3f1ff5ecf421d1f7a3b454f3c51f12079cfea743b8a': '0.1.0-alpha.0 / alpha.1; manual steps only, no `monolith finalize`',
11
+ '6c41ea1411d1ff75f0db92a80289662e0725a248f243d3065cda0d0452bae194': 'pre-release development template (DOCSYNC-001)',
12
+ '1b8ee0c357de7edb858e211d8a6ae8af1ae0a77a9289259deac25bbcfb138121': 'pre-release development template (DOCSYNC-003)',
13
+ '31cc69d09ba4996f71b497f1f4454912ab497c1bcd766f4b7b337c34384efd2d': '0.1.0-alpha.2; does not forbid manual finalization',
14
+ };
15
+ /**
16
+ * sha256 of the CURRENT `finalize-story` template. A test pins it: editing the template fails
17
+ * that test until the previous hash is moved into FINALIZE_STORY_LEGACY (so instances that
18
+ * carry the unedited previous text keep updating) and this value is replaced.
19
+ */
20
+ export const FINALIZE_STORY_CURRENT = '9a779ee52327b5dfe64917228eb4dda60bf4901e2ac0cd116339eb70d51d2723';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate/index.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA4KD,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validate/index.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA4KD,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DzE"}
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable no-console */
2
2
  import { existsSync, readdirSync } from 'fs';
3
+ import { colorEnabled, paint, statusWord } from '../cli/style.js';
3
4
  import { isAbsolute, join, resolve, relative, sep } from 'path';
4
5
  import { checkProjectFile, readConfigFile, readProjectFile, resolveMonolithRoot, RootContainmentError, findWriteArtifacts, describeWriteArtifacts, } from '../root/index.js';
5
6
  const DEFINITION_FILE_NAME = 'project.definition.mjs';
@@ -148,7 +149,7 @@ function checkTemplates(targetDir, monolithRoot) {
148
149
  }
149
150
  function formatRow(result) {
150
151
  const label = result.label.padEnd(COL_WIDTH);
151
- const status = result.passed ? 'PASS' : 'FAIL';
152
+ const status = statusWord(result.passed ? 'PASS' : 'FAIL', colorEnabled());
152
153
  const tail = result.error ? ` ${result.error}` : '';
153
154
  return `${label}${status}${tail}`;
154
155
  }
@@ -194,13 +195,13 @@ export async function runValidate(options) {
194
195
  }
195
196
  else {
196
197
  console.log('');
197
- console.log('MONOLITH validate');
198
+ console.log(paint('MONOLITH validate', 'head', colorEnabled()));
198
199
  console.log('');
199
200
  for (const r of results) {
200
201
  console.log(formatRow(r));
201
202
  }
202
203
  console.log('');
203
- console.log(`Result: ${passed ? 'PASS' : 'FAIL'}`);
204
+ console.log(`Result: ${statusWord(passed ? 'PASS' : 'FAIL', colorEnabled())}`);
204
205
  if (configResult.passed && configResult.note)
205
206
  console.log(`Note: ${configResult.note}`);
206
207
  // Read-only warning (SEC-001B.2): never affects the result or the exit code.
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const MONOLITH_VERSION = "0.1.0-alpha.2";
1
+ export declare const MONOLITH_VERSION = "0.1.0-alpha.4";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const MONOLITH_VERSION = '0.1.0-alpha.2';
1
+ export const MONOLITH_VERSION = '0.1.0-alpha.4';