@muggleai/works 5.19.0-staging.131 → 5.19.0
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/README.md +11 -5
- package/dist/{chunk-ODEPI25T.js → chunk-H2KMRAQZ.js} +38 -6
- package/dist/{chunk-U6ZACW6K.js → chunk-ZA5KHVX5.js} +1500 -1255
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/.cursor-plugin/plugin.json +1 -1
- package/dist/plugin/skills/_shared/debug-failed-run.md +5 -3
- package/dist/plugin/skills/_shared/dev-loop/action-script.md +2 -0
- package/dist/plugin/skills/_shared/dev-loop/failures.md +3 -1
- package/dist/plugin/skills/_shared/failure-mode-handling.md +5 -4
- package/dist/plugin/skills/do/e2e-repair.md +3 -1
- package/dist/plugin/skills/muggle-feedback/ops/submit.md +2 -0
- package/dist/plugin/skills/muggle-test/reference.md +1 -0
- package/dist/release-manifest.json +3 -3
- package/dist/src-RU5QOCXE.js +1 -0
- package/package.json +2 -2
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.cursor-plugin/plugin.json +1 -1
- package/plugin/skills/_shared/debug-failed-run.md +5 -3
- package/plugin/skills/_shared/dev-loop/action-script.md +2 -0
- package/plugin/skills/_shared/dev-loop/failures.md +3 -1
- package/plugin/skills/_shared/failure-mode-handling.md +5 -4
- package/plugin/skills/do/e2e-repair.md +3 -1
- package/plugin/skills/muggle-feedback/ops/submit.md +2 -0
- package/plugin/skills/muggle-test/reference.md +1 -0
- package/dist/src-C2IZ3MAZ.js +0 -1
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-
|
|
2
|
-
export { createChildLogger, e2e_exports as e2e, getConfig, getLocalQaTools, getLogger, getQaTools, local_exports as localQa, mcp_exports as mcp, e2e_exports as qa, src_exports as shared } from './chunk-
|
|
1
|
+
export { src_exports as commands, createUnifiedMcpServer, server_exports as server } from './chunk-H2KMRAQZ.js';
|
|
2
|
+
export { createChildLogger, e2e_exports as e2e, getConfig, getLocalQaTools, getLogger, getQaTools, local_exports as localQa, mcp_exports as mcp, e2e_exports as qa, src_exports as shared } from './chunk-ZA5KHVX5.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
|
|
4
|
-
"version": "5.19.0
|
|
4
|
+
"version": "5.19.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muggle AI",
|
|
7
7
|
"email": "support@muggle-ai.com"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"displayName": "Muggle AI",
|
|
4
4
|
"description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
5
|
-
"version": "5.19.0
|
|
5
|
+
"version": "5.19.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
|
@@ -19,8 +19,8 @@ The guarantee binds **interactive** callers. An autonomous caller with no user t
|
|
|
19
19
|
|
|
20
20
|
Read **structured run fields**, never the `execute` stdout tail (see [`dev-loop/failures.md`](./dev-loop/failures.md)). Assemble:
|
|
21
21
|
|
|
22
|
-
- **Attempted steps + reasoning** — local:
|
|
23
|
-
- **Visual evidence** —
|
|
22
|
+
- **Attempted steps + reasoning** — local: call `muggle-local-run-steps-get` with the `runId`. It returns the ordered steps (action, the agent's own explanation, the resolved frame path) plus the run's recorded status and closing verdict, already paired up. Remote: the per-step list + `summaryStep` from `muggle-remote-wf-get-ts-gen-latest-run` / `muggle-remote-wf-get-ts-replay-latest-run`.
|
|
23
|
+
- **Visual evidence** — local: the frame path on each step from the call above is the frame for that step; a step with none reports it rather than guessing. Do not hunt `<artifactsDir>/electron-runtime/screenshot/` by hand, and don't trust a step's `screenshotLocalPath`, which points at the original runtime dir. To look at the frames rather than their paths, `muggle run-view <runId> --html --open` renders them inline. Once published — failed runs are published too, see [`dev-loop/publish.md`](./dev-loop/publish.md) — the same frames are cloud-hosted per step as `screenshotUrl`, the form remote runs expose directly.
|
|
24
24
|
- **Verdict** — `Status` + `Error`.
|
|
25
25
|
|
|
26
26
|
## Step 2 — Diagnose
|
|
@@ -29,7 +29,9 @@ Classify into the failure bucket per [`failure-mode-handling.md`](./failure-mode
|
|
|
29
29
|
|
|
30
30
|
## Step 3 — Present the debug card, then the guaranteed offer
|
|
31
31
|
|
|
32
|
-
Show the **debug card** first: attempted steps + reasoning, the failing step's screenshot (or a one-line note if a path is genuinely absent), and the one-line diagnosis.
|
|
32
|
+
Show the **debug card** first: attempted steps + reasoning, the failing step's screenshot (or a one-line note if a path is genuinely absent), and the one-line diagnosis. For a local run `muggle-local-run-steps-get` already returns that card's body as text — print it rather than reassembling it, and offer `muggle run-view <runId> --html` when the user should see the frames themselves.
|
|
33
|
+
|
|
34
|
+
A verdict that disagrees with its own frames is common enough to check for: if the steps say the agent saw the thing its verdict calls missing, say so instead of reporting the verdict.
|
|
33
35
|
|
|
34
36
|
Then present one `AskUserQuestion` whose options are:
|
|
35
37
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
# Dev Loop — Action Script
|
|
2
2
|
|
|
3
3
|
On the replay path use the `muggle-remote-action-script-get` response **as-is** — never edit, shorten, or rebuild `actionScript`; replay needs the full `label` paths for element lookup. For batches, fan the script fetches out in parallel before the sequential execute loop.
|
|
4
|
+
|
|
5
|
+
To *read* what a local run did rather than replay it, call `muggle-local-run-steps-get` — it returns the steps with the frame each produced. Never parse a session's `action-script.json` by hand.
|
|
@@ -4,7 +4,9 @@ For each `runId`, call `muggle-local-run-result-get` and read **structured field
|
|
|
4
4
|
|
|
5
5
|
## Artifacts
|
|
6
6
|
|
|
7
|
-
The `Artifacts` section is present after any completed run; it names `artifactsDir` and lists files. On pass, `results.md` is the step-by-step verdict (read it before summarizing). On failure, `stdout.log` + `stderr.log` are always present; `action-script.json` appears when generation reached step-emission (typical for `goal_not_achievable`); `results.md`
|
|
7
|
+
The `Artifacts` section is present after any completed run; it names `artifactsDir` and lists files. On pass, `results.md` is the step-by-step verdict (read it before summarizing). On failure, `stdout.log` + `stderr.log` are always present; `action-script.json` appears when generation reached step-emission (typical for `goal_not_achievable`); `results.md` is absent.
|
|
8
|
+
|
|
9
|
+
Per-step frames are **not** absent on the failure path — the `Artifacts` section just doesn't list them. A failed run writes them under `artifactsDir` like any other, so a run that halted still has a frame for every step it took. Call `muggle-local-run-steps-get` with the `runId` to get the steps paired with those frames rather than walking the directory.
|
|
8
10
|
|
|
9
11
|
## Common failures
|
|
10
12
|
|
|
@@ -114,8 +114,9 @@ Triggered when `muggle-local-execute-replay` returns `status: "failed"` (or non-
|
|
|
114
114
|
Call `muggle-local-run-result-get` (local) or the remote equivalent and read **structured fields**, not `execute`'s response stdout tail (it's a truncated display excerpt and routinely cuts off mid-sentence). Order:
|
|
115
115
|
|
|
116
116
|
1. `Status` + `Error` — the verdict and the one-line cause.
|
|
117
|
-
2. `
|
|
118
|
-
3. `
|
|
117
|
+
2. `muggle-local-run-steps-get` with the `runId` (local) — what the agent attempted, each step beside the frame it produced. This replaces reading `action-script.json` out of `artifactsDir` by hand.
|
|
118
|
+
3. `Artifacts` section, when present — opens `artifactsDir`. Read `results.md` for the per-step verdict on a passing run.
|
|
119
|
+
4. `stdout.log` / `stderr.log` only when the Artifacts section is absent or `results.md` doesn't exist (e.g. early Electron failure).
|
|
119
120
|
|
|
120
121
|
### Initial signal heuristics
|
|
121
122
|
|
|
@@ -197,12 +198,12 @@ Triggered when `muggle-local-execute-test-generation` (or the remote equivalent)
|
|
|
197
198
|
|
|
198
199
|
### Where to read signals
|
|
199
200
|
|
|
200
|
-
Same rule as section B: read **structured fields** from `muggle-local-run-result-get`, not `execute`'s response stdout tail. The `Artifacts` section is present on failed regen too — `action-script.json` is included when generation reached the step-emission stage (typical for `goal_not_achievable`: the agent's attempted steps + halt summary). `results.md`
|
|
201
|
+
Same rule as section B: read **structured fields** from `muggle-local-run-result-get`, not `execute`'s response stdout tail. The `Artifacts` section is present on failed regen too — `action-script.json` is included when generation reached the step-emission stage (typical for `goal_not_achievable`: the agent's attempted steps + halt summary). `results.md` is absent on failure; the per-step frames are not — electron-app writes those as it goes, so a halted run still has one per step taken.
|
|
201
202
|
|
|
202
203
|
Order:
|
|
203
204
|
|
|
204
205
|
1. `Status` + `Error` — the verdict and one-line cause. `Error: Electron exited with code 26` typically means `goal_not_achievable`.
|
|
205
|
-
2. `
|
|
206
|
+
2. `muggle-local-run-steps-get` with the `runId` — the steps the agent attempted, its own explanation of each, the frame each produced, and the closing `summaryStep` verdict. Read this before trusting the verdict: a `goal_not_achievable` whose frames show the thing it calls missing is a false negative, not a defect.
|
|
206
207
|
3. `stdout.log` / `stderr.log` at `artifactsDir/` — last 100 lines is usually enough; look for the final structured summary the generation agent emitted (it appears near the end as a JSON-ish block, not in the truncated execute tail).
|
|
207
208
|
4. Remote regen — fetch the workflow run with `muggle-remote-wf-get-ts-gen-latest-run`; signals live in `summaryStep` and the per-step list there.
|
|
208
209
|
|
|
@@ -25,7 +25,9 @@ Read the Stage 6 run-level verdict, defined in [`../_shared/failure-mode-handlin
|
|
|
25
25
|
|
|
26
26
|
## Step 1: Root-cause each failure
|
|
27
27
|
|
|
28
|
-
Per failing test case, assemble evidence and a diagnosis with [`../_shared/debug-failed-run.md`](../_shared/debug-failed-run.md) Steps 1–2 — attempted steps, halt reason, the failing step's screenshot, then the bucket. That doc's Step 3 is the interactive debug card; this stage is autonomous and does not run it.
|
|
28
|
+
Per failing test case, assemble evidence and a diagnosis with [`../_shared/debug-failed-run.md`](../_shared/debug-failed-run.md) Steps 1–2 — attempted steps, halt reason, the failing step's screenshot, then the bucket. For a local run that is one `muggle-local-run-steps-get` call. That doc's Step 3 is the interactive debug card; this stage is autonomous and does not run it.
|
|
29
|
+
|
|
30
|
+
Check the steps against the verdict before repairing anything. A run whose frames show the element its verdict calls missing is a false negative — repairing working code against one wastes the cycle.
|
|
29
31
|
|
|
30
32
|
Stage 6 already wrote this evidence into its Failed block. Re-derive a bucket only for entries that arrived without one.
|
|
31
33
|
|
|
@@ -45,6 +45,8 @@ Always render before asking for feedback — the user must see the steps to refe
|
|
|
45
45
|
|
|
46
46
|
`muggle-remote-action-script-get` with the resolved `actionScriptId`.
|
|
47
47
|
|
|
48
|
+
For a local run you already hold the `runId` for, `muggle-local-run-steps-get` returns the same steps with each frame's path already resolved — prefer it over walking the session directory. It numbers steps from 0; this skill's feedback anchors are **1-based**, so renumber when printing rather than passing its text through.
|
|
49
|
+
|
|
48
50
|
Print:
|
|
49
51
|
|
|
50
52
|
- **Header** — project name, test case title, script name, status, run url (if available). For remote, include the dashboard link.
|
|
@@ -24,6 +24,7 @@ Lookup material pulled out of `SKILL.md` to keep the always-loaded body lean. Ev
|
|
|
24
24
|
| Execute (replay) | `muggle-remote-workflow-start-test-script-replay` | Remote |
|
|
25
25
|
| Failure-mode telemetry | `muggle-local-telemetry-event-emit` | Both |
|
|
26
26
|
| Results + cloud refs (studio-published `viewUrl` / `cloudTestScriptId` / `cloudActionScriptId`) | `muggle-local-run-result-get` | Local |
|
|
27
|
+
| Attempted steps + their frames (debugging a run) | `muggle-local-run-steps-get` | Local |
|
|
27
28
|
| Results | `muggle-remote-wf-get-ts-gen-latest-run`, `muggle-remote-wf-get-ts-replay-latest-run` | Remote |
|
|
28
29
|
| Per-step screenshots (for walkthrough) | `muggle-remote-test-script-get` | Both |
|
|
29
30
|
| Browser | `open` (shell command) | Both |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"release": "5.18.0",
|
|
3
|
-
"buildId": "run-
|
|
4
|
-
"commitSha": "
|
|
5
|
-
"buildTime": "2026-09-
|
|
3
|
+
"buildId": "run-134-1",
|
|
4
|
+
"commitSha": "2172e219eab739a676b60437a8d6052b0ada3b58",
|
|
5
|
+
"buildTime": "2026-09-23T06:28:29Z",
|
|
6
6
|
"serviceName": "muggle-ai-works-mcp"
|
|
7
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ACTION_SCRIPT_FILE_NAME, DEFAULT_PREFERENCES, ElectronAppReleaseStream, HTML_VIEW_OFFER_LINE, ONBOARDING_BLANKET_OPTIONS, ONBOARDING_CHOICE_GROUPS, ONBOARDING_MAX_OFFERS, ONBOARDING_PRIMER_BULLETS, ONBOARDING_PRIMER_HEADLINE, ONBOARDING_TOGGLE_GROUPS, ONBOARDING_TOGGLE_PROMPT, ONBOARDING_UNSELECTED_TOGGLE_VALUE, OnboardingBlanketChoice, OnboardingGroupKind, PREFERENCES_FILE_NAME, PREFERENCES_PROJECT_DIR_NAME, PREFERENCES_SCHEMA, PREFERENCES_VERSION, PREFERENCE_ALLOWED_VALUES, PreferenceKey, PreferenceValue, ProjectPreferencesReconcileOutcome, RUN_SESSIONS_DIR_NAME, RunViewError, RuntimeTarget, SCREENSHOT_DIR_RELATIVE_PATH, SCREENSHOT_FILE_EXTENSION, WATCHER_LIFETIME_SECONDS, WATCHER_LIFETIME_UNBOUNDED_SECONDS, applyOnboardingAnswers, assertDeviceCodeClientProvisioned, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, buildOnboardingPlan, calculateFileChecksum, completeOnboarding, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, formatPreferencesOneLiner, getActiveElectronAppReleaseStream, getActiveRuntimeTarget, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppReleaseTagPrefix, getElectronAppSignedFromVersion, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getOnboardingToggleKeys, getPlatformKey, getQaTools, getReleaseSignerIdentityUri, getRunSessionsDir, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, markOnboardingCompleted, mcp_exports as mcp, needsOnboarding, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, readPreferencesMetadata, readRunView, reconcileProjectPreferences, recordOnboardingSkip, renderRunViewHtml, renderRunViewText, resetConfig, resetLogger, resetPreference, resolveActiveProfile, resolveActiveReleaseStream, resolveActiveReleaseTagPrefix, resolveBlanketPreferences, resolveElectronAppPathOrNull, resolveOnboardingAnswers, resolvePreferences, resolveRunSessionPath, resolveRuntimeTarget, resolveTogglePreferences, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences, writePreferencesWithMetadata, writeRunViewHtml } from './chunk-ZA5KHVX5.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muggleai/works",
|
|
3
3
|
"mcpName": "io.github.multiplex-ai/muggle",
|
|
4
|
-
"version": "5.19.0
|
|
4
|
+
"version": "5.19.0",
|
|
5
5
|
"description": "Ship quality products with AI-powered E2E acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"muggleConfig": {
|
|
55
55
|
"electronAppVersion": "1.10.6",
|
|
56
56
|
"downloadBaseUrl": "https://github.com/multiplex-ai/muggle-ai-works/releases/download",
|
|
57
|
-
"runtimeTargetDefault": "
|
|
57
|
+
"runtimeTargetDefault": "production",
|
|
58
58
|
"checksumsByStream": {
|
|
59
59
|
"production": {
|
|
60
60
|
"win32-x64": "c20acdc2fd7a05039c62f9e5b079e3068d1b3a23a1b3b37b75e2a650b5401de6",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"description": "Run real-browser end-to-end (E2E) acceptance tests on your web app from any AI coding agent. Generate test scripts from plain English, replay them on localhost, capture screenshots, and validate user flows like signup, checkout, and dashboards. Works across Claude Code, Cursor, Codex, and Windsurf.",
|
|
4
|
-
"version": "5.19.0
|
|
4
|
+
"version": "5.19.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Muggle AI",
|
|
7
7
|
"email": "support@muggle-ai.com"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "muggle",
|
|
3
3
|
"displayName": "Muggle AI",
|
|
4
4
|
"description": "Ship quality products with AI-powered end-to-end (E2E) acceptance testing that validates your web app like a real user — from Claude Code and Cursor to PR.",
|
|
5
|
-
"version": "5.19.0
|
|
5
|
+
"version": "5.19.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Muggle AI",
|
|
8
8
|
"email": "support@muggle-ai.com"
|
|
@@ -19,8 +19,8 @@ The guarantee binds **interactive** callers. An autonomous caller with no user t
|
|
|
19
19
|
|
|
20
20
|
Read **structured run fields**, never the `execute` stdout tail (see [`dev-loop/failures.md`](./dev-loop/failures.md)). Assemble:
|
|
21
21
|
|
|
22
|
-
- **Attempted steps + reasoning** — local:
|
|
23
|
-
- **Visual evidence** —
|
|
22
|
+
- **Attempted steps + reasoning** — local: call `muggle-local-run-steps-get` with the `runId`. It returns the ordered steps (action, the agent's own explanation, the resolved frame path) plus the run's recorded status and closing verdict, already paired up. Remote: the per-step list + `summaryStep` from `muggle-remote-wf-get-ts-gen-latest-run` / `muggle-remote-wf-get-ts-replay-latest-run`.
|
|
23
|
+
- **Visual evidence** — local: the frame path on each step from the call above is the frame for that step; a step with none reports it rather than guessing. Do not hunt `<artifactsDir>/electron-runtime/screenshot/` by hand, and don't trust a step's `screenshotLocalPath`, which points at the original runtime dir. To look at the frames rather than their paths, `muggle run-view <runId> --html --open` renders them inline. Once published — failed runs are published too, see [`dev-loop/publish.md`](./dev-loop/publish.md) — the same frames are cloud-hosted per step as `screenshotUrl`, the form remote runs expose directly.
|
|
24
24
|
- **Verdict** — `Status` + `Error`.
|
|
25
25
|
|
|
26
26
|
## Step 2 — Diagnose
|
|
@@ -29,7 +29,9 @@ Classify into the failure bucket per [`failure-mode-handling.md`](./failure-mode
|
|
|
29
29
|
|
|
30
30
|
## Step 3 — Present the debug card, then the guaranteed offer
|
|
31
31
|
|
|
32
|
-
Show the **debug card** first: attempted steps + reasoning, the failing step's screenshot (or a one-line note if a path is genuinely absent), and the one-line diagnosis.
|
|
32
|
+
Show the **debug card** first: attempted steps + reasoning, the failing step's screenshot (or a one-line note if a path is genuinely absent), and the one-line diagnosis. For a local run `muggle-local-run-steps-get` already returns that card's body as text — print it rather than reassembling it, and offer `muggle run-view <runId> --html` when the user should see the frames themselves.
|
|
33
|
+
|
|
34
|
+
A verdict that disagrees with its own frames is common enough to check for: if the steps say the agent saw the thing its verdict calls missing, say so instead of reporting the verdict.
|
|
33
35
|
|
|
34
36
|
Then present one `AskUserQuestion` whose options are:
|
|
35
37
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
# Dev Loop — Action Script
|
|
2
2
|
|
|
3
3
|
On the replay path use the `muggle-remote-action-script-get` response **as-is** — never edit, shorten, or rebuild `actionScript`; replay needs the full `label` paths for element lookup. For batches, fan the script fetches out in parallel before the sequential execute loop.
|
|
4
|
+
|
|
5
|
+
To *read* what a local run did rather than replay it, call `muggle-local-run-steps-get` — it returns the steps with the frame each produced. Never parse a session's `action-script.json` by hand.
|
|
@@ -4,7 +4,9 @@ For each `runId`, call `muggle-local-run-result-get` and read **structured field
|
|
|
4
4
|
|
|
5
5
|
## Artifacts
|
|
6
6
|
|
|
7
|
-
The `Artifacts` section is present after any completed run; it names `artifactsDir` and lists files. On pass, `results.md` is the step-by-step verdict (read it before summarizing). On failure, `stdout.log` + `stderr.log` are always present; `action-script.json` appears when generation reached step-emission (typical for `goal_not_achievable`); `results.md`
|
|
7
|
+
The `Artifacts` section is present after any completed run; it names `artifactsDir` and lists files. On pass, `results.md` is the step-by-step verdict (read it before summarizing). On failure, `stdout.log` + `stderr.log` are always present; `action-script.json` appears when generation reached step-emission (typical for `goal_not_achievable`); `results.md` is absent.
|
|
8
|
+
|
|
9
|
+
Per-step frames are **not** absent on the failure path — the `Artifacts` section just doesn't list them. A failed run writes them under `artifactsDir` like any other, so a run that halted still has a frame for every step it took. Call `muggle-local-run-steps-get` with the `runId` to get the steps paired with those frames rather than walking the directory.
|
|
8
10
|
|
|
9
11
|
## Common failures
|
|
10
12
|
|
|
@@ -114,8 +114,9 @@ Triggered when `muggle-local-execute-replay` returns `status: "failed"` (or non-
|
|
|
114
114
|
Call `muggle-local-run-result-get` (local) or the remote equivalent and read **structured fields**, not `execute`'s response stdout tail (it's a truncated display excerpt and routinely cuts off mid-sentence). Order:
|
|
115
115
|
|
|
116
116
|
1. `Status` + `Error` — the verdict and the one-line cause.
|
|
117
|
-
2. `
|
|
118
|
-
3. `
|
|
117
|
+
2. `muggle-local-run-steps-get` with the `runId` (local) — what the agent attempted, each step beside the frame it produced. This replaces reading `action-script.json` out of `artifactsDir` by hand.
|
|
118
|
+
3. `Artifacts` section, when present — opens `artifactsDir`. Read `results.md` for the per-step verdict on a passing run.
|
|
119
|
+
4. `stdout.log` / `stderr.log` only when the Artifacts section is absent or `results.md` doesn't exist (e.g. early Electron failure).
|
|
119
120
|
|
|
120
121
|
### Initial signal heuristics
|
|
121
122
|
|
|
@@ -197,12 +198,12 @@ Triggered when `muggle-local-execute-test-generation` (or the remote equivalent)
|
|
|
197
198
|
|
|
198
199
|
### Where to read signals
|
|
199
200
|
|
|
200
|
-
Same rule as section B: read **structured fields** from `muggle-local-run-result-get`, not `execute`'s response stdout tail. The `Artifacts` section is present on failed regen too — `action-script.json` is included when generation reached the step-emission stage (typical for `goal_not_achievable`: the agent's attempted steps + halt summary). `results.md`
|
|
201
|
+
Same rule as section B: read **structured fields** from `muggle-local-run-result-get`, not `execute`'s response stdout tail. The `Artifacts` section is present on failed regen too — `action-script.json` is included when generation reached the step-emission stage (typical for `goal_not_achievable`: the agent's attempted steps + halt summary). `results.md` is absent on failure; the per-step frames are not — electron-app writes those as it goes, so a halted run still has one per step taken.
|
|
201
202
|
|
|
202
203
|
Order:
|
|
203
204
|
|
|
204
205
|
1. `Status` + `Error` — the verdict and one-line cause. `Error: Electron exited with code 26` typically means `goal_not_achievable`.
|
|
205
|
-
2. `
|
|
206
|
+
2. `muggle-local-run-steps-get` with the `runId` — the steps the agent attempted, its own explanation of each, the frame each produced, and the closing `summaryStep` verdict. Read this before trusting the verdict: a `goal_not_achievable` whose frames show the thing it calls missing is a false negative, not a defect.
|
|
206
207
|
3. `stdout.log` / `stderr.log` at `artifactsDir/` — last 100 lines is usually enough; look for the final structured summary the generation agent emitted (it appears near the end as a JSON-ish block, not in the truncated execute tail).
|
|
207
208
|
4. Remote regen — fetch the workflow run with `muggle-remote-wf-get-ts-gen-latest-run`; signals live in `summaryStep` and the per-step list there.
|
|
208
209
|
|
|
@@ -25,7 +25,9 @@ Read the Stage 6 run-level verdict, defined in [`../_shared/failure-mode-handlin
|
|
|
25
25
|
|
|
26
26
|
## Step 1: Root-cause each failure
|
|
27
27
|
|
|
28
|
-
Per failing test case, assemble evidence and a diagnosis with [`../_shared/debug-failed-run.md`](../_shared/debug-failed-run.md) Steps 1–2 — attempted steps, halt reason, the failing step's screenshot, then the bucket. That doc's Step 3 is the interactive debug card; this stage is autonomous and does not run it.
|
|
28
|
+
Per failing test case, assemble evidence and a diagnosis with [`../_shared/debug-failed-run.md`](../_shared/debug-failed-run.md) Steps 1–2 — attempted steps, halt reason, the failing step's screenshot, then the bucket. For a local run that is one `muggle-local-run-steps-get` call. That doc's Step 3 is the interactive debug card; this stage is autonomous and does not run it.
|
|
29
|
+
|
|
30
|
+
Check the steps against the verdict before repairing anything. A run whose frames show the element its verdict calls missing is a false negative — repairing working code against one wastes the cycle.
|
|
29
31
|
|
|
30
32
|
Stage 6 already wrote this evidence into its Failed block. Re-derive a bucket only for entries that arrived without one.
|
|
31
33
|
|
|
@@ -45,6 +45,8 @@ Always render before asking for feedback — the user must see the steps to refe
|
|
|
45
45
|
|
|
46
46
|
`muggle-remote-action-script-get` with the resolved `actionScriptId`.
|
|
47
47
|
|
|
48
|
+
For a local run you already hold the `runId` for, `muggle-local-run-steps-get` returns the same steps with each frame's path already resolved — prefer it over walking the session directory. It numbers steps from 0; this skill's feedback anchors are **1-based**, so renumber when printing rather than passing its text through.
|
|
49
|
+
|
|
48
50
|
Print:
|
|
49
51
|
|
|
50
52
|
- **Header** — project name, test case title, script name, status, run url (if available). For remote, include the dashboard link.
|
|
@@ -24,6 +24,7 @@ Lookup material pulled out of `SKILL.md` to keep the always-loaded body lean. Ev
|
|
|
24
24
|
| Execute (replay) | `muggle-remote-workflow-start-test-script-replay` | Remote |
|
|
25
25
|
| Failure-mode telemetry | `muggle-local-telemetry-event-emit` | Both |
|
|
26
26
|
| Results + cloud refs (studio-published `viewUrl` / `cloudTestScriptId` / `cloudActionScriptId`) | `muggle-local-run-result-get` | Local |
|
|
27
|
+
| Attempted steps + their frames (debugging a run) | `muggle-local-run-steps-get` | Local |
|
|
27
28
|
| Results | `muggle-remote-wf-get-ts-gen-latest-run`, `muggle-remote-wf-get-ts-replay-latest-run` | Remote |
|
|
28
29
|
| Per-step screenshots (for walkthrough) | `muggle-remote-test-script-get` | Both |
|
|
29
30
|
| Browser | `open` (shell command) | Both |
|
package/dist/src-C2IZ3MAZ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { DEFAULT_PREFERENCES, ElectronAppReleaseStream, ONBOARDING_BLANKET_OPTIONS, ONBOARDING_CHOICE_GROUPS, ONBOARDING_MAX_OFFERS, ONBOARDING_PRIMER_BULLETS, ONBOARDING_PRIMER_HEADLINE, ONBOARDING_TOGGLE_GROUPS, ONBOARDING_TOGGLE_PROMPT, ONBOARDING_UNSELECTED_TOGGLE_VALUE, OnboardingBlanketChoice, OnboardingGroupKind, PREFERENCES_FILE_NAME, PREFERENCES_PROJECT_DIR_NAME, PREFERENCES_SCHEMA, PREFERENCES_VERSION, PREFERENCE_ALLOWED_VALUES, PreferenceKey, PreferenceValue, ProjectPreferencesReconcileOutcome, RuntimeTarget, WATCHER_LIFETIME_SECONDS, WATCHER_LIFETIME_UNBOUNDED_SECONDS, applyOnboardingAnswers, assertDeviceCodeClientProvisioned, buildElectronAppChecksumsUrl, buildElectronAppReleaseAssetUrl, buildElectronAppReleaseTag, buildOnboardingPlan, calculateFileChecksum, completeOnboarding, createApiKeyWithToken, createChildLogger, deleteApiKeyData, deleteCredentials, e2e_exports as e2e, formatPreferencesOneLiner, getActiveElectronAppReleaseStream, getActiveRuntimeTarget, getApiKey, getApiKeyFilePath, getAuthService, getBundledElectronAppVersion, getCallerCredentials, getCallerCredentialsAsync, getChecksumForPlatform, getConfig, getCredentialsFilePath, getDataDir, getDownloadBaseUrl, getElectronAppChecksums, getElectronAppDir, getElectronAppReleaseTagPrefix, getElectronAppSignedFromVersion, getElectronAppVersion, getElectronAppVersionSource, getLocalQaTools, getLogger, getOnboardingToggleKeys, getPlatformKey, getQaTools, getReleaseSignerIdentityUri, getValidApiKeyData, getValidCredentials, hasApiKey, isElectronAppInstalled, isFirstRun, loadApiKeyData, loadCredentials, local_exports as localQa, markOnboardingCompleted, mcp_exports as mcp, needsOnboarding, openBrowserUrl, performLogin, performLogout, pollDeviceCode, e2e_exports as qa, readPreferencesMetadata, reconcileProjectPreferences, recordOnboardingSkip, resetConfig, resetLogger, resetPreference, resolveActiveProfile, resolveActiveReleaseStream, resolveActiveReleaseTagPrefix, resolveBlanketPreferences, resolveElectronAppPathOrNull, resolveOnboardingAnswers, resolvePreferences, resolveRuntimeTarget, resolveTogglePreferences, saveApiKey, saveApiKeyData, saveCredentials, startDeviceCodeFlow, toolRequiresAuth, validatePreference, verifyFileChecksum, writePreferences, writePreferencesWithMetadata } from './chunk-U6ZACW6K.js';
|