rivet-design 0.6.2 → 0.6.3
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/bin/rivet.js +18 -0
- package/dist/cli/resolveDefaultNodeEnv.d.ts +7 -0
- package/dist/cli/resolveDefaultNodeEnv.d.ts.map +1 -0
- package/dist/cli/resolveDefaultNodeEnv.js +18 -0
- package/dist/cli/resolveDefaultNodeEnv.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +127 -4
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/services/AuthService.d.ts +3 -13
- package/dist/services/AuthService.d.ts.map +1 -1
- package/dist/services/CommitMessageGenerator.d.ts +2 -1
- package/dist/services/CommitMessageGenerator.d.ts.map +1 -1
- package/dist/services/ConfigManager.d.ts +3 -2
- package/dist/services/ConfigManager.d.ts.map +1 -1
- package/dist/services/ConfigManager.js +1 -2
- package/dist/services/ConfigManager.js.map +1 -1
- package/dist/services/GatewayClient.d.ts +2 -1
- package/dist/services/GatewayClient.d.ts.map +1 -1
- package/dist/services/PRTitleGenerator.d.ts +3 -2
- package/dist/services/PRTitleGenerator.d.ts.map +1 -1
- package/dist/services/SessionBridgeService.d.ts +2 -1
- package/dist/services/SessionBridgeService.d.ts.map +1 -1
- package/dist/services/TelemetryService.d.ts +3 -1
- package/dist/services/TelemetryService.d.ts.map +1 -1
- package/dist/services/TelemetryService.js +14 -1
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/services/agent/index.d.ts +0 -5
- package/dist/services/agent/index.d.ts.map +1 -1
- package/dist/services/agent/index.js +1 -5
- package/dist/services/agent/index.js.map +1 -1
- package/dist/types/style-manipulation-types.d.ts +0 -46
- package/dist/types/style-manipulation-types.d.ts.map +1 -1
- package/dist/types/style-manipulation-types.js +1 -29
- package/dist/types/style-manipulation-types.js.map +1 -1
- package/dist/types/token-types.d.ts +0 -4
- package/dist/types/token-types.d.ts.map +1 -1
- package/dist/types/token-types.js +0 -48
- package/dist/types/token-types.js.map +1 -1
- package/dist/utils/branchNames.d.ts +0 -4
- package/dist/utils/branchNames.d.ts.map +1 -1
- package/dist/utils/branchNames.js +5 -6
- package/dist/utils/branchNames.js.map +1 -1
- package/dist/utils/skillWriter.d.ts +2 -5
- package/dist/utils/skillWriter.d.ts.map +1 -1
- package/dist/utils/skillWriter.js +9 -11
- package/dist/utils/skillWriter.js.map +1 -1
- package/dist/utils/skills/claude-skill.d.ts +0 -1
- package/dist/utils/skills/claude-skill.d.ts.map +1 -1
- package/dist/utils/skills/claude-skill.js +3 -3
- package/dist/utils/skills/claude-skill.js.map +1 -1
- package/dist/utils/skills/cursor-rules.d.ts +0 -1
- package/dist/utils/skills/cursor-rules.d.ts.map +1 -1
- package/dist/utils/skills/cursor-rules.js +3 -3
- package/dist/utils/skills/cursor-rules.js.map +1 -1
- package/package.json +1 -1
- package/src/ui/dist/assets/{main-C-jd0Vb5.js → main-B3knp0NL.js} +117 -119
- package/src/ui/dist/assets/main-Carub4JG.css +1 -0
- package/src/ui/dist/index.html +2 -2
- package/dist/prompts/onboardingPrompts.d.ts +0 -3
- package/dist/prompts/onboardingPrompts.d.ts.map +0 -1
- package/dist/prompts/onboardingPrompts.js +0 -86
- package/dist/prompts/onboardingPrompts.js.map +0 -1
- package/dist/services/ProjectConfigService.d.ts +0 -44
- package/dist/services/ProjectConfigService.d.ts.map +0 -1
- package/dist/services/ProjectConfigService.js +0 -121
- package/dist/services/ProjectConfigService.js.map +0 -1
- package/dist/services/agent/OnboardingAgent.d.ts +0 -40
- package/dist/services/agent/OnboardingAgent.d.ts.map +0 -1
- package/dist/services/agent/OnboardingAgent.js +0 -138
- package/dist/services/agent/OnboardingAgent.js.map +0 -1
- package/dist/types/design-intent-types.d.ts +0 -44
- package/dist/types/design-intent-types.d.ts.map +0 -1
- package/dist/types/design-intent-types.js +0 -4
- package/dist/types/design-intent-types.js.map +0 -1
- package/dist/utils/diff.d.ts +0 -5
- package/dist/utils/diff.d.ts.map +0 -1
- package/dist/utils/diff.js +0 -28
- package/dist/utils/diff.js.map +0 -1
- package/src/ui/dist/assets/main-C4K5xMSh.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-right-1\.5{right:-.375rem}.-right-2{right:-.5rem}.-top-1\.5{top:-.375rem}.-top-2{top:-.5rem}.bottom-6{bottom:1.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1{top:.25rem}.top-1\/2{top:50%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.z-10{z-index:10}.z-50{z-index:50}.z-\[49\]{z-index:49}.z-\[60\]{z-index:60}.z-comment-marker{z-index:36}.z-comment-preview{z-index:55}.z-max{z-index:999999}.z-ui-primary{z-index:50}.order-1{order:1}.order-2{order:2}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-2\.5{margin-left:-.625rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-\[1px\]{margin-top:1px}.line-clamp-4{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-44{height:11rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-80{height:20rem}.h-96{height:24rem}.h-\[450px\]{height:450px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-16{max-height:4rem}.max-h-20{max-height:5rem}.max-h-24{max-height:6rem}.max-h-32{max-height:8rem}.max-h-36{max-height:9rem}.max-h-64{max-height:16rem}.max-h-96{max-height:24rem}.max-h-\[80vh\]{max-height:80vh}.min-h-0{min-height:0px}.min-h-24{min-height:6rem}.min-h-\[2\.5rem\]{min-height:2.5rem}.w-0{width:0px}.w-12{width:3rem}.w-2\.5{width:.625rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-\[1px\]{width:1px}.w-\[280px\]{width:280px}.w-\[380px\]{width:380px}.w-\[420px\]{width:420px}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[140px\]{min-width:140px}.max-w-7xl{max-width:80rem}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[300px\]{max-width:300px}.max-w-\[80\%\]{max-width:80%}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes token-highlight{0%{transform:scale(1.05);box-shadow:0 0 0 2px #facc15,0 0 0 6px #facc1580}50%{transform:scale(1.02);box-shadow:0 0 0 2px #facc15,0 0 0 8px #facc1599}to{transform:scale(1);box-shadow:0 0 #facc1500,0 0 #facc1500}}.animate-token-highlight{animation:token-highlight 1.5s ease-in-out}.cursor-auto{cursor:auto}.cursor-crosshair{cursor:crosshair}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[80px_1fr\]{grid-template-columns:80px 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-main-border>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(35 35 40 / var(--tw-divide-opacity, 1))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border,.border-\[1px\]{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-b-\[1px\]{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-\[4px\]{border-left-width:4px}.border-r-0{border-right-width:0px}.border-r-\[4px\]{border-right-width:4px}.border-t,.border-t-\[1px\]{border-top-width:1px}.border-t-\[6px\]{border-top-width:6px}.border-none{border-style:none}.border-blue-400\/20{border-color:#60a5fa33}.border-divider{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-indigo-400\/20{border-color:#818cf833}.border-main-border{--tw-border-opacity: 1;border-color:rgb(35 35 40 / var(--tw-border-opacity, 1))}.border-primary{--tw-border-opacity: 1;border-color:rgb(255 51 0 / var(--tw-border-opacity, 1))}.border-primary-border{--tw-border-opacity: 1;border-color:rgb(255 107 53 / var(--tw-border-opacity, 1))}.border-primary\/30{border-color:#ff33004d}.border-transparent{border-color:transparent}.border-violet-400\/20{border-color:#a78bfa33}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/20{border-color:#fff3}.border-l-transparent{border-left-color:transparent}.border-r-transparent{border-right-color:transparent}.bg-accent-error{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-accent-success{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-black\/40{background-color:#0006}.bg-black\/45{background-color:#00000073}.bg-black\/50{background-color:#00000080}.bg-blue-500\/10{background-color:#3b82f61a}.bg-divider{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-divider\/20{background-color:#4b556333}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-indigo-500\/10{background-color:#6366f11a}.bg-main{--tw-bg-opacity: 1;background-color:rgb(28 28 32 / var(--tw-bg-opacity, 1))}.bg-main-border{--tw-bg-opacity: 1;background-color:rgb(35 35 40 / var(--tw-bg-opacity, 1))}.bg-main-hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.bg-main-hover\/50{background-color:#40404080}.bg-main-input{--tw-bg-opacity: 1;background-color:rgb(46 46 46 / var(--tw-bg-opacity, 1))}.bg-main-light{--tw-bg-opacity: 1;background-color:rgb(30 30 34 / var(--tw-bg-opacity, 1))}.bg-primary{--tw-bg-opacity: 1;background-color:rgb(255 51 0 / var(--tw-bg-opacity, 1))}.bg-primary\/10{background-color:#ff33001a}.bg-primary\/20{background-color:#f303}.bg-readOnly{--tw-bg-opacity: 1;background-color:rgb(35 35 35 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/5{background-color:#ffffff0d}.fill-main{fill:#1c1c20}.fill-main-input{fill:#2e2e2e}.fill-primary\/30{fill:#ff33004d}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-main{font-family:Satoshi,sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.leading-4{line-height:1rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.text-content{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-content-muted{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-content-subtle{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity, 1))}.text-primary{--tw-text-opacity: 1;color:rgb(255 51 0 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-violet-200{--tw-text-opacity: 1;color:rgb(221 214 254 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/60{color:#fff9}.text-white\/70{color:#ffffffb3}.underline{text-decoration-line:underline}.placeholder-content-subtle::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-content-subtle::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 51 0 / var(--tw-ring-opacity, 1))}.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: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[filter\]{transition-property:filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}html,body{overflow:hidden}@font-face{font-family:Satoshi;src:url(/rivet/fonts/Satoshi-Variable.woff2) format("woff2-variations");font-weight:300 900;font-style:normal}@font-face{font-family:Satoshi;src:url(/rivet/fonts/Satoshi-VariableItalic.woff2) format("woff2-variations");font-weight:300 900;font-style:italic}@keyframes rivet-token-highlight{0%{transform:scale(1.05);box-shadow:0 0 0 2px #facc15,0 0 0 6px #facc1580}50%{transform:scale(1.02);box-shadow:0 0 0 2px #facc15,0 0 0 8px #facc1599}to{transform:scale(1);box-shadow:0 0 #facc1500,0 0 #facc1500}}*{scrollbar-width:thin;scrollbar-color:#404040 transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:transparent;border-radius:4px}*::-webkit-scrollbar-thumb{background:#3a3a3f;border-radius:4px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#505058;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-corner{background:transparent}.markdown-content{color:#fff;font-size:.875rem;line-height:1.625;word-break:break-word}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:#fff;font-weight:600;margin-top:1rem;margin-bottom:.25rem;line-height:1.3}.markdown-content h1{font-size:1.25rem}.markdown-content h2{font-size:1.125rem}.markdown-content h3{font-size:1rem}.markdown-content p{margin:.5rem 0}.markdown-content strong{color:#fff;font-weight:600}.markdown-content em{font-style:italic}.markdown-content a{color:#60a5fa;text-decoration:underline}.markdown-content a:hover{color:#93bbfd}.markdown-content ul,.markdown-content ol{margin:.5rem 0;padding-left:1.25rem}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{margin:.25rem 0}.markdown-content li>ul,.markdown-content li>ol{margin:0}.markdown-inline-code{background:#ffffff1a;color:#e5e7eb;padding:.125rem .375rem;border-radius:.25rem;font-size:.8125rem;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace}.markdown-content blockquote{border-left:3px solid #4b5563;padding-left:.75rem;margin:.5rem 0;color:#9ca3af}.markdown-content table{border-collapse:collapse;margin:.5rem 0;width:100%;font-size:.8125rem}.markdown-content th,.markdown-content td{border:1px solid #4b5563;padding:.375rem .625rem;text-align:left}.markdown-content th{color:#fff;font-weight:600;background:#ffffff0d}.markdown-content hr{border:none;border-top:1px solid #4b5563;margin:.75rem 0}.markdown-content del{text-decoration:line-through;color:#9ca3af}.markdown-content>*:first-child{margin-top:0}.markdown-content>*:last-child{margin-bottom:0}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer-text{background:linear-gradient(90deg,#ffffff80,#ffffffbf,#fff,#ffffffbf,#ffffff80);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 2s linear infinite}.placeholder\:text-content-subtle::-moz-placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.placeholder\:text-content-subtle::placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.last\:border-b-0:last-child{border-bottom-width:0px}.focus-within\:bg-main-hover:focus-within{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.hover\:border-main-border:hover{--tw-border-opacity: 1;border-color:rgb(35 35 40 / var(--tw-border-opacity, 1))}.hover\:border-primary-border:hover{--tw-border-opacity: 1;border-color:rgb(255 107 53 / var(--tw-border-opacity, 1))}.hover\:bg-black\/70:hover{background-color:#000000b3}.hover\:bg-divider:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.hover\:bg-main:hover{--tw-bg-opacity: 1;background-color:rgb(28 28 32 / var(--tw-bg-opacity, 1))}.hover\:bg-main-hover:hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.hover\:bg-main-input:hover{--tw-bg-opacity: 1;background-color:rgb(46 46 46 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-hover:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/90:hover{background-color:#ff3300e6}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:text-accent-error:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-content:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.focus\:border-primary-border-hover:focus{--tw-border-opacity: 1;border-color:rgb(255 136 85 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.active\:cursor-grabbing:active{cursor:grabbing}.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}.disabled\:opacity-80:disabled{opacity:.8}.group:hover .group-hover\:text-content{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:brightness-75{--tw-brightness: brightness(.75);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)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[highlighted\]\:border-primary-border[data-highlighted]{--tw-border-opacity: 1;border-color:rgb(255 107 53 / var(--tw-border-opacity, 1))}.data-\[state\=active\]\:border-primary[data-state=active]{--tw-border-opacity: 1;border-color:rgb(255 51 0 / var(--tw-border-opacity, 1))}.data-\[highlighted\]\:bg-main-hover[data-highlighted]{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.data-\[highlighted\]\:bg-main-input[data-highlighted]{--tw-bg-opacity: 1;background-color:rgb(46 46 46 / var(--tw-bg-opacity, 1))}.data-\[state\=checked\]\:bg-transparent[data-state=checked]{background-color:transparent}.data-\[highlighted\]\:text-content[data-highlighted],.data-\[state\=active\]\:text-white[data-state=active]{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:ring-1[data-highlighted]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.data-\[highlighted\]\:ring-primary-border[data-highlighted]{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 107 53 / var(--tw-ring-opacity, 1))}.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width: 640px){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}
|
package/src/ui/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/x-icon" href="/rivet/favicon.ico" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Rivet - The visual editor for design</title>
|
|
8
|
-
<script type="module" crossorigin src="/rivet/assets/main-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/rivet/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/rivet/assets/main-B3knp0NL.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/rivet/assets/main-Carub4JG.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboardingPrompts.d.ts","sourceRoot":"","sources":["../../src/prompts/onboardingPrompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,QAClC,MAqEkE,CAAC;AAEzE,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,KAAG,MAUtB,CAAC"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildOnboardingUserPrompt = exports.buildOnboardingSystemPrompt = void 0;
|
|
4
|
-
const buildOnboardingSystemPrompt = () => `You are a development environment setup assistant. Your task is to analyze a project and start its frontend development server.
|
|
5
|
-
|
|
6
|
-
AVAILABLE TOOLS:
|
|
7
|
-
- Read: Read file contents
|
|
8
|
-
- Glob: Find files by pattern
|
|
9
|
-
- Bash: Run shell commands
|
|
10
|
-
|
|
11
|
-
WORKFLOW:
|
|
12
|
-
|
|
13
|
-
1. ANALYZE PROJECT
|
|
14
|
-
- Read package.json to understand the project type and scripts
|
|
15
|
-
- Check for lockfiles (package-lock.json, yarn.lock, pnpm-lock.yaml) to determine package manager
|
|
16
|
-
- Look for framework config files (vite.config.ts, next.config.js, etc.)
|
|
17
|
-
- Optionally read README.md for special setup instructions
|
|
18
|
-
|
|
19
|
-
2. CHECK PREREQUISITES
|
|
20
|
-
- Verify Node.js is installed: \`node --version\`
|
|
21
|
-
- If Node.js is not installed, STOP and report this clearly - do not proceed
|
|
22
|
-
- Verify the correct package manager is available based on lockfile
|
|
23
|
-
- Check if node_modules directory exists
|
|
24
|
-
|
|
25
|
-
3. INSTALL DEPENDENCIES (if node_modules doesn't exist or is incomplete)
|
|
26
|
-
- Run the appropriate install command:
|
|
27
|
-
- If yarn.lock exists: \`yarn install\`
|
|
28
|
-
- If pnpm-lock.yaml exists: \`pnpm install\`
|
|
29
|
-
- Otherwise: \`npm install\`
|
|
30
|
-
- Wait for completion and check for errors
|
|
31
|
-
- If install fails, report the error clearly
|
|
32
|
-
|
|
33
|
-
4. START DEV SERVER
|
|
34
|
-
- Identify the correct start script from package.json scripts:
|
|
35
|
-
- Usually "dev" for Vite/Next.js projects
|
|
36
|
-
- Sometimes "start" for CRA projects
|
|
37
|
-
- Run the command in the background so it doesn't block: \`nohup npm run dev > /dev/null 2>&1 &\`
|
|
38
|
-
- Wait a few seconds for the server to start
|
|
39
|
-
|
|
40
|
-
5. VERIFY SERVER IS RUNNING
|
|
41
|
-
- Use curl to check if server responds on common ports:
|
|
42
|
-
- \`curl -s -o /dev/null -w "%{http_code}" http://localhost:3000\`
|
|
43
|
-
- Try ports: 3000, 3001, 5173, 5174, 8080, 4200
|
|
44
|
-
- Report which port the server is running on
|
|
45
|
-
|
|
46
|
-
OUTPUT FORMAT:
|
|
47
|
-
When complete, you MUST output a JSON block on its own line with your findings:
|
|
48
|
-
\`\`\`json
|
|
49
|
-
{
|
|
50
|
-
"success": true,
|
|
51
|
-
"startCommand": "npm run dev",
|
|
52
|
-
"installCommand": "npm install",
|
|
53
|
-
"detectedPort": 3000,
|
|
54
|
-
"framework": "vite"
|
|
55
|
-
}
|
|
56
|
-
\`\`\`
|
|
57
|
-
|
|
58
|
-
If something goes wrong:
|
|
59
|
-
\`\`\`json
|
|
60
|
-
{
|
|
61
|
-
"success": false,
|
|
62
|
-
"error": "Node.js is not installed",
|
|
63
|
-
"startCommand": "",
|
|
64
|
-
"detectedPort": 0
|
|
65
|
-
}
|
|
66
|
-
\`\`\`
|
|
67
|
-
|
|
68
|
-
IMPORTANT RULES:
|
|
69
|
-
- If Node.js is not installed, stop immediately and report this
|
|
70
|
-
- If you encounter errors during install, explain what went wrong
|
|
71
|
-
- Always verify the server is actually running before reporting success
|
|
72
|
-
- The dev server command MUST be backgrounded so it doesn't block
|
|
73
|
-
- Be explicit about which package manager and start script you're using`;
|
|
74
|
-
exports.buildOnboardingSystemPrompt = buildOnboardingSystemPrompt;
|
|
75
|
-
const buildOnboardingUserPrompt = (projectPath) => `Please analyze the project at ${projectPath} and start its frontend development server.
|
|
76
|
-
|
|
77
|
-
Follow the workflow in your instructions:
|
|
78
|
-
1. Read package.json and identify the framework/package manager
|
|
79
|
-
2. Check if Node.js and the package manager are available
|
|
80
|
-
3. Install dependencies if needed
|
|
81
|
-
4. Start the dev server in the background
|
|
82
|
-
5. Verify it's running and report the port
|
|
83
|
-
|
|
84
|
-
Output your final result as a JSON block.`;
|
|
85
|
-
exports.buildOnboardingUserPrompt = buildOnboardingUserPrompt;
|
|
86
|
-
//# sourceMappingURL=onboardingPrompts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"onboardingPrompts.js","sourceRoot":"","sources":["../../src/prompts/onboardingPrompts.ts"],"names":[],"mappings":";;;AAAO,MAAM,2BAA2B,GACtC,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAqEwD,CAAC;AAtE5D,QAAA,2BAA2B,+BAsEiC;AAElE,MAAM,yBAAyB,GAAG,CAAC,WAAmB,EAAU,EAAE,CACvE,iCAAiC,WAAW;;;;;;;;;0CASJ,CAAC;AAV9B,QAAA,yBAAyB,6BAUK"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export type ProjectConfig = {
|
|
2
|
-
startCommand: string;
|
|
3
|
-
installCommand?: string;
|
|
4
|
-
devServerPort: number;
|
|
5
|
-
framework: string;
|
|
6
|
-
lastUsed: string;
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* Persists project-specific configurations to ~/.rivet/projects.json.
|
|
10
|
-
* Used to cache dev server start commands so we don't need to re-detect on subsequent runs.
|
|
11
|
-
*/
|
|
12
|
-
export declare class ProjectConfigService {
|
|
13
|
-
private configDir;
|
|
14
|
-
private configPath;
|
|
15
|
-
constructor();
|
|
16
|
-
/**
|
|
17
|
-
* Get cached config for a project path
|
|
18
|
-
*/
|
|
19
|
-
getProjectConfig(projectPath: string): Promise<ProjectConfig | null>;
|
|
20
|
-
/**
|
|
21
|
-
* Save config for a project path
|
|
22
|
-
*/
|
|
23
|
-
saveProjectConfig(projectPath: string, config: ProjectConfig): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Clear cached config for a project path
|
|
26
|
-
*/
|
|
27
|
-
clearProjectConfig(projectPath: string): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* List all cached project configs
|
|
30
|
-
*/
|
|
31
|
-
listProjects(): Promise<Array<{
|
|
32
|
-
path: string;
|
|
33
|
-
config: ProjectConfig;
|
|
34
|
-
}>>;
|
|
35
|
-
/**
|
|
36
|
-
* Read configs from disk
|
|
37
|
-
*/
|
|
38
|
-
private readConfigs;
|
|
39
|
-
/**
|
|
40
|
-
* Write configs to disk
|
|
41
|
-
*/
|
|
42
|
-
private writeConfigs;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=ProjectConfigService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectConfigService.d.ts","sourceRoot":"","sources":["../../src/services/ProjectConfigService.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAMF;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;;IAO3B;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAW1E;;OAEG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC;IAkBhB;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D;;OAEG;IACG,YAAY,IAAI,OAAO,CAC3B,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAC/C;IAaD;;OAEG;YACW,WAAW;IAczB;;OAEG;YACW,YAAY;CAW3B"}
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ProjectConfigService = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const os_1 = __importDefault(require("os"));
|
|
10
|
-
const logger_1 = require("../utils/logger");
|
|
11
|
-
const log = (0, logger_1.createLogger)('ProjectConfigService');
|
|
12
|
-
/**
|
|
13
|
-
* Persists project-specific configurations to ~/.rivet/projects.json.
|
|
14
|
-
* Used to cache dev server start commands so we don't need to re-detect on subsequent runs.
|
|
15
|
-
*/
|
|
16
|
-
class ProjectConfigService {
|
|
17
|
-
configDir;
|
|
18
|
-
configPath;
|
|
19
|
-
constructor() {
|
|
20
|
-
this.configDir = path_1.default.join(os_1.default.homedir(), '.rivet');
|
|
21
|
-
this.configPath = path_1.default.join(this.configDir, 'projects.json');
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get cached config for a project path
|
|
25
|
-
*/
|
|
26
|
-
async getProjectConfig(projectPath) {
|
|
27
|
-
try {
|
|
28
|
-
const configs = await this.readConfigs();
|
|
29
|
-
const normalizedPath = path_1.default.resolve(projectPath);
|
|
30
|
-
return configs[normalizedPath] || null;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
log.warn('Failed to read project config:', error);
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Save config for a project path
|
|
39
|
-
*/
|
|
40
|
-
async saveProjectConfig(projectPath, config) {
|
|
41
|
-
try {
|
|
42
|
-
const configs = await this.readConfigs();
|
|
43
|
-
const normalizedPath = path_1.default.resolve(projectPath);
|
|
44
|
-
configs[normalizedPath] = {
|
|
45
|
-
...config,
|
|
46
|
-
lastUsed: new Date().toISOString(),
|
|
47
|
-
};
|
|
48
|
-
await this.writeConfigs(configs);
|
|
49
|
-
log.info(`Saved project config for: ${normalizedPath}`);
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
log.error('Failed to save project config:', error);
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Clear cached config for a project path
|
|
58
|
-
*/
|
|
59
|
-
async clearProjectConfig(projectPath) {
|
|
60
|
-
try {
|
|
61
|
-
const configs = await this.readConfigs();
|
|
62
|
-
const normalizedPath = path_1.default.resolve(projectPath);
|
|
63
|
-
if (configs[normalizedPath]) {
|
|
64
|
-
delete configs[normalizedPath];
|
|
65
|
-
await this.writeConfigs(configs);
|
|
66
|
-
log.info(`Cleared project config for: ${normalizedPath}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
log.error('Failed to clear project config:', error);
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* List all cached project configs
|
|
76
|
-
*/
|
|
77
|
-
async listProjects() {
|
|
78
|
-
try {
|
|
79
|
-
const configs = await this.readConfigs();
|
|
80
|
-
return Object.entries(configs).map(([projectPath, config]) => ({
|
|
81
|
-
path: projectPath,
|
|
82
|
-
config,
|
|
83
|
-
}));
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
log.warn('Failed to list projects:', error);
|
|
87
|
-
return [];
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Read configs from disk
|
|
92
|
-
*/
|
|
93
|
-
async readConfigs() {
|
|
94
|
-
try {
|
|
95
|
-
if (!fs_1.default.existsSync(this.configPath)) {
|
|
96
|
-
return {};
|
|
97
|
-
}
|
|
98
|
-
const content = fs_1.default.readFileSync(this.configPath, 'utf-8');
|
|
99
|
-
return JSON.parse(content);
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
log.warn('Failed to parse projects.json, returning empty config:', error);
|
|
103
|
-
return {};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Write configs to disk
|
|
108
|
-
*/
|
|
109
|
-
async writeConfigs(configs) {
|
|
110
|
-
// Ensure config directory exists
|
|
111
|
-
if (!fs_1.default.existsSync(this.configDir)) {
|
|
112
|
-
fs_1.default.mkdirSync(this.configDir, { recursive: true, mode: 0o700 });
|
|
113
|
-
}
|
|
114
|
-
// Write with restrictive permissions
|
|
115
|
-
fs_1.default.writeFileSync(this.configPath, JSON.stringify(configs, null, 2), {
|
|
116
|
-
mode: 0o600,
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
exports.ProjectConfigService = ProjectConfigService;
|
|
121
|
-
//# sourceMappingURL=ProjectConfigService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectConfigService.js","sourceRoot":"","sources":["../../src/services/ProjectConfigService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { AgentProgressEvent } from './AgentCore';
|
|
2
|
-
export type OnboardingResult = {
|
|
3
|
-
success: boolean;
|
|
4
|
-
devServerPort: number;
|
|
5
|
-
startCommand: string;
|
|
6
|
-
installCommand?: string;
|
|
7
|
-
framework?: string;
|
|
8
|
-
error?: string;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Agent that analyzes a project and starts its dev server.
|
|
12
|
-
* Uses AgentCore for shared infrastructure.
|
|
13
|
-
*/
|
|
14
|
-
export declare class OnboardingAgent {
|
|
15
|
-
private core;
|
|
16
|
-
private projectPath;
|
|
17
|
-
private configService;
|
|
18
|
-
private abortController;
|
|
19
|
-
constructor(projectPath: string);
|
|
20
|
-
/**
|
|
21
|
-
* Cancel the running agent execution
|
|
22
|
-
*/
|
|
23
|
-
cancel(): void;
|
|
24
|
-
/**
|
|
25
|
-
* Execute the onboarding agent with streaming output.
|
|
26
|
-
* Analyzes the project, installs deps if needed, starts dev server.
|
|
27
|
-
*
|
|
28
|
-
* @effect Streams progress events via onProgress callback
|
|
29
|
-
* @effect May install dependencies and start dev server
|
|
30
|
-
* @effect Saves config to ~/.rivet/projects.json on success
|
|
31
|
-
*/
|
|
32
|
-
execute(onProgress: (event: AgentProgressEvent) => void): Promise<OnboardingResult>;
|
|
33
|
-
private buildSystemPrompt;
|
|
34
|
-
private buildUserPrompt;
|
|
35
|
-
/**
|
|
36
|
-
* Parse the JSON result block from agent reasoning
|
|
37
|
-
*/
|
|
38
|
-
private parseAgentResult;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=OnboardingAgent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingAgent.d.ts","sourceRoot":"","sources":["../../../src/services/agent/OnboardingAgent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAU5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAgC;gBAE3C,WAAW,EAAE,MAAM;IAM/B;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd;;;;;;;OAOG;IACG,OAAO,CACX,UAAU,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAC9C,OAAO,CAAC,gBAAgB,CAAC;IAkE5B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAgCzB"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OnboardingAgent = void 0;
|
|
4
|
-
const AgentCore_1 = require("./AgentCore");
|
|
5
|
-
const ProjectConfigService_1 = require("../ProjectConfigService");
|
|
6
|
-
const logger_1 = require("../../utils/logger");
|
|
7
|
-
const onboardingPrompts_1 = require("../../prompts/onboardingPrompts");
|
|
8
|
-
const log = (0, logger_1.createLogger)('OnboardingAgent');
|
|
9
|
-
/**
|
|
10
|
-
* Agent that analyzes a project and starts its dev server.
|
|
11
|
-
* Uses AgentCore for shared infrastructure.
|
|
12
|
-
*/
|
|
13
|
-
class OnboardingAgent {
|
|
14
|
-
core;
|
|
15
|
-
projectPath;
|
|
16
|
-
configService;
|
|
17
|
-
abortController = null;
|
|
18
|
-
constructor(projectPath) {
|
|
19
|
-
this.core = new AgentCore_1.AgentCore();
|
|
20
|
-
this.projectPath = projectPath;
|
|
21
|
-
this.configService = new ProjectConfigService_1.ProjectConfigService();
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Cancel the running agent execution
|
|
25
|
-
*/
|
|
26
|
-
cancel() {
|
|
27
|
-
if (this.abortController) {
|
|
28
|
-
log.info('Cancelling onboarding agent');
|
|
29
|
-
this.abortController.abort();
|
|
30
|
-
this.abortController = null;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Execute the onboarding agent with streaming output.
|
|
35
|
-
* Analyzes the project, installs deps if needed, starts dev server.
|
|
36
|
-
*
|
|
37
|
-
* @effect Streams progress events via onProgress callback
|
|
38
|
-
* @effect May install dependencies and start dev server
|
|
39
|
-
* @effect Saves config to ~/.rivet/projects.json on success
|
|
40
|
-
*/
|
|
41
|
-
async execute(onProgress) {
|
|
42
|
-
log.info(`Starting onboarding for project: ${this.projectPath}`);
|
|
43
|
-
// Create abort controller for this execution
|
|
44
|
-
this.abortController = new AbortController();
|
|
45
|
-
try {
|
|
46
|
-
const result = await this.core.execute({
|
|
47
|
-
systemPrompt: this.buildSystemPrompt(),
|
|
48
|
-
userPrompt: this.buildUserPrompt(),
|
|
49
|
-
allowedTools: ['Read', 'Glob', 'Bash'],
|
|
50
|
-
permissionMode: 'bypassPermissions', // Need to run install/start commands
|
|
51
|
-
cwd: this.projectPath,
|
|
52
|
-
onProgress,
|
|
53
|
-
abortController: this.abortController,
|
|
54
|
-
});
|
|
55
|
-
// Parse the structured result from agent reasoning
|
|
56
|
-
const onboardingResult = this.parseAgentResult(result.reasoning);
|
|
57
|
-
// Cache the config on success
|
|
58
|
-
if (onboardingResult.success) {
|
|
59
|
-
await this.configService.saveProjectConfig(this.projectPath, {
|
|
60
|
-
startCommand: onboardingResult.startCommand,
|
|
61
|
-
installCommand: onboardingResult.installCommand,
|
|
62
|
-
devServerPort: onboardingResult.devServerPort,
|
|
63
|
-
framework: onboardingResult.framework || 'unknown',
|
|
64
|
-
lastUsed: new Date().toISOString(),
|
|
65
|
-
});
|
|
66
|
-
log.info(`Onboarding complete. Server running on port ${onboardingResult.devServerPort}`);
|
|
67
|
-
}
|
|
68
|
-
onProgress({ type: 'complete' });
|
|
69
|
-
return onboardingResult;
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
73
|
-
log.error('Onboarding failed:', errorMsg);
|
|
74
|
-
// Detect auth-related errors and provide better guidance
|
|
75
|
-
let userFacingError = errorMsg;
|
|
76
|
-
if (errorMsg.includes('403') || errorMsg.includes('Forbidden')) {
|
|
77
|
-
userFacingError =
|
|
78
|
-
'Authentication failed (403). Please sign out and sign back in, then try again.';
|
|
79
|
-
}
|
|
80
|
-
else if (errorMsg.includes('401') ||
|
|
81
|
-
errorMsg.includes('Unauthorized')) {
|
|
82
|
-
userFacingError =
|
|
83
|
-
'Authentication expired. Please sign out and sign back in, then try again.';
|
|
84
|
-
}
|
|
85
|
-
else if (errorMsg.includes('Not authenticated')) {
|
|
86
|
-
userFacingError = 'Not authenticated. Please sign in to continue.';
|
|
87
|
-
}
|
|
88
|
-
onProgress({ type: 'error', error: userFacingError });
|
|
89
|
-
return {
|
|
90
|
-
success: false,
|
|
91
|
-
devServerPort: 0,
|
|
92
|
-
startCommand: '',
|
|
93
|
-
error: userFacingError,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
buildSystemPrompt() {
|
|
98
|
-
return (0, onboardingPrompts_1.buildOnboardingSystemPrompt)();
|
|
99
|
-
}
|
|
100
|
-
buildUserPrompt() {
|
|
101
|
-
return (0, onboardingPrompts_1.buildOnboardingUserPrompt)(this.projectPath);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Parse the JSON result block from agent reasoning
|
|
105
|
-
*/
|
|
106
|
-
parseAgentResult(reasoning) {
|
|
107
|
-
const fullText = reasoning.join('\n');
|
|
108
|
-
// Look for JSON block in the output
|
|
109
|
-
const jsonMatch = fullText.match(/```json\s*([\s\S]*?)\s*```/);
|
|
110
|
-
if (jsonMatch) {
|
|
111
|
-
try {
|
|
112
|
-
const parsed = JSON.parse(jsonMatch[1]);
|
|
113
|
-
return {
|
|
114
|
-
success: parsed.success ?? false,
|
|
115
|
-
devServerPort: parsed.detectedPort ?? 0,
|
|
116
|
-
startCommand: parsed.startCommand ?? '',
|
|
117
|
-
installCommand: parsed.installCommand,
|
|
118
|
-
framework: parsed.framework,
|
|
119
|
-
error: parsed.error,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
log.warn('Failed to parse JSON result:', e);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Fallback: try to extract info from plain text
|
|
127
|
-
const portMatch = fullText.match(/port[:\s]+(\d{2,5})/i);
|
|
128
|
-
const commandMatch = fullText.match(/(?:npm|yarn|pnpm)\s+run\s+\w+/i);
|
|
129
|
-
return {
|
|
130
|
-
success: portMatch !== null,
|
|
131
|
-
devServerPort: portMatch ? parseInt(portMatch[1], 10) : 0,
|
|
132
|
-
startCommand: commandMatch ? commandMatch[0] : '',
|
|
133
|
-
error: portMatch ? undefined : 'Could not determine server status',
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
exports.OnboardingAgent = OnboardingAgent;
|
|
138
|
-
//# sourceMappingURL=OnboardingAgent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingAgent.js","sourceRoot":"","sources":["../../../src/services/agent/OnboardingAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { FileMatch } from './change-types';
|
|
2
|
-
/**
|
|
3
|
-
* Serializable style change for MCP payload
|
|
4
|
-
* Captures a single CSS property change on an element
|
|
5
|
-
*/
|
|
6
|
-
export interface SerializedStyleChange {
|
|
7
|
-
element: ElementSummary;
|
|
8
|
-
property: string;
|
|
9
|
-
oldValue: string;
|
|
10
|
-
newValue: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Serializable text change for MCP payload
|
|
14
|
-
* Captures a text content change on an element
|
|
15
|
-
*/
|
|
16
|
-
export interface SerializedTextChange {
|
|
17
|
-
element: ElementSummary;
|
|
18
|
-
oldText: string;
|
|
19
|
-
newText: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Minimal element context for Claude Code to locate and modify source files
|
|
23
|
-
* Strips DOM-specific fields (boundingRect, innerHTML) that aren't useful for code translation
|
|
24
|
-
*/
|
|
25
|
-
export interface ElementSummary {
|
|
26
|
-
xpath: string;
|
|
27
|
-
tagName: string;
|
|
28
|
-
className: string;
|
|
29
|
-
id: string;
|
|
30
|
-
textContent: string;
|
|
31
|
-
filePaths?: FileMatch[];
|
|
32
|
-
computedStyles?: Record<string, string>;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Structured design intent payload sent from Rivet UI to Claude Code via MCP
|
|
36
|
-
* Contains all data needed to translate visual changes into source code edits
|
|
37
|
-
*/
|
|
38
|
-
export interface DesignIntent {
|
|
39
|
-
styleChanges: SerializedStyleChange[];
|
|
40
|
-
textChanges: SerializedTextChange[];
|
|
41
|
-
sourceFiles: string[];
|
|
42
|
-
instruction: string;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=design-intent-types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"design-intent-types.d.ts","sourceRoot":"","sources":["../../src/types/design-intent-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,qBAAqB,EAAE,CAAC;IACtC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"design-intent-types.js","sourceRoot":"","sources":["../../src/types/design-intent-types.ts"],"names":[],"mappings":";AAAA,yEAAyE"}
|
package/dist/utils/diff.d.ts
DELETED
package/dist/utils/diff.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,UAAU,MAAM,KACf,MAqBF,CAAC"}
|