@holdpoint/cli 0.1.0-alpha.2 → 0.1.0-alpha.20
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/chunk-COPLLMYJ.js +496 -0
- package/dist/chunk-COPLLMYJ.js.map +1 -0
- package/dist/index.js +1588 -603
- package/dist/index.js.map +1 -1
- package/dist/init-FNQ5GQBD.js +8 -0
- package/dist/init-FNQ5GQBD.js.map +1 -0
- package/dist/prompt-EQ5IFADN.js +23 -0
- package/dist/prompt-EQ5IFADN.js.map +1 -0
- package/dist/templates/HOLDPOINT_PREREQUISITES.md +10 -0
- package/dist/templates/HOLDPOINT_REFERENCE.md +372 -0
- package/dist/templates/MASTER_PROMPT.md +25 -295
- package/dist/templates/default.yaml +249 -0
- package/package.json +16 -14
- package/dist/builder-ui/assets/index-BxfWKnb5.js +0 -437
- package/dist/builder-ui/assets/index-BxfWKnb5.js.map +0 -1
- package/dist/builder-ui/assets/index-DkLHZ-in.css +0 -1
- package/dist/builder-ui/favicon.svg +0 -10
- package/dist/builder-ui/index.html +0 -14
- package/dist/templates/_base.yaml +0 -52
- package/dist/templates/fullstack.yaml +0 -93
- package/dist/templates/go.yaml +0 -60
- package/dist/templates/nextjs.yaml +0 -76
- package/dist/templates/python.yaml +0 -60
- package/dist/templates/typescript.yaml +0 -55
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}/*! tailwindcss v4.3.0 | 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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-lime-300:oklch(89.7% .196 126.665);--color-lime-400:oklch(84.1% .238 128.85);--color-lime-500:oklch(76.8% .233 130.85);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-pink-300:oklch(82.3% .12 346.018);--color-pink-400:oklch(71.8% .202 349.761);--color-pink-500:oklch(65.6% .241 354.308);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-500:oklch(55.4% .046 257.417);--color-stone-300:oklch(86.9% .005 56.366);--color-stone-400:oklch(70.9% .01 56.259);--color-stone-500:oklch(55.3% .013 58.071);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--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-base:1rem;--text-base--line-height: 1.5 ;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-snug:1.375;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--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-canvas:#0b0f14;--color-node:#14181f;--color-node-border:#1f252e;--color-accent:#e04e2a;--color-bone:#f5f1e8;--color-stone:#7a8089;--animate-edge-pulse:edge-pulse 2s ease-in-out infinite}}@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}*{box-sizing:border-box}body{background:var(--color-canvas);color:var(--color-bone);height:100vh;margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;overflow:hidden}#root{flex-direction:column;height:100vh;display:flex}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.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-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:calc(var(--spacing) * 48)}.w-1{width:calc(var(--spacing) * 1)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-10{width:calc(var(--spacing) * 10)}.w-80{width:calc(var(--spacing) * 80)}.w-full{width:100%}.w-px{width:1px}.max-w-4xl{max-width:var(--container-4xl)}.max-w-\[240px\]{max-width:240px}.max-w-\[320px\]{max-width:320px}.max-w-md{max-width:var(--container-md)}.min-w-\[180px\]{min-width:180px}.min-w-\[220px\]{min-width:220px}.min-w-\[260px\]{min-width:260px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.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-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)}: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-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-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-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.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-xl{border-radius:var(--radius-xl)}.\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.\!border-canvas{border-color:var(--color-canvas)!important}.border-accent\/30{border-color:#e04e2a4d}@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:#e04e2a66}@supports (color:color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/25{border-color:color-mix(in oklab,var(--color-amber-500) 25%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.border-cyan-500\/30{border-color:#00b7d74d}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/30{border-color:color-mix(in oklab,var(--color-cyan-500) 30%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-green-500\/25{border-color:#00c75840}@supports (color:color-mix(in lab,red,red)){.border-green-500\/25{border-color:color-mix(in oklab,var(--color-green-500) 25%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-lime-500\/30{border-color:#80cd004d}@supports (color:color-mix(in lab,red,red)){.border-lime-500\/30{border-color:color-mix(in oklab,var(--color-lime-500) 30%,transparent)}}.border-node-border{border-color:var(--color-node-border)}.border-orange-400\/30{border-color:#ff8b1a4d}@supports (color:color-mix(in lab,red,red)){.border-orange-400\/30{border-color:color-mix(in oklab,var(--color-orange-400) 30%,transparent)}}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500) 30%,transparent)}}.border-pink-500\/30{border-color:#f6339a4d}@supports (color:color-mix(in lab,red,red)){.border-pink-500\/30{border-color:color-mix(in oklab,var(--color-pink-500) 30%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.border-stone-500\/30{border-color:#79716b4d}@supports (color:color-mix(in lab,red,red)){.border-stone-500\/30{border-color:color-mix(in oklab,var(--color-stone-500) 30%,transparent)}}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500) 30%,transparent)}}.border-l-yellow-500{border-left-color:var(--color-yellow-500)}.\!bg-accent{background-color:var(--color-accent)!important}.\!bg-green-500{background-color:var(--color-green-500)!important}.\!bg-red-500{background-color:var(--color-red-500)!important}.\!bg-sky-400{background-color:var(--color-sky-400)!important}.\!bg-yellow-500{background-color:var(--color-yellow-500)!important}.bg-accent{background-color:var(--color-accent)}.bg-accent\/10{background-color:#e04e2a1a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/20{background-color:#e04e2a33}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500) 20%,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-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-canvas{background-color:var(--color-canvas)}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500) 10%,transparent)}}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500) 20%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-indigo-500\/20{background-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/20{background-color:color-mix(in oklab,var(--color-indigo-500) 20%,transparent)}}.bg-lime-500\/10{background-color:#80cd001a}@supports (color:color-mix(in lab,red,red)){.bg-lime-500\/10{background-color:color-mix(in oklab,var(--color-lime-500) 10%,transparent)}}.bg-lime-500\/20{background-color:#80cd0033}@supports (color:color-mix(in lab,red,red)){.bg-lime-500\/20{background-color:color-mix(in oklab,var(--color-lime-500) 20%,transparent)}}.bg-node{background-color:var(--color-node)}.bg-node-border{background-color:var(--color-node-border)}.bg-orange-400\/10{background-color:#ff8b1a1a}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/10{background-color:color-mix(in oklab,var(--color-orange-400) 10%,transparent)}}.bg-orange-400\/20{background-color:#ff8b1a33}@supports (color:color-mix(in lab,red,red)){.bg-orange-400\/20{background-color:color-mix(in oklab,var(--color-orange-400) 20%,transparent)}}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500) 10%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.bg-pink-500\/10{background-color:#f6339a1a}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/10{background-color:color-mix(in oklab,var(--color-pink-500) 10%,transparent)}}.bg-pink-500\/20{background-color:#f6339a33}@supports (color:color-mix(in lab,red,red)){.bg-pink-500\/20{background-color:color-mix(in oklab,var(--color-pink-500) 20%,transparent)}}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500) 10%,transparent)}}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.bg-sky-500\/15{background-color:#00a5ef26}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/15{background-color:color-mix(in oklab,var(--color-sky-500) 15%,transparent)}}.bg-sky-500\/20{background-color:#00a5ef33}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/20{background-color:color-mix(in oklab,var(--color-sky-500) 20%,transparent)}}.bg-slate-500\/20{background-color:#62748e33}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/20{background-color:color-mix(in oklab,var(--color-slate-500) 20%,transparent)}}.bg-stone-500\/10{background-color:#79716b1a}@supports (color:color-mix(in lab,red,red)){.bg-stone-500\/10{background-color:color-mix(in oklab,var(--color-stone-500) 10%,transparent)}}.bg-stone-500\/20{background-color:#79716b33}@supports (color:color-mix(in lab,red,red)){.bg-stone-500\/20{background-color:color-mix(in oklab,var(--color-stone-500) 20%,transparent)}}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.fill-node-border{fill:var(--color-node-border)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.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-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.text-accent{color:var(--color-accent)}.text-amber-300{color:var(--color-amber-300)}.text-amber-400{color:var(--color-amber-400)}.text-amber-500\/50{color:#f99c0080}@supports (color:color-mix(in lab,red,red)){.text-amber-500\/50{color:color-mix(in oklab,var(--color-amber-500) 50%,transparent)}}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-bone{color:var(--color-bone)}.text-cyan-300{color:var(--color-cyan-300)}.text-cyan-400{color:var(--color-cyan-400)}.text-emerald-300{color:var(--color-emerald-300)}.text-emerald-400{color:var(--color-emerald-400)}.text-green-300{color:var(--color-green-300)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-500\/50{color:#00c75880}@supports (color:color-mix(in lab,red,red)){.text-green-500\/50{color:color-mix(in oklab,var(--color-green-500) 50%,transparent)}}.text-indigo-300{color:var(--color-indigo-300)}.text-lime-300{color:var(--color-lime-300)}.text-lime-400{color:var(--color-lime-400)}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-pink-300{color:var(--color-pink-300)}.text-pink-400{color:var(--color-pink-400)}.text-purple-300{color:var(--color-purple-300)}.text-purple-400{color:var(--color-purple-400)}.text-red-300{color:var(--color-red-300)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-rose-300{color:var(--color-rose-300)}.text-rose-400{color:var(--color-rose-400)}.text-sky-300{color:var(--color-sky-300)}.text-sky-400{color:var(--color-sky-400)}.text-slate-300{color:var(--color-slate-300)}.text-stone{color:var(--color-stone)}.text-stone-300{color:var(--color-stone-300)}.text-stone-400{color:var(--color-stone-400)}.text-stone\/30{color:#7a80894d}@supports (color:color-mix(in lab,red,red)){.text-stone\/30{color:color-mix(in oklab,var(--color-stone) 30%,transparent)}}.text-stone\/50{color:#7a808980}@supports (color:color-mix(in lab,red,red)){.text-stone\/50{color:color-mix(in oklab,var(--color-stone) 50%,transparent)}}.text-stone\/70{color:#7a8089b3}@supports (color:color-mix(in lab,red,red)){.text-stone\/70{color:color-mix(in oklab,var(--color-stone) 70%,transparent)}}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-400\/60{color:#fac80099}@supports (color:color-mix(in lab,red,red)){.text-yellow-400\/60{color:color-mix(in oklab,var(--color-yellow-400) 60%,transparent)}}.text-yellow-400\/80{color:#fac800cc}@supports (color:color-mix(in lab,red,red)){.text-yellow-400\/80{color:color-mix(in oklab,var(--color-yellow-400) 80%,transparent)}}.text-yellow-500\/80{color:#edb200cc}@supports (color:color-mix(in lab,red,red)){.text-yellow-500\/80{color:color-mix(in oklab,var(--color-yellow-500) 80%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.placeholder-stone\/40::placeholder{color:#7a808966}@supports (color:color-mix(in lab,red,red)){.placeholder-stone\/40::placeholder{color:color-mix(in oklab,var(--color-stone) 40%,transparent)}}.opacity-0{opacity:0}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);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-md{--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)}.ring-2{--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)}.ring-accent{--tw-ring-color:var(--color-accent)}.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-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,)}.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))}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-amber-500\/45:hover{border-color:#f99c0073}@supports (color:color-mix(in lab,red,red)){.hover\:border-amber-500\/45:hover{border-color:color-mix(in oklab,var(--color-amber-500) 45%,transparent)}}.hover\:border-green-500\/45:hover{border-color:#00c75873}@supports (color:color-mix(in lab,red,red)){.hover\:border-green-500\/45:hover{border-color:color-mix(in oklab,var(--color-green-500) 45%,transparent)}}.hover\:bg-accent\/20:hover{background-color:#e04e2a33}@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-amber-500\/20:hover{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-amber-500\/20:hover{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.hover\:bg-green-500\/20:hover{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/20:hover{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.hover\:bg-node-border:hover{background-color:var(--color-node-border)}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500) 10%,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-sky-500\/20:hover{background-color:#00a5ef33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sky-500\/20:hover{background-color:color-mix(in oklab,var(--color-sky-500) 20%,transparent)}}.hover\:bg-yellow-500\/20:hover{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-500\/20:hover{background-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.hover\:text-bone:hover{color:var(--color-bone)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@keyframes edge-pulse{0%,to{opacity:.6}50%{opacity:1}}.react-flow__background{background-color:var(--color-canvas)}.react-flow__edge-path{stroke:var(--color-accent);stroke-width:2px;animation:var(--animate-edge-pulse)}.react-flow__edge.selected .react-flow__edge-path{stroke:#f08a6e}.react-flow__handle{background:var(--color-accent);border:2px solid var(--color-canvas);width:12px;height:12px}.react-flow__handle:hover{background:#f08a6e}.react-flow__controls{background:var(--color-node);border:1px solid var(--color-node-border);border-radius:8px;overflow:hidden}.react-flow__controls-button{background:var(--color-node);border:none;border-bottom:1px solid var(--color-node-border);color:var(--color-stone);fill:var(--color-stone)}.react-flow__controls-button:hover{background:var(--color-node-border);fill:var(--color-bone)}.react-flow__minimap{background:var(--color-node);border:1px solid var(--color-node-border);border-radius:8px}@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}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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-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}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg" fill="none">
|
|
2
|
-
<!-- Simplified mark for tiny sizes -->
|
|
3
|
-
<g stroke="#0B0F14" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.4">
|
|
4
|
-
<path d="M 2 6 L 13 14"/>
|
|
5
|
-
<path d="M 2 16 L 13 16"/>
|
|
6
|
-
<path d="M 2 26 L 13 18"/>
|
|
7
|
-
</g>
|
|
8
|
-
<rect x="12" y="11" width="6" height="10" rx="1.5" fill="#0B0F14"/>
|
|
9
|
-
<path d="M 18 16 L 30 16" stroke="#0B0F14" stroke-width="4" stroke-linecap="round"/>
|
|
10
|
-
</svg>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>holdpoint builder</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-BxfWKnb5.js"></script>
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-DkLHZ-in.css">
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<div id="root"></div>
|
|
13
|
-
</body>
|
|
14
|
-
</html>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
|
|
3
|
-
context:
|
|
4
|
-
guides: {}
|
|
5
|
-
|
|
6
|
-
conditions: []
|
|
7
|
-
|
|
8
|
-
checks:
|
|
9
|
-
- id: lint
|
|
10
|
-
label: "Lint codebase"
|
|
11
|
-
cmd: "pnpm lint --max-warnings 0"
|
|
12
|
-
|
|
13
|
-
- id: typecheck
|
|
14
|
-
label: "TypeScript type check"
|
|
15
|
-
cmd: "pnpm typecheck"
|
|
16
|
-
|
|
17
|
-
- id: jsdoc
|
|
18
|
-
label: "JSDoc on changed public functions"
|
|
19
|
-
prompt: >
|
|
20
|
-
Ensure all changed public functions, classes, and module exports have
|
|
21
|
-
accurate JSDoc comments (description + @param + @returns where applicable).
|
|
22
|
-
|
|
23
|
-
- id: changelog-update
|
|
24
|
-
label: "Add a CHANGELOG.md entry for this session"
|
|
25
|
-
prompt: >
|
|
26
|
-
Before committing, add an entry to CHANGELOG.md describing what was done.
|
|
27
|
-
Use Keep a Changelog format — add under ## [Unreleased] (create the file
|
|
28
|
-
and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
|
|
29
|
-
Be concise but specific. The entry text will serve as the commit message.
|
|
30
|
-
|
|
31
|
-
- id: readme-sync
|
|
32
|
-
label: "Update README.md if user-facing changes were made"
|
|
33
|
-
prompt: >
|
|
34
|
-
If you added, changed, or removed user-facing functionality — CLI commands,
|
|
35
|
-
configuration options, public APIs, or significant new features — update
|
|
36
|
-
README.md to reflect those changes.
|
|
37
|
-
|
|
38
|
-
- id: no-todos
|
|
39
|
-
label: "No TODO/FIXME left in changed code"
|
|
40
|
-
prompt: >
|
|
41
|
-
Scan the files you changed for any TODO, FIXME, HACK, or XXX comments.
|
|
42
|
-
Either resolve them before finishing or convert them to tracked issues.
|
|
43
|
-
Don't leave incomplete work silently behind.
|
|
44
|
-
|
|
45
|
-
- id: holdpoint-evolve
|
|
46
|
-
label: "Evolve checks when project structure changes"
|
|
47
|
-
when: structural
|
|
48
|
-
cmd: "npx @holdpoint/cli@alpha evolve"
|
|
49
|
-
|
|
50
|
-
- id: git-commit
|
|
51
|
-
label: "Commit all changes before finishing"
|
|
52
|
-
cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
|
|
3
|
-
context:
|
|
4
|
-
guides: {}
|
|
5
|
-
|
|
6
|
-
conditions:
|
|
7
|
-
- id: has-openapi
|
|
8
|
-
operator: file_exists
|
|
9
|
-
path: openapi.yaml
|
|
10
|
-
|
|
11
|
-
- id: has-playwright
|
|
12
|
-
operator: file_exists
|
|
13
|
-
path: playwright.config.ts
|
|
14
|
-
|
|
15
|
-
checks:
|
|
16
|
-
- id: lint
|
|
17
|
-
label: "ESLint — no warnings"
|
|
18
|
-
cmd: "pnpm lint --max-warnings 0"
|
|
19
|
-
|
|
20
|
-
- id: typecheck
|
|
21
|
-
label: "TypeScript type check"
|
|
22
|
-
cmd: "pnpm typecheck"
|
|
23
|
-
|
|
24
|
-
- id: unit-tests
|
|
25
|
-
label: "Vitest unit tests"
|
|
26
|
-
cmd: "pnpm test --run"
|
|
27
|
-
|
|
28
|
-
- id: backend-tests
|
|
29
|
-
label: "Backend integration tests"
|
|
30
|
-
when: backend
|
|
31
|
-
cmd: "pnpm test:integration --run"
|
|
32
|
-
|
|
33
|
-
- id: build
|
|
34
|
-
label: "Production build"
|
|
35
|
-
cmd: "pnpm build"
|
|
36
|
-
|
|
37
|
-
- id: jsdoc
|
|
38
|
-
label: "JSDoc on changed public functions"
|
|
39
|
-
prompt: >
|
|
40
|
-
All changed public functions and exports must have JSDoc.
|
|
41
|
-
|
|
42
|
-
- id: openapi-updated
|
|
43
|
-
label: "OpenAPI spec updated for API changes"
|
|
44
|
-
when: backend
|
|
45
|
-
conditionId: has-openapi
|
|
46
|
-
prompt: >
|
|
47
|
-
If any API routes were added or changed, update openapi.yaml to match.
|
|
48
|
-
|
|
49
|
-
- id: visual-regression
|
|
50
|
-
label: "Visual regression check"
|
|
51
|
-
when: frontend
|
|
52
|
-
conditionId: has-playwright
|
|
53
|
-
prompt: >
|
|
54
|
-
Run playwright tests for any UI changes: `pnpm playwright test`
|
|
55
|
-
Review screenshots for regressions.
|
|
56
|
-
|
|
57
|
-
- id: i18n
|
|
58
|
-
label: "i18n — no hardcoded user-facing strings"
|
|
59
|
-
when: frontend
|
|
60
|
-
prompt: >
|
|
61
|
-
Confirm all user-visible strings are wrapped in t() and locale files updated.
|
|
62
|
-
|
|
63
|
-
- id: db-migrations
|
|
64
|
-
label: "Database migration for schema changes"
|
|
65
|
-
when: database
|
|
66
|
-
prompt: >
|
|
67
|
-
If schema or migration files changed, ensure the appropriate migration was
|
|
68
|
-
generated with your ORM tool (e.g. `prisma migrate dev`, `alembic revision`,
|
|
69
|
-
`rails db:migrate`) and committed alongside the schema change.
|
|
70
|
-
|
|
71
|
-
- id: changelog-update
|
|
72
|
-
label: "Add a CHANGELOG.md entry for this session"
|
|
73
|
-
prompt: >
|
|
74
|
-
Before committing, add an entry to CHANGELOG.md describing what was done.
|
|
75
|
-
Use Keep a Changelog format — add under ## [Unreleased] (create the file
|
|
76
|
-
and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
|
|
77
|
-
Be concise but specific. The entry text will serve as the commit message.
|
|
78
|
-
|
|
79
|
-
- id: readme-sync
|
|
80
|
-
label: "Update README.md if user-facing changes were made"
|
|
81
|
-
prompt: >
|
|
82
|
-
If you added, changed, or removed user-facing functionality — CLI commands,
|
|
83
|
-
configuration options, public APIs, or significant new features — update
|
|
84
|
-
README.md to reflect those changes.
|
|
85
|
-
|
|
86
|
-
- id: holdpoint-evolve
|
|
87
|
-
label: "Evolve checks when project structure changes"
|
|
88
|
-
when: structural
|
|
89
|
-
cmd: "npx @holdpoint/cli@alpha evolve"
|
|
90
|
-
|
|
91
|
-
- id: git-commit
|
|
92
|
-
label: "Commit all changes before finishing"
|
|
93
|
-
cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
|
package/dist/templates/go.yaml
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
|
|
3
|
-
context:
|
|
4
|
-
guides: {}
|
|
5
|
-
|
|
6
|
-
conditions: []
|
|
7
|
-
|
|
8
|
-
checks:
|
|
9
|
-
- id: go-build
|
|
10
|
-
label: "go build — no compilation errors"
|
|
11
|
-
when: go
|
|
12
|
-
cmd: "go build ./..."
|
|
13
|
-
|
|
14
|
-
- id: go-vet
|
|
15
|
-
label: "go vet — no suspicious constructs"
|
|
16
|
-
when: go
|
|
17
|
-
cmd: "go vet ./..."
|
|
18
|
-
|
|
19
|
-
- id: go-test
|
|
20
|
-
label: "go test — all unit tests pass"
|
|
21
|
-
when: go
|
|
22
|
-
cmd: "go test ./..."
|
|
23
|
-
|
|
24
|
-
- id: godoc
|
|
25
|
-
label: "GoDoc on exported symbols"
|
|
26
|
-
when: go
|
|
27
|
-
prompt: >
|
|
28
|
-
Ensure all exported functions, types, methods, and packages have GoDoc
|
|
29
|
-
comments (one-line summary starting on the same line as the declaration).
|
|
30
|
-
|
|
31
|
-
- id: test-coverage
|
|
32
|
-
label: "Meaningful test coverage for new logic"
|
|
33
|
-
when: testing
|
|
34
|
-
prompt: >
|
|
35
|
-
Confirm any new non-trivial logic has corresponding unit tests in
|
|
36
|
-
*_test.go files in the same package.
|
|
37
|
-
|
|
38
|
-
- id: changelog-update
|
|
39
|
-
label: "Add a CHANGELOG.md entry for this session"
|
|
40
|
-
prompt: >
|
|
41
|
-
Before committing, add an entry to CHANGELOG.md describing what was done.
|
|
42
|
-
Use Keep a Changelog format — add under ## [Unreleased] (create the file
|
|
43
|
-
and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
|
|
44
|
-
Be concise but specific. The entry text will serve as the commit message.
|
|
45
|
-
|
|
46
|
-
- id: readme-sync
|
|
47
|
-
label: "Update README.md if user-facing changes were made"
|
|
48
|
-
prompt: >
|
|
49
|
-
If you added, changed, or removed user-facing functionality — CLI commands,
|
|
50
|
-
configuration options, public APIs, or significant new features — update
|
|
51
|
-
README.md to reflect those changes.
|
|
52
|
-
|
|
53
|
-
- id: holdpoint-evolve
|
|
54
|
-
label: "Evolve checks when project structure changes"
|
|
55
|
-
when: structural
|
|
56
|
-
cmd: "npx @holdpoint/cli@alpha evolve"
|
|
57
|
-
|
|
58
|
-
- id: git-commit
|
|
59
|
-
label: "Commit all changes before finishing"
|
|
60
|
-
cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
|
|
3
|
-
context:
|
|
4
|
-
guides: {}
|
|
5
|
-
|
|
6
|
-
conditions:
|
|
7
|
-
- id: has-openapi
|
|
8
|
-
operator: file_exists
|
|
9
|
-
path: openapi.yaml
|
|
10
|
-
|
|
11
|
-
checks:
|
|
12
|
-
- id: lint
|
|
13
|
-
label: "ESLint — no warnings"
|
|
14
|
-
cmd: "pnpm lint --max-warnings 0"
|
|
15
|
-
|
|
16
|
-
- id: typecheck
|
|
17
|
-
label: "TypeScript type check"
|
|
18
|
-
cmd: "pnpm typecheck"
|
|
19
|
-
|
|
20
|
-
- id: unit-tests
|
|
21
|
-
label: "Vitest unit tests"
|
|
22
|
-
cmd: "pnpm test --run"
|
|
23
|
-
|
|
24
|
-
- id: build
|
|
25
|
-
label: "Next.js production build"
|
|
26
|
-
cmd: "pnpm build"
|
|
27
|
-
|
|
28
|
-
- id: jsdoc
|
|
29
|
-
label: "JSDoc on changed public functions"
|
|
30
|
-
prompt: >
|
|
31
|
-
Ensure all changed public functions and exports have JSDoc comments.
|
|
32
|
-
|
|
33
|
-
- id: visual-regression
|
|
34
|
-
label: "Visual regression check"
|
|
35
|
-
when: frontend
|
|
36
|
-
prompt: >
|
|
37
|
-
For any UI changes, confirm the layout is correct at 1280px desktop,
|
|
38
|
-
768px tablet, and 375px mobile breakpoints.
|
|
39
|
-
|
|
40
|
-
- id: i18n
|
|
41
|
-
label: "i18n — no hardcoded strings"
|
|
42
|
-
when: frontend
|
|
43
|
-
prompt: >
|
|
44
|
-
Ensure all user-visible text is wrapped in the t() translation function
|
|
45
|
-
and has corresponding entries in all locale files.
|
|
46
|
-
|
|
47
|
-
- id: openapi-updated
|
|
48
|
-
label: "OpenAPI spec updated for API changes"
|
|
49
|
-
when: backend
|
|
50
|
-
conditionId: has-openapi
|
|
51
|
-
prompt: >
|
|
52
|
-
If any API routes were added or changed, confirm the openapi.yaml
|
|
53
|
-
spec has been updated to match.
|
|
54
|
-
|
|
55
|
-
- id: changelog-update
|
|
56
|
-
label: "Add a CHANGELOG.md entry for this session"
|
|
57
|
-
prompt: >
|
|
58
|
-
Before committing, add an entry to CHANGELOG.md describing what was done.
|
|
59
|
-
Use Keep a Changelog format — add under ## [Unreleased] (create the file
|
|
60
|
-
and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
|
|
61
|
-
Be concise but specific. The entry text will serve as the commit message.
|
|
62
|
-
|
|
63
|
-
- id: readme-sync
|
|
64
|
-
label: "Update README.md if user-facing changes were made"
|
|
65
|
-
prompt: >
|
|
66
|
-
If you added, changed, or removed user-facing functionality — pages, features,
|
|
67
|
-
or configuration options — update README.md to reflect those changes.
|
|
68
|
-
|
|
69
|
-
- id: holdpoint-evolve
|
|
70
|
-
label: "Evolve checks when project structure changes"
|
|
71
|
-
when: structural
|
|
72
|
-
cmd: "npx @holdpoint/cli@alpha evolve"
|
|
73
|
-
|
|
74
|
-
- id: git-commit
|
|
75
|
-
label: "Commit all changes before finishing"
|
|
76
|
-
cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
|
|
3
|
-
context:
|
|
4
|
-
guides: {}
|
|
5
|
-
|
|
6
|
-
conditions: []
|
|
7
|
-
|
|
8
|
-
checks:
|
|
9
|
-
- id: ruff
|
|
10
|
-
label: "Ruff linter"
|
|
11
|
-
when: python
|
|
12
|
-
cmd: "ruff check ."
|
|
13
|
-
|
|
14
|
-
- id: mypy
|
|
15
|
-
label: "Mypy type check"
|
|
16
|
-
when: python
|
|
17
|
-
cmd: "mypy . --ignore-missing-imports"
|
|
18
|
-
|
|
19
|
-
- id: pytest
|
|
20
|
-
label: "pytest"
|
|
21
|
-
when: python
|
|
22
|
-
cmd: "pytest --tb=short -q"
|
|
23
|
-
|
|
24
|
-
- id: docstrings
|
|
25
|
-
label: "Docstrings on changed functions"
|
|
26
|
-
when: python
|
|
27
|
-
prompt: >
|
|
28
|
-
Ensure all changed public functions and classes have PEP-257 compliant
|
|
29
|
-
docstrings (one-line summary + extended description where needed).
|
|
30
|
-
|
|
31
|
-
- id: type-hints
|
|
32
|
-
label: "Type hints on new functions"
|
|
33
|
-
when: python
|
|
34
|
-
prompt: >
|
|
35
|
-
Confirm that all new functions have complete type annotations on
|
|
36
|
-
all parameters and return values.
|
|
37
|
-
|
|
38
|
-
- id: changelog-update
|
|
39
|
-
label: "Add a CHANGELOG.md entry for this session"
|
|
40
|
-
prompt: >
|
|
41
|
-
Before committing, add an entry to CHANGELOG.md describing what was done.
|
|
42
|
-
Use Keep a Changelog format — add under ## [Unreleased] (create the file
|
|
43
|
-
and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
|
|
44
|
-
Be concise but specific. The entry text will serve as the commit message.
|
|
45
|
-
|
|
46
|
-
- id: readme-sync
|
|
47
|
-
label: "Update README.md if user-facing changes were made"
|
|
48
|
-
prompt: >
|
|
49
|
-
If you added, changed, or removed user-facing functionality — CLI commands,
|
|
50
|
-
configuration options, public APIs, or significant new features — update
|
|
51
|
-
README.md to reflect those changes.
|
|
52
|
-
|
|
53
|
-
- id: holdpoint-evolve
|
|
54
|
-
label: "Evolve checks when project structure changes"
|
|
55
|
-
when: structural
|
|
56
|
-
cmd: "npx @holdpoint/cli@alpha evolve"
|
|
57
|
-
|
|
58
|
-
- id: git-commit
|
|
59
|
-
label: "Commit all changes before finishing"
|
|
60
|
-
cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
version: 1
|
|
2
|
-
|
|
3
|
-
context:
|
|
4
|
-
guides: {}
|
|
5
|
-
|
|
6
|
-
conditions: []
|
|
7
|
-
|
|
8
|
-
checks:
|
|
9
|
-
- id: lint
|
|
10
|
-
label: "ESLint — no warnings"
|
|
11
|
-
cmd: "pnpm lint --max-warnings 0"
|
|
12
|
-
|
|
13
|
-
- id: typecheck
|
|
14
|
-
label: "TypeScript type check"
|
|
15
|
-
cmd: "pnpm typecheck"
|
|
16
|
-
|
|
17
|
-
- id: unit-tests
|
|
18
|
-
label: "Vitest unit tests"
|
|
19
|
-
cmd: "pnpm test --run"
|
|
20
|
-
|
|
21
|
-
- id: jsdoc
|
|
22
|
-
label: "JSDoc on changed public functions"
|
|
23
|
-
prompt: >
|
|
24
|
-
Ensure all changed public functions and exports have JSDoc comments
|
|
25
|
-
with description, @param, and @returns where applicable.
|
|
26
|
-
|
|
27
|
-
- id: test-coverage
|
|
28
|
-
label: "Meaningful test coverage for new logic"
|
|
29
|
-
prompt: >
|
|
30
|
-
Confirm that any new non-trivial logic introduced in this change
|
|
31
|
-
has corresponding unit tests in the __tests__ directory.
|
|
32
|
-
|
|
33
|
-
- id: changelog-update
|
|
34
|
-
label: "Add a CHANGELOG.md entry for this session"
|
|
35
|
-
prompt: >
|
|
36
|
-
Before committing, add an entry to CHANGELOG.md describing what was done.
|
|
37
|
-
Use Keep a Changelog format — add under ## [Unreleased] (create the file
|
|
38
|
-
and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
|
|
39
|
-
Be concise but specific. The entry text will serve as the commit message.
|
|
40
|
-
|
|
41
|
-
- id: readme-sync
|
|
42
|
-
label: "Update README.md if user-facing changes were made"
|
|
43
|
-
prompt: >
|
|
44
|
-
If you added, changed, or removed user-facing functionality — CLI commands,
|
|
45
|
-
configuration options, public APIs, or significant new features — update
|
|
46
|
-
README.md to reflect those changes.
|
|
47
|
-
|
|
48
|
-
- id: holdpoint-evolve
|
|
49
|
-
label: "Evolve checks when project structure changes"
|
|
50
|
-
when: structural
|
|
51
|
-
cmd: "npx @holdpoint/cli@alpha evolve"
|
|
52
|
-
|
|
53
|
-
- id: git-commit
|
|
54
|
-
label: "Commit all changes before finishing"
|
|
55
|
-
cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
|