@mindstudio-ai/remy 0.1.170 → 0.1.172
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.d.ts
CHANGED
|
@@ -12,6 +12,14 @@
|
|
|
12
12
|
* - Every command ends with exactly one `completed` event:
|
|
13
13
|
* {event:"completed", requestId, success:true|false, error?:string}
|
|
14
14
|
* - `tool_result` is fire-and-forget (resolves an in-flight promise, no completed event).
|
|
15
|
+
*
|
|
16
|
+
* `get_history` is paginated. Request: {action:"get_history", before?:number,
|
|
17
|
+
* limit?:number, requestId}. `before` is an exclusive upper bound on message
|
|
18
|
+
* index (defaults to end of array — the most recent messages); `limit` caps
|
|
19
|
+
* page size (default 500, hard cap 2000). Response: {event:"history",
|
|
20
|
+
* messages, startIndex, endIndex, totalMessageCount, ...}. Walk backward by
|
|
21
|
+
* passing the previous response's `startIndex` as the next `before`. When
|
|
22
|
+
* `startIndex === 0`, no older messages remain.
|
|
15
23
|
*/
|
|
16
24
|
interface HeadlessOptions {
|
|
17
25
|
apiKey?: string;
|
package/dist/headless.js
CHANGED
|
@@ -3540,7 +3540,7 @@ var browserAutomationTool = {
|
|
|
3540
3540
|
clearable: true,
|
|
3541
3541
|
definition: {
|
|
3542
3542
|
name: "runAutomatedBrowserTest",
|
|
3543
|
-
description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes frontend code, to reproduce user-reported issues, or to test end-to-end flows. Never give it explicit values to use when filling out forms or creating accounts
|
|
3543
|
+
description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes to frontend code, to reproduce user-reported issues, or to test end-to-end flows. Reports settled states between steps; it cannot reliably observe transient animation frames. For timing-sensitive bugs, read the source first. Never give it explicit values to use when filling out forms or creating accounts \u2014 it will use its own judgement (often it needs specific values to trigger dev-mode bypasses of things like login verification codes).",
|
|
3544
3544
|
inputSchema: {
|
|
3545
3545
|
type: "object",
|
|
3546
3546
|
properties: {
|
|
@@ -3667,7 +3667,7 @@ var screenshotTool = {
|
|
|
3667
3667
|
clearable: true,
|
|
3668
3668
|
definition: {
|
|
3669
3669
|
name: "screenshot",
|
|
3670
|
-
description: "Capture a full-height screenshot of the app preview and get a description of what's on screen.
|
|
3670
|
+
description: "Capture a full-height screenshot of the app preview and get a description of what's on screen. Captures the settled page state \u2014 it cannot reliably catch animations, transitions, or transient state. For timing-sensitive bugs, read the source instead. Optionally provide specific questions about what you're looking for. Use a bulleted list to ask many questions at once. To ask additional questions about a screenshot you have already captured, pass its URL as imageUrl to skip recapture. If the screenshot requires interaction first (logging in, clicking a tab, dismissing a modal), use the instructions param to describe the steps.",
|
|
3671
3671
|
inputSchema: {
|
|
3672
3672
|
type: "object",
|
|
3673
3673
|
properties: {
|
|
@@ -6731,6 +6731,8 @@ var USER_FACING_TOOLS = /* @__PURE__ */ new Set([
|
|
|
6731
6731
|
"presentPublishPlan"
|
|
6732
6732
|
]);
|
|
6733
6733
|
var FORCED_COMPACTION_THRESHOLD_TOKENS = 85e4;
|
|
6734
|
+
var HISTORY_DEFAULT_LIMIT = 500;
|
|
6735
|
+
var HISTORY_MAX_LIMIT = 2e3;
|
|
6734
6736
|
var HeadlessSession = class {
|
|
6735
6737
|
// Configuration
|
|
6736
6738
|
opts;
|
|
@@ -7427,8 +7429,18 @@ var HeadlessSession = class {
|
|
|
7427
7429
|
}
|
|
7428
7430
|
if (action === "get_history") {
|
|
7429
7431
|
this.applyPendingBlockUpdates();
|
|
7432
|
+
const total = this.state.messages.length;
|
|
7433
|
+
const rawLimit = parsed.limit;
|
|
7434
|
+
const limit = typeof rawLimit === "number" && Number.isFinite(rawLimit) ? Math.min(Math.max(1, rawLimit | 0), HISTORY_MAX_LIMIT) : HISTORY_DEFAULT_LIMIT;
|
|
7435
|
+
const rawBefore = parsed.before;
|
|
7436
|
+
const before = typeof rawBefore === "number" && Number.isFinite(rawBefore) ? Math.max(0, Math.min(rawBefore | 0, total)) : total;
|
|
7437
|
+
const startIndex = Math.max(0, before - limit);
|
|
7438
|
+
const endIndex = before;
|
|
7430
7439
|
this.dispatchSimple(requestId, "history", () => ({
|
|
7431
|
-
messages: this.state.messages,
|
|
7440
|
+
messages: this.state.messages.slice(startIndex, endIndex),
|
|
7441
|
+
startIndex,
|
|
7442
|
+
endIndex,
|
|
7443
|
+
totalMessageCount: total,
|
|
7432
7444
|
running: this.running,
|
|
7433
7445
|
...this.running && this.currentRequestId ? { currentRequestId: this.currentRequestId } : {},
|
|
7434
7446
|
...this.queueFields()
|
package/dist/index.js
CHANGED
|
@@ -3896,7 +3896,7 @@ var init_browserAutomation = __esm({
|
|
|
3896
3896
|
clearable: true,
|
|
3897
3897
|
definition: {
|
|
3898
3898
|
name: "runAutomatedBrowserTest",
|
|
3899
|
-
description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes frontend code, to reproduce user-reported issues, or to test end-to-end flows. Never give it explicit values to use when filling out forms or creating accounts
|
|
3899
|
+
description: "Run an automated browser test against the live preview. Describe what to test \u2014 the agent figures out how. Use after meaningful changes to frontend code, to reproduce user-reported issues, or to test end-to-end flows. Reports settled states between steps; it cannot reliably observe transient animation frames. For timing-sensitive bugs, read the source first. Never give it explicit values to use when filling out forms or creating accounts \u2014 it will use its own judgement (often it needs specific values to trigger dev-mode bypasses of things like login verification codes).",
|
|
3900
3900
|
inputSchema: {
|
|
3901
3901
|
type: "object",
|
|
3902
3902
|
properties: {
|
|
@@ -4032,7 +4032,7 @@ var init_screenshot2 = __esm({
|
|
|
4032
4032
|
clearable: true,
|
|
4033
4033
|
definition: {
|
|
4034
4034
|
name: "screenshot",
|
|
4035
|
-
description: "Capture a full-height screenshot of the app preview and get a description of what's on screen.
|
|
4035
|
+
description: "Capture a full-height screenshot of the app preview and get a description of what's on screen. Captures the settled page state \u2014 it cannot reliably catch animations, transitions, or transient state. For timing-sensitive bugs, read the source instead. Optionally provide specific questions about what you're looking for. Use a bulleted list to ask many questions at once. To ask additional questions about a screenshot you have already captured, pass its URL as imageUrl to skip recapture. If the screenshot requires interaction first (logging in, clicking a tab, dismissing a modal), use the instructions param to describe the steps.",
|
|
4036
4036
|
inputSchema: {
|
|
4037
4037
|
type: "object",
|
|
4038
4038
|
properties: {
|
|
@@ -7457,7 +7457,7 @@ var headless_exports = {};
|
|
|
7457
7457
|
__export(headless_exports, {
|
|
7458
7458
|
HeadlessSession: () => HeadlessSession
|
|
7459
7459
|
});
|
|
7460
|
-
var log14, EXTERNAL_TOOL_TIMEOUT_MS, USER_FACING_TOOLS, FORCED_COMPACTION_THRESHOLD_TOKENS, HeadlessSession;
|
|
7460
|
+
var log14, EXTERNAL_TOOL_TIMEOUT_MS, USER_FACING_TOOLS, FORCED_COMPACTION_THRESHOLD_TOKENS, HISTORY_DEFAULT_LIMIT, HISTORY_MAX_LIMIT, HeadlessSession;
|
|
7461
7461
|
var init_headless = __esm({
|
|
7462
7462
|
"src/headless/index.ts"() {
|
|
7463
7463
|
"use strict";
|
|
@@ -7485,6 +7485,8 @@ var init_headless = __esm({
|
|
|
7485
7485
|
"presentPublishPlan"
|
|
7486
7486
|
]);
|
|
7487
7487
|
FORCED_COMPACTION_THRESHOLD_TOKENS = 85e4;
|
|
7488
|
+
HISTORY_DEFAULT_LIMIT = 500;
|
|
7489
|
+
HISTORY_MAX_LIMIT = 2e3;
|
|
7488
7490
|
HeadlessSession = class {
|
|
7489
7491
|
// Configuration
|
|
7490
7492
|
opts;
|
|
@@ -8181,8 +8183,18 @@ var init_headless = __esm({
|
|
|
8181
8183
|
}
|
|
8182
8184
|
if (action === "get_history") {
|
|
8183
8185
|
this.applyPendingBlockUpdates();
|
|
8186
|
+
const total = this.state.messages.length;
|
|
8187
|
+
const rawLimit = parsed.limit;
|
|
8188
|
+
const limit = typeof rawLimit === "number" && Number.isFinite(rawLimit) ? Math.min(Math.max(1, rawLimit | 0), HISTORY_MAX_LIMIT) : HISTORY_DEFAULT_LIMIT;
|
|
8189
|
+
const rawBefore = parsed.before;
|
|
8190
|
+
const before = typeof rawBefore === "number" && Number.isFinite(rawBefore) ? Math.max(0, Math.min(rawBefore | 0, total)) : total;
|
|
8191
|
+
const startIndex = Math.max(0, before - limit);
|
|
8192
|
+
const endIndex = before;
|
|
8184
8193
|
this.dispatchSimple(requestId, "history", () => ({
|
|
8185
|
-
messages: this.state.messages,
|
|
8194
|
+
messages: this.state.messages.slice(startIndex, endIndex),
|
|
8195
|
+
startIndex,
|
|
8196
|
+
endIndex,
|
|
8197
|
+
totalMessageCount: total,
|
|
8186
8198
|
running: this.running,
|
|
8187
8199
|
...this.running && this.currentRequestId ? { currentRequestId: this.currentRequestId } : {},
|
|
8188
8200
|
...this.queueFields()
|
|
@@ -101,7 +101,7 @@ Even if the app is intuitive and easy to use, users showing up for the first tim
|
|
|
101
101
|
Always rely on the details provided by the design expert - their work is the source of truth for the design of the app. Be mindful of the following things to avoid as you work:
|
|
102
102
|
|
|
103
103
|
- **Avoid generic fonts.** Avoid overused defaults that strip away all personality.
|
|
104
|
-
- **Avoid
|
|
104
|
+
- **Avoid AI-default palettes.** Two clusters dominate current AI-tool homepages and instinct will pull you toward them: purple/indigo gradients (the "AI purple" problem) and warm editorial palettes of cream/parchment backgrounds with burnt-orange/rust/terracotta accents (the "AI homepage" look). When you find yourself reaching for either family, deliberately pick something else — ask whether the palette could be on the homepage of a current AI startup, and if yes, route around it.
|
|
105
105
|
- **Avoid colored border callout boxes.** Avoid rounded divs with a thick colored `border-left|top` — the generic "info card" pattern. Instead: use typography, spacing, and background tints to create hierarchy. If you need to call something out, use a full subtle background or a top border.
|
|
106
106
|
- **Avoid three equal boxes with icons.** The default AI landing page layout. Instead: use asymmetric layouts, varied column widths, or a single focused content area. Avoid cards labelled things like: 1, 2, 3 - this feels generic and cheap.
|
|
107
107
|
- **Avoid "1,2,3" boxes on landing pages** Never use sections with numerical labels to describe a high level flow on a landing page.
|
|
@@ -46,7 +46,7 @@ Every interface must work on both desktop and mobile.
|
|
|
46
46
|
## What to Actively Avoid At All Costs
|
|
47
47
|
|
|
48
48
|
- **Avoid generic fonts.** Overused defaults that strip away all personality. Instead: pick a distinctive Google Font that fits the app's character.
|
|
49
|
-
- **Avoid
|
|
49
|
+
- **Avoid AI-default palettes.** Two clusters dominate current AI-tool homepages and instinct will pull you toward them: purple/indigo gradients (the "AI purple" problem) and warm editorial palettes of cream/parchment backgrounds with burnt-orange/rust/terracotta accents (the "AI homepage" look). When you find yourself reaching for either family, deliberately pick something else — ask whether the palette could be on the homepage of a current AI startup, and if yes, route around it. Challenge yourself to choose beautiful, modern, 2026-inspired colors that don't fit either mold.
|
|
50
50
|
- **Avoid colored left-border callout boxes.** Rounded divs with a thick colored `border-left` — the generic "info card" pattern. Instead: use typography, spacing, and background tints to create hierarchy. If you need to call something out, use a full subtle background or a top border.
|
|
51
51
|
- **Avoid three equal boxes with icons.** The default AI landing page layout. Instead: use asymmetric layouts, varied column widths, or a single focused content area.
|
|
52
52
|
- **Avoid timid color palettes.** Evenly distributed, non-committal colors. Instead: one or two dominant colors with sharp accents. Commit to a direction.
|