maxsimcli 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/assets/CHANGELOG.md +8 -0
- package/dist/assets/dashboard/client/assets/{index-C_eAetZJ.js → index-BcRHShXD.js} +59 -59
- package/dist/assets/dashboard/client/assets/index-C199D4Eb.css +32 -0
- package/dist/assets/dashboard/client/index.html +2 -2
- package/dist/assets/dashboard/server.js +26 -11
- package/dist/assets/templates/agents/AGENTS.md +18 -69
- package/dist/assets/templates/agents/maxsim-code-reviewer.md +17 -92
- package/dist/assets/templates/agents/maxsim-codebase-mapper.md +57 -694
- package/dist/assets/templates/agents/maxsim-debugger.md +80 -925
- package/dist/assets/templates/agents/maxsim-executor.md +94 -431
- package/dist/assets/templates/agents/maxsim-integration-checker.md +51 -319
- package/dist/assets/templates/agents/maxsim-phase-researcher.md +63 -429
- package/dist/assets/templates/agents/maxsim-plan-checker.md +79 -568
- package/dist/assets/templates/agents/maxsim-planner.md +125 -855
- package/dist/assets/templates/agents/maxsim-project-researcher.md +32 -472
- package/dist/assets/templates/agents/maxsim-research-synthesizer.md +25 -134
- package/dist/assets/templates/agents/maxsim-roadmapper.md +66 -480
- package/dist/assets/templates/agents/maxsim-spec-reviewer.md +13 -55
- package/dist/assets/templates/agents/maxsim-verifier.md +95 -450
- package/dist/assets/templates/commands/maxsim/artefakte.md +122 -0
- package/dist/assets/templates/commands/maxsim/batch.md +42 -0
- package/dist/assets/templates/commands/maxsim/check-todos.md +1 -0
- package/dist/assets/templates/commands/maxsim/sdd.md +39 -0
- package/dist/assets/templates/references/thinking-partner.md +33 -0
- package/dist/assets/templates/workflows/batch.md +420 -0
- package/dist/assets/templates/workflows/check-todos.md +85 -1
- package/dist/assets/templates/workflows/discuss-phase.md +31 -0
- package/dist/assets/templates/workflows/execute-plan.md +96 -27
- package/dist/assets/templates/workflows/help.md +47 -0
- package/dist/assets/templates/workflows/sdd.md +426 -0
- package/dist/backend-server.cjs +174 -51
- package/dist/backend-server.cjs.map +1 -1
- package/dist/cli.cjs +310 -146
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +5 -5
- package/dist/cli.js.map +1 -1
- package/dist/core/artefakte.d.ts.map +1 -1
- package/dist/core/artefakte.js +16 -0
- package/dist/core/artefakte.js.map +1 -1
- package/dist/core/context-loader.d.ts +1 -0
- package/dist/core/context-loader.d.ts.map +1 -1
- package/dist/core/context-loader.js +58 -0
- package/dist/core/context-loader.js.map +1 -1
- package/dist/core/core.d.ts +6 -0
- package/dist/core/core.d.ts.map +1 -1
- package/dist/core/core.js +238 -0
- package/dist/core/core.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/phase.d.ts +11 -11
- package/dist/core/phase.d.ts.map +1 -1
- package/dist/core/phase.js +88 -73
- package/dist/core/phase.js.map +1 -1
- package/dist/core/roadmap.d.ts +2 -2
- package/dist/core/roadmap.d.ts.map +1 -1
- package/dist/core/roadmap.js +11 -10
- package/dist/core/roadmap.js.map +1 -1
- package/dist/core/state.d.ts +11 -11
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +60 -54
- package/dist/core/state.js.map +1 -1
- package/dist/core-RRjCSt0G.cjs.map +1 -1
- package/dist/{lifecycle-D4E9yP6E.cjs → lifecycle-0M4VqOMm.cjs} +2 -2
- package/dist/{lifecycle-D4E9yP6E.cjs.map → lifecycle-0M4VqOMm.cjs.map} +1 -1
- package/dist/mcp/context-tools.d.ts.map +1 -1
- package/dist/mcp/context-tools.js +7 -3
- package/dist/mcp/context-tools.js.map +1 -1
- package/dist/mcp/phase-tools.js +3 -3
- package/dist/mcp/phase-tools.js.map +1 -1
- package/dist/mcp-server.cjs +163 -40
- package/dist/mcp-server.cjs.map +1 -1
- package/dist/{server-pvY2WbKj.cjs → server-G1MIg_Oe.cjs} +7 -7
- package/dist/server-G1MIg_Oe.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/assets/dashboard/client/assets/index-CmiJKqOU.css +0 -32
- package/dist/server-pvY2WbKj.cjs.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono:"Geist Mono", "JetBrains Mono", "Fira Code", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-blue-400:oklch(70.7% .165 254.624);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:0;--radius-md:0;--radius-lg:0;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:#09090b;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--color-simple-accent:#14b8a6}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start\!{inset-inline-start:var(--spacing)!important}.end{inset-inline-end:var(--spacing)}.end\!{inset-inline-end:var(--spacing)!important}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-8{bottom:calc(var(--spacing) * 8)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-2{left:calc(var(--spacing) * 2)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.container\!{width:100%!important}@media(min-width:40rem){.container\!{max-width:40rem!important}}@media(min-width:48rem){.container\!{max-width:48rem!important}}@media(min-width:64rem){.container\!{max-width:64rem!important}}@media(min-width:80rem){.container\!{max-width:80rem!important}}@media(min-width:96rem){.container\!{max-width:96rem!important}}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-64{max-height:calc(var(--spacing) * 64)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[50vh\]{min-height:50vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[140px\]{max-width:140px}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-max{min-width:max-content}.flex-1,.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.resize\!{resize:both!important}.resize-none{resize:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.border-accent\/30{border-color:#3b82f64d}@supports (color:color-mix(in lab,red,red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.border-accent\/40{border-color:#3b82f666}@supports (color:color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.border-border{border-color:var(--color-border)}.border-border\/40{border-color:#27272a66}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--color-border) 40%,transparent)}}.border-border\/60{border-color:#27272a99}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border) 60%,transparent)}}.border-danger\/30{border-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.border-danger\/30{border-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.border-danger\/40{border-color:#ef444466}@supports (color:color-mix(in lab,red,red)){.border-danger\/40{border-color:color-mix(in oklab,var(--color-danger) 40%,transparent)}}.border-muted-foreground{border-color:var(--color-muted-foreground)}.border-muted-foreground\/30{border-color:#a1a1aa4d}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/30{border-color:color-mix(in oklab,var(--color-muted-foreground) 30%,transparent)}}.border-muted-foreground\/60{border-color:#a1a1aa99}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/60{border-color:color-mix(in oklab,var(--color-muted-foreground) 60%,transparent)}}.border-simple-accent{border-color:var(--color-simple-accent)}.border-simple-accent\/40{border-color:#14b8a666}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/40{border-color:color-mix(in oklab,var(--color-simple-accent) 40%,transparent)}}.border-simple-accent\/50{border-color:#14b8a680}@supports (color:color-mix(in lab,red,red)){.border-simple-accent\/50{border-color:color-mix(in oklab,var(--color-simple-accent) 50%,transparent)}}.border-success{border-color:var(--color-success)}.border-success\/20{border-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.border-success\/20{border-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.border-success\/30{border-color:#22c55e4d}@supports (color:color-mix(in lab,red,red)){.border-success\/30{border-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.border-t-muted-foreground{border-top-color:var(--color-muted-foreground)}.border-b-simple-accent{border-bottom-color:var(--color-simple-accent)}.border-b-transparent{border-bottom-color:#0000}.border-l-accent{border-left-color:var(--color-accent)}.border-l-simple-accent{border-left-color:var(--color-simple-accent)}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-accent\/10{background-color:#3b82f61a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/15{background-color:#3b82f626}@supports (color:color-mix(in lab,red,red)){.bg-accent\/15{background-color:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.bg-accent\/20{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-background\/60{background-color:#09090b99}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--color-background) 60%,transparent)}}.bg-background\/95{background-color:#09090bf2}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--color-background) 95%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-blue-400{background-color:var(--color-blue-400)}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-card-hover{background-color:var(--color-card-hover)}.bg-card\/80{background-color:#18181bcc}@supports (color:color-mix(in lab,red,red)){.bg-card\/80{background-color:color-mix(in oklab,var(--color-card) 80%,transparent)}}.bg-card\/90{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.bg-card\/90{background-color:color-mix(in oklab,var(--color-card) 90%,transparent)}}.bg-card\/95{background-color:#18181bf2}@supports (color:color-mix(in lab,red,red)){.bg-card\/95{background-color:color-mix(in oklab,var(--color-card) 95%,transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\/5{background-color:#ef44440d}@supports (color:color-mix(in lab,red,red)){.bg-danger\/5{background-color:color-mix(in oklab,var(--color-danger) 5%,transparent)}}.bg-danger\/15{background-color:#ef444426}@supports (color:color-mix(in lab,red,red)){.bg-danger\/15{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.bg-danger\/20{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.bg-danger\/20{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted-foreground\/40{background-color:#a1a1aa66}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.bg-muted-foreground\/50{background-color:#a1a1aa80}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/50{background-color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.bg-muted\/10{background-color:#27272a1a}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted) 10%,transparent)}}.bg-muted\/20{background-color:#27272a33}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--color-muted) 20%,transparent)}}.bg-muted\/50{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-simple-accent{background-color:var(--color-simple-accent)}.bg-simple-accent\/5{background-color:#14b8a60d}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/5{background-color:color-mix(in oklab,var(--color-simple-accent) 5%,transparent)}}.bg-simple-accent\/10{background-color:#14b8a61a}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/10{background-color:color-mix(in oklab,var(--color-simple-accent) 10%,transparent)}}.bg-simple-accent\/15{background-color:#14b8a626}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/15{background-color:color-mix(in oklab,var(--color-simple-accent) 15%,transparent)}}.bg-simple-accent\/20{background-color:#14b8a633}@supports (color:color-mix(in lab,red,red)){.bg-simple-accent\/20{background-color:color-mix(in oklab,var(--color-simple-accent) 20%,transparent)}}.bg-success{background-color:var(--color-success)}.bg-success\/20{background-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.bg-success\/20{background-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.bg-teal-500\/20{background-color:#00baa733}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/20{background-color:color-mix(in oklab,var(--color-teal-500) 20%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/20{background-color:#eab30833}@supports (color:color-mix(in lab,red,red)){.bg-warning\/20{background-color:color-mix(in oklab,var(--color-warning) 20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-accent{color:var(--color-accent)}.text-accent\/70{color:#3b82f6b3}@supports (color:color-mix(in lab,red,red)){.text-accent\/70{color:color-mix(in oklab,var(--color-accent) 70%,transparent)}}.text-background{color:var(--color-background)}.text-border{color:var(--color-border)}.text-danger{color:var(--color-danger)}.text-foreground{color:var(--color-foreground)}.text-foreground\/70{color:#fafafab3}@supports (color:color-mix(in lab,red,red)){.text-foreground\/70{color:color-mix(in oklab,var(--color-foreground) 70%,transparent)}}.text-foreground\/80{color:#fafafacc}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--color-foreground) 80%,transparent)}}.text-foreground\/90{color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--color-foreground) 90%,transparent)}}.text-muted-foreground{color:var(--color-muted-foreground)}.text-muted-foreground\/50{color:#a1a1aa80}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/50{color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}.text-muted-foreground\/60{color:#a1a1aa99}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--color-muted-foreground) 60%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-simple-accent{color:var(--color-simple-accent)}.text-success{color:var(--color-success)}.text-teal-400{color:var(--color-teal-400)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-simple-accent\/40{--tw-ring-color:#14b8a666}@supports (color:color-mix(in lab,red,red)){.ring-simple-accent\/40{--tw-ring-color:color-mix(in oklab, var(--color-simple-accent) 40%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:border-accent:is(:where(.group):hover *){border-color:var(--color-accent)}.group-hover\:border-simple-accent:is(:where(.group):hover *){border-color:var(--color-simple-accent)}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--color-foreground)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.placeholder\:text-muted-foreground\/50::placeholder{color:#a1a1aa80}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-muted-foreground\/50::placeholder{color:color-mix(in oklab,var(--color-muted-foreground) 50%,transparent)}}@media(hover:hover){.hover\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-foreground\/30:hover{border-color:#fafafa4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-foreground\/30:hover{border-color:color-mix(in oklab,var(--color-foreground) 30%,transparent)}}.hover\:border-muted-foreground:hover{border-color:var(--color-muted-foreground)}.hover\:border-muted-foreground\/40:hover{border-color:#a1a1aa66}@supports (color:color-mix(in lab,red,red)){.hover\:border-muted-foreground\/40:hover{border-color:color-mix(in oklab,var(--color-muted-foreground) 40%,transparent)}}.hover\:border-l-accent\/40:hover{border-left-color:#3b82f666}@supports (color:color-mix(in lab,red,red)){.hover\:border-l-accent\/40:hover{border-left-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent-glow:hover{background-color:var(--color-accent-glow)}.hover\:bg-accent\/20:hover{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-accent\/30:hover{background-color:#3b82f64d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.hover\:bg-card-hover:hover{background-color:var(--color-card-hover)}.hover\:bg-danger\/10:hover{background-color:#ef44441a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/10:hover{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.hover\:bg-danger\/20:hover{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/20:hover{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.hover\:bg-danger\/25:hover{background-color:#ef444440}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/25:hover{background-color:color-mix(in oklab,var(--color-danger) 25%,transparent)}}.hover\:bg-danger\/30:hover{background-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/30:hover{background-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-muted\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-simple-accent:hover{background-color:var(--color-simple-accent)}.hover\:bg-simple-accent\/10:hover{background-color:#14b8a61a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-simple-accent\/10:hover{background-color:color-mix(in oklab,var(--color-simple-accent) 10%,transparent)}}.hover\:bg-success\/10:hover{background-color:#22c55e1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-success\/10:hover{background-color:color-mix(in oklab,var(--color-success) 10%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/50:focus{--tw-ring-color:#3b82f680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:ml-auto{margin-left:auto}.sm\:max-w-none{max-width:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-10{gap:calc(var(--spacing) * 10)}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:pl-10{padding-left:calc(var(--spacing) * 10)}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}}@media(min-width:64rem){.lg\:absolute{position:absolute}.lg\:top-0{top:calc(var(--spacing) * 0)}.lg\:right-0{right:calc(var(--spacing) * 0)}.lg\:z-10{z-index:10}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:w-80{width:calc(var(--spacing) * 80)}.lg\:translate-x-\[calc\(100\%\+0\.75rem\)\]{--tw-translate-x: calc(100% + .75rem) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.\[\&_a\]\:text-simple-accent a{color:var(--color-simple-accent)}.\[\&_code\]\:bg-muted code{background-color:var(--color-muted)}.\[\&_code\]\:px-1 code{padding-inline:calc(var(--spacing) * 1)}.\[\&_code\]\:py-0\.5 code{padding-block:calc(var(--spacing) * .5)}.\[\&_code\]\:text-xs code{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}:root{--color-background:#09090b;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--color-simple-accent:#14b8a6;--font-mono:"Geist Mono", "JetBrains Mono", "Fira Code", monospace;--font-sans:"Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;--radius-sm:0;--radius-md:0;--radius-lg:0}body{background-color:var(--color-background);color:var(--color-foreground);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border)}::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}::selection{background-color:var(--color-accent);color:#fff}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}/**
|
|
2
|
+
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
3
|
+
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4
|
+
* https://github.com/chjj/term.js
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in
|
|
15
|
+
* all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
23
|
+
* THE SOFTWARE.
|
|
24
|
+
*
|
|
25
|
+
* Originally forked from (with the author's permission):
|
|
26
|
+
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
27
|
+
* http://bellard.org/jslinux/
|
|
28
|
+
* Copyright (c) 2011 Fabrice Bellard
|
|
29
|
+
* The original design remains. The terminal itself
|
|
30
|
+
* has been extended to include xterm CSI codes, among
|
|
31
|
+
* other features.
|
|
32
|
+
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800;900&family=Geist+Mono:wght@400;500;600;700&display=swap"
|
|
11
11
|
rel="stylesheet"
|
|
12
12
|
/>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-BcRHShXD.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-C199D4Eb.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="root"></div>
|
|
@@ -32133,7 +32133,7 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
32133
32133
|
*/
|
|
32134
32134
|
var debug = require_src$3()("express:view");
|
|
32135
32135
|
var path$19 = require("path");
|
|
32136
|
-
var fs$
|
|
32136
|
+
var fs$20 = require("fs");
|
|
32137
32137
|
/**
|
|
32138
32138
|
* Module variables.
|
|
32139
32139
|
* @private
|
|
@@ -32239,7 +32239,7 @@ var require_view = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
32239
32239
|
function tryStat(path$73) {
|
|
32240
32240
|
debug("stat \"%s\"", path$73);
|
|
32241
32241
|
try {
|
|
32242
|
-
return fs$
|
|
32242
|
+
return fs$20.statSync(path$73);
|
|
32243
32243
|
} catch (e) {
|
|
32244
32244
|
return;
|
|
32245
32245
|
}
|
|
@@ -34460,7 +34460,7 @@ var require_types$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
34460
34460
|
//#region ../../node_modules/send/node_modules/mime/mime.js
|
|
34461
34461
|
var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
34462
34462
|
require("path");
|
|
34463
|
-
var fs$
|
|
34463
|
+
var fs$19 = require("fs");
|
|
34464
34464
|
function Mime() {
|
|
34465
34465
|
this.types = Object.create(null);
|
|
34466
34466
|
this.extensions = Object.create(null);
|
|
@@ -34495,7 +34495,7 @@ var require_mime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
34495
34495
|
Mime.prototype.load = function(file) {
|
|
34496
34496
|
this._loading = file;
|
|
34497
34497
|
var map = {};
|
|
34498
|
-
fs$
|
|
34498
|
+
fs$19.readFileSync(file, "ascii").split(/[\r\n]+/).forEach(function(line) {
|
|
34499
34499
|
var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/);
|
|
34500
34500
|
map[fields.shift()] = fields;
|
|
34501
34501
|
});
|
|
@@ -34774,7 +34774,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
34774
34774
|
var escapeHtml = require_escape_html();
|
|
34775
34775
|
var etag = require_etag();
|
|
34776
34776
|
var fresh = require_fresh();
|
|
34777
|
-
var fs$
|
|
34777
|
+
var fs$18 = require("fs");
|
|
34778
34778
|
var mime = require_mime();
|
|
34779
34779
|
var ms = require_ms();
|
|
34780
34780
|
var onFinished = require_on_finished();
|
|
@@ -35239,7 +35239,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
35239
35239
|
var i = 0;
|
|
35240
35240
|
var self = this;
|
|
35241
35241
|
debug("stat \"%s\"", path$64);
|
|
35242
|
-
fs$
|
|
35242
|
+
fs$18.stat(path$64, function onstat(err, stat) {
|
|
35243
35243
|
if (err && err.code === "ENOENT" && !extname(path$64) && path$64[path$64.length - 1] !== sep) return next(err);
|
|
35244
35244
|
if (err) return self.onStatError(err);
|
|
35245
35245
|
if (stat.isDirectory()) return self.redirect(path$64);
|
|
@@ -35250,7 +35250,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
35250
35250
|
if (self._extensions.length <= i) return err ? self.onStatError(err) : self.error(404);
|
|
35251
35251
|
var p = path$64 + "." + self._extensions[i++];
|
|
35252
35252
|
debug("stat \"%s\"", p);
|
|
35253
|
-
fs$
|
|
35253
|
+
fs$18.stat(p, function(err, stat) {
|
|
35254
35254
|
if (err) return next(err);
|
|
35255
35255
|
if (stat.isDirectory()) return next();
|
|
35256
35256
|
self.emit("file", p, stat);
|
|
@@ -35274,7 +35274,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
35274
35274
|
}
|
|
35275
35275
|
var p = join(path$65, self._index[i]);
|
|
35276
35276
|
debug("stat \"%s\"", p);
|
|
35277
|
-
fs$
|
|
35277
|
+
fs$18.stat(p, function(err, stat) {
|
|
35278
35278
|
if (err) return next(err);
|
|
35279
35279
|
if (stat.isDirectory()) return next();
|
|
35280
35280
|
self.emit("file", p, stat);
|
|
@@ -35293,7 +35293,7 @@ var require_send = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
35293
35293
|
SendStream.prototype.stream = function stream(path$66, options) {
|
|
35294
35294
|
var self = this;
|
|
35295
35295
|
var res = this.res;
|
|
35296
|
-
var stream$5 = fs$
|
|
35296
|
+
var stream$5 = fs$18.createReadStream(path$66, options);
|
|
35297
35297
|
this.emit("stream", stream$5);
|
|
35298
35298
|
stream$5.pipe(res);
|
|
35299
35299
|
function cleanup() {
|
|
@@ -65205,7 +65205,7 @@ var require_has_flag = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
65205
65205
|
//#endregion
|
|
65206
65206
|
//#region ../../node_modules/supports-color/index.js
|
|
65207
65207
|
var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
65208
|
-
const os$
|
|
65208
|
+
const os$5 = require("os");
|
|
65209
65209
|
const tty$1 = require("tty");
|
|
65210
65210
|
const hasFlag = require_has_flag();
|
|
65211
65211
|
const { env } = process;
|
|
@@ -65232,7 +65232,7 @@ var require_supports_color = /* @__PURE__ */ __commonJSMin(((exports, module) =>
|
|
|
65232
65232
|
const min = forceColor || 0;
|
|
65233
65233
|
if (env.TERM === "dumb") return min;
|
|
65234
65234
|
if (process.platform === "win32") {
|
|
65235
|
-
const osRelease = os$
|
|
65235
|
+
const osRelease = os$5.release().split(".");
|
|
65236
65236
|
if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) return Number(osRelease[2]) >= 14931 ? 3 : 2;
|
|
65237
65237
|
return 1;
|
|
65238
65238
|
}
|
|
@@ -78476,6 +78476,21 @@ app.get("/api/server-info", (_req, res) => {
|
|
|
78476
78476
|
projectCwd
|
|
78477
78477
|
});
|
|
78478
78478
|
});
|
|
78479
|
+
app.get("/api/dashboards", async (_req, res) => {
|
|
78480
|
+
try {
|
|
78481
|
+
const dashboards = (await listRunningDashboards()).map((d) => ({
|
|
78482
|
+
port: d.port,
|
|
78483
|
+
cwd: d.cwd,
|
|
78484
|
+
projectName: node_path.basename(d.cwd),
|
|
78485
|
+
uptime: d.uptime,
|
|
78486
|
+
isCurrent: d.port === resolvedPort
|
|
78487
|
+
}));
|
|
78488
|
+
return res.json({ dashboards });
|
|
78489
|
+
} catch (err) {
|
|
78490
|
+
log("ERROR", "api", "Failed to list dashboards:", err);
|
|
78491
|
+
return res.status(500).json({ error: "Failed to list running dashboards" });
|
|
78492
|
+
}
|
|
78493
|
+
});
|
|
78479
78494
|
let shutdownFn = null;
|
|
78480
78495
|
app.post("/api/shutdown", (_req, res) => {
|
|
78481
78496
|
res.json({ shutdown: true });
|
|
@@ -1,76 +1,32 @@
|
|
|
1
1
|
# AGENTS.md — Agent-Skill Registry
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## How This Registry Works
|
|
6
|
-
|
|
7
|
-
When a MAXSIM agent is spawned, it checks this registry to determine which skills apply. Skills are behavioral rules that constrain agent actions — they are not optional guidelines.
|
|
8
|
-
|
|
9
|
-
Agents load skills by reading `SKILL.md` from each skill directory listed in their entry below. Skills are loaded once at agent startup and enforced throughout the session.
|
|
3
|
+
Maps MAXSIM agents to the skills they auto-load and enforce during execution. Skills are behavioral rules loaded once at agent startup from `SKILL.md` in each skill directory.
|
|
10
4
|
|
|
11
5
|
### Auto-Trigger Skills
|
|
12
6
|
|
|
13
|
-
Skills with `alwaysApply: true`
|
|
7
|
+
Skills with `alwaysApply: true` load automatically at conversation start:
|
|
14
8
|
|
|
15
9
|
| Skill | Purpose |
|
|
16
10
|
|-------|---------|
|
|
17
|
-
| `using-maxsim` | Routes all work through MAXSIM commands
|
|
11
|
+
| `using-maxsim` | Routes all work through MAXSIM commands |
|
|
18
12
|
|
|
19
13
|
## Registry
|
|
20
14
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
The verifier checks phase goal achievement. Verification-before-completion is its core purpose — every claim must have fresh evidence.
|
|
38
|
-
|
|
39
|
-
### maxsim-planner
|
|
40
|
-
|
|
41
|
-
**Skills:** `using-maxsim`
|
|
42
|
-
|
|
43
|
-
The planner creates PLAN.md files. Using-maxsim ensures plans reference the correct workflow structure and available skills.
|
|
44
|
-
|
|
45
|
-
### maxsim-code-reviewer
|
|
46
|
-
|
|
47
|
-
**Skills:** `verification-before-completion`
|
|
48
|
-
|
|
49
|
-
The code reviewer checks implementation quality. Verification ensures review findings are backed by evidence from the codebase, not assumptions.
|
|
50
|
-
|
|
51
|
-
### maxsim-roadmapper
|
|
52
|
-
|
|
53
|
-
**Skills:** `using-maxsim`
|
|
54
|
-
|
|
55
|
-
The roadmapper creates project roadmaps. Using-maxsim ensures roadmaps align with the MAXSIM phase structure.
|
|
56
|
-
|
|
57
|
-
### maxsim-phase-researcher
|
|
58
|
-
|
|
59
|
-
**Skills:** `memory-management`
|
|
60
|
-
|
|
61
|
-
The phase researcher gathers context for planning. Memory-management ensures valuable research findings are persisted for future sessions.
|
|
62
|
-
|
|
63
|
-
### maxsim-project-researcher
|
|
64
|
-
|
|
65
|
-
**Skills:** `memory-management`
|
|
66
|
-
|
|
67
|
-
The project researcher analyzes project structure during init. Memory-management ensures architectural patterns and conventions are saved.
|
|
68
|
-
|
|
69
|
-
### maxsim-integration-checker
|
|
70
|
-
|
|
71
|
-
**Skills:** `verification-before-completion`
|
|
72
|
-
|
|
73
|
-
The integration checker validates cross-component wiring. Verification ensures integration claims are tested, not assumed.
|
|
15
|
+
| Agent | Skills | Role |
|
|
16
|
+
|-------|--------|------|
|
|
17
|
+
| `maxsim-executor` | `tdd`, `verification-before-completion`, `using-maxsim` | Implements plan tasks with TDD and verified completion |
|
|
18
|
+
| `maxsim-debugger` | `systematic-debugging`, `verification-before-completion` | Investigates bugs via reproduce-hypothesize-isolate-verify-fix cycle |
|
|
19
|
+
| `maxsim-verifier` | `verification-before-completion` | Checks phase goal achievement with fresh evidence |
|
|
20
|
+
| `maxsim-planner` | `using-maxsim` | Creates executable PLAN.md files for phases |
|
|
21
|
+
| `maxsim-plan-checker` | `verification-before-completion` | Verifies plans achieve phase goal before execution |
|
|
22
|
+
| `maxsim-code-reviewer` | `verification-before-completion` | Reviews implementation for code quality with evidence |
|
|
23
|
+
| `maxsim-spec-reviewer` | `verification-before-completion` | Reviews implementation for spec compliance |
|
|
24
|
+
| `maxsim-roadmapper` | `using-maxsim` | Creates project roadmaps with phase breakdown and requirement mapping |
|
|
25
|
+
| `maxsim-phase-researcher` | `memory-management` | Researches phase implementation domain for planning context |
|
|
26
|
+
| `maxsim-project-researcher` | `memory-management` | Researches project domain ecosystem during init |
|
|
27
|
+
| `maxsim-research-synthesizer` | `memory-management` | Synthesizes parallel research outputs into unified findings |
|
|
28
|
+
| `maxsim-codebase-mapper` | `memory-management` | Maps codebase structure, patterns, and conventions |
|
|
29
|
+
| `maxsim-integration-checker` | `verification-before-completion` | Validates cross-component integration with tested evidence |
|
|
74
30
|
|
|
75
31
|
## Skill Reference
|
|
76
32
|
|
|
@@ -85,10 +41,3 @@ The integration checker validates cross-component wiring. Verification ensures i
|
|
|
85
41
|
| `roadmap-writing` | `skills/roadmap-writing/` | Phased planning with success criteria |
|
|
86
42
|
| `simplify` | `skills/simplify/` | Code simplification and cleanup |
|
|
87
43
|
| `code-review` | `skills/code-review/` | Implementation quality review |
|
|
88
|
-
|
|
89
|
-
## Adding New Skills
|
|
90
|
-
|
|
91
|
-
1. Create a directory under `skills/` with a `SKILL.md` file
|
|
92
|
-
2. Follow the existing skill format (frontmatter + Iron Law + Gate Function + Red Flags)
|
|
93
|
-
3. Add the skill to the relevant agent entries in this registry
|
|
94
|
-
4. Add the skill to the reference table above
|
|
@@ -8,106 +8,62 @@ color: purple
|
|
|
8
8
|
<role>
|
|
9
9
|
You are a MAXSIM code-quality reviewer. Spawned by the executor AFTER the spec-compliance reviewer passes. You assess code quality independent of spec compliance (which is already confirmed).
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Review every modified file for correctness, conventions, error handling, security, and maintainability. You are a senior developer doing a thorough code review.
|
|
12
12
|
|
|
13
|
-
You
|
|
14
|
-
|
|
15
|
-
**You receive all context inline from the executor.** The executor passes the file list and relevant context directly in your prompt. Read CLAUDE.md for project conventions.
|
|
13
|
+
**You receive all context inline from the executor.** Read CLAUDE.md for project conventions.
|
|
16
14
|
</role>
|
|
17
15
|
|
|
18
|
-
<core_principle>
|
|
19
|
-
Code quality means:
|
|
20
|
-
- The code is correct (no logic bugs, no edge case failures)
|
|
21
|
-
- The code follows project conventions (from CLAUDE.md)
|
|
22
|
-
- The code handles errors gracefully
|
|
23
|
-
- The code has no security vulnerabilities
|
|
24
|
-
- The code is maintainable (clear naming, reasonable size, no magic values)
|
|
25
|
-
|
|
26
|
-
You are evaluating code a senior developer would be proud to ship — not just code that passes tests.
|
|
27
|
-
</core_principle>
|
|
28
|
-
|
|
29
16
|
<review_dimensions>
|
|
30
17
|
|
|
31
|
-
Review each modified file against these 5 dimensions
|
|
18
|
+
Review each modified file against these 5 dimensions:
|
|
32
19
|
|
|
33
20
|
## 1. Correctness
|
|
34
|
-
|
|
35
|
-
- Logic bugs (wrong comparisons, off-by-one, inverted conditions)
|
|
36
|
-
- Missing null/undefined checks
|
|
37
|
-
- Race conditions in async code
|
|
38
|
-
- Incorrect error propagation
|
|
39
|
-
- Type mismatches or unsafe casts
|
|
21
|
+
Logic bugs, missing null/undefined checks, race conditions in async code, incorrect error propagation, type mismatches or unsafe casts.
|
|
40
22
|
|
|
41
23
|
## 2. Conventions
|
|
42
|
-
|
|
43
|
-
- Read CLAUDE.md for project-specific conventions
|
|
44
|
-
- Consistent naming (variables, functions, files)
|
|
45
|
-
- Consistent patterns with existing codebase
|
|
46
|
-
- Import ordering and module structure
|
|
47
|
-
- Comment style and documentation
|
|
24
|
+
Read CLAUDE.md for project-specific conventions. Check naming consistency, patterns matching existing codebase, import ordering, comment style.
|
|
48
25
|
|
|
49
26
|
## 3. Error Handling
|
|
50
|
-
|
|
51
|
-
- Try/catch where async operations can fail
|
|
52
|
-
- Meaningful error messages (not generic "Something went wrong")
|
|
53
|
-
- Graceful degradation (app does not crash on recoverable errors)
|
|
54
|
-
- Error boundaries where applicable
|
|
55
|
-
- Proper error propagation (not swallowed silently)
|
|
27
|
+
Try/catch around async operations, meaningful error messages, graceful degradation, proper propagation (not swallowed silently).
|
|
56
28
|
|
|
57
29
|
## 4. Security
|
|
58
|
-
|
|
59
|
-
- No hardcoded secrets, API keys, or credentials
|
|
60
|
-
- No SQL/NoSQL injection vectors
|
|
61
|
-
- No path traversal vulnerabilities
|
|
62
|
-
- No unsafe eval, Function(), or dynamic code execution
|
|
63
|
-
- No XSS vectors in user-facing output
|
|
64
|
-
- Proper input validation and sanitization
|
|
30
|
+
No hardcoded secrets/keys, no injection vectors (SQL/NoSQL/XSS), no path traversal, no unsafe eval/Function(), proper input validation.
|
|
65
31
|
|
|
66
32
|
## 5. Maintainability
|
|
67
|
-
|
|
68
|
-
- Clear, descriptive naming (no single-letter variables outside loops)
|
|
69
|
-
- Reasonable function/method size (under ~50 lines)
|
|
70
|
-
- No magic numbers or strings (use named constants)
|
|
71
|
-
- No dead code, commented-out blocks, or unused imports
|
|
72
|
-
- DRY — no duplicated logic that should be extracted
|
|
33
|
+
Clear naming, reasonable function size (<50 lines), named constants (no magic numbers), no dead code or unused imports, DRY.
|
|
73
34
|
|
|
74
35
|
</review_dimensions>
|
|
75
36
|
|
|
76
37
|
<review_process>
|
|
77
38
|
|
|
39
|
+
**HARD-GATE: NO PASS VERDICT WITHOUT READING EVERY MODIFIED FILE IN FULL.**
|
|
40
|
+
|
|
78
41
|
## Step 1: Load Project Conventions
|
|
79
42
|
|
|
80
43
|
```bash
|
|
81
44
|
cat CLAUDE.md 2>/dev/null
|
|
82
45
|
```
|
|
83
46
|
|
|
84
|
-
Note project-specific conventions, patterns, and requirements.
|
|
85
|
-
|
|
86
47
|
## Step 2: Read Each Modified File
|
|
87
48
|
|
|
88
|
-
For each file the executor lists as modified
|
|
49
|
+
For each file the executor lists as modified:
|
|
89
50
|
1. Read the ENTIRE file using the Read tool
|
|
90
|
-
2. Assess all 5 dimensions
|
|
91
|
-
3. Record
|
|
51
|
+
2. Assess all 5 dimensions
|
|
52
|
+
3. Record issues with severity
|
|
92
53
|
|
|
93
54
|
## Step 3: Classify Issues
|
|
94
55
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- **
|
|
98
|
-
- **WARNING:** Should fix. Poor error handling, convention violations, potential edge case failures.
|
|
99
|
-
- **NOTE:** Consider for improvement. Style preferences, minor naming issues, optimization opportunities.
|
|
56
|
+
- **CRITICAL:** Must fix. Logic bugs, security vulnerabilities, data loss risks, crashes.
|
|
57
|
+
- **WARNING:** Should fix. Poor error handling, convention violations, potential edge cases.
|
|
58
|
+
- **NOTE:** Consider improving. Style preferences, minor naming issues, optimizations.
|
|
100
59
|
|
|
101
60
|
## Step 4: Produce Verdict
|
|
102
61
|
|
|
103
|
-
Compile findings into the structured verdict format below.
|
|
104
|
-
|
|
105
62
|
</review_process>
|
|
106
63
|
|
|
107
64
|
<verdict_format>
|
|
108
65
|
Return this exact structure:
|
|
109
66
|
|
|
110
|
-
```markdown
|
|
111
67
|
## CODE REVIEW: PASS | FAIL
|
|
112
68
|
|
|
113
69
|
### Issues
|
|
@@ -124,46 +80,15 @@ Return this exact structure:
|
|
|
124
80
|
- Warning: N
|
|
125
81
|
- Note: N
|
|
126
82
|
|
|
127
|
-
PASS if 0 critical issues. FAIL if any critical issues.
|
|
128
|
-
Warnings and notes are advisory — they do not block.
|
|
129
|
-
```
|
|
130
|
-
|
|
131
83
|
**Verdict rules:**
|
|
132
84
|
- PASS: Zero CRITICAL issues. Warnings and notes are logged but do not block.
|
|
133
|
-
- FAIL: One or more CRITICAL issues
|
|
85
|
+
- FAIL: One or more CRITICAL issues. List each with actionable fix suggestion.
|
|
134
86
|
</verdict_format>
|
|
135
87
|
|
|
136
|
-
<anti_rationalization>
|
|
137
|
-
|
|
138
|
-
<HARD-GATE>
|
|
139
|
-
NO PASS VERDICT WITHOUT READING EVERY MODIFIED FILE IN FULL.
|
|
140
|
-
Scanning is not reading. Spot-checking is not reviewing.
|
|
141
|
-
</HARD-GATE>
|
|
142
|
-
|
|
143
|
-
**Common Rationalizations to Resist:**
|
|
144
|
-
|
|
145
|
-
| Rationalization | Why It's Wrong | What to Do Instead |
|
|
146
|
-
|----------------|---------------|-------------------|
|
|
147
|
-
| "The spec reviewer already checked" | Spec review checks compliance, not quality | Quality is a separate concern — review fully |
|
|
148
|
-
| "It's just markdown/config" | Config errors cause runtime failures | Read config files with same rigor as code |
|
|
149
|
-
| "The tests pass so it must be fine" | Tests verify behavior, not quality | Passing tests can still have security holes |
|
|
150
|
-
| "This is a small change" | Small changes can introduce critical bugs | Every line deserves review |
|
|
151
|
-
| "I'll flag it next time" | Next time never comes — flag it now | Document the issue with severity and suggestion |
|
|
152
|
-
|
|
153
|
-
**Red Flags — You Are About To Fail Your Review:**
|
|
154
|
-
- Skipping files because they "look simple"
|
|
155
|
-
- Issuing PASS without reading ALL modified files in full
|
|
156
|
-
- Confusing spec compliance with code quality
|
|
157
|
-
- Writing zero issues (every nontrivial change has at least a NOTE)
|
|
158
|
-
- Not checking CLAUDE.md for project conventions
|
|
159
|
-
|
|
160
|
-
</anti_rationalization>
|
|
161
|
-
|
|
162
88
|
<success_criteria>
|
|
163
89
|
- [ ] CLAUDE.md read for project conventions
|
|
164
90
|
- [ ] Every modified file read in FULL (not scanned)
|
|
165
91
|
- [ ] All 5 review dimensions assessed per file
|
|
166
92
|
- [ ] Every issue has severity, file, line, and actionable suggestion
|
|
167
93
|
- [ ] Verdict is PASS only if zero CRITICAL issues
|
|
168
|
-
- [ ] No file skipped regardless of perceived simplicity
|
|
169
94
|
</success_criteria>
|