@mindstudio-ai/remy 0.1.54 → 0.1.56
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,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: reviseFromComments
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
This is an automated message triggered by the user pressing "Send Revision Requests to Agent" in the spec editor. They are currently editing the {{path}} file, and have added one or more comments to highlighted text. Please review each comment and react accordingly. The user can not see this message, so keep that in mind when responding.
|
|
6
|
+
|
|
7
|
+
<user_comments>
|
|
8
|
+
{{comments}}
|
|
9
|
+
</user_comments>
|
package/dist/headless.js
CHANGED
|
@@ -1597,40 +1597,6 @@ var askMindStudioSdkTool = {
|
|
|
1597
1597
|
}
|
|
1598
1598
|
};
|
|
1599
1599
|
|
|
1600
|
-
// src/tools/common/scapeWebUrl.ts
|
|
1601
|
-
var scapeWebUrlTool = {
|
|
1602
|
-
definition: {
|
|
1603
|
-
name: "scapeWebUrl",
|
|
1604
|
-
description: "Scrape the content of a web page. Returns the HTML of the page as markdown text. Optionally capture a screenshot if you need see the visual design. Use this when you need to fetch or analyze content from a website",
|
|
1605
|
-
inputSchema: {
|
|
1606
|
-
type: "object",
|
|
1607
|
-
properties: {
|
|
1608
|
-
url: {
|
|
1609
|
-
type: "string",
|
|
1610
|
-
description: "The URL to fetch."
|
|
1611
|
-
},
|
|
1612
|
-
screenshot: {
|
|
1613
|
-
type: "boolean",
|
|
1614
|
-
description: "Capture a screenshot of the page in addition to the text content. Adds latency; only use when you need to see the visual design."
|
|
1615
|
-
}
|
|
1616
|
-
},
|
|
1617
|
-
required: ["url"]
|
|
1618
|
-
}
|
|
1619
|
-
},
|
|
1620
|
-
async execute(input, context) {
|
|
1621
|
-
const url = input.url;
|
|
1622
|
-
const screenshot = input.screenshot;
|
|
1623
|
-
const pageOptions = { onlyMainContent: true };
|
|
1624
|
-
if (screenshot) {
|
|
1625
|
-
pageOptions.screenshot = true;
|
|
1626
|
-
}
|
|
1627
|
-
return runCli(
|
|
1628
|
-
`mindstudio scrape-url --url ${JSON.stringify(url)} --page-options ${JSON.stringify(JSON.stringify(pageOptions))} --no-meta`,
|
|
1629
|
-
{ onLog: context?.onLog }
|
|
1630
|
-
);
|
|
1631
|
-
}
|
|
1632
|
-
};
|
|
1633
|
-
|
|
1634
1600
|
// src/tools/common/searchGoogle.ts
|
|
1635
1601
|
var searchGoogleTool = {
|
|
1636
1602
|
definition: {
|
|
@@ -3148,7 +3114,7 @@ __export(searchGoogle_exports, {
|
|
|
3148
3114
|
});
|
|
3149
3115
|
var definition = {
|
|
3150
3116
|
name: "searchGoogle",
|
|
3151
|
-
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 `
|
|
3117
|
+
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.',
|
|
3152
3118
|
inputSchema: {
|
|
3153
3119
|
type: "object",
|
|
3154
3120
|
properties: {
|
|
@@ -3174,7 +3140,7 @@ __export(scrapeWebUrl_exports, {
|
|
|
3174
3140
|
execute: () => execute2
|
|
3175
3141
|
});
|
|
3176
3142
|
var definition2 = {
|
|
3177
|
-
name: "
|
|
3143
|
+
name: "scrapeWebUrl",
|
|
3178
3144
|
description: "Fetch the content of a web page as markdown. Use when reading sites from search results or specific things the user wants to incorporate.",
|
|
3179
3145
|
inputSchema: {
|
|
3180
3146
|
type: "object",
|
|
@@ -4293,7 +4259,7 @@ var SANITY_CHECK_TOOLS = [
|
|
|
4293
4259
|
}
|
|
4294
4260
|
},
|
|
4295
4261
|
{
|
|
4296
|
-
name: "
|
|
4262
|
+
name: "scrapeWebUrl",
|
|
4297
4263
|
description: "Fetch a web page as markdown. Use to read package docs, changelogs, npm pages.",
|
|
4298
4264
|
inputSchema: {
|
|
4299
4265
|
type: "object",
|
|
@@ -4376,6 +4342,40 @@ var codeSanityCheckTool = {
|
|
|
4376
4342
|
}
|
|
4377
4343
|
};
|
|
4378
4344
|
|
|
4345
|
+
// src/tools/common/scrapeWebUrl.ts
|
|
4346
|
+
var scrapeWebUrlTool = {
|
|
4347
|
+
definition: {
|
|
4348
|
+
name: "scrapeWebUrl",
|
|
4349
|
+
description: "Scrape the content of a web page. Returns the HTML of the page as markdown text. Optionally capture a screenshot if you need see the visual design. Use this when you need to fetch or analyze content from a website",
|
|
4350
|
+
inputSchema: {
|
|
4351
|
+
type: "object",
|
|
4352
|
+
properties: {
|
|
4353
|
+
url: {
|
|
4354
|
+
type: "string",
|
|
4355
|
+
description: "The URL to fetch."
|
|
4356
|
+
},
|
|
4357
|
+
screenshot: {
|
|
4358
|
+
type: "boolean",
|
|
4359
|
+
description: "Capture a screenshot of the page in addition to the text content. Adds latency; only use when you need to see the visual design."
|
|
4360
|
+
}
|
|
4361
|
+
},
|
|
4362
|
+
required: ["url"]
|
|
4363
|
+
}
|
|
4364
|
+
},
|
|
4365
|
+
async execute(input, context) {
|
|
4366
|
+
const url = input.url;
|
|
4367
|
+
const screenshot = input.screenshot;
|
|
4368
|
+
const pageOptions = { onlyMainContent: true };
|
|
4369
|
+
if (screenshot) {
|
|
4370
|
+
pageOptions.screenshot = true;
|
|
4371
|
+
}
|
|
4372
|
+
return runCli(
|
|
4373
|
+
`mindstudio scrape-url --url ${JSON.stringify(url)} --page-options ${JSON.stringify(JSON.stringify(pageOptions))} --no-meta`,
|
|
4374
|
+
{ onLog: context?.onLog }
|
|
4375
|
+
);
|
|
4376
|
+
}
|
|
4377
|
+
};
|
|
4378
|
+
|
|
4379
4379
|
// src/tools/index.ts
|
|
4380
4380
|
function getSpecTools() {
|
|
4381
4381
|
return [readSpecTool, writeSpecTool, editSpecTool, listSpecFilesTool];
|
|
@@ -4406,7 +4406,7 @@ function getCommonTools() {
|
|
|
4406
4406
|
promptUserTool,
|
|
4407
4407
|
confirmDestructiveActionTool,
|
|
4408
4408
|
askMindStudioSdkTool,
|
|
4409
|
-
|
|
4409
|
+
scrapeWebUrlTool,
|
|
4410
4410
|
searchGoogleTool,
|
|
4411
4411
|
setProjectMetadataTool,
|
|
4412
4412
|
designExpertTool,
|
|
@@ -5069,8 +5069,6 @@ async function runTurn(params) {
|
|
|
5069
5069
|
settle = (result, isError) => res({ id: tc.id, result, isError });
|
|
5070
5070
|
});
|
|
5071
5071
|
let toolAbort = new AbortController();
|
|
5072
|
-
const cascadeAbort = () => toolAbort.abort();
|
|
5073
|
-
signal?.addEventListener("abort", cascadeAbort, { once: true });
|
|
5074
5072
|
let settled = false;
|
|
5075
5073
|
const safeSettle = (result, isError) => {
|
|
5076
5074
|
if (settled) {
|
|
@@ -5080,6 +5078,11 @@ async function runTurn(params) {
|
|
|
5080
5078
|
signal?.removeEventListener("abort", cascadeAbort);
|
|
5081
5079
|
settle(result, isError);
|
|
5082
5080
|
};
|
|
5081
|
+
const cascadeAbort = () => {
|
|
5082
|
+
toolAbort.abort();
|
|
5083
|
+
safeSettle("Error: cancelled", true);
|
|
5084
|
+
};
|
|
5085
|
+
signal?.addEventListener("abort", cascadeAbort, { once: true });
|
|
5083
5086
|
const run = async (input) => {
|
|
5084
5087
|
try {
|
|
5085
5088
|
let result;
|
|
@@ -5292,7 +5295,8 @@ function resolveAction(text) {
|
|
|
5292
5295
|
let body = readAsset("automatedActions", `${triggerName}.md`);
|
|
5293
5296
|
body = body.replace(/^---[\s\S]*?---\s*/, "");
|
|
5294
5297
|
for (const [key, value] of Object.entries(params)) {
|
|
5295
|
-
|
|
5298
|
+
const str = typeof value === "string" ? value : JSON.stringify(value);
|
|
5299
|
+
body = body.replaceAll(`{{${key}}}`, str);
|
|
5296
5300
|
}
|
|
5297
5301
|
return `@@automated::${triggerName}@@
|
|
5298
5302
|
${body}`;
|
package/dist/index.js
CHANGED
|
@@ -1170,47 +1170,6 @@ var init_sdkConsultant = __esm({
|
|
|
1170
1170
|
}
|
|
1171
1171
|
});
|
|
1172
1172
|
|
|
1173
|
-
// src/tools/common/scapeWebUrl.ts
|
|
1174
|
-
var scapeWebUrlTool;
|
|
1175
|
-
var init_scapeWebUrl = __esm({
|
|
1176
|
-
"src/tools/common/scapeWebUrl.ts"() {
|
|
1177
|
-
"use strict";
|
|
1178
|
-
init_runCli();
|
|
1179
|
-
scapeWebUrlTool = {
|
|
1180
|
-
definition: {
|
|
1181
|
-
name: "scapeWebUrl",
|
|
1182
|
-
description: "Scrape the content of a web page. Returns the HTML of the page as markdown text. Optionally capture a screenshot if you need see the visual design. Use this when you need to fetch or analyze content from a website",
|
|
1183
|
-
inputSchema: {
|
|
1184
|
-
type: "object",
|
|
1185
|
-
properties: {
|
|
1186
|
-
url: {
|
|
1187
|
-
type: "string",
|
|
1188
|
-
description: "The URL to fetch."
|
|
1189
|
-
},
|
|
1190
|
-
screenshot: {
|
|
1191
|
-
type: "boolean",
|
|
1192
|
-
description: "Capture a screenshot of the page in addition to the text content. Adds latency; only use when you need to see the visual design."
|
|
1193
|
-
}
|
|
1194
|
-
},
|
|
1195
|
-
required: ["url"]
|
|
1196
|
-
}
|
|
1197
|
-
},
|
|
1198
|
-
async execute(input, context) {
|
|
1199
|
-
const url = input.url;
|
|
1200
|
-
const screenshot = input.screenshot;
|
|
1201
|
-
const pageOptions = { onlyMainContent: true };
|
|
1202
|
-
if (screenshot) {
|
|
1203
|
-
pageOptions.screenshot = true;
|
|
1204
|
-
}
|
|
1205
|
-
return runCli(
|
|
1206
|
-
`mindstudio scrape-url --url ${JSON.stringify(url)} --page-options ${JSON.stringify(JSON.stringify(pageOptions))} --no-meta`,
|
|
1207
|
-
{ onLog: context?.onLog }
|
|
1208
|
-
);
|
|
1209
|
-
}
|
|
1210
|
-
};
|
|
1211
|
-
}
|
|
1212
|
-
});
|
|
1213
|
-
|
|
1214
1173
|
// src/tools/common/searchGoogle.ts
|
|
1215
1174
|
var searchGoogleTool;
|
|
1216
1175
|
var init_searchGoogle = __esm({
|
|
@@ -3000,7 +2959,7 @@ var init_searchGoogle2 = __esm({
|
|
|
3000
2959
|
init_runCli();
|
|
3001
2960
|
definition = {
|
|
3002
2961
|
name: "searchGoogle",
|
|
3003
|
-
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 `
|
|
2962
|
+
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.',
|
|
3004
2963
|
inputSchema: {
|
|
3005
2964
|
type: "object",
|
|
3006
2965
|
properties: {
|
|
@@ -3037,7 +2996,7 @@ var init_scrapeWebUrl = __esm({
|
|
|
3037
2996
|
"use strict";
|
|
3038
2997
|
init_runCli();
|
|
3039
2998
|
definition2 = {
|
|
3040
|
-
name: "
|
|
2999
|
+
name: "scrapeWebUrl",
|
|
3041
3000
|
description: "Fetch the content of a web page as markdown. Use when reading sites from search results or specific things the user wants to incorporate.",
|
|
3042
3001
|
inputSchema: {
|
|
3043
3002
|
type: "object",
|
|
@@ -4300,7 +4259,7 @@ var init_tools4 = __esm({
|
|
|
4300
4259
|
}
|
|
4301
4260
|
},
|
|
4302
4261
|
{
|
|
4303
|
-
name: "
|
|
4262
|
+
name: "scrapeWebUrl",
|
|
4304
4263
|
description: "Fetch a web page as markdown. Use to read package docs, changelogs, npm pages.",
|
|
4305
4264
|
inputSchema: {
|
|
4306
4265
|
type: "object",
|
|
@@ -4396,6 +4355,47 @@ var init_codeSanityCheck = __esm({
|
|
|
4396
4355
|
}
|
|
4397
4356
|
});
|
|
4398
4357
|
|
|
4358
|
+
// src/tools/common/scrapeWebUrl.ts
|
|
4359
|
+
var scrapeWebUrlTool;
|
|
4360
|
+
var init_scrapeWebUrl2 = __esm({
|
|
4361
|
+
"src/tools/common/scrapeWebUrl.ts"() {
|
|
4362
|
+
"use strict";
|
|
4363
|
+
init_runCli();
|
|
4364
|
+
scrapeWebUrlTool = {
|
|
4365
|
+
definition: {
|
|
4366
|
+
name: "scrapeWebUrl",
|
|
4367
|
+
description: "Scrape the content of a web page. Returns the HTML of the page as markdown text. Optionally capture a screenshot if you need see the visual design. Use this when you need to fetch or analyze content from a website",
|
|
4368
|
+
inputSchema: {
|
|
4369
|
+
type: "object",
|
|
4370
|
+
properties: {
|
|
4371
|
+
url: {
|
|
4372
|
+
type: "string",
|
|
4373
|
+
description: "The URL to fetch."
|
|
4374
|
+
},
|
|
4375
|
+
screenshot: {
|
|
4376
|
+
type: "boolean",
|
|
4377
|
+
description: "Capture a screenshot of the page in addition to the text content. Adds latency; only use when you need to see the visual design."
|
|
4378
|
+
}
|
|
4379
|
+
},
|
|
4380
|
+
required: ["url"]
|
|
4381
|
+
}
|
|
4382
|
+
},
|
|
4383
|
+
async execute(input, context) {
|
|
4384
|
+
const url = input.url;
|
|
4385
|
+
const screenshot = input.screenshot;
|
|
4386
|
+
const pageOptions = { onlyMainContent: true };
|
|
4387
|
+
if (screenshot) {
|
|
4388
|
+
pageOptions.screenshot = true;
|
|
4389
|
+
}
|
|
4390
|
+
return runCli(
|
|
4391
|
+
`mindstudio scrape-url --url ${JSON.stringify(url)} --page-options ${JSON.stringify(JSON.stringify(pageOptions))} --no-meta`,
|
|
4392
|
+
{ onLog: context?.onLog }
|
|
4393
|
+
);
|
|
4394
|
+
}
|
|
4395
|
+
};
|
|
4396
|
+
}
|
|
4397
|
+
});
|
|
4398
|
+
|
|
4399
4399
|
// src/tools/index.ts
|
|
4400
4400
|
function getSpecTools() {
|
|
4401
4401
|
return [readSpecTool, writeSpecTool, editSpecTool, listSpecFilesTool];
|
|
@@ -4426,7 +4426,7 @@ function getCommonTools() {
|
|
|
4426
4426
|
promptUserTool,
|
|
4427
4427
|
confirmDestructiveActionTool,
|
|
4428
4428
|
askMindStudioSdkTool,
|
|
4429
|
-
|
|
4429
|
+
scrapeWebUrlTool,
|
|
4430
4430
|
searchGoogleTool,
|
|
4431
4431
|
setProjectMetadataTool,
|
|
4432
4432
|
designExpertTool,
|
|
@@ -4491,7 +4491,6 @@ var init_tools5 = __esm({
|
|
|
4491
4491
|
init_promptUser();
|
|
4492
4492
|
init_confirmDestructiveAction();
|
|
4493
4493
|
init_sdkConsultant();
|
|
4494
|
-
init_scapeWebUrl();
|
|
4495
4494
|
init_searchGoogle();
|
|
4496
4495
|
init_setProjectMetadata();
|
|
4497
4496
|
init_readFile();
|
|
@@ -4512,6 +4511,7 @@ var init_tools5 = __esm({
|
|
|
4512
4511
|
init_designExpert();
|
|
4513
4512
|
init_productVision();
|
|
4514
4513
|
init_codeSanityCheck();
|
|
4514
|
+
init_scrapeWebUrl2();
|
|
4515
4515
|
}
|
|
4516
4516
|
});
|
|
4517
4517
|
|
|
@@ -5132,8 +5132,6 @@ async function runTurn(params) {
|
|
|
5132
5132
|
settle = (result, isError) => res({ id: tc.id, result, isError });
|
|
5133
5133
|
});
|
|
5134
5134
|
let toolAbort = new AbortController();
|
|
5135
|
-
const cascadeAbort = () => toolAbort.abort();
|
|
5136
|
-
signal?.addEventListener("abort", cascadeAbort, { once: true });
|
|
5137
5135
|
let settled = false;
|
|
5138
5136
|
const safeSettle = (result, isError) => {
|
|
5139
5137
|
if (settled) {
|
|
@@ -5143,6 +5141,11 @@ async function runTurn(params) {
|
|
|
5143
5141
|
signal?.removeEventListener("abort", cascadeAbort);
|
|
5144
5142
|
settle(result, isError);
|
|
5145
5143
|
};
|
|
5144
|
+
const cascadeAbort = () => {
|
|
5145
|
+
toolAbort.abort();
|
|
5146
|
+
safeSettle("Error: cancelled", true);
|
|
5147
|
+
};
|
|
5148
|
+
signal?.addEventListener("abort", cascadeAbort, { once: true });
|
|
5146
5149
|
const run = async (input) => {
|
|
5147
5150
|
try {
|
|
5148
5151
|
let result;
|
|
@@ -5891,7 +5894,8 @@ function resolveAction(text) {
|
|
|
5891
5894
|
let body = readAsset("automatedActions", `${triggerName}.md`);
|
|
5892
5895
|
body = body.replace(/^---[\s\S]*?---\s*/, "");
|
|
5893
5896
|
for (const [key, value] of Object.entries(params)) {
|
|
5894
|
-
|
|
5897
|
+
const str = typeof value === "string" ? value : JSON.stringify(value);
|
|
5898
|
+
body = body.replaceAll(`{{${key}}}`, str);
|
|
5895
5899
|
}
|
|
5896
5900
|
return `@@automated::${triggerName}@@
|
|
5897
5901
|
${body}`;
|
package/package.json
CHANGED
|
File without changes
|