@mindstudio-ai/remy 0.1.50 → 0.1.52

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.
@@ -0,0 +1,19 @@
1
+ ---
2
+ trigger: buildFromInitialSpec
3
+ ---
4
+
5
+ This is an automated action triggered by the user pressing "Build" in the editor after reviewing the spec.
6
+
7
+ The user has reviewed the spec and is ready to build.
8
+
9
+ Think about your approach and then get a quick sanity check from `codeSanityCheck` to make sure you aren't missing anything.
10
+
11
+ Then, build everything in one turn: methods, tables, interfaces, manifest updates, and scenarios, using the spec as the master plan.
12
+
13
+ When code generation is complete, verify your work:
14
+ - First, run use `runScenario` to seed test data, then use `runMethod` to confirm a method works
15
+ - If the app has a web frontend, check the browser logs to make sure there are no errors rendering it.
16
+ - Ask the `visualDesignExpert` to take a screenshot and verity that the visual design looks correct. Fix any issues it flags - we want the user's first time seeing the finished product to truly wow them.
17
+ - Finally, use `runAutomatedBrowserTest` to smoke-test the main UI flow. The dev database is a disposable snapshot, so don't worry about being destructive. Fix any errors before finishing.
18
+
19
+ When everything is working, use `productVision` to mark the MVP roadmap item as done, then call `setProjectOnboardingState({ state: "onboardingFinished" })`.
@@ -0,0 +1,15 @@
1
+ ---
2
+ trigger: buildFromRoadmap
3
+ ---
4
+
5
+ This is an automated action triggered by the user pressing "Build Now" on the roadmap item {{path}}
6
+
7
+ First, review the specific item and think about how it fits with the existing spec and the existing codebase.
8
+
9
+ Then, ask the user clarifying questions about anything that is ambiguous or requires additional input. Consult the team for any design work, architecture review, or SDK guidance - even if they're just quick questions (that's what the team is there for - they want to help and feel valuable!).
10
+
11
+ Then, put together a plan to build out the feature. Present the plan to the user for their approval.
12
+
13
+ When they've approved the plan, be sure to update the spec first - remember, the spec is the source of truth about the product. Then, build everything in one turn, using the spec as the master plan.
14
+
15
+ When you're finished, verify your work, then tell`productVision` what was done so it can update the roadmap to reflect the progress. Give the user a summary of what was done.
@@ -0,0 +1,16 @@
1
+ ---
2
+ trigger: publish
3
+ ---
4
+
5
+ This is an automated action triggered by the user pressing "Publish" in the editor.
6
+
7
+ The user wants to deploy their app. Pushing to the `main` branch triggers a production deploy.
8
+
9
+ Review the current state of the working tree — what has changed since the last commit, what's been committed since the last push, and the overall shape of recent work. Write a user-friendly changelog with `presentPublishPlan` — summarize what changed in plain language ("added vendor approval workflow", "fixed invoice totals", "updated the dashboard layout"). Reference specific code or file paths only when it helps clarity. This is what the user will see before deploying.
10
+
11
+ If approved:
12
+ - Stage and commit any uncommitted changes with a clean, descriptive commit message
13
+ - Push to main
14
+ - Let the user know their app is deploying
15
+
16
+ If dismissed, acknowledge and do nothing.
@@ -0,0 +1,5 @@
1
+ ---
2
+ trigger: reviseFromAnnotatedImage
3
+ ---
4
+
5
+ This is an automated message trigger by the user submitting a screenshot of the app that they have annotated with text notes. Please analyze the provided image and make the requested revisions to the web frontend.
@@ -0,0 +1,23 @@
1
+ ---
2
+ trigger: sync
3
+ ---
4
+
5
+ This is an automated action triggered by the user pressing "Sync" in the editor.
6
+
7
+ The user has manually edited files since the last sync. The `refs/sync-point` git ref marks the last known-good sync state. It's created using a temporary git index that captures the full working tree (including unstaged changes) as a tree object — so it represents exactly what the files looked like at sync time, not just what was committed.
8
+
9
+ To see what the user changed, run: `git diff refs/sync-point -- src/ dist/`
10
+
11
+ This compares the sync-point tree against the current working tree. Do not add `HEAD` or any other ref — the command as written diffs directly against the working tree, which is what you want.
12
+
13
+ In the diff output: lines prefixed with `-` are what was in the file at last sync. Lines prefixed with `+` are the user's current edits. Sync should bring the other side in line with the `+` side.
14
+
15
+ Analyze the changes and write a sync plan with `presentSyncPlan` — a clear markdown summary of what changed and what you intend to update. Write it for a human: describe changes in plain language ("renamed the greeting field", "added a note about error handling"), not as a list of file paths and code diffs. Reference specific code or file paths only when it helps clarity. The user will review and approve before you make changes.
16
+
17
+ If approved:
18
+ - If spec files (`src/`) changed, update the corresponding code in `dist/` to match
19
+ - If code files (`dist/`) changed, update the corresponding spec in `src/` to match
20
+ - If both changed, reconcile — spec is the source of truth for intent, but respect code changes that add implementation detail
21
+ - When all files are synced, call `clearSyncStatus`
22
+
23
+ If dismissed, acknowledge and do nothing.
package/dist/headless.js CHANGED
@@ -406,6 +406,8 @@ ${isLspConfigured() ? `<typescript_lsp>
406
406
 
407
407
  {{static/instructions.md}}
408
408
 
409
+ <!-- cache_breakpoint -->
410
+
409
411
  <project_onboarding>
410
412
  New projects progress through four onboarding states. The user might skip this entirely and jump straight into working on the existing scaffold (which defaults to onboardingFinished), but ideally new projects move through each phase:
411
413
 
@@ -2768,6 +2770,8 @@ function getBrowserAutomationPrompt() {
2768
2770
  const appSpec = fs13.readFileSync("src/app.md", "utf-8").trim();
2769
2771
  return `${BASE_PROMPT}
2770
2772
 
2773
+ <!-- cache_breakpoint -->
2774
+
2771
2775
  <app_context>
2772
2776
  ${appSpec}
2773
2777
  </app_context>`;
@@ -3570,6 +3574,7 @@ function getDesignExpertPrompt() {
3570
3574
  "{{font_library}}",
3571
3575
  getFontLibrarySample()
3572
3576
  ).replace("{{visual_design_references}}", getDesignReferencesSample()).replace("{{ui_case_studies}}", getUiInspirationSample());
3577
+ prompt += "\n\n<!-- cache_breakpoint -->";
3573
3578
  if (specContext) {
3574
3579
  prompt += `
3575
3580
 
@@ -3873,6 +3878,7 @@ function getProductVisionPrompt() {
3873
3878
  const specContext = loadSpecContext();
3874
3879
  const roadmapContext = loadRoadmapContext();
3875
3880
  const parts = [BASE_PROMPT2, loadPlatformBrief()];
3881
+ parts.push("<!-- cache_breakpoint -->");
3876
3882
  if (specContext) {
3877
3883
  parts.push(specContext);
3878
3884
  }
@@ -4050,6 +4056,7 @@ var codeSanityCheckTool = {
4050
4056
  }
4051
4057
  const specContext = loadSpecContext();
4052
4058
  const parts = [BASE_PROMPT3, loadPlatformBrief()];
4059
+ parts.push("<!-- cache_breakpoint -->");
4053
4060
  if (specContext) {
4054
4061
  parts.push(specContext);
4055
4062
  }
@@ -5280,7 +5287,17 @@ ${xmlParts}
5280
5287
  );
5281
5288
  }
