@mindstudio-ai/remy 0.1.176 → 0.1.177
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
|
@@ -3234,7 +3234,7 @@ ${partial}` : "[INTERRUPTED] Agent was interrupted before producing output.",
|
|
|
3234
3234
|
{
|
|
3235
3235
|
onRetry: (attempt) => emit({
|
|
3236
3236
|
type: "status",
|
|
3237
|
-
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)
|
|
3237
|
+
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)`
|
|
3238
3238
|
})
|
|
3239
3239
|
}
|
|
3240
3240
|
)) {
|
|
@@ -6232,7 +6232,7 @@ async function runTurn(params) {
|
|
|
6232
6232
|
onRetry: (attempt) => {
|
|
6233
6233
|
onEvent({
|
|
6234
6234
|
type: "status",
|
|
6235
|
-
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)
|
|
6235
|
+
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)`
|
|
6236
6236
|
});
|
|
6237
6237
|
}
|
|
6238
6238
|
}
|
package/dist/index.js
CHANGED
|
@@ -3566,7 +3566,7 @@ ${partial}` : "[INTERRUPTED] Agent was interrupted before producing output.",
|
|
|
3566
3566
|
{
|
|
3567
3567
|
onRetry: (attempt) => emit({
|
|
3568
3568
|
type: "status",
|
|
3569
|
-
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)
|
|
3569
|
+
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)`
|
|
3570
3570
|
})
|
|
3571
3571
|
}
|
|
3572
3572
|
)) {
|
|
@@ -6849,7 +6849,7 @@ async function runTurn(params) {
|
|
|
6849
6849
|
onRetry: (attempt) => {
|
|
6850
6850
|
onEvent({
|
|
6851
6851
|
type: "status",
|
|
6852
|
-
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)
|
|
6852
|
+
message: `Lost connection, retrying (attempt ${attempt + 2} of 3)`
|
|
6853
6853
|
});
|
|
6854
6854
|
}
|
|
6855
6855
|
}
|
|
@@ -92,6 +92,27 @@ The project uses `"jsx": "react-jsx"` (automatic JSX transform) — do not `impo
|
|
|
92
92
|
|
|
93
93
|
On deploy, the platform runs `npm install && npm run build` in the web directory and hosts the output on CDN.
|
|
94
94
|
|
|
95
|
+
#### Error Handling and Analytics
|
|
96
|
+
|
|
97
|
+
The SDK automatically reports uncaught errors, unhandled promise rejections, and pageviews to a per-app dashboard the owner gets for free. No setup required. The analytics dashboard covers visits, unique visitors, top pages, referrers, UTM breakdowns, country-level geo, device/browser/OS, new vs returning, and live online count.
|
|
98
|
+
|
|
99
|
+
What this means for code you write:
|
|
100
|
+
|
|
101
|
+
- **Don't install Sentry, Google Analytics, Plausible, Mixpanel, or similar unless the user specifically asks.** The platform dashboard already covers lay-person observability and analytics.
|
|
102
|
+
- **Caught errors are yours to handle. Uncaught errors are captured automatically** If you `try/catch`, show a toast or render a fallback. Let unexpected errors bubble; a React error boundary can render a fallback while the SDK reports the error.
|
|
103
|
+
- **For custom events**, use `analytics.track(name, props?)`. Props must be flat primitives (`string | number | boolean`); nested objects, arrays, `null`, and `undefined` are stripped. Server caps name ≤200 chars, ≤10 props, ≤50-char keys, ≤500-char values.
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
import { analytics } from '@mindstudio-ai/interface';
|
|
107
|
+
|
|
108
|
+
analytics.track('vendor_submitted', { vendorType: 'restaurant' });
|
|
109
|
+
analytics.track('checkout_completed', { itemCount: 3, total: 47.99 });
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Analytics is **cookie-banner-free by design**: per-app scoping, IP discarded after geo lookup, country-level only, query strings server-scrubbed except for a UTM whitelist (`utm_*`, `ref`, `source`, `gclid`, `fbclid`, `msclkid`), no fingerprinting, no third-party scripts. If a user asks about GDPR cookie consent for analytics, you can explain why it is not needed.
|
|
113
|
+
|
|
114
|
+
Disabling telemetry is a per-app dashboard setting (platform toggle, not code). Point users there if they ask.
|
|
115
|
+
|
|
95
116
|
## API Interface
|
|
96
117
|
|
|
97
118
|
REST endpoints for external consumers — other services, mobile apps, integrations. This is separate from the web frontend's internal RPC (`@mindstudio-ai/interface` calls `/_/methods` directly and does not use the API interface). The API interface lives at `/_/api/` and exposes only the methods you choose to route.
|
|
@@ -17,7 +17,6 @@ Aim for confidence that the core happy paths work. If the 80% case is solid, the
|
|
|
17
17
|
When making mechanical edits as part of iterating with the user (e.g., moving elements, changing labels, small redesigns and refactors), don't screenshot to confirm, simply trust your code. Re-screenshot only when changes are structural enough that the visual outcome is genuinely uncertain (new layout, new component composition, new route), or when the user reports something visible that you can't see in the code. The screenshot tool captures static/settled state - don't try to hack it with different instructions to capture transient states or animations or things like that. If what you need is not avaialble via screenshot, fall back to static analysis by tracing code.
|
|
18
18
|
|
|
19
19
|
### Process Logs
|
|
20
|
-
|
|
21
20
|
Process logs are available at .logs/ in NDJSON format (one JSON object per line) for debugging. Each line has at minimum ts (unix millis) and msg fields, plus structured context like level, module, requestId, toolCallId where available. You can use `jq` to examine logs and debug failures. Tools like run method or run scenario execute synchronously, so log data will be available by the time those tools return their results to you, there is no need to `sleep` before querying logfiles.
|
|
22
21
|
- `.logs/tunnel.ndjson`: method execution, schema sync, session lifecycle, platform connection
|
|
23
22
|
- `.logs/devServer.ndjson`: frontend build errors, HMR, module resolution failures - check this to see if compilation is broken on web frontends.
|
|
@@ -33,6 +32,8 @@ For multi-step tasks with branching logic (research, enrichment, content pipelin
|
|
|
33
32
|
|
|
34
33
|
For methods that take more than a few seconds, use `stream()` from `@mindstudio-ai/agent` to push real-time progress to the frontend. Pipe `onLog` from SDK actions through `stream()` so users see what's happening. The frontend calls the method with `stream: true` and gets updates via `onToken`. See the methods reference for the full pattern.
|
|
35
34
|
|
|
35
|
+
For counting visitor or funnel activity (signups, page interactions, checkout completions), use `analytics.track()` from `@mindstudio-ai/interface` or rely on auto-tracked pageviews.
|
|
36
|
+
|
|
36
37
|
When writing `db` filter predicates that reference outer-scope values (`input.*`, `auth.*`, foreign keys collected earlier, etc.), use the bindings form so the filter compiles to SQL — see `tables.md` "Filter Predicates" for patterns and the inline-comment convention.
|
|
37
38
|
|
|
38
39
|
### Auth
|
|
@@ -55,6 +56,7 @@ When writing `db` filter predicates that reference outer-scope values (`input.*`
|
|
|
55
56
|
|
|
56
57
|
### Error Visibility
|
|
57
58
|
- Runtime errors must render visibly on screen, not produce a blank white page. User and agent must be able to visibly debug and spot them.
|
|
59
|
+
- `@mindstudio-ai/interface` automatically reports uncaught errors and unhandled promise rejections to the user's dashboard.
|
|
58
60
|
|
|
59
61
|
### State Management
|
|
60
62
|
- Prefer to use a library like Zustand for global state. Load a big data bundle on app start into a Zustand store, then render everything from memory. Navigation between screens should feel instant — no loading spinners for data that's already in the store.
|