@mindstudio-ai/remy 0.1.173 → 0.1.175

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
@@ -2655,10 +2655,10 @@ var queryDatabaseTool = {
2655
2655
 
2656
2656
  // src/subagents/common/analyzeImage.ts
2657
2657
  var VISION_MODEL = "claude-4-6-sonnet";
2658
- var VISION_MODEL_OVERRIDE = JSON.stringify({
2658
+ var VISION_MODEL_OVERRIDE = {
2659
2659
  model: VISION_MODEL,
2660
2660
  config: { thinkingBudget: "off" }
2661
- });
2661
+ };
2662
2662
  async function analyzeImage(params) {
2663
2663
  const { prompt, imageUrl, timeout = 2e5, onLog } = params;
2664
2664
  return runCli(
@@ -3540,7 +3540,7 @@ var browserAutomationTool = {
3540
3540
  clearable: true,
3541
3541
  definition: {
3542
3542
  name: "runAutomatedBrowserTest",
3543
- description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes to frontend code, to reproduce user-reported issues, or to test end-to-end flows. Reports settled states between steps; it cannot reliably observe transient animation frames. For timing-sensitive bugs, read the source first. Never give it explicit values to use when filling out forms or creating accounts \u2014 it will use its own judgement (often it needs specific values to trigger dev-mode bypasses of things like login verification codes).",
3543
+ description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes to frontend code, to reproduce user-reported issues, or to test end-to-end flows. Never give it explicit values to use when filling out forms or creating accounts \u2014 it will use its own judgement (often it needs specific values to trigger dev-mode bypasses of things like login verification codes).",
3544
3544
  inputSchema: {
3545
3545
  type: "object",
3546
3546
  properties: {
@@ -3616,7 +3616,8 @@ var browserAutomationTool = {
3616
3616
  imageUrl: s.result.url,
3617
3617
  prompt: buildScreenshotAnalysisPrompt({
3618
3618
  styleMap: s.result.styleMap
3619
- })
3619
+ }),
3620
+ visionModelOverride: VISION_MODEL_OVERRIDE
3620
3621
  }
3621
3622
  }));
3622
3623
  const batchResult = await runCli(
@@ -3667,7 +3668,7 @@ var screenshotTool = {
3667
3668
  clearable: true,
3668
3669
  definition: {
3669
3670
  name: "screenshot",
3670
- description: "Capture a full-height screenshot of the app preview and get a description of what's on screen. Captures the settled page state \u2014 it cannot reliably catch animations, transitions, or transient state. For timing-sensitive bugs, read the source instead. Optionally provide specific questions about what you're looking for. Use a bulleted list to ask many questions at once. To ask additional questions about a screenshot you have already captured, pass its URL as imageUrl to skip recapture. If the screenshot requires interaction first (logging in, clicking a tab, dismissing a modal), use the instructions param to describe the steps.",
3671
+ description: "Capture a full-height screenshot of the app preview and get a description of what's on screen. Captures the settled page state \u2014 it cannot catch animations, transitions, or transient state. Optionally provide specific questions about what you're looking for. Use a bulleted list to ask many questions at once. To ask additional questions about a screenshot you have already captured, pass its URL as imageUrl to skip recapture. If the screenshot requires interaction first (logging in, clicking a tab, dismissing a modal), use the instructions param to describe the steps.",
3671
3672
  inputSchema: {
3672
3673
  type: "object",
3673
3674
  properties: {
@@ -4102,10 +4103,10 @@ __export(generateImages_exports, {
4102
4103
 
4103
4104
  // src/subagents/designExpert/tools/images/enhancePrompt.ts
4104
4105
  var ENHANCE_MODEL = "claude-4-6-sonnet";
4105
- var MODEL_OVERRIDE = JSON.stringify({
4106
+ var MODEL_OVERRIDE = {
4106
4107
  model: ENHANCE_MODEL,
4107
4108
  config: { reasoning: "false" }
4108
- });
4109
+ };
4109
4110
  var SYSTEM_PROMPT = readAsset(
4110
4111
  "subagents/designExpert/tools/images/enhance-image-prompt.md"
4111
4112
  );
@@ -6857,7 +6858,14 @@ var HeadlessSession = class {
6857
6858
  if (requestId) {
6858
6859
  payload.requestId = requestId;
6859
6860
  }
6860
- process.stdout.write(JSON.stringify(payload) + "\n");
6861
+ const line = JSON.stringify(payload) + "\n";
6862
+ if (event === "history") {
6863
+ log14.info("Wrote history event to stdout", {
6864
+ requestId,
6865
+ bytes: line.length
6866
+ });
6867
+ }
6868
+ process.stdout.write(line);
6861
6869
  }
6862
6870
  /**
6863
6871
  * Emit a `completed` event and mark completedEmitted. Includes
@@ -7439,6 +7447,15 @@ var HeadlessSession = class {
7439
7447
  startIndex--;
7440
7448
  }
7441
7449
  const endIndex = before;
7450
+ log14.info("History response", {
7451
+ requestId,
7452
+ startIndex,
7453
+ endIndex,
7454
+ count: endIndex - startIndex,
7455
+ totalMessageCount: total,
7456
+ beforeParam: rawBefore,
7457
+ limitParam: rawLimit
7458
+ });
7442
7459
  this.dispatchSimple(requestId, "history", () => ({
7443
7460
  messages: this.state.messages.slice(startIndex, endIndex),
7444
7461
  startIndex,
package/dist/index.js CHANGED
@@ -2963,10 +2963,10 @@ var init_analyzeImage = __esm({
2963
2963
  "use strict";
2964
2964
  init_runCli();
2965
2965
  VISION_MODEL = "claude-4-6-sonnet";
2966
- VISION_MODEL_OVERRIDE = JSON.stringify({
2966
+ VISION_MODEL_OVERRIDE = {
2967
2967
  model: VISION_MODEL,
2968
2968
  config: { thinkingBudget: "off" }
2969
- });
2969
+ };
2970
2970
  }
2971
2971
  });
2972
2972
 
@@ -3890,13 +3890,14 @@ var init_browserAutomation = __esm({
3890
3890
  init_browserLock();
3891
3891
  init_screenshot();
3892
3892
  init_runCli();
3893
+ init_analyzeImage();
3893
3894
  init_logger();
3894
3895
  log6 = createLogger("browser-automation");
3895
3896
  browserAutomationTool = {
3896
3897
  clearable: true,
3897
3898
  definition: {
3898
3899
  name: "runAutomatedBrowserTest",
3899
- description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes to frontend code, to reproduce user-reported issues, or to test end-to-end flows. Reports settled states between steps; it cannot reliably observe transient animation frames. For timing-sensitive bugs, read the source first. Never give it explicit values to use when filling out forms or creating accounts \u2014 it will use its own judgement (often it needs specific values to trigger dev-mode bypasses of things like login verification codes).",
3900
+ description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes to frontend code, to reproduce user-reported issues, or to test end-to-end flows. Never give it explicit values to use when filling out forms or creating accounts \u2014 it will use its own judgement (often it needs specific values to trigger dev-mode bypasses of things like login verification codes).",
3900
3901
  inputSchema: {
3901
3902
  type: "object",
3902
3903
  properties: {
@@ -3972,7 +3973,8 @@ var init_browserAutomation = __esm({
3972
3973
  imageUrl: s.result.url,
3973
3974
  prompt: buildScreenshotAnalysisPrompt({
3974
3975
  styleMap: s.result.styleMap
3975
- })
3976
+ }),
3977
+ visionModelOverride: VISION_MODEL_OVERRIDE
3976
3978
  }
3977
3979
  }));
3978
3980
  const batchResult = await runCli(
@@ -4032,7 +4034,7 @@ var init_screenshot2 = __esm({
4032
4034
  clearable: true,
4033
4035
  definition: {
4034
4036
  name: "screenshot",
4035
- description: "Capture a full-height screenshot of the app preview and get a description of what's on screen. Captures the settled page state \u2014 it cannot reliably catch animations, transitions, or transient state. For timing-sensitive bugs, read the source instead. Optionally provide specific questions about what you're looking for. Use a bulleted list to ask many questions at once. To ask additional questions about a screenshot you have already captured, pass its URL as imageUrl to skip recapture. If the screenshot requires interaction first (logging in, clicking a tab, dismissing a modal), use the instructions param to describe the steps.",
4037
+ description: "Capture a full-height screenshot of the app preview and get a description of what's on screen. Captures the settled page state \u2014 it cannot catch animations, transitions, or transient state. Optionally provide specific questions about what you're looking for. Use a bulleted list to ask many questions at once. To ask additional questions about a screenshot you have already captured, pass its URL as imageUrl to skip recapture. If the screenshot requires interaction first (logging in, clicking a tab, dismissing a modal), use the instructions param to describe the steps.",
4036
4038
  inputSchema: {
4037
4039
  type: "object",
4038
4040
  properties: {
@@ -4549,10 +4551,10 @@ var init_enhancePrompt = __esm({
4549
4551
  init_runCli();
4550
4552
  init_assets();
4551
4553
  ENHANCE_MODEL = "claude-4-6-sonnet";
4552
- MODEL_OVERRIDE = JSON.stringify({
4554
+ MODEL_OVERRIDE = {
4553
4555
  model: ENHANCE_MODEL,
4554
4556
  config: { reasoning: "false" }
4555
- });
4557
+ };
4556
4558
  SYSTEM_PROMPT = readAsset(
4557
4559
  "subagents/designExpert/tools/images/enhance-image-prompt.md"
4558
4560
  );
@@ -7611,7 +7613,14 @@ var init_headless = __esm({
7611
7613
  if (requestId) {
7612
7614
  payload.requestId = requestId;
7613
7615
  }
7614
- process.stdout.write(JSON.stringify(payload) + "\n");
7616
+ const line = JSON.stringify(payload) + "\n";
7617
+ if (event === "history") {
7618
+ log14.info("Wrote history event to stdout", {
7619
+ requestId,
7620
+ bytes: line.length
7621
+ });
7622
+ }
7623
+ process.stdout.write(line);
7615
7624
  }
7616
7625
  /**
7617
7626
  * Emit a `completed` event and mark completedEmitted. Includes
@@ -8193,6 +8202,15 @@ var init_headless = __esm({
8193
8202
  startIndex--;
8194
8203
  }
8195
8204
  const endIndex = before;
8205
+ log14.info("History response", {
8206
+ requestId,
8207
+ startIndex,
8208
+ endIndex,
8209
+ count: endIndex - startIndex,
8210
+ totalMessageCount: total,
8211
+ beforeParam: rawBefore,
8212
+ limitParam: rawLimit
8213
+ });
8196
8214
  this.dispatchSimple(requestId, "history", () => ({
8197
8215
  messages: this.state.messages.slice(startIndex, endIndex),
8198
8216
  startIndex,
@@ -7,16 +7,14 @@
7
7
  - Match the scope of changes to what was asked. Solve the current problem with the minimum code required. A bug fix is just a bug fix, not an opportunity to refactor the surrounding code. A new feature is just that feature, not a reason to introduce abstractions for hypothetical future needs. Prefer repeating a few lines of straightforward code over creating a helper that's only used once.
8
8
 
9
9
  ### Verification
10
- Run `lspDiagnostics` after every turn where you have edited code in any meaningful way. You don't need to run it for things like changing copy or CSS colors, but you should run it after any structural changes to code. It catches syntax errors, broken imports, and type mismatches instantly. After a big build or significant changes, also do a lightweight runtime check to catch the things static analysis misses (schema mismatches, missing imports, bad queries):
11
-
12
- - Spot-check methods with `runMethod`. The dev database is a disposable snapshot that will have been seeded with scenario data, so don't worry about being destructive.
13
- - For frontend work, take a single `screenshot` to confirm the main view renders correctly or look at the browser log for any console errors in the user's preview.
14
- - Use `runAutomatedBrowserTest` to verify an interactive flow that you can't confirm from a screenshot, when the user reports something broken that you can't identify from code alone, or whenever the verification involves driving the app through multiple interactions.
15
- - If the browser is unavailable, skip the visual check and verify through methods, logs, and code instead. Browser unavailability is an infrastructure issue, not a code problem — don't try to diagnose or fix it.
10
+ Run `lspDiagnostics` after every turn where you have edited code in any meaningful way. You don't need to run it for things like changing copy or CSS colors, but you should run it after any structural changes to code. It catches syntax errors, broken imports, and type mismatches instantly. After a big build or significant changes, also do a lightweight runtime check to catch the things static analysis misses (schema mismatches, missing imports, bad queries). Your runtime check can include:
11
+ - Spot-checking methods with `runMethod`. The dev database is a disposable snapshot that will have been seeded with scenario data, so don't worry about being destructive.
12
+ - For frontend work, taking a `screenshot` to confirm the main view renders correctly or look at the browser log for any console errors in the user's preview.
13
+ - Using `runAutomatedBrowserTest` to verify an interactive flow that you can't confirm from a screenshot, when the user reports something broken that you can't identify from code alone, or whenever the verification involves driving the app through multiple interactions.
16
14
 
17
15
  Aim for confidence that the core happy paths work. If the 80% case is solid, the remaining edge cases are likely fine and the user can surface them in chat. Don't screenshot every page, test every permutation, or verify every secondary flow. One or two runtime checks that confirm the app loads and data flows through is enough.
18
16
 
19
- When making mechanical edits as part of iterating with the user (e.g., moving elements, changing labels, small redesigns and refactors), don't re-screenshot to confirm, simply trust your code. Re-screenshot only when changes are structural enough that the visual outcome is genuinely uncertain (new layout, new component composition, new route), or when the user reports something visible that you can't see in the code.
17
+ When making mechanical edits as part of iterating with the user (e.g., moving elements, changing labels, small redesigns and refactors), don't screenshot to confirm, simply trust your code. Re-screenshot only when changes are structural enough that the visual outcome is genuinely uncertain (new layout, new component composition, new route), or when the user reports something visible that you can't see in the code. The screenshot tool captures static/settled state - don't try to hack it with different instructions to capture transient states or animations or things like that. If what you need is not avaialble via screenshot, fall back to static analysis by tracing code.
20
18
 
21
19
  ### Process Logs
22
20
 
@@ -31,6 +31,8 @@ paragraph "No results found"
31
31
 
32
32
  Each interactive element has a `[ref=eN]` you can use to target it.
33
33
 
34
+ Note: the snapshot concatenates inline text and strips whitespace. If you need to verify spacing or pixel-level layout, use evaluate to run a script to get values. The snapshot is intended to help you understand page layout and target elements for interaction, not as an authoritative report of how the page renders.
35
+
34
36
  ### Commands
35
37
 
36
38
  - `snapshot`: Get the current page state. Always do this first and after action batches to verify results. Waits for network requests to settle.
@@ -149,7 +151,7 @@ You can use the `screenshotFullPage` tool to take a full-height screenshot of th
149
151
  - evaluate auto-returns simple expressions. `"script": "document.title"` works directly. For multi-statement scripts, use explicit return.
150
152
  - The snapshot in the response is always the most current page state. Even if a wait times out, check the snapshot field; the content you were waiting for may have appeared by then.
151
153
  - Execution stops on first error. If step 2 of 5 fails, steps 3-5 don't run. The response will contain results for steps 0-2 (with step 2 having an error field) plus the current snapshot. Adjust and retry from the failed step.
152
- - If something fails, bail early. Do not attempt to diagnose why; do not do things like attempt different inputs to try to work around an error - just report the failure and early return.
154
+ - If something fails, bail early. Do not attempt to diagnose why; do not do things like attempt different inputs to try to work around an error - just report the failure and early return. If something is not visible or obvious (e.g., animations, transient states, etc), do not attempt to hack the browser commands into figuring it out - simply accept that the browser automation is limited in this regard and can not reliably reproduce the state required to test.
153
155
  </rules>
154
156
 
155
157
  <voice>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.173",
3
+ "version": "0.1.175",
4
4
  "description": "MindStudio coding agent",
5
5
  "repository": {
6
6
  "type": "git",