5282
5289
  let userMessage = parsed.text ?? "";
5283
- const resolved = resolveAction(userMessage);
5290
+ let resolved = null;
5291
+ try {
5292
+ resolved = resolveAction(userMessage);
5293
+ } catch (err) {
5294
+ emit(
5295
+ "completed",
5296
+ { success: false, error: err.message || "Failed to resolve action" },
5297
+ requestId
5298
+ );
5299
+ return;
5300
+ }
5284
5301
  if (resolved !== null) {
5285
5302
  userMessage = resolved;
5286
5303
  }
package/dist/index.js CHANGED
@@ -2770,6 +2770,8 @@ function getBrowserAutomationPrompt() {
2770
2770
  const appSpec = fs11.readFileSync("src/app.md", "utf-8").trim();
2771
2771
  return `${BASE_PROMPT}
2772
2772
 
2773
+ <!-- cache_breakpoint -->
2774
+
2773
2775
  <app_context>
2774
2776
  ${appSpec}
2775
2777
  </app_context>`;
@@ -3685,6 +3687,7 @@ function getDesignExpertPrompt() {
3685
3687
  "{{font_library}}",
3686
3688
  getFontLibrarySample()
3687
3689
  ).replace("{{visual_design_references}}", getDesignReferencesSample()).replace("{{ui_case_studies}}", getUiInspirationSample());
3690
+ prompt += "\n\n<!-- cache_breakpoint -->";
3688
3691
  if (specContext) {
3689
3692
  prompt += `
3690
3693
 
@@ -4031,6 +4034,7 @@ function getProductVisionPrompt() {
4031
4034
  const specContext = loadSpecContext();
4032
4035
  const roadmapContext = loadRoadmapContext();
4033
4036
  const parts = [BASE_PROMPT2, loadPlatformBrief()];
4037
+ parts.push("<!-- cache_breakpoint -->");
4034
4038
  if (specContext) {
4035
4039
  parts.push(specContext);
4036
4040
  }
@@ -4243,6 +4247,7 @@ var init_codeSanityCheck = __esm({
4243
4247
  }
4244
4248
  const specContext = loadSpecContext();
4245
4249
  const parts = [BASE_PROMPT3, loadPlatformBrief()];
4250
+ parts.push("<!-- cache_breakpoint -->");
4246
4251
  if (specContext) {
4247
4252
  parts.push(specContext);
4248
4253
  }
@@ -5371,6 +5376,8 @@ ${isLspConfigured() ? `<typescript_lsp>
5371
5376
 
5372
5377
  {{static/instructions.md}}
5373
5378
 
5379
+ <!-- cache_breakpoint -->
5380
+
5374
5381
  <project_onboarding>
5375
5382
  New projects progress through four onboarding states. The user might skip this entirely and jump straight into working on the existing scaffold (which defaults to onboardingFinished), but ideally new projects move through each phase:
5376
5383
 
@@ -5876,7 +5883,17 @@ ${xmlParts}
5876
5883
  );
5877
5884
  }
