@mindstudio-ai/remy 0.1.45 → 0.1.47

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
@@ -2157,7 +2157,10 @@ var runMethodTool = {
2157
2157
 
2158
2158
  // src/subagents/common/analyzeImage.ts
2159
2159
  var VISION_MODEL = "gemini-3-flash";
2160
- var VISION_MODEL_OVERRIDE = JSON.stringify({ model: VISION_MODEL });
2160
+ var VISION_MODEL_OVERRIDE = JSON.stringify({
2161
+ model: VISION_MODEL,
2162
+ config: { thinkingBudget: "off" }
2163
+ });
2161
2164
  async function analyzeImage(params) {
2162
2165
  const { prompt, imageUrl, timeout = 2e5, onLog } = params;
2163
2166
  return runCli(
@@ -3080,6 +3083,11 @@ __export(generateImages_exports, {
3080
3083
  });
3081
3084
 
3082
3085
  // src/subagents/designExpert/tools/images/enhancePrompt.ts
3086
+ var ENHANCE_MODEL = "gemini-3-flash";
3087
+ var MODEL_OVERRIDE = JSON.stringify({
3088
+ model: ENHANCE_MODEL,
3089
+ config: { thinkingBudget: "off" }
3090
+ });
3083
3091
  var SYSTEM_PROMPT = readAsset(
3084
3092
  "subagents/designExpert/tools/images/enhance-image-prompt.md"
3085
3093
  );
@@ -3104,7 +3112,7 @@ ${context}
3104
3112
  ${brief}
3105
3113
  </brief>`;
3106
3114
  const enhanced = await runCli(
3107
- `mindstudio generate-text --message ${JSON.stringify(message)} --output-key content --no-meta`,
3115
+ `mindstudio generate-text --message ${JSON.stringify(message)} --model-override ${JSON.stringify(MODEL_OVERRIDE)} --output-key content --no-meta`,
3108
3116
  { timeout: 6e4, onLog }
3109
3117
  );
3110
3118
  return enhanced.trim();
package/dist/index.js CHANGED
@@ -2085,7 +2085,10 @@ var init_analyzeImage = __esm({
2085
2085
  "use strict";
2086
2086
  init_runCli();
2087
2087
  VISION_MODEL = "gemini-3-flash";
2088
- VISION_MODEL_OVERRIDE = JSON.stringify({ model: VISION_MODEL });
2088
+ VISION_MODEL_OVERRIDE = JSON.stringify({
2089
+ model: VISION_MODEL,
2090
+ config: { thinkingBudget: "off" }
2091
+ });
2089
2092
  }
2090
2093
  });
2091
2094
 
@@ -3157,17 +3160,22 @@ ${context}
3157
3160
  ${brief}
3158
3161
  </brief>`;
3159
3162
  const enhanced = await runCli(
3160
- `mindstudio generate-text --message ${JSON.stringify(message)} --output-key content --no-meta`,
3163
+ `mindstudio generate-text --message ${JSON.stringify(message)} --model-override ${JSON.stringify(MODEL_OVERRIDE)} --output-key content --no-meta`,
3161
3164
  { timeout: 6e4, onLog }
3162
3165
  );
3163
3166
  return enhanced.trim();
3164
3167
  }
3165
- var SYSTEM_PROMPT;
3168
+ var ENHANCE_MODEL, MODEL_OVERRIDE, SYSTEM_PROMPT;
3166
3169
  var init_enhancePrompt = __esm({
3167
3170
  "src/subagents/designExpert/tools/images/enhancePrompt.ts"() {
3168
3171
  "use strict";
3169
3172
  init_runCli();
3170
3173
  init_assets();
3174
+ ENHANCE_MODEL = "gemini-3-flash";
3175
+ MODEL_OVERRIDE = JSON.stringify({
3176
+ model: ENHANCE_MODEL,
3177
+ config: { thinkingBudget: "off" }
3178
+ });
3171
3179
  SYSTEM_PROMPT = readAsset(
3172
3180
  "subagents/designExpert/tools/images/enhance-image-prompt.md"
3173
3181
  );
@@ -82,7 +82,7 @@ The UI should feel instant. Never make the user wait for a server round-trip to
82
82
 
83
83
  ## FTUE
84
84
 
85
- All interactive apps must be intuitive and easy to use. Form elements must be well-labelled. Complex interfaces should have descriptions or tooltips when helpful. Complex apps benefit from a beautiful simple onboarding modal on first use or a simple click tour. Even if the app is intuitive and easy to use, users showing up for the first time might still be overwhelmed or confused, and we have an opportunity to set expectations, provide context, and make the user confident as they use our product. Don't neglect this.
85
+ All interactive apps must be intuitive and easy to use. Form elements must be well-labelled. Complex interfaces should have descriptions or tooltips when helpful. Complex apps benefit from a beautiful simple onboarding modal on first use or a simple click tour. Mobile apps need a beautiful welcome screen sequence that orients the user to the app. Ask the visualDesignExpert for advice here. Even if the app is intuitive and easy to use, users showing up for the first time might still be overwhelmed or confused, and we have an opportunity to set expectations, provide context, and make the user confident as they use our product. Don't neglect this.
86
86
 
87
87
  ## What to Actively Avoid At All Costs
88
88
 
@@ -101,3 +101,7 @@ When a scenario runs, the platform:
101
101
  3. **Impersonates** the roles from the scenario's `roles` field (the app renders from that user's perspective)
102
102
 
103
103
  This is deterministic — same scenario always produces the same state.
104
+
105
+ ## Scenario Images
106
+
107
+ When scenarios seed data that includes image URLs (profile photos, product images, cover art, etc.), ask the `visualDesignExpert` to generate a small batch of images that fit the app's aesthetic before writing the scenario code. A handful of bespoke photos make scenarios feel dramatically more real than placeholder services. Use the CDN URLs directly in your `db.push()` calls.
@@ -47,6 +47,16 @@ export const Users = db.defineTable<User>('users', {
47
47
  | `object` / `array` / JSON types | TEXT | Stored as JSON string, parsed on read |
48
48
  | `User` (branded type) | TEXT | User ID with `@@user@@` prefix (transparent — your code works with clean UUIDs) |
49
49
 
50
+ ### When to Use JSON Columns vs Separate Tables
51
+
52
+ Every table operation is a network round-trip — not a local SQLite query. There are no JOINs. Fetching related data across tables means multiple sequential or batched HTTP calls. Design your schema around how data is accessed, not traditional normalization rules. Remember that databases in these apps are usually quite small - often single or a handful of users - we need to optimize for speed, not normalization.
53
+
54
+ **Use a JSON column** when the data is always read and written with its parent. A product with a list of variant options, a form submission with its answers etc — these are single units that load together and save together. One row, one round-trip.
55
+
56
+ **Use a separate table** when you need to query the child data independently, when the child set could grow unbounded, or when children are updated individually without touching the parent.
57
+
58
+ Most 1:1 and 1:few relationships belong in JSON columns. Separate tables are for genuinely independent entities that happen to reference each other.
59
+
50
60
  ### System Columns
51
61
 
52
62
  Every table automatically has these columns. The SDK adds them to the TypeScript return type automatically — you can access them on any row returned from `get()`, `filter()`, `push()`, etc. without declaring them in your interface. They're also stripped from write inputs, so you never pass them to `push()` or `update()`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.45",
3
+ "version": "0.1.47",
4
4
  "description": "MindStudio coding agent",
5
5
  "repository": {
6
6
  "type": "git",