@mindstudio-ai/remy 0.1.30 → 0.1.32

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
@@ -1331,6 +1331,7 @@ var askMindStudioSdkTool = {
1331
1331
  async execute(input) {
1332
1332
  const query = input.query;
1333
1333
  return runCli(`mindstudio ask ${JSON.stringify(query)}`, {
1334
+ timeout: 2e5,
1334
1335
  maxBuffer: 512 * 1024
1335
1336
  });
1336
1337
  }
@@ -2100,7 +2101,8 @@ async function captureAndAnalyzeScreenshot(promptOrOptions) {
2100
2101
  }
2101
2102
  const analysisPrompt = prompt || SCREENSHOT_ANALYSIS_PROMPT;
2102
2103
  const analysis = await runCli(
2103
- `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`
2104
+ `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`,
2105
+ { timeout: 2e5 }
2104
2106
  );
2105
2107
  return JSON.stringify({ url, analysis });
2106
2108
  }
@@ -2538,7 +2540,7 @@ var browserAutomationTool = {
2538
2540
  }));
2539
2541
  const batchResult = await runCli(
2540
2542
  `mindstudio batch --no-meta ${JSON.stringify(JSON.stringify(batchInput))}`,
2541
- { timeout: 12e4 }
2543
+ { timeout: 2e5 }
2542
2544
  );
