@mindstudio-ai/remy 0.1.10 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/headless.js CHANGED
@@ -1985,6 +1985,7 @@ var restartProcessTool = {
1985
1985
  async execute(input) {
1986
1986
  const data = await lspRequest("/restart-process", { name: input.name });
1987
1987
  if (data.ok) {
1988
+ await new Promise((resolve) => setTimeout(resolve, 5e3));
1988
1989
  return `Restarted ${input.name}.`;
1989
1990
  }
1990
1991
  return `Error: unexpected response: ${JSON.stringify(data)}`;
@@ -2613,7 +2614,7 @@ function sample(arr, n) {
2613
2614
  function getDesignResearchPrompt() {
2614
2615
  const fonts = sample(fontData.fonts, 30);
2615
2616
  const pairings = sample(fontData.pairings, 20);
2616
- const images = sample(inspirationImages, 40);
2617
+ const images = sample(inspirationImages, 15);
2617
2618
  const fontList = fonts.map((f) => {
2618
2619
  const tags = f.tags.length ? ` (${f.tags.join(", ")})` : "";
2619
2620
  let cssInfo = "";
@@ -2645,7 +2646,7 @@ ${pairingList}
2645
2646
  const inspirationSection = images.length ? `<inspiration_images>
2646
2647
  ## Design inspiration
2647
2648
 
2648
- A random sample of pre-analyzed design references. Use these observations to inform your recommendations.
2649
+ A random sample of pre-analyzed design references. Use these observations to inform your recommendations and build something creative, unique, and compelling.
2649
2650
 
2650
2651
  ${imageList}
2651
2652
  </inspiration_images>` : "";
@@ -2657,7 +2658,7 @@ ${imageList}
2657
2658
 
2658
2659
  // src/subagents/designExpert/index.ts
2659
2660
  var DESCRIPTION = `
2660
- A dedicated visual design expert. You have a lot on your plate as a coding agent, and design is a specialized skill \u2014 delegate visual design questions here rather than making those decisions yourself. This agent has curated font catalogs, color theory knowledge, access to design inspiration galleries, and strong opinions about what looks good. It can answer from expertise alone or research the web when needed.
2661
+ A dedicated visual design expert. You have a lot on your plate as a coding agent, and design is a specialized skill \u2014 delegate visual design here rather than making those decisions yourself. This agent has curated font catalogs, color theory knowledge, access to design inspiration galleries, ability to create beautiful photos and images, and strong opinions about what looks good. It can answer from expertise alone or research the web when needed.
2661
2662
 
2662
2663
  The visual design expert can be used for all things visual design, from quick questions to comprehensive plans:
2663
2664
  - Font selection and pairings ("suggest fonts for a <x> app")
@@ -2665,12 +2666,12 @@ The visual design expert can be used for all things visual design, from quick qu
2665
2666
  - Gradient, animation, and visual effect recommendations
2666
2667
  - Layout and composition ideas that go beyond generic AI defaults
2667
2668
  - Analyzing a reference site or screenshot for design insights (it can take screenshots and do research on its own)
2668
- - Sourcing imagery: stock photos, AI-generated images, or product screenshots for reference
2669
+ - Beautiful layout images or photos
2669
2670
  - Icon recommendations
2670
2671
  - Proposing full visual directions during intake
2671
2672
 
2672
2673
  **How to write the task:**
2673
- Include context about the app \u2014 what it does, who uses it, what mood or feeling the interface should convey. More context produces better results. For quick questions ("three font pairings for a <x> app"), brief is fine. You can ask for multiple topics, multiple options, etc.
2674
+ Include context about the app \u2014 what it does, who uses it, what mood or feeling the interface should convey. If the user has any specific requirements, be sure to include them. The agent can not see your conversation with the user, so you need to include all details. More context produces better results. For quick questions ("three font pairings for a <x> app"), brief is fine. You can ask for multiple topics, multiple options, etc.
2674
2675
 
2675
2676
  **What it returns:**
2676
2677
  Concrete resources: hex values, font names with CSS URLs, image URLs, layout descriptions. Use the results directly in brand spec files or as guidance when building the interface.
@@ -3020,9 +3021,10 @@ function startStatusWatcher(config) {
3020
3021
  const { apiConfig, getContext, onStatus, interval = 3e3, signal } = config;
3021
3022
  let lastLabel = "";
3022
3023
  let inflight = false;
3024
+ let stopped = false;
3023
3025
  const url = `${apiConfig.baseUrl}/_internal/v2/agent/remy/generate-status`;
3024
3026
  async function tick() {
3025
- if (signal?.aborted || inflight) {
3027
+ if (stopped || signal?.aborted || inflight) {
3026
3028
  return;
3027
3029
  }
3028
3030
  inflight = true;
@@ -3067,6 +3069,9 @@ function startStatusWatcher(config) {
3067
3069
  return;
3068
3070
  }
3069
3071
  lastLabel = data.label;
3072
+ if (stopped) {
3073
+ return;
3074
+ }
3070
3075
  log.debug("Status watcher: emitting", { label: data.label });
3071
3076
  onStatus(data.label);
3072
3077
  } catch (err) {
@@ -3081,6 +3086,7 @@ function startStatusWatcher(config) {
3081
3086
  log.debug("Status watcher started", { interval });
3082
3087
  return {
3083
3088
  stop() {
3089
+ stopped = true;
3084
3090
  clearInterval(timer);
3085
3091
  log.debug("Status watcher stopped");
3086
3092
  }
package/dist/index.js CHANGED
@@ -1897,6 +1897,7 @@ var init_restartProcess = __esm({
1897
1897
  async execute(input) {
1898
1898
  const data = await lspRequest("/restart-process", { name: input.name });
1899
1899
  if (data.ok) {
1900
+ await new Promise((resolve) => setTimeout(resolve, 5e3));
1900
1901
  return `Restarted ${input.name}.`;
1901
1902
  }
1902
1903
  return `Error: unexpected response: ${JSON.stringify(data)}`;
@@ -2562,7 +2563,7 @@ function sample(arr, n) {
2562
2563
  function getDesignResearchPrompt() {
2563
2564
  const fonts = sample(fontData.fonts, 30);
2564
2565
  const pairings = sample(fontData.pairings, 20);
2565
- const images = sample(inspirationImages, 40);
2566
+ const images = sample(inspirationImages, 15);
2566
2567
  const fontList = fonts.map((f) => {
2567
2568
  const tags = f.tags.length ? ` (${f.tags.join(", ")})` : "";
2568
2569
  let cssInfo = "";
@@ -2594,7 +2595,7 @@ ${pairingList}
2594
2595
  const inspirationSection = images.length ? `<inspiration_images>
2595
2596
  ## Design inspiration
2596
2597
 
2597
- A random sample of pre-analyzed design references. Use these observations to inform your recommendations.
2598
+ A random sample of pre-analyzed design references. Use these observations to inform your recommendations and build something creative, unique, and compelling.
2598
2599
 
2599
2600
  ${imageList}
2600
2601
  </inspiration_images>` : "";
@@ -2636,7 +2637,7 @@ var init_designExpert = __esm({
2636
2637
  init_tools2();
2637
2638
  init_prompt2();
2638
2639
  DESCRIPTION = `
2639
- A dedicated visual design expert. You have a lot on your plate as a coding agent, and design is a specialized skill \u2014 delegate visual design questions here rather than making those decisions yourself. This agent has curated font catalogs, color theory knowledge, access to design inspiration galleries, and strong opinions about what looks good. It can answer from expertise alone or research the web when needed.
2640
+ A dedicated visual design expert. You have a lot on your plate as a coding agent, and design is a specialized skill \u2014 delegate visual design here rather than making those decisions yourself. This agent has curated font catalogs, color theory knowledge, access to design inspiration galleries, ability to create beautiful photos and images, and strong opinions about what looks good. It can answer from expertise alone or research the web when needed.
2640
2641
 
2641
2642
  The visual design expert can be used for all things visual design, from quick questions to comprehensive plans:
2642
2643
  - Font selection and pairings ("suggest fonts for a <x> app")
@@ -2644,12 +2645,12 @@ The visual design expert can be used for all things visual design, from quick qu
2644
2645
  - Gradient, animation, and visual effect recommendations
2645
2646
  - Layout and composition ideas that go beyond generic AI defaults
2646
2647
  - Analyzing a reference site or screenshot for design insights (it can take screenshots and do research on its own)
2647
- - Sourcing imagery: stock photos, AI-generated images, or product screenshots for reference
2648
+ - Beautiful layout images or photos
2648
2649
  - Icon recommendations
2649
2650
  - Proposing full visual directions during intake
2650
2651
 
2651
2652
  **How to write the task:**
2652
- Include context about the app \u2014 what it does, who uses it, what mood or feeling the interface should convey. More context produces better results. For quick questions ("three font pairings for a <x> app"), brief is fine. You can ask for multiple topics, multiple options, etc.
2653
+ Include context about the app \u2014 what it does, who uses it, what mood or feeling the interface should convey. If the user has any specific requirements, be sure to include them. The agent can not see your conversation with the user, so you need to include all details. More context produces better results. For quick questions ("three font pairings for a <x> app"), brief is fine. You can ask for multiple topics, multiple options, etc.
2653
2654
 
2654
2655
  **What it returns:**
2655
2656
  Concrete resources: hex values, font names with CSS URLs, image URLs, layout descriptions. Use the results directly in brand spec files or as guidance when building the interface.
@@ -3049,9 +3050,10 @@ function startStatusWatcher(config) {
3049
3050
  const { apiConfig, getContext, onStatus, interval = 3e3, signal } = config;
3050
3051
  let lastLabel = "";
3051
3052
  let inflight = false;
3053
+ let stopped = false;
3052
3054
  const url = `${apiConfig.baseUrl}/_internal/v2/agent/remy/generate-status`;
3053
3055
  async function tick() {
3054
- if (signal?.aborted || inflight) {
3056
+ if (stopped || signal?.aborted || inflight) {
3055
3057
  return;
3056
3058
  }
3057
3059
  inflight = true;
@@ -3096,6 +3098,9 @@ function startStatusWatcher(config) {
3096
3098
  return;
3097
3099
  }
3098
3100
  lastLabel = data.label;
3101
+ if (stopped) {
3102
+ return;
3103
+ }
3099
3104
  log.debug("Status watcher: emitting", { label: data.label });
3100
3105
  onStatus(data.label);
3101
3106
  } catch (err) {
@@ -3110,6 +3115,7 @@ function startStatusWatcher(config) {
3110
3115
  log.debug("Status watcher started", { interval });
3111
3116
  return {
3112
3117
  stop() {
3118
+ stopped = true;
3113
3119
  clearInterval(timer);
3114
3120
  log.debug("Status watcher stopped");
3115
3121
  }
@@ -83,6 +83,7 @@ Interfaces run fullscreen in the user's browser or a wrapped webview mobile app.
83
83
  - **No long scrolling pages.** Use structured layouts: cards, split panes, steppers, tabs, grouped sections that fit the viewport. The interface should feel like a single-purpose tool, not a document.
84
84
  - **On mobile**, scrolling may be necessary, but use sticky headers, fixed CTAs, and anchored navigation to keep key actions within reach.
85
85
  - Think of every screen as something the user opens, uses, and closes — not something they read.
86
+ - Even landing pages can be creative. Resist the urge to default to boring bootstrap-style landinage page elements - simple, tired grids, cliche testimonials rows, etc. - be creative and use the ideas from the inspiration to craft something truly compelling and modern.
86
87
 
87
88
  ## Visual Design
88
89
 
@@ -108,6 +109,7 @@ Layout shift is never acceptable. Elements jumping around as content loads or st
108
109
  - Loading-to-loaded transitions should swap content in-place without changing container size.
109
110
  - Buttons must not change size during loading states. Use a fixed width or `min-width`, and swap the label for a spinner or short text that fits the same space. "Submit" becoming "Submitting..." should not make the button wider and push adjacent elements around.
110
111
  - Conditional UI should use opacity/overlay transitions, not insertion into flow that displaces existing content.
112
+ - This is especially important to keep in mind when building things that display AI generated text, especially if the text streams in. Make sure to never shift layout because of streaming AI text.
111
113
 
112
114
  ## Responsive Design
113
115
 
@@ -4,10 +4,6 @@
4
4
  {{prompts/frontend-design-notes.md}}
5
5
  </frontend_design_standards>
6
6
 
7
- {{fonts_to_consider}}
8
-
9
- {{inspiration_images}}
10
-
11
7
  <design_guidelines>
12
8
  {{prompts/icons.md}}
13
9
  {{prompts/images.md}}
@@ -16,4 +12,8 @@
16
12
  {{prompts/layout.md}}
17
13
  </design_guidelines>
18
14
 
15
+ {{fonts_to_consider}}
16
+
17
+ {{inspiration_images}}
18
+
19
19
  {{prompts/instructions.md}}
@@ -83,6 +83,7 @@ Interfaces run fullscreen in the user's browser or a wrapped webview mobile app.
83
83
  - **No long scrolling pages.** Use structured layouts: cards, split panes, steppers, tabs, grouped sections that fit the viewport. The interface should feel like a single-purpose tool, not a document.
84
84
  - **On mobile**, scrolling may be necessary, but use sticky headers, fixed CTAs, and anchored navigation to keep key actions within reach.
85
85
  - Think of every screen as something the user opens, uses, and closes — not something they read.
86
+ - Even landing pages can be creative. Resist the urge to default to boring bootstrap-style landinage page elements - simple, tired grids, cliche testimonials rows, etc. - be creative and use the ideas from the inspiration to craft something truly compelling and modern.
86
87
 
87
88
  ## Visual Design
88
89
 
@@ -108,6 +109,7 @@ Layout shift is never acceptable. Elements jumping around as content loads or st
108
109
  - Loading-to-loaded transitions should swap content in-place without changing container size.
109
110
  - Buttons must not change size during loading states. Use a fixed width or `min-width`, and swap the label for a spinner or short text that fits the same space. "Submit" becoming "Submitting..." should not make the button wider and push adjacent elements around.
110
111
  - Conditional UI should use opacity/overlay transitions, not insertion into flow that displaces existing content.
112
+ - This is especially important to keep in mind when building things that display AI generated text, especially if the text streams in. Make sure to never shift layout because of streaming AI text.
111
113
 
112
114
  ## Responsive Design
113
115
 
@@ -26,6 +26,10 @@ Sometimes you already know the answer. If asked for font pairings for a poetry a
26
26
 
27
27
  Include concrete resources (URLs, hex values, font names with CSS links) in your responses. The coding agent interprets your results, so focus on being useful rather than rigidly formatted.
28
28
 
29
+ When giving longer responses like full design plans, be sure to include specific notes specific to this project for things the coding agent should pay extra close attention to as it builds. Use <frontend_design_standards> as a resource for this information.
30
+
31
+ Assume that the coding agent has a terrible sense of design. Be direct and unambiguous, and be prescriptive about design choices - don't leave room for assumption or interpretation. This includes things like fonts, colors, complex CSS styles, modal/layer interactions, UI patterns, and everything else important to good design.
32
+
29
33
  ### Color palettes
30
34
 
31
35
  3 or 4 brand colors with evocative names (not CSS property names like "Background" or "Border"). The `description` field is short and functional — what the color is used for, not why you chose it. Keep descriptions under 10 words.
@@ -1,12 +1,14 @@
1
1
  ## Photos and Images
2
2
 
3
+ When the design calls for imagery, include actual image URLs so the coding agent can use them immediately. Prefer images with strong subjects: people, scenes - dramatic, eye catching, and beautiful.
4
+
3
5
  Not every interface needs images. A productivity dashboard, a finance tool, or a data-heavy app is better served by strong typography, color, and layout than by shoehorned photography. Use images when they genuinely add to the experience — landing pages, marketing sites, content-driven apps — not as decoration on every project.
4
6
 
5
- When your design does call for imagery hero sections, backgrounds, feature showcases, about pages include actual image URLs so the coding agent can use them immediately.
7
+ Do not provide images as "references" - images must be ready-to-use assets that can be included directly in the design.
6
8
 
7
9
  ### Two sources
8
10
 
9
- **AI-generated photos and images** (`generateImages`) — Seedream produces high-quality results for both photorealistic images and abstract/creative visuals. You have full control over the output: style, composition, colors, mood. When generating multiple images, batch them in a single `generateImages` call — they run in parallel. Images are hosted on MindStudio CDN and ready for production use and dynamic resizing.
11
+ **AI-generated photos and images** (`generateImages`) — Seedream produces high-quality results for both photorealistic images and abstract/creative visuals. You have full control over the output: style, composition, colors, mood. When generating multiple images, batch them in a single `generateImages` call — they run in parallel. Generated images are production assets, not mockups or concepts — they are hosted on MindStudio CDN at full resolution and will be used directly in the final interface.
10
12
 
11
13
  **Stock photography** (`searchStockPhotos`) — Pexels has modern, editorial-style photos. Useful for quick placeholders, mockups, or when you need a specific real-world subject (a specific city, a recognizable object, etc.). Write specific queries: "person writing in notebook at minimalist desk, natural light" not "office."
12
14
 
@@ -17,11 +19,13 @@ Lead with the visual style, then describe the content. This order helps the mode
17
19
  **Structure:** Style/medium first, then subject, then details.
18
20
  - "Digital photography, soft natural window light, shallow depth of field. A ceramic coffee cup on a marble countertop, morning light casting long shadows, warm tones."
19
21
  - "Flat vector illustration, clean lines, limited color palette. An isometric view of a workspace with a laptop, plant, and notebook."
20
- - "Abstract digital art, fluid gradients, high contrast. Deep navy (#0A1628) flowing into warm amber (#D4A574), organic liquid shapes, editorial feel."
22
+ - "Abstract digital art, fluid gradients, high contrast. Deep navy flowing into warm amber, organic liquid shapes, editorial feel."
21
23
 
22
24
  **For photorealistic images:** Specify the photography style (editorial, portrait, product, aerial), lighting (natural, studio, golden hour, direct flash), and camera characteristics (close-up, wide angle, shallow depth of field, slightly grainy texture).
23
25
 
24
- **Avoid:** Describing positions of arms, legs, or specific limb arrangements — this confuses image models. Focus on the overall scene, mood, and composition instead.
26
+ **Avoid:**
27
+ - Hex codes in prompts — the model renders them as visible text. Describe colors by name instead.
28
+ - Describing positions of arms, legs, or specific limb arrangements — this confuses image models.
25
29
 
26
30
  ### What makes good photos and images
27
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "MindStudio coding agent",
5
5
  "repository": {
6
6
  "type": "git",