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.
Files changed (82) hide show
  1. package/bin/rivet.js +18 -0
  2. package/dist/cli/resolveDefaultNodeEnv.d.ts +7 -0
  3. package/dist/cli/resolveDefaultNodeEnv.d.ts.map +1 -0
  4. package/dist/cli/resolveDefaultNodeEnv.js +18 -0
  5. package/dist/cli/resolveDefaultNodeEnv.js.map +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +127 -4
  8. package/dist/index.js.map +1 -1
  9. package/dist/mcp/server.d.ts.map +1 -1
  10. package/dist/mcp/server.js +1 -0
  11. package/dist/mcp/server.js.map +1 -1
  12. package/dist/services/AuthService.d.ts +3 -13
  13. package/dist/services/AuthService.d.ts.map +1 -1
  14. package/dist/services/CommitMessageGenerator.d.ts +2 -1
  15. package/dist/services/CommitMessageGenerator.d.ts.map +1 -1
  16. package/dist/services/ConfigManager.d.ts +3 -2
  17. package/dist/services/ConfigManager.d.ts.map +1 -1
  18. package/dist/services/ConfigManager.js +1 -2
  19. package/dist/services/ConfigManager.js.map +1 -1
  20. package/dist/services/GatewayClient.d.ts +2 -1
  21. package/dist/services/GatewayClient.d.ts.map +1 -1
  22. package/dist/services/PRTitleGenerator.d.ts +3 -2
  23. package/dist/services/PRTitleGenerator.d.ts.map +1 -1
  24. package/dist/services/SessionBridgeService.d.ts +2 -1
  25. package/dist/services/SessionBridgeService.d.ts.map +1 -1
  26. package/dist/services/TelemetryService.d.ts +3 -1
  27. package/dist/services/TelemetryService.d.ts.map +1 -1
  28. package/dist/services/TelemetryService.js +14 -1
  29. package/dist/services/TelemetryService.js.map +1 -1
  30. package/dist/services/agent/index.d.ts +0 -5
  31. package/dist/services/agent/index.d.ts.map +1 -1
  32. package/dist/services/agent/index.js +1 -5
  33. package/dist/services/agent/index.js.map +1 -1
  34. package/dist/types/style-manipulation-types.d.ts +0 -46
  35. package/dist/types/style-manipulation-types.d.ts.map +1 -1
  36. package/dist/types/style-manipulation-types.js +1 -29
  37. package/dist/types/style-manipulation-types.js.map +1 -1
  38. package/dist/types/token-types.d.ts +0 -4
  39. package/dist/types/token-types.d.ts.map +1 -1
  40. package/dist/types/token-types.js +0 -48
  41. package/dist/types/token-types.js.map +1 -1
  42. package/dist/utils/branchNames.d.ts +0 -4
  43. package/dist/utils/branchNames.d.ts.map +1 -1
  44. package/dist/utils/branchNames.js +5 -6
  45. package/dist/utils/branchNames.js.map +1 -1
  46. package/dist/utils/skillWriter.d.ts +2 -5
  47. package/dist/utils/skillWriter.d.ts.map +1 -1
  48. package/dist/utils/skillWriter.js +9 -11
  49. package/dist/utils/skillWriter.js.map +1 -1
  50. package/dist/utils/skills/claude-skill.d.ts +0 -1
  51. package/dist/utils/skills/claude-skill.d.ts.map +1 -1
  52. package/dist/utils/skills/claude-skill.js +3 -3
  53. package/dist/utils/skills/claude-skill.js.map +1 -1
  54. package/dist/utils/skills/cursor-rules.d.ts +0 -1
  55. package/dist/utils/skills/cursor-rules.d.ts.map +1 -1
  56. package/dist/utils/skills/cursor-rules.js +3 -3
  57. package/dist/utils/skills/cursor-rules.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/ui/dist/assets/{main-C-jd0Vb5.js → main-B3knp0NL.js} +117 -119
  60. package/src/ui/dist/assets/main-Carub4JG.css +1 -0
  61. package/src/ui/dist/index.html +2 -2
  62. package/dist/prompts/onboardingPrompts.d.ts +0 -3
  63. package/dist/prompts/onboardingPrompts.d.ts.map +0 -1
  64. package/dist/prompts/onboardingPrompts.js +0 -86
  65. package/dist/prompts/onboardingPrompts.js.map +0 -1
  66. package/dist/services/ProjectConfigService.d.ts +0 -44
  67. package/dist/services/ProjectConfigService.d.ts.map +0 -1
  68. package/dist/services/ProjectConfigService.js +0 -121
  69. package/dist/services/ProjectConfigService.js.map +0 -1
  70. package/dist/services/agent/OnboardingAgent.d.ts +0 -40
  71. package/dist/services/agent/OnboardingAgent.d.ts.map +0 -1
  72. package/dist/services/agent/OnboardingAgent.js +0 -138
  73. package/dist/services/agent/OnboardingAgent.js.map +0 -1
  74. package/dist/types/design-intent-types.d.ts +0 -44
  75. package/dist/types/design-intent-types.d.ts.map +0 -1
  76. package/dist/types/design-intent-types.js +0 -4
  77. package/dist/types/design-intent-types.js.map +0 -1
  78. package/dist/utils/diff.d.ts +0 -5
  79. package/dist/utils/diff.d.ts.map +0 -1
  80. package/dist/utils/diff.js +0 -28
  81. package/dist/utils/diff.js.map +0 -1
  82. 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))}}
@@ -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-C-jd0Vb5.js"></script>
9
- <link rel="stylesheet" crossorigin href="/rivet/assets/main-C4K5xMSh.css">
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,3 +0,0 @@
1
- export declare const buildOnboardingSystemPrompt: () => string;
2
- export declare const buildOnboardingUserPrompt: (projectPath: string) => string;
3
- //# sourceMappingURL=onboardingPrompts.d.ts.map
@@ -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,4 +0,0 @@
1
- "use strict";
2
- // Types for MCP design intent payloads sent from Rivet UI to Claude Code
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- //# sourceMappingURL=design-intent-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"design-intent-types.js","sourceRoot":"","sources":["../../src/types/design-intent-types.ts"],"names":[],"mappings":";AAAA,yEAAyE"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Simple line-by-line diff generator for tracking file changes
3
- */
4
- export declare const generateSimpleDiff: (original: string, modified: string) => string;
5
- //# sourceMappingURL=diff.d.ts.map
@@ -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"}