@mindstudio-ai/remy 0.1.287 → 0.1.289

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
@@ -1963,10 +1963,11 @@ function stripDollarKeys(envelope) {
1963
1963
  }
1964
1964
 
1965
1965
  // src/tools/common/searchGoogle.ts
1966
+ var FETCH_TOP_N = 5;
1966
1967
  var searchGoogleTool = {
1967
1968
  definition: {
1968
1969
  name: "searchGoogle",
1969
- description: "Search Google and return results. Use for research, finding documentation, looking up APIs, or any task where web search would help.",
1970
+ description: "Search Google and return results. Use for research, finding documentation, looking up APIs, or any task where web search would help. The top results come back with their page content already included, so read those before reaching for scrapeWebUrl \u2014 you only need that for URLs this did not return, or for a result further down the list.",
1970
1971
  inputSchema: {
1971
1972
  type: "object",
1972
1973
  properties: {
@@ -1981,7 +1982,15 @@ var searchGoogleTool = {
1981
1982
  async execute(input, context) {
1982
1983
  const query = input.query;
1983
1984
  return runMindstudioCli(
1984
- ["search-google", "--query", query, "--export-type", "json"],
1985
+ [
1986
+ "search-google",
1987
+ "--query",
1988
+ query,
1989
+ "--export-type",
1990
+ "json",
1991
+ "--fetch-top-n",
1992
+ String(FETCH_TOP_N)
1993
+ ],
1985
1994
  {
1986
1995
  outputKey: "results",
1987
1996
  maxBuffer: SEARCH_MAX_BUFFER,
@@ -4750,9 +4759,10 @@ __export(searchGoogle_exports, {
4750
4759
  definition: () => definition,
4751
4760
  execute: () => execute
4752
4761
  });
4762
+ var FETCH_TOP_N2 = 5;
4753
4763
  var definition = {
4754
4764
  name: "searchGoogle",
4755
- description: 'Search Google for web results. Reserch modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, or find something specific if the the user has an explicit reference. Searching for and reading case studies is a great way to get information and context about a project\'s domain. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. Pick one or more URLs from the results and then use `scrapeWebUrl` to get their text content.',
4765
+ description: 'Search Google for web results. Reserch modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, or find something specific if the the user has an explicit reference. Searching for and reading case studies is a great way to get information and context about a project\'s domain. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. The top results come back with their page content already included, so read those directly \u2014 only use `scrapeWebUrl` for a result further down the list, or for a URL this did not return.',
4756
4766
  inputSchema: {
4757
4767
  type: "object",
4758
4768
  properties: {
@@ -4766,7 +4776,15 @@ var definition = {
4766
4776
  };
4767
4777
  async function execute(input, onLog) {
4768
4778
  return runMindstudioCli(
4769
- ["search-google", "--query", input.query, "--export-type", "json"],
4779
+ [
4780
+ "search-google",
4781
+ "--query",
4782
+ input.query,
4783
+ "--export-type",
4784
+ "json",
4785
+ "--fetch-top-n",
4786
+ String(FETCH_TOP_N2)
4787
+ ],
4770
4788
  {
4771
4789
  outputKey: "results",
4772
4790
  onLog,
@@ -5577,7 +5595,7 @@ var WIREFRAMES_DIR = "src/.wireframes";
5577
5595
  var UPLOAD_TIMEOUT_MS2 = 3e4;
5578
5596
  var definition10 = {
5579
5597
  name: "createWireframe",
5580
- description: "Create (or revise) a wireframe from self-contained HTML+CSS. The wireframe is saved to src/.wireframes/{slug}.html \u2014 reference it in your response and in specs as ![name](src/.wireframes/{slug}.html), with your notes in the surrounding prose. Calling again with the same slug overwrites the wireframe in place, so a revision keeps its path and existing references stay current.",
5598
+ description: "Create (or revise) a wireframe from self-contained HTML+CSS. Call this while working to generate a sharable wireframe asset: the result returns the exact markdown reference line to paste into your response and into specs (like generateImages returns the image URL). Calling again with the same slug overwrites the wireframe in place, so a revision keeps its path and existing references stay current.",
5581
5599
  inputSchema: {
5582
5600
  type: "object",
5583
5601
  properties: {
package/dist/index.js CHANGED
@@ -1509,16 +1509,17 @@ var init_runMindstudioCli = __esm({
1509
1509
  });
1510
1510
 
1511
1511
  // src/tools/common/searchGoogle.ts
1512
- var searchGoogleTool;
1512
+ var FETCH_TOP_N, searchGoogleTool;
1513
1513
  var init_searchGoogle = __esm({
1514
1514
  "src/tools/common/searchGoogle.ts"() {
1515
1515
  "use strict";
1516
1516
  init_runMindstudioCli();
1517
1517
  init_runCli();
1518
+ FETCH_TOP_N = 5;
1518
1519
  searchGoogleTool = {
1519
1520
  definition: {
1520
1521
  name: "searchGoogle",
1521
- description: "Search Google and return results. Use for research, finding documentation, looking up APIs, or any task where web search would help.",
1522
+ description: "Search Google and return results. Use for research, finding documentation, looking up APIs, or any task where web search would help. The top results come back with their page content already included, so read those before reaching for scrapeWebUrl \u2014 you only need that for URLs this did not return, or for a result further down the list.",
1522
1523
  inputSchema: {
1523
1524
  type: "object",
1524
1525
  properties: {
@@ -1533,7 +1534,15 @@ var init_searchGoogle = __esm({
1533
1534
  async execute(input, context) {
1534
1535
  const query = input.query;
1535
1536
  return runMindstudioCli(
1536
- ["search-google", "--query", query, "--export-type", "json"],
1537
+ [
1538
+ "search-google",
1539
+ "--query",
1540
+ query,
1541
+ "--export-type",
1542
+ "json",
1543
+ "--fetch-top-n",
1544
+ String(FETCH_TOP_N)
1545
+ ],
1537
1546
  {
1538
1547
  outputKey: "results",
1539
1548
  maxBuffer: SEARCH_MAX_BUFFER,
@@ -5819,7 +5828,15 @@ __export(searchGoogle_exports, {
5819
5828
  });
5820
5829
  async function execute(input, onLog) {
5821
5830
  return runMindstudioCli(
5822
- ["search-google", "--query", input.query, "--export-type", "json"],
5831
+ [
5832
+ "search-google",
5833
+ "--query",
5834
+ input.query,
5835
+ "--export-type",
5836
+ "json",
5837
+ "--fetch-top-n",
5838
+ String(FETCH_TOP_N2)
5839
+ ],
5823
5840
  {
5824
5841
  outputKey: "results",
5825
5842
  onLog,
@@ -5828,15 +5845,16 @@ async function execute(input, onLog) {
5828
5845
  }
5829
5846
  );
5830
5847
  }
5831
- var definition;
5848
+ var FETCH_TOP_N2, definition;
5832
5849
  var init_searchGoogle2 = __esm({
5833
5850
  "src/subagents/designExpert/tools/searchGoogle.ts"() {
5834
5851
  "use strict";
5835
5852
  init_runMindstudioCli();
5836
5853
  init_runCli();
5854
+ FETCH_TOP_N2 = 5;
5837
5855
  definition = {
5838
5856
  name: "searchGoogle",
5839
- description: 'Search Google for web results. Reserch modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, or find something specific if the the user has an explicit reference. Searching for and reading case studies is a great way to get information and context about a project\'s domain. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. Pick one or more URLs from the results and then use `scrapeWebUrl` to get their text content.',
5857
+ description: 'Search Google for web results. Reserch modern design trends in industries or verticals, "best [domain] apps 2026", ui patterns, or find something specific if the the user has an explicit reference. Searching for and reading case studies is a great way to get information and context about a project\'s domain. Prioritize authoritative sources like Figma and other design leaders, avoid random blog spam. The top results come back with their page content already included, so read those directly \u2014 only use `scrapeWebUrl` for a result further down the list, or for a URL this did not return.',
5840
5858
  inputSchema: {
5841
5859
  type: "object",
5842
5860
  properties: {
@@ -6878,7 +6896,7 @@ var init_createWireframe = __esm({
6878
6896
  UPLOAD_TIMEOUT_MS2 = 3e4;
6879
6897
  definition10 = {
6880
6898
  name: "createWireframe",
6881
- description: "Create (or revise) a wireframe from self-contained HTML+CSS. The wireframe is saved to src/.wireframes/{slug}.html \u2014 reference it in your response and in specs as ![name](src/.wireframes/{slug}.html), with your notes in the surrounding prose. Calling again with the same slug overwrites the wireframe in place, so a revision keeps its path and existing references stay current.",
6899
+ description: "Create (or revise) a wireframe from self-contained HTML+CSS. Call this while working to generate a sharable wireframe asset: the result returns the exact markdown reference line to paste into your response and into specs (like generateImages returns the image URL). Calling again with the same slug overwrites the wireframe in place, so a revision keeps its path and existing references stay current.",
6882
6900
  inputSchema: {
6883
6901
  type: "object",
6884
6902
  properties: {
@@ -243,13 +243,19 @@ full report. The dataset report says whether the ledger is trainable (pairs with
243
243
  attached `trace` don't count), and a run produces a downloadable LoRA adapter plus a
244
244
  held-out agreement report: how often the trained model matched your team's decisions
245
245
  on pairs it never saw. The adapter and report land in the app's own file store
246
- (`models/` in the Files dashboard), so the user can download them there. Read
247
- `report.grading.agreement` — it is scored by the jewel's own grade function, the same
248
- grader as the pairs dashboard. The raw `agreement` field is a strict byte-level floor
249
- that undercounts whenever free-text fields differ; never quote it when `grading`
250
- exists (`mindstudio-prod jewels grade <runId>` re-grades if it is missing). The
251
- trained model is an artifact and a report for now; serving it inside the app is a
252
- later platform phase, so set that expectation honestly when a user asks.
246
+ (`models/` in the Files dashboard), so the user can download them there. The
247
+ agreement number is `report.grading.agreement` — scored by the jewel's own grade
248
+ function, the same grader as the pairs dashboard; there is no other agreement field.
249
+ A completed run without a `grading` block just hasn't been graded yet
250
+ (`mindstudio-prod jewels grade <runId>` fills it). A completed run registers the
251
+ app's tuned model as a real model id `tuned/{appId}/{methodId}`, one stable id per
252
+ method that retraining advances in place and the latest complete run per method is
253
+ automatically served on the platform's GPU pool, so that id works like any other
254
+ model the moment training finishes. There is no special invoke tool: to sanity-check
255
+ or demo a tuned model, make an ordinary generate-text call with that model id (the
256
+ pool serves it with the exact template posture it was trained under). Promotion (the
257
+ app actually switching a jewel onto its tuned model) is still a deliberate later
258
+ step; do not wire a tuned model into app code unprompted.
253
259
 
254
260
  ## Arrival Triggers (`mindstudio.jewels.propose`)
255
261
 
@@ -16,7 +16,7 @@ Think about the ways you can truly elevate the design. Use image generation to c
16
16
  - After you've taken a screenshot, use analyze image to ask different questions about it - don't re-screenshot the page unnecessarily.
17
17
  - Match the image engine to the job: `renderImage` (a browser rendering HTML you author) for token-exact graphics — share cards, wordmarks, flat icon tiles; `generateImages` (an image model) for organic, photographic, and illustrated work. Don't ask the image model to hit exact hex codes or typography, and don't hand-write SVG path data — compose HTML/CSS and render it.
18
18
  - When you write user-facing copy (headlines, captions, labels, body text), hand it to `polishCopy` before finalizing. It tightens prose so it reads like a person wrote it rather than a machine, without changing what it says. Cheap and fast — use it on any copy that will ship.
19
- - Deliver wireframes with `createWireframe`. Include the `![name](src/.wireframes/{slug}.html)` line in your response where the wireframe belongs it renders as a live preview, and the developer reads the file for the exact markup. Same slug = revise in place; new slug = new wireframe.
19
+ - Build wireframes with `createWireframe` during your working phase as you work out a layout, component, or interaction. Creating wireframes is how you create interactive assets to share back to the user, like how you generate images. The result returns the exact `![name](src/.wireframes/{slug}.html)` reference line; paste it into your response where the wireframe belongs. It renders as a live preview, and the developer reads the file for the exact markup. Same slug = revise in place; new slug = new wireframe.
20
20
 
21
21
  ## Voice
22
22
  - No emoji, no filler.
@@ -25,11 +25,11 @@ Some surfaces are deep enough to carry their own craft reference in <available_s
25
25
 
26
26
  ### Wireframes
27
27
 
28
- When you need to show a layout, component, interaction, or animation, create a wireframe with the `createWireframe` tool: pass a `name`, a kebab-case `slug`, a one-line `description`, and self-contained HTML+CSS. The wireframe is saved to `src/.wireframes/{slug}.html`, and you reference it as `![Feed Post Card](src/.wireframes/feed-post-card.html)` — include that line in your response wherever the wireframe belongs, with your notes in the surrounding prose. The reference line renders as a live visual preview, and the developer reads the file itself for the exact markup and CSS. A reference only renders once its wireframe exists, so make the `createWireframe` call for every reference you write — in the same response is fine.
28
+ Wireframes are design artifacts you build while you work, in the same phase as screenshots and image generation. As you work out a layout, a card anatomy, an interaction, or a motion pattern, build it with `createWireframe`: a `name`, a kebab-case `slug`, a one-line `description`, and self-contained HTML+CSS. Sketching in HTML is how you think through spatial decisions, so by the time you write your direction, the wireframes that anchor it already exist. The tool result returns the exact markdown reference line (`![Feed Post Card](src/.wireframes/feed-post-card.html)`)when you write your response, paste that line wherever the wireframe belongs, with your notes in the surrounding prose. The reference renders as a live visual preview, and the developer reads the file itself for the exact markup and CSS.
29
29
 
30
30
  Never use ASCII art, box-drawing characters, or code-block diagrams to describe layouts. Always use a wireframe instead, even if it's just grey rectangles with labels. A 20-line wireframe with placeholder boxes communicates proportions, spacing, and hierarchy better than any text diagram. For abstract layouts, use skeleton-style placeholders (grey boxes, rounded rects) rather than mocking up real content.
31
31
 
32
- Wireframes isolate one small piece: a single card, a button animation, a transition, a grid layout. Keep them to 60-80 lines of HTML+CSS. Past 100 lines, you're building too much. Never build full screens or pages. Most of your communication should be in words. Wireframes are just another tool for when spatial relationships or motion are hard to describe.
32
+ Wireframes isolate one small piece: a single card, a button animation, a transition, a grid layout. Keep them to 60-80 lines of HTML+CSS. Past 100 lines, you're building too much. Never build full screens or pages. Most of your communication should be in words; build a wireframe whenever you're working out spatial relationships or motion it's how you sketch.
33
33
 
34
34
  Wireframes render in a small transparent iframe. Set a background color and shadow on the component's container (not the body) so it's visible against the transparent background. Center it in the viewport. No annotations or labels inside the wireframe. Put notes in the surrounding markdown. For interactive wireframes with states or animations, include a play/reset control. No images.
35
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindstudio-ai/remy",
3
- "version": "0.1.287",
3
+ "version": "0.1.289",
4
4
  "description": "Remy coding agent",
5
5
  "repository": {
6
6
  "type": "git",