@deeeed/metamask-harness 0.91.5 → 0.91.7
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/CHANGELOG.md +17 -0
- package/dist/command-contract.js +1 -1
- package/dist/pr-body/render.js +8 -2
- package/library/recipes/core/health/check.recipe.json +3 -3
- package/library/recipes/core/perps/smoke.recipe.json +1 -1
- package/library/recipes/core/perps/snapshot.recipe.json +1 -1
- package/library/recipes/extension/health/check.recipe.json +1 -1
- package/library/recipes/extension/performance/navigation-memory-suite.recipe.json +1 -1
- package/library/recipes/extension/perps/smoke.recipe.json +1 -1
- package/library/recipes/mobile/health/check.recipe.json +1 -1
- package/library/recipes/mobile/perps/smoke.recipe.json +1 -1
- package/library/recipes/shared/perps/release-market-details.recipe.json +1 -1
- package/library/recipes/shared/perps/release-market-search.recipe.json +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.91.7 - 2026-10-13
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Use the coordinated Farmslot recipe closure for fresh task attempt directories, selected-package checks and declared output provenance. Reusing a retained `--artifacts-dir` refuses and preserves its evidence.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Render PR validation logs from the selected retained attempt, including when an older legacy report remains.
|
|
14
|
+
|
|
15
|
+
## 0.91.6 - 2026-10-13
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Keep all bundled recipe intents within the shared conformance limit, with a full-library regression check.
|
|
20
|
+
- Adopt recipe-cli 0.14.3 so proof plans reject invalid intents before execution.
|
|
21
|
+
|
|
5
22
|
## 0.91.5 - 2026-10-13
|
|
6
23
|
|
|
7
24
|
### Changed
|
package/dist/command-contract.js
CHANGED
|
@@ -779,7 +779,7 @@ Common overrides:
|
|
|
779
779
|
--adapter <{adapters}> Target adapter (auto-detected inside a checkout)
|
|
780
780
|
--platform <ios|android> Mobile platform preference; use --adapter for the product adapter
|
|
781
781
|
--target <path> Checkout path (default: cwd)
|
|
782
|
-
--artifacts-dir <dir>
|
|
782
|
+
--artifacts-dir <dir> Fresh evidence output (default: active task/artifacts/recipe-runs/<attempt>, otherwise checkout-local temp/recipe/runs/<run>); retained packages cannot be reused
|
|
783
783
|
--funding-request <absolute-file> Original consented mutation request for external-mutation actions
|
|
784
784
|
--funding-preflight <absolute-file> Eligible funding preflight bound to the request bytes
|
|
785
785
|
--funding-release-proof <absolute-file> Exact release proof independently bound to funding eligibility
|
package/dist/pr-body/render.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
2
3
|
import path from "node:path";
|
|
4
|
+
const { readRecipeAttemptSelection } = createRequire(import.meta.url)(
|
|
5
|
+
"@farmslot/agent-runtime/scripts/retained-recipe-attempt.cjs"
|
|
6
|
+
);
|
|
3
7
|
const PROSE_FILE = "pr-description.md";
|
|
4
8
|
const BODY_FILE = "pr-body.md";
|
|
5
9
|
const RECIPE_HEADING = "## **Validation Recipe**";
|
|
@@ -77,7 +81,9 @@ function renderPrBody(input) {
|
|
|
77
81
|
throw new Error(`Missing ${path.relative(input.taskDir, prosePath)}: write the PR description there first.`);
|
|
78
82
|
}
|
|
79
83
|
const recipePath = path.join(artifacts, "recipe.json");
|
|
80
|
-
const
|
|
84
|
+
const selected = readRecipeAttemptSelection(input.taskDir);
|
|
85
|
+
const reportRoot = selected?.relativeArtifactRoot ?? "recipe-run";
|
|
86
|
+
const reportPath = path.join(artifacts, reportRoot, "report.md");
|
|
81
87
|
const workflowPath = path.join(artifacts, "workflow.mmd");
|
|
82
88
|
const machine = [];
|
|
83
89
|
let recipe = null;
|
|
@@ -91,7 +97,7 @@ function renderPrBody(input) {
|
|
|
91
97
|
const hasReport = fs.existsSync(reportPath);
|
|
92
98
|
machine.push([
|
|
93
99
|
LOGS_HEADING,
|
|
94
|
-
hasReport ? logsSection(reportPath, input.command) :
|
|
100
|
+
hasReport ? logsSection(reportPath, input.command) : `Not applicable: no recipe run report under \`artifacts/${reportRoot}/\`.`
|
|
95
101
|
]);
|
|
96
102
|
const hasWorkflow = fs.existsSync(workflowPath);
|
|
97
103
|
if (hasWorkflow) {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"action": "metamask.perps.start_state",
|
|
26
26
|
"network": "{{params.network}}",
|
|
27
27
|
"next": "CONTROLLER_UNAVAILABLE",
|
|
28
|
-
"intent": "
|
|
28
|
+
"intent": "Network setup failed before proof. Next: mm-harness doctor --fix"
|
|
29
29
|
},
|
|
30
30
|
"status": {
|
|
31
31
|
"action": "app.status",
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
"network": "{{params.network}}",
|
|
38
38
|
"timeout_ms": "{{params.timeout_ms}}",
|
|
39
39
|
"next": "ACCOUNT_READ_FAILED",
|
|
40
|
-
"intent": "
|
|
40
|
+
"intent": "Perps controller is unavailable on the selected network. Next: mm-harness doctor --fix"
|
|
41
41
|
},
|
|
42
42
|
"ACCOUNT_READ_FAILED": {
|
|
43
43
|
"action": "assert_output",
|
|
44
44
|
"source": "CONTROLLER_UNAVAILABLE",
|
|
45
45
|
"assert": { "path": "$.accountState.totalBalance", "operator": "matches", "value": "^-?[0-9]+(\\.[0-9]+)?$" },
|
|
46
46
|
"next": "done",
|
|
47
|
-
"intent": "
|
|
47
|
+
"intent": "Account read returned no numeric balance. Next: check HyperLiquid testnet access"
|
|
48
48
|
},
|
|
49
49
|
"done": {
|
|
50
50
|
"action": "end",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"network": "{{params.network}}",
|
|
28
28
|
"account": "{{params.account}}",
|
|
29
29
|
"next": "read-positions",
|
|
30
|
-
"intent": "
|
|
30
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
31
31
|
},
|
|
32
32
|
"status": {
|
|
33
33
|
"action": "app.status",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"network": "{{params.network}}",
|
|
34
34
|
"account": "{{params.account}}",
|
|
35
35
|
"next": "read_snapshot",
|
|
36
|
-
"intent": "
|
|
36
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
37
37
|
},
|
|
38
38
|
"status": {
|
|
39
39
|
"action": "app.status",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"CONSOLE_ERRORS": {
|
|
55
55
|
"action": "metamask.app.assert_no_console_errors",
|
|
56
56
|
"next": "screenshot",
|
|
57
|
-
"intent": "
|
|
57
|
+
"intent": "Unexpected app console error. Next: fix it or add explained noise to diagnostics/console-allowlist.json"
|
|
58
58
|
},
|
|
59
59
|
"screenshot": {
|
|
60
60
|
"action": "ui.screenshot",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"positions": false,
|
|
42
42
|
"orders": false,
|
|
43
43
|
"next": "market-detail",
|
|
44
|
-
"intent": "
|
|
44
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
45
45
|
},
|
|
46
46
|
"require-cdp": {
|
|
47
47
|
"action": "cdp.target",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"positions": false,
|
|
28
28
|
"orders": false,
|
|
29
29
|
"next": "read-home",
|
|
30
|
-
"intent": "
|
|
30
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
31
31
|
},
|
|
32
32
|
"status": {
|
|
33
33
|
"action": "app.status",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"CONSOLE_ERRORS": {
|
|
55
55
|
"action": "metamask.app.assert_no_console_errors",
|
|
56
56
|
"next": "screenshot",
|
|
57
|
-
"intent": "
|
|
57
|
+
"intent": "Unexpected app console error. Next: fix it or add explained noise to diagnostics/console-allowlist.json"
|
|
58
58
|
},
|
|
59
59
|
"screenshot": {
|
|
60
60
|
"action": "ui.screenshot",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"positions": false,
|
|
28
28
|
"orders": false,
|
|
29
29
|
"next": "observe-perps",
|
|
30
|
-
"intent": "
|
|
30
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
31
31
|
},
|
|
32
32
|
"status": {
|
|
33
33
|
"action": "app.status",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"positions": false,
|
|
38
38
|
"orders": false,
|
|
39
39
|
"next": "open-market-list",
|
|
40
|
-
"intent": "
|
|
40
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
41
41
|
},
|
|
42
42
|
"open-perps": {
|
|
43
43
|
"action": "ui.navigate",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"positions": false,
|
|
46
46
|
"orders": false,
|
|
47
47
|
"next": "open-market-list",
|
|
48
|
-
"intent": "
|
|
48
|
+
"intent": "Verify the configured Perps network before proof; default testnet. Keep accounts and orders."
|
|
49
49
|
},
|
|
50
50
|
"open-perps": {
|
|
51
51
|
"action": "ui.navigate",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deeeed/metamask-harness",
|
|
3
|
-
"version": "0.91.
|
|
3
|
+
"version": "0.91.7",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"mm-harness": "bin/mm-harness"
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
"check:syntax": "find . -name '*.mjs' -print0 | xargs -0 -n1 node --check"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@farmslot/adapter-node": "0.1.
|
|
25
|
-
"@farmslot/adapter-rn": "0.
|
|
26
|
-
"@farmslot/adapter-sdk": "0.
|
|
27
|
-
"@farmslot/adapter-web": "0.
|
|
28
|
-
"@farmslot/agent-runtime": "0.
|
|
24
|
+
"@farmslot/adapter-node": "0.1.15",
|
|
25
|
+
"@farmslot/adapter-rn": "0.21.0",
|
|
26
|
+
"@farmslot/adapter-sdk": "0.10.0",
|
|
27
|
+
"@farmslot/adapter-web": "0.8.0",
|
|
28
|
+
"@farmslot/agent-runtime": "0.19.0",
|
|
29
29
|
"@farmslot/handoff": "^0.3.1",
|
|
30
|
-
"@farmslot/protocol": "0.
|
|
31
|
-
"@farmslot/recipe-cli": "0.
|
|
32
|
-
"@farmslot/recipe-runner": "0.
|
|
30
|
+
"@farmslot/protocol": "0.41.0",
|
|
31
|
+
"@farmslot/recipe-cli": "0.15.0",
|
|
32
|
+
"@farmslot/recipe-runner": "0.32.0",
|
|
33
33
|
"agent-device": "0.19.3",
|
|
34
34
|
"commander": "^12.0.0",
|
|
35
35
|
"esbuild": "0.28.1",
|