diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 98b58c6..c6c02a0 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "markdown-review", - "version": "0.0.1", + "version": "1.0.0", "description": "Antigravity-style inline commenting on markdown — highlight a span, leave a comment, send it to the agent. Batch 'Submit All', ephemeral 'Answer Now', and edit/review modes, rendered in a live MCP-Apps webview.", "author": { "name": "TLC AI Lab (JARVIS)" }, "license": "MIT" diff --git a/README.md b/README.md index 5709671..5f67e32 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ stays clean. (Memory-only and inline-marker backends are on the roadmap — see ## Install ``` -/plugin marketplace add https://git.scannersend.org/tlc/markdown-review +/plugin marketplace add https://git.tlcailab.com/tlc/markdown-review /plugin install markdown-review@tlc-plugins ``` diff --git a/server/build.mjs b/server/build.mjs index 5e3a40e..a26bf4a 100644 --- a/server/build.mjs +++ b/server/build.mjs @@ -49,8 +49,15 @@ async function buildApp() { logLevel: "info", }); const js = result.outputFiles[0].text; + // Escape any literal "" inside the bundle, or the HTML parser closes + // the inline `); + // Use a replacer FUNCTION, not a string: a string replacement interprets "$&", + // "$`", etc., and the minified bundle is full of "$" — which silently + // duplicates/mangles the shell. A function replacement is taken verbatim. + const html = shell.replace("", () => ``); await writeFile(path.join(dist, "mcp-app.html"), html, "utf-8"); console.log("[build] dist/mcp-app.html"); } diff --git a/server/dist/index.js b/server/dist/index.js index 41eb896..dc76d62 100644 --- a/server/dist/index.js +++ b/server/dist/index.js @@ -56910,6 +56910,35 @@ function createServer() { }; } ); + K3( + server, + "read_markdown", + { + title: "Read markdown (app fetch)", + description: "Internal: the review viewer calls this to load a file's content directly when the host doesn't hand the open_markdown result to the webview. The model should not call this.", + inputSchema: { + path: external_exports.string(), + mode: external_exports.enum(["edit", "review"]).default("edit") + }, + outputSchema: { + path: external_exports.string(), + mode: external_exports.string(), + markdown: external_exports.string(), + existingComments: external_exports.array(external_exports.any()) + }, + _meta: { ui: { visibility: ["app"] } } + }, + async ({ path: filePath, mode }) => { + const abs = path2.resolve(process.cwd(), filePath); + const markdown = await readFile2(abs, "utf-8"); + const sidecar = await loadSidecar(abs); + const structured = { path: abs, mode, markdown, existingComments: sidecar.comments }; + return { + content: [{ type: "text", text: `Loaded ${abs} (${sidecar.comments.length} comment(s)).` }], + structuredContent: structured + }; + } + ); K3( server, "submit_batch", diff --git a/server/dist/mcp-app.html b/server/dist/mcp-app.html index 13470b0..a42442a 100644 --- a/server/dist/mcp-app.html +++ b/server/dist/mcp-app.html @@ -4,6 +4,29 @@ Markdown Review + - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- )}function Na(e){let r=uf({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let i=`${r}(?:${n.join("|")})`;return new RegExp(`^${of}T(?:${i}) - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- )}function Jr(e,r){return new RegExp(`^[A-Za-z0-9+/]{${e}}${r} - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- )}function Gr(e){return new RegExp(`^[A-Za-z0-9_-]{${e}} - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- )}var ga,ba,va,xa,_a,ya,ka,Wb,$a,xt,Kb,Qb,Xb,za,Yb,e1,nf,t1,r1,n1,wa,Ia,Da,Ea,Ta,Pa,So,o1,i1,Aa,Ca,of,ja,Ua,Ra,Fa,wo,Za,La,Ma,qa,Ba,u1,a1,c1,s1,l1,d1,p1,f1,m1,h1,g1,b1,v1,x1,_1,y1,Io=$(()=>{T();ga=/^[cC][0-9a-z]{6,}$/,ba=/^[0-9a-z]+$/,va=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xa=/^[0-9a-vA-V]{20}$/,_a=/^[A-Za-z0-9]{27}$/,ya=/^[a-zA-Z0-9_-]{21}$/,ka=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Wb=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,$a=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,xt=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}) - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- ):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Kb=xt(4),Qb=xt(6),Xb=xt(7),za=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Yb=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,e1=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,nf=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,t1=nf,r1=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,n1="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";wa=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ia=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Da=e=>{let r=we(e??":");return new RegExp(`^(?:[0-9A-F]{2}${r}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${r}){5}[0-9a-f]{2} - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- )},Ea=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ta=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Pa=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,So=/^[A-Za-z0-9_-]*$/,o1=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,i1=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Aa=/^https?$/,Ca=/^\+[1-9]\d{6,14}$/,of="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",ja=new RegExp(`^${of} - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- );Ua=e=>{let r=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${r} - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- )},Ra=/^-?\d+n?$/,Fa=/^-?\d+$/,wo=/^-?\d+(?:\.\d+)?$/,Za=/^(?:true|false)$/i,La=/^null$/i,Ma=/^undefined$/i,qa=/^[^A-Z]*$/,Ba=/^[^a-z]*$/,u1=/^[0-9a-fA-F]*$/;a1=/^[0-9a-fA-F]{32}$/,c1=Jr(22,"=="),s1=Gr(22),l1=/^[0-9a-fA-F]{40}$/,d1=Jr(27,"="),p1=Gr(27),f1=/^[0-9a-fA-F]{64}$/,m1=Jr(43,"="),h1=Gr(43),g1=/^[0-9a-fA-F]{96}$/,b1=Jr(64,""),v1=Gr(64),x1=/^[0-9a-fA-F]{128}$/,_1=Jr(86,"=="),y1=Gr(86)});function af(e,r,n){e.issues.length&&r.issues.push(...ve(n,e.issues))}var X,cf,Do,Eo,Va,Ha,Ja,Ga,Wa,Ka,Qa,Xa,Ya,ur,ec,tc,rc,nc,oc,ic,uc,ac,cc,To=$(()=>{bt();Io();T();X=h("$ZodCheck",(e,r)=>{var n;e._zod??(e._zod={}),e._zod.def=r,(n=e._zod).onattach??(n.onattach=[])}),cf={number:"number",bigint:"bigint",object:"date"},Do=h("$ZodCheckLessThan",(e,r)=>{X.init(e,r);let n=cf[typeof r.value];e._zod.onattach.push(i=>{let t=i._zod.bag,o=(r.inclusive?t.maximum:t.exclusiveMaximum)??Number.POSITIVE_INFINITY;r.value{(r.inclusive?i.value<=r.value:i.value{X.init(e,r);let n=cf[typeof r.value];e._zod.onattach.push(i=>{let t=i._zod.bag,o=(r.inclusive?t.minimum:t.exclusiveMinimum)??Number.NEGATIVE_INFINITY;r.value>o&&(r.inclusive?t.minimum=r.value:t.exclusiveMinimum=r.value)}),e._zod.check=i=>{(r.inclusive?i.value>=r.value:i.value>r.value)||i.issues.push({origin:n,code:"too_small",minimum:typeof r.value=="object"?r.value.getTime():r.value,input:i.value,inclusive:r.inclusive,inst:e,continue:!r.abort})}}),Va=h("$ZodCheckMultipleOf",(e,r)=>{X.init(e,r),e._zod.onattach.push(n=>{var i;(i=n._zod.bag).multipleOf??(i.multipleOf=r.value)}),e._zod.check=n=>{if(typeof n.value!=typeof r.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof n.value=="bigint"?n.value%r.value===BigInt(0):ia(n.value,r.value)===0)||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:r.value,input:n.value,inst:e,continue:!r.abort})}}),Ha=h("$ZodCheckNumberFormat",(e,r)=>{X.init(e,r),r.format=r.format||"float64";let n=r.format?.includes("int"),i=n?"int":"number",[t,o]=da[r.format];e._zod.onattach.push(u=>{let a=u._zod.bag;a.format=r.format,a.minimum=t,a.maximum=o,n&&(a.pattern=Fa)}),e._zod.check=u=>{let a=u.value;if(n){if(!Number.isInteger(a)){u.issues.push({expected:i,format:r.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?u.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,inclusive:!0,continue:!r.abort}):u.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:i,inclusive:!0,continue:!r.abort});return}}ao&&u.issues.push({origin:"number",input:a,code:"too_big",maximum:o,inclusive:!0,inst:e,continue:!r.abort})}}),Ja=h("$ZodCheckBigIntFormat",(e,r)=>{X.init(e,r);let[n,i]=pa[r.format];e._zod.onattach.push(t=>{let o=t._zod.bag;o.format=r.format,o.minimum=n,o.maximum=i}),e._zod.check=t=>{let o=t.value;oi&&t.issues.push({origin:"bigint",input:o,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!r.abort})}}),Ga=h("$ZodCheckMaxSize",(e,r)=>{var n;X.init(e,r),(n=e._zod.def).when??(n.when=i=>{let t=i.value;return!et(t)&&t.size!==void 0}),e._zod.onattach.push(i=>{let t=i._zod.bag.maximum??Number.POSITIVE_INFINITY;r.maximum{let t=i.value;t.size<=r.maximum||i.issues.push({origin:Lr(t),code:"too_big",maximum:r.maximum,inclusive:!0,input:t,inst:e,continue:!r.abort})}}),Wa=h("$ZodCheckMinSize",(e,r)=>{var n;X.init(e,r),(n=e._zod.def).when??(n.when=i=>{let t=i.value;return!et(t)&&t.size!==void 0}),e._zod.onattach.push(i=>{let t=i._zod.bag.minimum??Number.NEGATIVE_INFINITY;r.minimum>t&&(i._zod.bag.minimum=r.minimum)}),e._zod.check=i=>{let t=i.value;t.size>=r.minimum||i.issues.push({origin:Lr(t),code:"too_small",minimum:r.minimum,inclusive:!0,input:t,inst:e,continue:!r.abort})}}),Ka=h("$ZodCheckSizeEquals",(e,r)=>{var n;X.init(e,r),(n=e._zod.def).when??(n.when=i=>{let t=i.value;return!et(t)&&t.size!==void 0}),e._zod.onattach.push(i=>{let t=i._zod.bag;t.minimum=r.size,t.maximum=r.size,t.size=r.size}),e._zod.check=i=>{let t=i.value,o=t.size;if(o===r.size)return;let u=o>r.size;i.issues.push({origin:Lr(t),...u?{code:"too_big",maximum:r.size}:{code:"too_small",minimum:r.size},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!r.abort})}}),Qa=h("$ZodCheckMaxLength",(e,r)=>{var n;X.init(e,r),(n=e._zod.def).when??(n.when=i=>{let t=i.value;return!et(t)&&t.length!==void 0}),e._zod.onattach.push(i=>{let t=i._zod.bag.maximum??Number.POSITIVE_INFINITY;r.maximum{let t=i.value;if(t.length<=r.maximum)return;let u=Mr(t);i.issues.push({origin:u,code:"too_big",maximum:r.maximum,inclusive:!0,input:t,inst:e,continue:!r.abort})}}),Xa=h("$ZodCheckMinLength",(e,r)=>{var n;X.init(e,r),(n=e._zod.def).when??(n.when=i=>{let t=i.value;return!et(t)&&t.length!==void 0}),e._zod.onattach.push(i=>{let t=i._zod.bag.minimum??Number.NEGATIVE_INFINITY;r.minimum>t&&(i._zod.bag.minimum=r.minimum)}),e._zod.check=i=>{let t=i.value;if(t.length>=r.minimum)return;let u=Mr(t);i.issues.push({origin:u,code:"too_small",minimum:r.minimum,inclusive:!0,input:t,inst:e,continue:!r.abort})}}),Ya=h("$ZodCheckLengthEquals",(e,r)=>{var n;X.init(e,r),(n=e._zod.def).when??(n.when=i=>{let t=i.value;return!et(t)&&t.length!==void 0}),e._zod.onattach.push(i=>{let t=i._zod.bag;t.minimum=r.length,t.maximum=r.length,t.length=r.length}),e._zod.check=i=>{let t=i.value,o=t.length;if(o===r.length)return;let u=Mr(t),a=o>r.length;i.issues.push({origin:u,...a?{code:"too_big",maximum:r.length}:{code:"too_small",minimum:r.length},inclusive:!0,exact:!0,input:i.value,inst:e,continue:!r.abort})}}),ur=h("$ZodCheckStringFormat",(e,r)=>{var n,i;X.init(e,r),e._zod.onattach.push(t=>{let o=t._zod.bag;o.format=r.format,r.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(r.pattern))}),r.pattern?(n=e._zod).check??(n.check=t=>{r.pattern.lastIndex=0,!r.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:r.format,input:t.value,...r.pattern?{pattern:r.pattern.toString()}:{},inst:e,continue:!r.abort})}):(i=e._zod).check??(i.check=()=>{})}),ec=h("$ZodCheckRegex",(e,r)=>{ur.init(e,r),e._zod.check=n=>{r.pattern.lastIndex=0,!r.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:r.pattern.toString(),inst:e,continue:!r.abort})}}),tc=h("$ZodCheckLowerCase",(e,r)=>{r.pattern??(r.pattern=qa),ur.init(e,r)}),rc=h("$ZodCheckUpperCase",(e,r)=>{r.pattern??(r.pattern=Ba),ur.init(e,r)}),nc=h("$ZodCheckIncludes",(e,r)=>{X.init(e,r);let n=we(r.includes),i=new RegExp(typeof r.position=="number"?`^.{${r.position}}${n}`:n);r.pattern=i,e._zod.onattach.push(t=>{let o=t._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(i)}),e._zod.check=t=>{t.value.includes(r.includes,r.position)||t.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:r.includes,input:t.value,inst:e,continue:!r.abort})}}),oc=h("$ZodCheckStartsWith",(e,r)=>{X.init(e,r);let n=new RegExp(`^${we(r.prefix)}.*`);r.pattern??(r.pattern=n),e._zod.onattach.push(i=>{let t=i._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=i=>{i.value.startsWith(r.prefix)||i.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:r.prefix,input:i.value,inst:e,continue:!r.abort})}}),ic=h("$ZodCheckEndsWith",(e,r)=>{X.init(e,r);let n=new RegExp(`.*${we(r.suffix)} - - - - - Markdown Review - - - -
- Markdown Review - no file - - - - - - -
-
Select text in the document to leave a comment.
-
-
-
-

Comments

-
No comments yet.
-
-
-
-
- -
- - -
-
- );r.pattern??(r.pattern=n),e._zod.onattach.push(i=>{let t=i._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(n)}),e._zod.check=i=>{i.value.endsWith(r.suffix)||i.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:r.suffix,input:i.value,inst:e,continue:!r.abort})}});uc=h("$ZodCheckProperty",(e,r)=>{X.init(e,r),e._zod.check=n=>{let i=r.schema._zod.run({value:n.value[r.property],issues:[]},{});if(i instanceof Promise)return i.then(t=>af(t,n,r.property));af(i,n,r.property)}}),ac=h("$ZodCheckMimeType",(e,r)=>{X.init(e,r);let n=new Set(r.mime);e._zod.onattach.push(i=>{i._zod.bag.mime=r.mime}),e._zod.check=i=>{n.has(i.value.type)||i.issues.push({code:"invalid_value",values:r.mime,input:i.value.type,inst:e,continue:!r.abort})}}),cc=h("$ZodCheckOverwrite",(e,r)=>{X.init(e,r),e._zod.check=n=>{n.value=r.tx(n.value)}})});var Wr,sc=$(()=>{Wr=class{constructor(r=[]){this.content=[],this.indent=0,this&&(this.args=r)}indented(r){this.indent+=1,r(this),this.indent-=1}write(r){if(typeof r=="function"){r(this,{execution:"sync"}),r(this,{execution:"async"});return}let i=r.split(` + diff --git a/server/src/app/index.html b/server/src/app/index.html index c3624af..548e9d8 100644 --- a/server/src/app/index.html +++ b/server/src/app/index.html @@ -4,6 +4,29 @@ Markdown Review +