5878
5885
  let userMessage = parsed.text ?? "";
5879
- const resolved = resolveAction(userMessage);
5886
+ let resolved = null;
5887
+ try {
5888
+ resolved = resolveAction(userMessage);
5889
+ } catch (err) {
5890
+ emit(
5891
+ "completed",
5892
+ { success: false, error: err.message || "Failed to resolve action" },
5893
+ requestId
5894
+ );
5895
+ return;
5896
+ }
5880
5897
  if (resolved !== null) {
5881
5898
  userMessage = resolved;
5882
5899
  }
@@ -19,7 +19,7 @@ The scaffold starts with these spec files that cover the full picture of the app
19
19
  - **`src/interfaces/@brand/voice.md`** — voice and terminology: tone, error messages, word choices
20
20
  - **`src/roadmap/`** — feature roadmap. One file per feature (`type: roadmap`). See "Roadmap" below.
21
21
 
22
- Start from these and extend as needed. Add interface specs for other interface types (`api.md`, `cron.md`, `agent.md`, etc.) if the app uses them. Split `app.md` into multiple files if the domain is complex. The agent uses the entire `src/` folder as compilation context, so organize however serves clarity.
22
+ These are starting points, not constraints. Create as many spec files as the project needs — the `src/` folder is your workspace and every `.md` file in it becomes compilation context. If the app has substantial content (presentation slides, copy, lesson plans, menu items, quiz questions), put it in its own file (`src/content.md`, `src/slides.md`, `src/menu.md`, etc.) rather than cramming it into `app.md` or `web.md`. If the domain is complex, split `app.md` into multiple files by area (`src/billing.md`, `src/approvals.md`). Add interface specs for other interface types (`api.md`, `cron.md`, `agent.md`, etc.) if the app uses them. Organize however serves clarity — the platform reads the entire `src/` folder.
23
23
 
