@muggleai/works 5.30.0-staging.262 → 5.30.0-staging.263

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.
@@ -9,7 +9,7 @@
9
9
  "name": "muggleai",
10
10
  "source": "./plugin",
11
11
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
12
- "version": "5.30.0-staging.262"
12
+ "version": "5.30.0-staging.263"
13
13
  }
14
14
  ]
15
15
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "muggle",
3
3
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
4
- "version": "5.30.0-staging.262",
4
+ "version": "5.30.0-staging.263",
5
5
  "author": {
6
6
  "name": "Muggle AI",
7
7
  "email": "support@muggle-ai.com"
@@ -4,7 +4,7 @@
4
4
  "command": "npx",
5
5
  "args": [
6
6
  "-y",
7
- "@muggleai/works@5.30.0-staging.262",
7
+ "@muggleai/works@5.30.0-staging.263",
8
8
  "serve"
9
9
  ],
10
10
  "env": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "muggle",
3
- "version": "5.30.0-staging.262",
3
+ "version": "5.30.0-staging.263",
4
4
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
5
5
  "author": {
6
6
  "name": "Muggle AI",
@@ -2,7 +2,7 @@
2
2
  "name": "muggle",
3
3
  "displayName": "Muggle AI",
4
4
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
5
- "version": "5.30.0-staging.262",
5
+ "version": "5.30.0-staging.263",
6
6
  "author": {
7
7
  "name": "Muggle AI",
8
8
  "email": "support@muggle-ai.com"
@@ -4,7 +4,7 @@
4
4
  "command": "npx",
5
5
  "args": [
6
6
  "-y",
7
- "@muggleai/works@5.30.0-staging.262",
7
+ "@muggleai/works@5.30.0-staging.263",
8
8
  "serve"
9
9
  ]
10
10
  }
@@ -9,8 +9,9 @@ set -uo pipefail
9
9
  # it fires on EVERY turn end. There is no command payload to key off, so the
10
10
  # pre-filter reads the same per-session state file guardrails.mjs uses and only
11
11
  # spawns Node when the gate could actually fire — i.e. shouldRunE2E's two
12
- # triggers, with no E2E run recorded yet. It must track that predicate exactly:
13
- # a pre-filter narrower than the gate retires the gate silently. On the
12
+ # triggers, with no E2E run or accepted skip recorded yet. It must track that
13
+ # predicate exactly: a pre-filter narrower than the gate retires the gate
14
+ # silently, and one wider replays a block rendered before the skip landed. On the
14
15
  # overwhelming majority of turns (no test run, no PR) the state file is absent,
15
16
  # or unitTestsGreen is unset while prsHandled is empty, so we return {} in-shell
16
17
  # and never pay Node cold-start. Degrades to {}.
@@ -25,7 +26,8 @@ guardrail_wants() {
25
26
  guardrail_load_state \
26
27
  && { guardrail_state_has '"unitTestsGreen": true' || ! guardrail_state_has '"prsHandled": []'; } \
27
28
  && ! guardrail_state_has '"e2eReleased": true' \
28
- && ! guardrail_state_has '"e2eRun": true'
29
+ && ! guardrail_state_has '"e2eRun": true' \
30
+ && ! guardrail_state_has '"e2eSkipped": true'
29
31
  }
30
32
 
31
33
  # Returns the block guardrails.mjs rendered ahead of time (writeE2eStopVerdict), without starting Node, while the
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "release": "5.26.0",
3
- "buildId": "run-262-1",
4
- "commitSha": "131f447f77ce7f6be6b40c101245931ffd2c0258",
5
- "buildTime": "2026-10-30T22:59:08Z",
3
+ "buildId": "run-263-1",
4
+ "commitSha": "6a3249334b037fa0fa14f446e6345aa1c3a0fe01",
5
+ "buildTime": "2026-10-30T23:12:33Z",
6
6
  "serviceName": "muggle-ai-works-mcp"
7
7
  }
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.30.0-staging.262",
4
+ "version": "5.30.0-staging.263",
5
5
  "description": "13 years of Microsoft hyperscale engineering, packaged as a harness for your AI coding agent.",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "muggle",
3
3
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
4
- "version": "5.30.0-staging.262",
4
+ "version": "5.30.0-staging.263",
5
5
  "author": {
6
6
  "name": "Muggle AI",
7
7
  "email": "support@muggle-ai.com"
@@ -4,7 +4,7 @@
4
4
  "command": "npx",
5
5
  "args": [
6
6
  "-y",
7
- "@muggleai/works@5.30.0-staging.262",
7
+ "@muggleai/works@5.30.0-staging.263",
8
8
  "serve"
9
9
  ],
10
10
  "env": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "muggle",
3
- "version": "5.30.0-staging.262",
3
+ "version": "5.30.0-staging.263",
4
4
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
5
5
  "author": {
6
6
  "name": "Muggle AI",
@@ -2,7 +2,7 @@
2
2
  "name": "muggle",
3
3
  "displayName": "Muggle AI",
4
4
  "description": "Real-browser E2E acceptance for your coding agent: test the flows you changed and open the PR with screenshots. Built for flows other tools can't reach: managed test identities with live inboxes (magic links, email OTP and 2FA, verification mail, password resets), an encrypted secret store for login and test credentials, and a test graph that runs prerequisite flows first. Plain-English tests become replayable scripts on localhost or preview URLs.",
5
- "version": "5.30.0-staging.262",
5
+ "version": "5.30.0-staging.263",
6
6
  "author": {
7
7
  "name": "Muggle AI",
8
8
  "email": "support@muggle-ai.com"
package/plugin/.mcp.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "command": "npx",
5
5
  "args": [
6
6
  "-y",
7
- "@muggleai/works@5.30.0-staging.262",
7
+ "@muggleai/works@5.30.0-staging.263",
8
8
  "serve"
9
9
  ]
10
10
  }
@@ -9,8 +9,9 @@ set -uo pipefail
9
9
  # it fires on EVERY turn end. There is no command payload to key off, so the
10
10
  # pre-filter reads the same per-session state file guardrails.mjs uses and only
11
11
  # spawns Node when the gate could actually fire — i.e. shouldRunE2E's two
12
- # triggers, with no E2E run recorded yet. It must track that predicate exactly:
13
- # a pre-filter narrower than the gate retires the gate silently. On the
12
+ # triggers, with no E2E run or accepted skip recorded yet. It must track that
13
+ # predicate exactly: a pre-filter narrower than the gate retires the gate
14
+ # silently, and one wider replays a block rendered before the skip landed. On the
14
15
  # overwhelming majority of turns (no test run, no PR) the state file is absent,
15
16
  # or unitTestsGreen is unset while prsHandled is empty, so we return {} in-shell
16
17
  # and never pay Node cold-start. Degrades to {}.
@@ -25,7 +26,8 @@ guardrail_wants() {
25
26
  guardrail_load_state \
26
27
  && { guardrail_state_has '"unitTestsGreen": true' || ! guardrail_state_has '"prsHandled": []'; } \
27
28
  && ! guardrail_state_has '"e2eReleased": true' \
28
- && ! guardrail_state_has '"e2eRun": true'
29
+ && ! guardrail_state_has '"e2eRun": true' \
30
+ && ! guardrail_state_has '"e2eSkipped": true'
29
31
  }
30
32
 
31
33
  # Returns the block guardrails.mjs rendered ahead of time (writeE2eStopVerdict), without starting Node, while the