@mindstudio-ai/remy 0.1.154 → 0.1.155
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/automatedActions/postBuildPolish.md +2 -2
- package/dist/headless.js +27 -6
- package/dist/index.js +28 -7
- package/package.json +1 -1
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
This is an automated follow-up after the initial build. The code is written and verified. Now it's time to polish and finalize so we can deliver something beautiful and magical as the user's first experience with our work.
|
|
6
6
|
|
|
7
7
|
## Polishing
|
|
8
|
-
Take a step back and do an explicit polish pass. Re-read the spec files and the design expert's guidance, then walk through each frontend file looking for
|
|
8
|
+
Take a step back and do an explicit polish pass focused on UX and interaction quality. Re-read the spec files and the design expert's guidance, then walk through each frontend file looking for behavioral details that got skipped in the initial build: layout animations, transitions, hover states, micro-interactions, spring physics, entrance reveals, gesture handling, responsiveness across breakpoints, focus and keyboard handling, and loading/empty/error states.
|
|
9
9
|
|
|
10
10
|
The initial build prioritizes getting everything connected and functional, but this pass closes the gap between "it works" and "it feels great." In many ways this is *the* most important part of the initial build, as the user's first experience of the deliverable will set their expectations for every iteration that follows. Don't mess this up.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
The visual assets — photography, generated images, brand colors, typography — were already locked in upstream by the design expert during intake. Treat them as fixed inputs to this pass. Polish the *behavior* of the page, not the pixels of generated imagery.
|
|
13
13
|
|
|
14
14
|
## Finalizing
|
|
15
15
|
When everything is working and polished:
|
package/dist/headless.js
CHANGED
|
@@ -835,7 +835,7 @@ async function generateSummary(apiConfig, name, compactionPrompt, messagesToSumm
|
|
|
835
835
|
let summaryText = "";
|
|
836
836
|
const useMainCache = !!mainSystem;
|
|
837
837
|
const system = useMainCache ? mainSystem : compactionPrompt;
|
|
838
|
-
const tools2 =
|
|
838
|
+
const tools2 = [];
|
|
839
839
|
const userContent = useMainCache ? `${compactionPrompt}
|
|
840
840
|
|
|
841
841
|
---
|
|
@@ -2078,11 +2078,12 @@ ${unifiedDiff(input.path, content, updated)}`;
|
|
|
2078
2078
|
import { spawn as spawn2 } from "child_process";
|
|
2079
2079
|
var DEFAULT_TIMEOUT_MS = 12e4;
|
|
2080
2080
|
var DEFAULT_MAX_LINES3 = 500;
|
|
2081
|
+
var MAX_OUTPUT_BYTES = 3e4;
|
|
2081
2082
|
var bashTool = {
|
|
2082
2083
|
clearable: true,
|
|
2083
2084
|
definition: {
|
|
2084
2085
|
name: "bash",
|
|
2085
|
-
description: "Run a shell command and return stdout + stderr. 120-second timeout by default (configurable). Use for: npm install/build/test, git operations, tsc --noEmit, or any CLI tool. Prefer dedicated tools over bash when available (use grep instead of bash + rg, readFile instead of bash + cat). Output is truncated to 500 lines
|
|
2086
|
+
description: "Run a shell command and return stdout + stderr. 120-second timeout by default (configurable). Use for: npm install/build/test, git operations, tsc --noEmit, or any CLI tool. Prefer dedicated tools over bash when available (use grep instead of bash + rg, readFile instead of bash + cat). Output is truncated to 500 lines or 30KB, whichever comes first. If a command would emit a lot of data, narrow it down (grep, head/tail, --short flags) rather than reading everything.",
|
|
2086
2087
|
inputSchema: {
|
|
2087
2088
|
type: "object",
|
|
2088
2089
|
properties: {
|
|
@@ -2138,12 +2139,32 @@ var bashTool = {
|
|
|
2138
2139
|
}
|
|
2139
2140
|
return;
|
|
2140
2141
|
}
|
|
2141
|
-
const
|
|
2142
|
-
|
|
2142
|
+
const totalBytes = Buffer.byteLength(output, "utf-8");
|
|
2143
|
+
let truncated = output;
|
|
2144
|
+
let byteTruncated = false;
|
|
2145
|
+
if (totalBytes > MAX_OUTPUT_BYTES) {
|
|
2146
|
+
truncated = Buffer.from(output, "utf-8").subarray(0, MAX_OUTPUT_BYTES).toString("utf-8");
|
|
2147
|
+
byteTruncated = true;
|
|
2148
|
+
}
|
|
2149
|
+
const lines = truncated.split("\n");
|
|
2150
|
+
const lineTruncated = lines.length > maxLines;
|
|
2151
|
+
if (lineTruncated) {
|
|
2152
|
+
truncated = lines.slice(0, maxLines).join("\n");
|
|
2153
|
+
}
|
|
2154
|
+
if (byteTruncated || lineTruncated) {
|
|
2155
|
+
const reasons = [];
|
|
2156
|
+
if (lineTruncated) {
|
|
2157
|
+
reasons.push(`${maxLines} lines`);
|
|
2158
|
+
}
|
|
2159
|
+
if (byteTruncated) {
|
|
2160
|
+
reasons.push(
|
|
2161
|
+
`${(MAX_OUTPUT_BYTES / 1024).toFixed(0)}KB of ${(totalBytes / 1024).toFixed(0)}KB`
|
|
2162
|
+
);
|
|
2163
|
+
}
|
|
2143
2164
|
resolve2(
|
|
2144
|
-
|
|
2165
|
+
truncated + `
|
|
2145
2166
|
|
|
2146
|
-
(truncated at ${
|
|
2167
|
+
(truncated at ${reasons.join(" / ")} \u2014 narrow the command (grep, head/tail, smaller paths) instead of increasing limits)`
|
|
2147
2168
|
);
|
|
2148
2169
|
} else {
|
|
2149
2170
|
resolve2(output);
|
package/dist/index.js
CHANGED
|
@@ -1550,7 +1550,7 @@ async function generateSummary(apiConfig, name, compactionPrompt, messagesToSumm
|
|
|
1550
1550
|
let summaryText = "";
|
|
1551
1551
|
const useMainCache = !!mainSystem;
|
|
1552
1552
|
const system = useMainCache ? mainSystem : compactionPrompt;
|
|
1553
|
-
const tools2 =
|
|
1553
|
+
const tools2 = [];
|
|
1554
1554
|
const userContent = useMainCache ? `${compactionPrompt}
|
|
1555
1555
|
|
|
1556
1556
|
---
|
|
@@ -2264,17 +2264,18 @@ ${unifiedDiff(input.path, content, updated)}`;
|
|
|
2264
2264
|
|
|
2265
2265
|
// src/tools/code/bash.ts
|
|
2266
2266
|
import { spawn as spawn2 } from "child_process";
|
|
2267
|
-
var DEFAULT_TIMEOUT_MS, DEFAULT_MAX_LINES3, bashTool;
|
|
2267
|
+
var DEFAULT_TIMEOUT_MS, DEFAULT_MAX_LINES3, MAX_OUTPUT_BYTES, bashTool;
|
|
2268
2268
|
var init_bash = __esm({
|
|
2269
2269
|
"src/tools/code/bash.ts"() {
|
|
2270
2270
|
"use strict";
|
|
2271
2271
|
DEFAULT_TIMEOUT_MS = 12e4;
|
|
2272
2272
|
DEFAULT_MAX_LINES3 = 500;
|
|
2273
|
+
MAX_OUTPUT_BYTES = 3e4;
|
|
2273
2274
|
bashTool = {
|
|
2274
2275
|
clearable: true,
|
|
2275
2276
|
definition: {
|
|
2276
2277
|
name: "bash",
|
|
2277
|
-
description: "Run a shell command and return stdout + stderr. 120-second timeout by default (configurable). Use for: npm install/build/test, git operations, tsc --noEmit, or any CLI tool. Prefer dedicated tools over bash when available (use grep instead of bash + rg, readFile instead of bash + cat). Output is truncated to 500 lines
|
|
2278
|
+
description: "Run a shell command and return stdout + stderr. 120-second timeout by default (configurable). Use for: npm install/build/test, git operations, tsc --noEmit, or any CLI tool. Prefer dedicated tools over bash when available (use grep instead of bash + rg, readFile instead of bash + cat). Output is truncated to 500 lines or 30KB, whichever comes first. If a command would emit a lot of data, narrow it down (grep, head/tail, --short flags) rather than reading everything.",
|
|
2278
2279
|
inputSchema: {
|
|
2279
2280
|
type: "object",
|
|
2280
2281
|
properties: {
|
|
@@ -2330,12 +2331,32 @@ var init_bash = __esm({
|
|
|
2330
2331
|
}
|
|
2331
2332
|
return;
|
|
2332
2333
|
}
|
|
2333
|
-
const
|
|
2334
|
-
|
|
2334
|
+
const totalBytes = Buffer.byteLength(output, "utf-8");
|
|
2335
|
+
let truncated = output;
|
|
2336
|
+
let byteTruncated = false;
|
|
2337
|
+
if (totalBytes > MAX_OUTPUT_BYTES) {
|
|
2338
|
+
truncated = Buffer.from(output, "utf-8").subarray(0, MAX_OUTPUT_BYTES).toString("utf-8");
|
|
2339
|
+
byteTruncated = true;
|
|
2340
|
+
}
|
|
2341
|
+
const lines = truncated.split("\n");
|
|
2342
|
+
const lineTruncated = lines.length > maxLines;
|
|
2343
|
+
if (lineTruncated) {
|
|
2344
|
+
truncated = lines.slice(0, maxLines).join("\n");
|
|
2345
|
+
}
|
|
2346
|
+
if (byteTruncated || lineTruncated) {
|
|
2347
|
+
const reasons = [];
|
|
2348
|
+
if (lineTruncated) {
|
|
2349
|
+
reasons.push(`${maxLines} lines`);
|
|
2350
|
+
}
|
|
2351
|
+
if (byteTruncated) {
|
|
2352
|
+
reasons.push(
|
|
2353
|
+
`${(MAX_OUTPUT_BYTES / 1024).toFixed(0)}KB of ${(totalBytes / 1024).toFixed(0)}KB`
|
|
2354
|
+
);
|
|
2355
|
+
}
|
|
2335
2356
|
resolve2(
|
|
2336
|
-
|
|
2357
|
+
truncated + `
|
|
2337
2358
|
|
|
2338
|
-
(truncated at ${
|
|
2359
|
+
(truncated at ${reasons.join(" / ")} \u2014 narrow the command (grep, head/tail, smaller paths) instead of increasing limits)`
|
|
2339
2360
|
);
|
|
2340
2361
|
} else {
|
|
2341
2362
|
resolve2(output);
|