2543
2545
  try {
2544
2546
  const analyses = JSON.parse(batchResult);
@@ -2579,7 +2581,7 @@ var DESIGN_REFERENCE_PROMPT = fs14.readFileSync(resolvePath("prompts/tool-prompt
2579
2581
  var DESIGN_EXPERT_TOOLS = [
2580
2582
  {
2581
2583
  name: "searchGoogle",
2582
- description: "Search Google for web results. Use for finding design inspiration, font recommendations, UI patterns, real products in a domain, and reference material.",
2584
+ description: 'Search Google for web results. Reserch modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, etc. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. Pick one or more URLs from the results and then use `fetchUrl` to get their text content.',
2583
2585
  inputSchema: {
2584
2586
  type: "object",
2585
2587
  properties: {
@@ -2593,7 +2595,7 @@ var DESIGN_EXPERT_TOOLS = [
2593
2595
  },
2594
2596
  {
2595
2597
  name: "fetchUrl",
2596
- description: "Fetch the content of a web page as markdown. Optionally capture a screenshot to see the visual design. Use to analyze reference sites, read font specimen pages, or extract design details.",
2598
+ description: "Fetch the content of a web page as markdown. Optionally capture a screenshot to see the visual design. Use when reading sites from search results or specific things the user wants to incorporate.",
2597
2599
  inputSchema: {
2598
2600
  type: "object",
2599
2601
  properties: {
@@ -2716,7 +2718,8 @@ async function executeDesignExpertTool(name, input, context, toolCallId) {
2716
2718
  let imageUrl = url;
2717
2719
  if (!isImageUrl) {
2718
2720
  const ssUrl = await runCli(
2719
- `mindstudio screenshot-url --url ${JSON.stringify(url)} --mode viewport --width 1440 --delay 2000 --output-key screenshotUrl --no-meta`
2721
+ `mindstudio screenshot-url --url ${JSON.stringify(url)} --mode viewport --width 1440 --delay 2000 --output-key screenshotUrl --no-meta`,
2722
+ { timeout: 12e4 }
2720
2723
  );
2721
2724
  if (ssUrl.startsWith("Error")) {
2722
2725
  return `Could not screenshot ${url}: ${ssUrl}`;
@@ -2724,7 +2727,8 @@ async function executeDesignExpertTool(name, input, context, toolCallId) {
2724
2727
  imageUrl = ssUrl;
2725
2728
  }
2726
2729
  const analysis = await runCli(
2727
- `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(imageUrl)} --output-key analysis --no-meta`
2730
+ `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(imageUrl)} --output-key analysis --no-meta`,
2731
+ { timeout: 2e5 }
2728
2732
  );
2729
2733
  return isImageUrl ? analysis : `Screenshot: ${imageUrl}
2730
2734
 
@@ -2746,7 +2750,7 @@ ${analysis}`;
2746
2750
  });
2747
2751
  const url = await runCli(
2748
2752
  `mindstudio generate-image '${step}' --output-key imageUrl --no-meta`,
2749
- { jsonLogs: true }
2753
+ { jsonLogs: true, timeout: 2e5 }
2750
2754
  );
2751
2755
  imageUrls = [url];
2752
2756
  } else {
@@ -2762,7 +2766,7 @@ ${analysis}`;
2762
2766
  }));
2763
2767
  const batchResult = await runCli(
2764
2768
  `mindstudio batch '${JSON.stringify(steps)}' --no-meta`,
2765
- { jsonLogs: true }
2769
+ { jsonLogs: true, timeout: 2e5 }
2766
2770
  );
2767
2771
  try {
2768
2772
  const parsed = JSON.parse(batchResult);
@@ -2779,7 +2783,8 @@ ${analysis}`;
2779
2783
  return { prompt: prompts[i], error: url };
2780
2784
  }
2781
2785
  const analysis = await runCli(
2782
- `mindstudio analyze-image --prompt ${JSON.stringify(ANALYZE_PROMPT)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`
2786
+ `mindstudio analyze-image --prompt ${JSON.stringify(ANALYZE_PROMPT)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`,
2787
+ { timeout: 2e5 }
2783
2788
  );
2784
2789
  return { url, prompt: prompts[i], analysis, width, height };
2785
2790
  })
package/dist/index.js CHANGED
@@ -1114,6 +1114,7 @@ var init_sdkConsultant = __esm({
1114
1114
  async execute(input) {
1115
1115
  const query = input.query;
1116
1116
  return runCli(`mindstudio ask ${JSON.stringify(query)}`, {
1117
+ timeout: 2e5,
1117
1118
  maxBuffer: 512 * 1024
1118
1119
  });
1119
1120
  }
@@ -2041,7 +2042,8 @@ async function captureAndAnalyzeScreenshot(promptOrOptions) {
2041
2042
  }
2042
2043
  const analysisPrompt = prompt || SCREENSHOT_ANALYSIS_PROMPT;
2043
2044
  const analysis = await runCli(
2044
- `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`
2045
+ `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`,
2046
+ { timeout: 2e5 }
2045
2047
  );
2046
2048
  return JSON.stringify({ url, analysis });
2047
2049
  }
@@ -2532,7 +2534,7 @@ var init_browserAutomation = __esm({
2532
2534
  }));
2533
2535
  const batchResult = await runCli(
2534
2536
  `mindstudio batch --no-meta ${JSON.stringify(JSON.stringify(batchInput))}`,
2535
- { timeout: 12e4 }
2537
+ { timeout: 2e5 }
2536
2538
  );
2537
2539
  try {
2538
2540
  const analyses = JSON.parse(batchResult);
@@ -2602,7 +2604,8 @@ async function executeDesignExpertTool(name, input, context, toolCallId) {
2602
2604
  let imageUrl = url;
2603
2605
  if (!isImageUrl) {
2604
2606
  const ssUrl = await runCli(
2605
- `mindstudio screenshot-url --url ${JSON.stringify(url)} --mode viewport --width 1440 --delay 2000 --output-key screenshotUrl --no-meta`
2607
+ `mindstudio screenshot-url --url ${JSON.stringify(url)} --mode viewport --width 1440 --delay 2000 --output-key screenshotUrl --no-meta`,
2608
+ { timeout: 12e4 }
2606
2609
  );
2607
2610
  if (ssUrl.startsWith("Error")) {
2608
2611
  return `Could not screenshot ${url}: ${ssUrl}`;
@@ -2610,7 +2613,8 @@ async function executeDesignExpertTool(name, input, context, toolCallId) {
2610
2613
  imageUrl = ssUrl;
2611
2614
  }
2612
2615
  const analysis = await runCli(
2613
- `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(imageUrl)} --output-key analysis --no-meta`
2616
+ `mindstudio analyze-image --prompt ${JSON.stringify(analysisPrompt)} --image-url ${JSON.stringify(imageUrl)} --output-key analysis --no-meta`,
2617
+ { timeout: 2e5 }
2614
2618
  );
2615
2619
  return isImageUrl ? analysis : `Screenshot: ${imageUrl}
2616
2620
 
@@ -2632,7 +2636,7 @@ ${analysis}`;
2632
2636
  });
2633
2637
  const url = await runCli(
2634
2638
  `mindstudio generate-image '${step}' --output-key imageUrl --no-meta`,
2635
- { jsonLogs: true }
2639
+ { jsonLogs: true, timeout: 2e5 }
2636
2640
  );
2637
2641
  imageUrls = [url];
2638
2642
  } else {
@@ -2648,7 +2652,7 @@ ${analysis}`;
2648
2652
  }));
2649
2653
  const batchResult = await runCli(
2650
2654
  `mindstudio batch '${JSON.stringify(steps)}' --no-meta`,
2651
- { jsonLogs: true }
2655
+ { jsonLogs: true, timeout: 2e5 }
2652
2656
  );
2653
2657
  try {
2654
2658
  const parsed = JSON.parse(batchResult);
@@ -2665,7 +2669,8 @@ ${analysis}`;
2665
2669
  return { prompt: prompts[i], error: url };
2666
2670
  }
2667
2671
  const analysis = await runCli(
2668
- `mindstudio analyze-image --prompt ${JSON.stringify(ANALYZE_PROMPT)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`
2672
+ `mindstudio analyze-image --prompt ${JSON.stringify(ANALYZE_PROMPT)} --image-url ${JSON.stringify(url)} --output-key analysis --no-meta`,
2673
+ { timeout: 2e5 }
2669
2674
  );
2670
2675
  return { url, prompt: prompts[i], analysis, width, height };
2671
2676
  })
@@ -2700,7 +2705,7 @@ var init_tools2 = __esm({
2700
2705
  DESIGN_EXPERT_TOOLS = [
2701
2706
  {
2702
2707
  name: "searchGoogle",
2703
- description: "Search Google for web results. Use for finding design inspiration, font recommendations, UI patterns, real products in a domain, and reference material.",
2708
+ description: 'Search Google for web results. Reserch modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, etc. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. Pick one or more URLs from the results and then use `fetchUrl` to get their text content.',
2704
2709
  inputSchema: {
2705
2710
  type: "object",
2706
2711
  properties: {
@@ -2714,7 +2719,7 @@ var init_tools2 = __esm({
2714
2719
  },
2715
2720
  {
2716
2721
  name: "fetchUrl",
2717
- description: "Fetch the content of a web page as markdown. Optionally capture a screenshot to see the visual design. Use to analyze reference sites, read font specimen pages, or extract design details.",
2722
+ description: "Fetch the content of a web page as markdown. Optionally capture a screenshot to see the visual design. Use when reading sites from search results or specific things the user wants to incorporate.",
2718
2723
  inputSchema: {
2719
2724
  type: "object",
2720
2725
  properties: {
@@ -2,8 +2,10 @@
2
2
 
3
3
  - Use `analyzeReferenceImageOrUrl` to analyze any image URL or website URL. Websites are automatically screenshotted. Omit the prompt for a standard design analysis, or provide a custom prompt for specific questions. Do not screenshot font specimen pages, documentation, or other text-heavy pages — use `fetchUrl` for those instead.
4
4
  - Use `screenshot` to see the current state of the app preview. This is your primary tool for visual review. Use `fullPage: true` to see the entire page at once. Remember, the screenshot analysis is not overly precise - for example, it cannot reliably identify specific fonts by name — it can only describe what letterforms look like.
5
- - Use `runBrowserTest` only to verify specific computed values that a screenshot can't tell you: exact font-family names, hex colors, pixel measurements, border-radius, box-shadow, transforms. Keep requests focused ask it to check specific properties on specific elements, not to take screenshots or scroll around.
6
- - **screenshot vs runBrowserTest**: Screenshot to *see* the page. Browser test to *measure* specific CSS values. Never use the browser agent for tasks your screenshot tool can handle, or vice versa.
5
+ - Use `runBrowserTest` to smoke test and spot check the things most likely to be wrong missing elements, colors that look off in the screenshot, transforms or animations that are hard to judge visually. Don't use it to verify every property in the spec. Trust that if the spec says something, like specifying fonts or layout sections, the coding agent probably implemented it - it's very good at following instructions. Reserve the browser agent for things you genuinely can't tell from looking.
6
+ - **screenshot vs runBrowserTest**: Screenshot to *see* the page. Browser test to *measure* specific values you're unsure about. Start with a screenshot — only reach for the browser agent if something looks off or can't be judged visually. The browser agent is not a screenshot tool don't ask it to scroll around taking screenshots of sections. Your `screenshot` tool with `fullPage: true` captures the entire page in one call.
7
+ Use `searchGoogle` for research: modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, etc. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. Pick one or more URLs and use `fetchUrl` to get their text content to read and inform your inspiration.
8
+ - Use `fetchUrl` when you need to get the text content of a site.
7
9
  - Use `searchGoogle` and `fetchUrl` only when the user references something specific: a particular website to match, a brand to look up, a company whose identity you need to research. You already have curated fonts, inspiration references, and strong internal knowledge — don't search the web for generic inspiration or "best X apps." The web is for specific lookups, not creative direction.
8
10
  - When proposing multiple options, make them genuinely different directions (dark + bold vs. light + editorial) rather than minor variations.
9
11
  - When multiple tool calls are independent, make them all in a single turn. Searching for three different products, or fetching two reference sites: batch them instead of doing one per turn.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "description": "MindStudio coding agent",
5
5
  "repository": {
6
6
  "type": "git",