24
24
  Users often care about look and feel as much as (or more than) underlying data structures. Don't treat the brand and interface specs as an afterthought — for many users, the visual identity and voice are the first things they want to get right.
25
25
 
@@ -16,6 +16,8 @@ The designer will return concrete resources: hex values, font names with CSS URL
16
16
 
17
17
  When delegating, describe the design problem — where the asset will be used, what it needs to communicate, what the brand feels like. Do not specify technical details like image formats, pixel dimensions, generation techniques, or workarounds. The design expert makes those decisions.
18
18
 
19
+ Remember, the design agent starts from scratch each time - it has no history of previous messages you have sent it - so you need to make sure to provide all relevant context, including full context from its previous messages where it is relevant (e.g., "You proposed three different options [describe them in detail].... and the user has descided on XYZ...").
20
+
19
21
  Always consult the design expert during intake and before building any new product features from the roadmap.
20
22
 
21
23
  ### Product Vision (`productVision`)
@@ -38,7 +40,7 @@ Always consult the code sanity check before writing code in initialCodegen with
38
40
 
39
41
  ### QA (`runAutomatedBrowserTest`)
40
42
 
41
- For verifying complex stateful interactions: multi-step form submissions, auth flows, real-time updates, flows that require specific data/role setup. This spins up a full chrome browser automation — it's heavyweight. Do not use it for basic rendering or navigation checks. If you can verify something with a screenshot or by reading the code, do that instead. Run a scenario first to seed test data and set user roles. The user is able to watch QA work on their screen via a live browser preview - the cursor will move, type, etc - so you can also use this to demo functionality to the user and help them understand how to use their app.
43
+ For verifying complex stateful interactions: multi-step form submissions, auth flows, real-time updates, flows that require specific data/role setup. This spins up a full chrome browser automation — it's heavyweight. Do not use it for basic rendering or navigation checks. If you can verify something with a screenshot or by reading the code, do that instead. Run a scenario first to seed test data and set user roles. The user is able to watch QA work on their screen via a live browser preview - the cursor will move, type, etc - so you can also use this to demo functionality to the user and help them understand how to use their app. Don't tell the QA agent what values it should use for testing, it will figure that out on its own.
42
44
 
43
45
  ### Background Execution
44
46
 
@@ -7,7 +7,7 @@ There are two categories of animation and you should think of them separately:
7
7
  - Design animations: think beautiful layout reveals, dramatic loading and success states for user onboarding, beautiful scroll-driven animations on a landing page. These are the place to show off - and if you're showing off you better get it right. Anything that looks dated or janky will be disappointing to the user. Done correctly, these animations are powerful and transformative - and when the design calls for it, you should take a risk and suggest something big, bold, and creative. Remember, the user can always modify or change things later. It's better to dream big and walk it back than to deliver something generic or bland.
8
8
 
9
9
  ### Patterns to Use
10
- - CSS scroll-driven animations (`animation-timeline: scroll()` / `view()`) native, off main thread, even though there is still a little lag in browser support we should always be using this when we need scroll-driven animations. Scroll driven animations that animate based on scrollport are very slick and look beautiful in landing pages. Think about how you can use them.
10
+ - CSS scroll-driven animations (`animation-timeline: view()`) (aka "scrollytelling"). Scroll driven animations that animate based on scrollport are very slick and look beautiful in landing pages. Think about how you can use them.
11
11
  - Spring physics for natural-feeling motion
12
12
  - Purposeful micro-interactions — scaling, color shifts, depth changes on hover/click
13
13
  - Entrance reveals — content animating when it enters the view - can be powerful, but can very easily feel cheap if it is just sections of a page animating in on scroll, for example. Be very thoughtful and intentional when animating in this way.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.50",
3
+ "version": "0.1.52",
4
4
  "description": "MindStudio coding agent",
5
5
  "repository": {
6
6
  "type": "git",