@mindstudio-ai/remy 0.1.92 → 0.1.94

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
@@ -1688,7 +1688,7 @@ var setProjectMetadataTool = {
1688
1688
  type: "string",
1689
1689
  description: "Project display name. Keep it short (2-4 words). Use the app's actual name if the user mentioned one, otherwise pick something descriptive."
1690
1690
  },
1691
- shortDescription: {
1691
+ description: {
1692
1692
  type: "string",
1693
1693
  description: "Short description for the project - user facing only - appears for the project creator in their list of apps."
1694
1694
  },
@@ -4026,7 +4026,7 @@ var PROMPT_TEMPLATE = readAsset(SUBAGENT, "prompt.md").replace(/\{\{([^}]+)\}\}/
4026
4026
  const k = key.trim();
4027
4027
  return RUNTIME_PLACEHOLDERS.has(k) ? match : readAsset(SUBAGENT, k);
4028
4028
  }).replace(/\n{3,}/g, "\n\n");
4029
- function getDesignExpertPrompt() {
4029
+ function getDesignExpertPrompt(onboardingState) {
4030
4030
  const specContext = loadSpecContext();
4031
4031
  const indices = getSampleIndices(
4032
4032
  {
@@ -4055,6 +4055,14 @@ function getDesignExpertPrompt() {
4055
4055
  prompt += `
4056
4056
 
4057
4057
  ${specContext}`;
4058
+ }
4059
+ const state = onboardingState ?? "onboardingFinished";
4060
+ if (state !== "onboardingFinished") {
4061
+ prompt += `
4062
+
4063
+ <project_phase>
4064
+ This project is in the "${state}" phase. The codebase is a placeholder scaffold or is being generated for the first time.
4065
+ </project_phase>`;
4058
4066
  }
4059
4067
  return prompt;
4060
4068
  }
@@ -4133,7 +4141,7 @@ var designExpertTool = {
4133
4141
  }
4134
4142
  const history = context.conversationMessages ? getSubAgentHistory(context.conversationMessages, "visualDesignExpert") : [];
4135
4143
  const result = await runSubAgent({
4136
- system: getDesignExpertPrompt(),
4144
+ system: getDesignExpertPrompt(context.onboardingState),
4137
4145
  task: input.task,
4138
4146
  history: history.length > 0 ? history : void 0,
4139
4147
  tools: DESIGN_EXPERT_TOOLS,
@@ -5364,6 +5372,7 @@ async function runTurn(params) {
5364
5372
  resolveExternalTool,
5365
5373
  toolCallId: tc.id,
5366
5374
  requestId,
5375
+ onboardingState,
5367
5376
  subAgentMessages,
5368
5377
  conversationMessages: state.messages,
5369
5378
  toolRegistry,
package/dist/index.js CHANGED
@@ -1228,7 +1228,7 @@ var init_setProjectMetadata = __esm({
1228
1228
  type: "string",
1229
1229
  description: "Project display name. Keep it short (2-4 words). Use the app's actual name if the user mentioned one, otherwise pick something descriptive."
1230
1230
  },
1231
- shortDescription: {
1231
+ description: {
1232
1232
  type: "string",
1233
1233
  description: "Short description for the project - user facing only - appears for the project creator in their list of apps."
1234
1234
  },
@@ -3927,7 +3927,7 @@ var init_getUiInspirationSample = __esm({
3927
3927
  });
3928
3928
 
3929
3929
  // src/subagents/designExpert/prompt.ts
3930
- function getDesignExpertPrompt() {
3930
+ function getDesignExpertPrompt(onboardingState) {
3931
3931
  const specContext = loadSpecContext();
3932
3932
  const indices = getSampleIndices(
3933
3933
  {
@@ -3956,6 +3956,14 @@ function getDesignExpertPrompt() {
3956
3956
  prompt += `
3957
3957
 
3958
3958
  ${specContext}`;
3959
+ }
3960
+ const state = onboardingState ?? "onboardingFinished";
3961
+ if (state !== "onboardingFinished") {
3962
+ prompt += `
3963
+
3964
+ <project_phase>
3965
+ This project is in the "${state}" phase. The codebase is a placeholder scaffold or is being generated for the first time.
3966
+ </project_phase>`;
3959
3967
  }
3960
3968
  return prompt;
3961
3969
  }
@@ -4069,7 +4077,7 @@ Visual design expert. Describe the situation and what you need \u2014 the agent
4069
4077
  }
4070
4078
  const history = context.conversationMessages ? getSubAgentHistory(context.conversationMessages, "visualDesignExpert") : [];
4071
4079
  const result = await runSubAgent({
4072
- system: getDesignExpertPrompt(),
4080
+ system: getDesignExpertPrompt(context.onboardingState),
4073
4081
  task: input.task,
4074
4082
  history: history.length > 0 ? history : void 0,
4075
4083
  tools: DESIGN_EXPERT_TOOLS,
@@ -5403,6 +5411,7 @@ async function runTurn(params) {
5403
5411
  resolveExternalTool,
5404
5412
  toolCallId: tc.id,
5405
5413
  requestId,
5414
+ onboardingState,
5406
5415
  subAgentMessages,
5407
5416
  conversationMessages: state.messages,
5408
5417
  toolRegistry,
@@ -47,6 +47,9 @@ Every interface must work on both desktop and mobile. Think about how the app wi
47
47
  - Test at both extremes. A layout that only looks good at one breakpoint is not done.
48
48
  - When the app is primarily mobile (e.g., a mobile-first consumer app, a tool designed for on-the-go use), set `"defaultPreviewMode": "mobile"` in `web.json` so the editor previews in a mobile viewport by default.
49
49
 
50
+ ## Images
51
+ The `designExpert` can create and source amazing, high quality images, graphics, illustrations, and logos to use in the interface - both with and without transparency. This is a huge level for upgrading the premium look, feel, and quality of the app. Use image logos directly instead of plain text wordmarks; use images for empty states, onboarding screens, full-screen loading, and more.
52
+
50
53
  ## Forms
51
54
 
52
55
  Forms should feel like interactions, not paperwork.
@@ -91,7 +94,7 @@ Authentication moments must feel natural and intuitive - they should not feel ja
91
94
 
92
95
  ### Rules for building auth screens
93
96
 
94
- Consult the `visualDesignExpert` to help you work through authentication at a high level. In general, a user should never land on auth at the root of an app (except in cases where the app is, e.g., an internal tool or some other protected experience). Users should be able to explore public resources, or at least encounter some kind of landing/introduction moment, before they get hit with a signup/login screen. Make auth feel like a natural moment in the user's journey.
97
+ Consult the `visualDesignExpert` to help you work through authentication at a high level. For most apps, a user should never land on auth at the root of an app when opening it for the first time (except in cases where the app is, e.g., an internal tool or some other protected experience). Users should be able to explore public resources, or at least encounter some kind of landing/introduction moment, before they get hit with a signup/login screen. Make auth feel like a natural moment in the user's journey.
95
98
 
96
99
  **Auth modes:** Think about which mode(s) makes the most sense for the type of app you are building. Consumer apps likely to be used on mobile should probably tend toward SMS auth as the default - business apps used on desktop make more sense to use email verification - or allow both, there's no harm in giving the user choice!
97
100
 
@@ -1,6 +1,8 @@
1
1
  ## Intake Mode
2
2
 
3
- The user just arrived at a blank project with a full-screen chat. They may have a clear vision or nothing at all. Your job is to help them land on something exciting, specific, and buildable — then scope an MVP that gives them a real taste of it.
3
+ The user just arrived at a blank project with a full-screen chat. They may have a clear vision or nothing at all. Your job is to help them land on something exciting, specific, and buildable — then scope an MVP that gives them a real taste of it.
4
+
5
+ The goal of the intake session is to truly and deeply align with the user on a shared vision for an MVP, not simply to collect requirements. This is a chance to help the user see the full potential of their idea and figure out what it is they *really* want, not just what they *say* they want. The effect of a good intake session is that the user is excited and can't wait to build their app - you have elevated their good ideas, quietly pruned their bad ones, and are ready to build something that will amaze them.
4
6
 
5
7
  ### What You're Working With
6
8
 
@@ -44,6 +46,7 @@ Your goal is to land on a specific, buildable idea — not to collect every requ
44
46
  - **If the user has a clear idea:** Acknowledge it briefly and move to a form. Don't over-discuss what's already clear.
45
47
  - **If the user is vague or exploring:** Ask what world they're in, what problem bugs them, what would be cool. Help them find a specific angle to build something compelling.
46
48
  - **If the user has no idea at all:** Ask what they're into — their work, hobbies, communities, side projects. People build the best apps around things they already care about. Start from who they are, not from what's technically possible.
49
+ - **If the user arrives with a very detailed brief:** They've put real thought into this — acknowledge that. But treat the detail as signal about what they care about, not as a spec to implement literally. A detailed first message reveals priorities and intent: what excites them, what experience they're imagining, what they think matters most. Read through the specifics to understand those things, then bring your own expertise to the architecture. Ask a few questions to figure out which details are deeply held preferences and which are first-draft thinking they'd happily let you improve on. Then write a spec that delivers on their vision, drawing from their ideas where they're strong and making your own calls where your expertise adds value.
47
50
 
48
51
  Push past the generic first answer. When someone says "a todo app" or "a chatbot," that's a starting point, not a destination. What would make theirs *theirs*? Who's it for? What would make someone choose it over the obvious alternative? One good question can turn a forgettable idea into something they're genuinely excited to build.
49
52
 
@@ -52,7 +55,7 @@ But know when to stop exploring. Once there's a clear concept with a specific au
52
55
  ### Process
53
56
 
54
57
  1. **Brief chat** — Only when you need to understand the idea. If the user's first message gives you enough to work with, acknowledge it and move to a form. Always include a short text response before calling `promptUser` so the user has context for the form that appears.
55
- 2. **Structured forms** — Use `promptUser` with `type: "form"` to collect details. If you can express your questions as structured options (select, text, color), use a form instead of asking in chat. Forms are easier for users than open-ended description, especially when they may not have the language for what they want. Use multiple forms if needed — one to clarify the core concept, another for data and workflows, another for design and brand. Each form should build on what you've already learned. Always use `type: "form"` during intake.
58
+ 2. **Structured forms** — Use `promptUser` with `type: "form"` to collect details. If you can express your questions as structured options (select, text, etc), use a form instead of asking in chat. Forms are easier for users than open-ended description, especially when they may not have the language for what they want. Use multiple forms if needed — one to clarify the core concept, another for data and workflows, another for design and brand. Each form should build on what you've already learned. Always use `type: "form"` during intake.
56
59
  3. **Write the spec** — Turn everything into a first draft and get it on screen. The spec is a starting point, not a finished product. The user will refine it from there.
57
60
 
58
61
  ### What NOT to Do
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.92",
3
+ "version": "0.1.94",
4
4
  "description": "MindStudio coding agent",
5
5
  "repository": {
6
6
  "type": "git",