@mindstudio-ai/remy 0.1.78 → 0.1.79
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 +15 -22
- package/dist/index.js +25 -30
- package/package.json +1 -1
package/dist/headless.js
CHANGED
|
@@ -3764,9 +3764,6 @@ async function executeDesignExpertTool(name, input, context, toolCallId, onLog)
|
|
|
3764
3764
|
return tool.execute(input, onLog, context);
|
|
3765
3765
|
}
|
|
3766
3766
|
|
|
3767
|
-
// src/subagents/designExpert/prompt.ts
|
|
3768
|
-
import fs16 from "fs";
|
|
3769
|
-
|
|
3770
3767
|
// src/subagents/common/context.ts
|
|
3771
3768
|
import fs14 from "fs";
|
|
3772
3769
|
import path7 from "path";
|
|
@@ -4019,7 +4016,7 @@ function getDesignExpertPrompt() {
|
|
|
4019
4016
|
},
|
|
4020
4017
|
{
|
|
4021
4018
|
uiInspiration: 50,
|
|
4022
|
-
designReferences:
|
|
4019
|
+
designReferences: 25,
|
|
4023
4020
|
fonts: 50
|
|
4024
4021
|
}
|
|
4025
4022
|
);
|
|
@@ -4038,10 +4035,6 @@ function getDesignExpertPrompt() {
|
|
|
4038
4035
|
prompt += `
|
|
4039
4036
|
|
|
4040
4037
|
${specContext}`;
|
|
4041
|
-
}
|
|
4042
|
-
try {
|
|
4043
|
-
fs16.writeFileSync(`.design-prompt.md`, prompt);
|
|
4044
|
-
} catch {
|
|
4045
4038
|
}
|
|
4046
4039
|
return prompt;
|
|
4047
4040
|
}
|
|
@@ -4249,7 +4242,7 @@ var VISION_TOOLS = [
|
|
|
4249
4242
|
];
|
|
4250
4243
|
|
|
4251
4244
|
// src/subagents/productVision/executor.ts
|
|
4252
|
-
import
|
|
4245
|
+
import fs16 from "fs";
|
|
4253
4246
|
import path8 from "path";
|
|
4254
4247
|
var ROADMAP_DIR = "src/roadmap";
|
|
4255
4248
|
function formatRequires(requires) {
|
|
@@ -4268,8 +4261,8 @@ async function executeVisionTool(name, input) {
|
|
|
4268
4261
|
} = input;
|
|
4269
4262
|
const filePath = path8.join(ROADMAP_DIR, `${slug}.md`);
|
|
4270
4263
|
try {
|
|
4271
|
-
|
|
4272
|
-
const oldContent =
|
|
4264
|
+
fs16.mkdirSync(ROADMAP_DIR, { recursive: true });
|
|
4265
|
+
const oldContent = fs16.existsSync(filePath) ? fs16.readFileSync(filePath, "utf-8") : "";
|
|
4273
4266
|
const content = `---
|
|
4274
4267
|
name: ${itemName}
|
|
4275
4268
|
type: roadmap
|
|
@@ -4281,7 +4274,7 @@ requires: ${formatRequires(requires)}
|
|
|
4281
4274
|
|
|
4282
4275
|
${body}
|
|
4283
4276
|
`;
|
|
4284
|
-
|
|
4277
|
+
fs16.writeFileSync(filePath, content, "utf-8");
|
|
4285
4278
|
const lineCount = content.split("\n").length;
|
|
4286
4279
|
const label = oldContent ? "Updated" : "Wrote";
|
|
4287
4280
|
return `${label} ${filePath} (${lineCount} lines)
|
|
@@ -4294,10 +4287,10 @@ ${unifiedDiff(filePath, oldContent, content)}`;
|
|
|
4294
4287
|
const { slug } = input;
|
|
4295
4288
|
const filePath = path8.join(ROADMAP_DIR, `${slug}.md`);
|
|
4296
4289
|
try {
|
|
4297
|
-
if (!
|
|
4290
|
+
if (!fs16.existsSync(filePath)) {
|
|
4298
4291
|
return `Error: ${filePath} does not exist`;
|
|
4299
4292
|
}
|
|
4300
|
-
const oldContent =
|
|
4293
|
+
const oldContent = fs16.readFileSync(filePath, "utf-8");
|
|
4301
4294
|
let content = oldContent;
|
|
4302
4295
|
if (input.status) {
|
|
4303
4296
|
content = content.replace(
|
|
@@ -4350,7 +4343,7 @@ ${input.appendHistory}
|
|
|
4350
4343
|
`;
|
|
4351
4344
|
}
|
|
4352
4345
|
}
|
|
4353
|
-
|
|
4346
|
+
fs16.writeFileSync(filePath, content, "utf-8");
|
|
4354
4347
|
const lineCount = content.split("\n").length;
|
|
4355
4348
|
return `Updated ${filePath} (${lineCount} lines)
|
|
4356
4349
|
${unifiedDiff(filePath, oldContent, content)}`;
|
|
@@ -4362,11 +4355,11 @@ ${unifiedDiff(filePath, oldContent, content)}`;
|
|
|
4362
4355
|
const { slug } = input;
|
|
4363
4356
|
const filePath = path8.join(ROADMAP_DIR, `${slug}.md`);
|
|
4364
4357
|
try {
|
|
4365
|
-
if (!
|
|
4358
|
+
if (!fs16.existsSync(filePath)) {
|
|
4366
4359
|
return `Error: ${filePath} does not exist`;
|
|
4367
4360
|
}
|
|
4368
|
-
const oldContent =
|
|
4369
|
-
|
|
4361
|
+
const oldContent = fs16.readFileSync(filePath, "utf-8");
|
|
4362
|
+
fs16.unlinkSync(filePath);
|
|
4370
4363
|
return `Deleted ${filePath}
|
|
4371
4364
|
${unifiedDiff(filePath, oldContent, "")}`;
|
|
4372
4365
|
} catch (err) {
|
|
@@ -4686,12 +4679,12 @@ function executeTool(name, input, context) {
|
|
|
4686
4679
|
}
|
|
4687
4680
|
|
|
4688
4681
|
// src/session.ts
|
|
4689
|
-
import
|
|
4682
|
+
import fs17 from "fs";
|
|
4690
4683
|
var log7 = createLogger("session");
|
|
4691
4684
|
var SESSION_FILE = ".remy-session.json";
|
|
4692
4685
|
function loadSession(state) {
|
|
4693
4686
|
try {
|
|
4694
|
-
const raw =
|
|
4687
|
+
const raw = fs17.readFileSync(SESSION_FILE, "utf-8");
|
|
4695
4688
|
const data = JSON.parse(raw);
|
|
4696
4689
|
if (Array.isArray(data.messages) && data.messages.length > 0) {
|
|
4697
4690
|
state.messages = sanitizeMessages(data.messages);
|
|
@@ -4740,7 +4733,7 @@ function sanitizeMessages(messages) {
|
|
|
4740
4733
|
}
|
|
4741
4734
|
function saveSession(state) {
|
|
4742
4735
|
try {
|
|
4743
|
-
|
|
4736
|
+
fs17.writeFileSync(
|
|
4744
4737
|
SESSION_FILE,
|
|
4745
4738
|
JSON.stringify({ messages: state.messages }, null, 2),
|
|
4746
4739
|
"utf-8"
|
|
@@ -4753,7 +4746,7 @@ function saveSession(state) {
|
|
|
4753
4746
|
function clearSession(state) {
|
|
4754
4747
|
state.messages = [];
|
|
4755
4748
|
try {
|
|
4756
|
-
|
|
4749
|
+
fs17.unlinkSync(SESSION_FILE);
|
|
4757
4750
|
} catch {
|
|
4758
4751
|
}
|
|
4759
4752
|
}
|
package/dist/index.js
CHANGED
|
@@ -3909,7 +3909,6 @@ var init_getUiInspirationSample = __esm({
|
|
|
3909
3909
|
});
|
|
3910
3910
|
|
|
3911
3911
|
// src/subagents/designExpert/prompt.ts
|
|
3912
|
-
import fs14 from "fs";
|
|
3913
3912
|
function getDesignExpertPrompt() {
|
|
3914
3913
|
const specContext = loadSpecContext();
|
|
3915
3914
|
const indices = getSampleIndices(
|
|
@@ -3920,7 +3919,7 @@ function getDesignExpertPrompt() {
|
|
|
3920
3919
|
},
|
|
3921
3920
|
{
|
|
3922
3921
|
uiInspiration: 50,
|
|
3923
|
-
designReferences:
|
|
3922
|
+
designReferences: 25,
|
|
3924
3923
|
fonts: 50
|
|
3925
3924
|
}
|
|
3926
3925
|
);
|
|
@@ -3939,10 +3938,6 @@ function getDesignExpertPrompt() {
|
|
|
3939
3938
|
prompt += `
|
|
3940
3939
|
|
|
3941
3940
|
${specContext}`;
|
|
3942
|
-
}
|
|
3943
|
-
try {
|
|
3944
|
-
fs14.writeFileSync(`.design-prompt.md`, prompt);
|
|
3945
|
-
} catch {
|
|
3946
3941
|
}
|
|
3947
3942
|
return prompt;
|
|
3948
3943
|
}
|
|
@@ -4193,7 +4188,7 @@ var init_tools3 = __esm({
|
|
|
4193
4188
|
});
|
|
4194
4189
|
|
|
4195
4190
|
// src/subagents/productVision/executor.ts
|
|
4196
|
-
import
|
|
4191
|
+
import fs14 from "fs";
|
|
4197
4192
|
import path6 from "path";
|
|
4198
4193
|
function formatRequires(requires) {
|
|
4199
4194
|
return requires.length === 0 ? "[]" : `[${requires.map((r) => `"${r}"`).join(", ")}]`;
|
|
@@ -4211,8 +4206,8 @@ async function executeVisionTool(name, input) {
|
|
|
4211
4206
|
} = input;
|
|
4212
4207
|
const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
|
|
4213
4208
|
try {
|
|
4214
|
-
|
|
4215
|
-
const oldContent =
|
|
4209
|
+
fs14.mkdirSync(ROADMAP_DIR, { recursive: true });
|
|
4210
|
+
const oldContent = fs14.existsSync(filePath) ? fs14.readFileSync(filePath, "utf-8") : "";
|
|
4216
4211
|
const content = `---
|
|
4217
4212
|
name: ${itemName}
|
|
4218
4213
|
type: roadmap
|
|
@@ -4224,7 +4219,7 @@ requires: ${formatRequires(requires)}
|
|
|
4224
4219
|
|
|
4225
4220
|
${body}
|
|
4226
4221
|
`;
|
|
4227
|
-
|
|
4222
|
+
fs14.writeFileSync(filePath, content, "utf-8");
|
|
4228
4223
|
const lineCount = content.split("\n").length;
|
|
4229
4224
|
const label = oldContent ? "Updated" : "Wrote";
|
|
4230
4225
|
return `${label} ${filePath} (${lineCount} lines)
|
|
@@ -4237,10 +4232,10 @@ ${unifiedDiff(filePath, oldContent, content)}`;
|
|
|
4237
4232
|
const { slug } = input;
|
|
4238
4233
|
const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
|
|
4239
4234
|
try {
|
|
4240
|
-
if (!
|
|
4235
|
+
if (!fs14.existsSync(filePath)) {
|
|
4241
4236
|
return `Error: ${filePath} does not exist`;
|
|
4242
4237
|
}
|
|
4243
|
-
const oldContent =
|
|
4238
|
+
const oldContent = fs14.readFileSync(filePath, "utf-8");
|
|
4244
4239
|
let content = oldContent;
|
|
4245
4240
|
if (input.status) {
|
|
4246
4241
|
content = content.replace(
|
|
@@ -4293,7 +4288,7 @@ ${input.appendHistory}
|
|
|
4293
4288
|
`;
|
|
4294
4289
|
}
|
|
4295
4290
|
}
|
|
4296
|
-
|
|
4291
|
+
fs14.writeFileSync(filePath, content, "utf-8");
|
|
4297
4292
|
const lineCount = content.split("\n").length;
|
|
4298
4293
|
return `Updated ${filePath} (${lineCount} lines)
|
|
4299
4294
|
${unifiedDiff(filePath, oldContent, content)}`;
|
|
@@ -4305,11 +4300,11 @@ ${unifiedDiff(filePath, oldContent, content)}`;
|
|
|
4305
4300
|
const { slug } = input;
|
|
4306
4301
|
const filePath = path6.join(ROADMAP_DIR, `${slug}.md`);
|
|
4307
4302
|
try {
|
|
4308
|
-
if (!
|
|
4303
|
+
if (!fs14.existsSync(filePath)) {
|
|
4309
4304
|
return `Error: ${filePath} does not exist`;
|
|
4310
4305
|
}
|
|
4311
|
-
const oldContent =
|
|
4312
|
-
|
|
4306
|
+
const oldContent = fs14.readFileSync(filePath, "utf-8");
|
|
4307
|
+
fs14.unlinkSync(filePath);
|
|
4313
4308
|
return `Deleted ${filePath}
|
|
4314
4309
|
${unifiedDiff(filePath, oldContent, "")}`;
|
|
4315
4310
|
} catch (err) {
|
|
@@ -4721,10 +4716,10 @@ var init_tools5 = __esm({
|
|
|
4721
4716
|
});
|
|
4722
4717
|
|
|
4723
4718
|
// src/session.ts
|
|
4724
|
-
import
|
|
4719
|
+
import fs15 from "fs";
|
|
4725
4720
|
function loadSession(state) {
|
|
4726
4721
|
try {
|
|
4727
|
-
const raw =
|
|
4722
|
+
const raw = fs15.readFileSync(SESSION_FILE, "utf-8");
|
|
4728
4723
|
const data = JSON.parse(raw);
|
|
4729
4724
|
if (Array.isArray(data.messages) && data.messages.length > 0) {
|
|
4730
4725
|
state.messages = sanitizeMessages(data.messages);
|
|
@@ -4773,7 +4768,7 @@ function sanitizeMessages(messages) {
|
|
|
4773
4768
|
}
|
|
4774
4769
|
function saveSession(state) {
|
|
4775
4770
|
try {
|
|
4776
|
-
|
|
4771
|
+
fs15.writeFileSync(
|
|
4777
4772
|
SESSION_FILE,
|
|
4778
4773
|
JSON.stringify({ messages: state.messages }, null, 2),
|
|
4779
4774
|
"utf-8"
|
|
@@ -4786,7 +4781,7 @@ function saveSession(state) {
|
|
|
4786
4781
|
function clearSession(state) {
|
|
4787
4782
|
state.messages = [];
|
|
4788
4783
|
try {
|
|
4789
|
-
|
|
4784
|
+
fs15.unlinkSync(SESSION_FILE);
|
|
4790
4785
|
} catch {
|
|
4791
4786
|
}
|
|
4792
4787
|
}
|
|
@@ -5515,12 +5510,12 @@ var init_agent = __esm({
|
|
|
5515
5510
|
});
|
|
5516
5511
|
|
|
5517
5512
|
// src/prompt/static/projectContext.ts
|
|
5518
|
-
import
|
|
5513
|
+
import fs16 from "fs";
|
|
5519
5514
|
import path7 from "path";
|
|
5520
5515
|
function loadProjectInstructions() {
|
|
5521
5516
|
for (const file of AGENT_INSTRUCTION_FILES) {
|
|
5522
5517
|
try {
|
|
5523
|
-
const content =
|
|
5518
|
+
const content = fs16.readFileSync(file, "utf-8").trim();
|
|
5524
5519
|
if (content) {
|
|
5525
5520
|
return `
|
|
5526
5521
|
## Project Instructions (${file})
|
|
@@ -5533,7 +5528,7 @@ ${content}`;
|
|
|
5533
5528
|
}
|
|
5534
5529
|
function loadProjectManifest() {
|
|
5535
5530
|
try {
|
|
5536
|
-
const manifest =
|
|
5531
|
+
const manifest = fs16.readFileSync("mindstudio.json", "utf-8");
|
|
5537
5532
|
return `
|
|
5538
5533
|
## Project Manifest (mindstudio.json)
|
|
5539
5534
|
\`\`\`json
|
|
@@ -5574,7 +5569,7 @@ ${entries.join("\n")}`;
|
|
|
5574
5569
|
function walkMdFiles2(dir) {
|
|
5575
5570
|
const results = [];
|
|
5576
5571
|
try {
|
|
5577
|
-
const entries =
|
|
5572
|
+
const entries = fs16.readdirSync(dir, { withFileTypes: true });
|
|
5578
5573
|
for (const entry of entries) {
|
|
5579
5574
|
const full = path7.join(dir, entry.name);
|
|
5580
5575
|
if (entry.isDirectory()) {
|
|
@@ -5589,7 +5584,7 @@ function walkMdFiles2(dir) {
|
|
|
5589
5584
|
}
|
|
5590
5585
|
function parseFrontmatter(filePath) {
|
|
5591
5586
|
try {
|
|
5592
|
-
const content =
|
|
5587
|
+
const content = fs16.readFileSync(filePath, "utf-8");
|
|
5593
5588
|
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
5594
5589
|
if (!match) {
|
|
5595
5590
|
return { name: "", description: "", type: "" };
|
|
@@ -5605,7 +5600,7 @@ function parseFrontmatter(filePath) {
|
|
|
5605
5600
|
}
|
|
5606
5601
|
function loadProjectFileListing() {
|
|
5607
5602
|
try {
|
|
5608
|
-
const entries =
|
|
5603
|
+
const entries = fs16.readdirSync(".", { withFileTypes: true });
|
|
5609
5604
|
const listing = entries.filter((e) => e.name !== ".git" && e.name !== "node_modules").sort((a, b) => {
|
|
5610
5605
|
if (a.isDirectory() && !b.isDirectory()) {
|
|
5611
5606
|
return -1;
|
|
@@ -5785,12 +5780,12 @@ var init_prompt4 = __esm({
|
|
|
5785
5780
|
});
|
|
5786
5781
|
|
|
5787
5782
|
// src/config.ts
|
|
5788
|
-
import
|
|
5783
|
+
import fs17 from "fs";
|
|
5789
5784
|
import path8 from "path";
|
|
5790
5785
|
import os from "os";
|
|
5791
5786
|
function loadConfigFile() {
|
|
5792
5787
|
try {
|
|
5793
|
-
const raw =
|
|
5788
|
+
const raw = fs17.readFileSync(CONFIG_PATH, "utf-8");
|
|
5794
5789
|
log7.debug("Loaded config file", { path: CONFIG_PATH });
|
|
5795
5790
|
return JSON.parse(raw);
|
|
5796
5791
|
} catch (err) {
|
|
@@ -6739,7 +6734,7 @@ var init_headless = __esm({
|
|
|
6739
6734
|
// src/index.tsx
|
|
6740
6735
|
import { render } from "ink";
|
|
6741
6736
|
import os2 from "os";
|
|
6742
|
-
import
|
|
6737
|
+
import fs18 from "fs";
|
|
6743
6738
|
import path9 from "path";
|
|
6744
6739
|
|
|
6745
6740
|
// src/tui/App.tsx
|
|
@@ -7058,7 +7053,7 @@ for (let i = 0; i < args.length; i++) {
|
|
|
7058
7053
|
var startupLog = createLogger("startup");
|
|
7059
7054
|
function printDebugInfo(config) {
|
|
7060
7055
|
const pkg = JSON.parse(
|
|
7061
|
-
|
|
7056
|
+
fs18.readFileSync(
|
|
7062
7057
|
path9.join(import.meta.dirname, "..", "package.json"),
|
|
7063
7058
|
"utf-8"
|
|
7064
7059
|
)
|