@deeeed/metamask-harness 0.92.4 → 0.92.5
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
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.92.5 - 2026-10-15
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Include shared diff-scope review instructions in hosted task initialization through the coordinated shared runtime dependency set.
|
|
10
|
+
- Wait for observed wallet readiness after Mobile unlock, including when the login input disappears during startup.
|
|
11
|
+
|
|
5
12
|
## 0.92.4 - 2026-10-15
|
|
6
13
|
|
|
7
14
|
### Fixed
|
|
@@ -147,6 +147,7 @@ async function waitForStableUnlocked(
|
|
|
147
147
|
initialStatus,
|
|
148
148
|
stableMs = 750,
|
|
149
149
|
recoveryTimeoutMs = 30000,
|
|
150
|
+
{ waitThroughLogin = false } = {},
|
|
150
151
|
) {
|
|
151
152
|
if (!isUnlockedStatus(initialStatus, input)) return null;
|
|
152
153
|
if (stableMs <= 0) return initialStatus;
|
|
@@ -162,7 +163,7 @@ async function waitForStableUnlocked(
|
|
|
162
163
|
try {
|
|
163
164
|
last = await statusBeforeDeadline(input, deadline);
|
|
164
165
|
if (!isUnlockedStatus(last, input)) {
|
|
165
|
-
if (routeName(last, input) === 'Login') return null;
|
|
166
|
+
if (!waitThroughLogin && routeName(last, input) === 'Login') return null;
|
|
166
167
|
stableSince = null;
|
|
167
168
|
continue;
|
|
168
169
|
}
|
|
@@ -239,24 +240,13 @@ export async function ensureUnlocked(input) {
|
|
|
239
240
|
try {
|
|
240
241
|
const current = await statusBeforeDeadline(input, unlockDeadline);
|
|
241
242
|
if (isUnlockedStatus(current, input)) {
|
|
242
|
-
|
|
243
|
-
action: input.action,
|
|
244
|
-
unlocked: true,
|
|
245
|
-
alreadyUnlocked: true,
|
|
246
|
-
keyringUnlocked:
|
|
247
|
-
selectedStatus(current, input)?.keyringUnlocked === true,
|
|
248
|
-
account: selectedAccount(current, input),
|
|
249
|
-
deviceName: selectedStatus(current, input)?.deviceName ?? null,
|
|
250
|
-
platform: selectedStatus(current, input)?.platform ?? null,
|
|
251
|
-
redacted: true,
|
|
252
|
-
proofPath: 'agentic-wallet-status-after-missing-login-input',
|
|
253
|
-
};
|
|
243
|
+
result = { ok: true, alreadyUnlocked: true };
|
|
254
244
|
}
|
|
255
245
|
} catch {
|
|
256
246
|
// The bridge target can rotate while the login input mounts. Keep the
|
|
257
247
|
// retry bounded by the same unlock deadline.
|
|
258
248
|
}
|
|
259
|
-
await new Promise((resolve) => setTimeout(resolve, 250));
|
|
249
|
+
if (result === undefined) await new Promise((resolve) => setTimeout(resolve, 250));
|
|
260
250
|
}
|
|
261
251
|
}
|
|
262
252
|
if (result === undefined) {
|
|
@@ -272,6 +262,7 @@ export async function ensureUnlocked(input) {
|
|
|
272
262
|
after,
|
|
273
263
|
Number(input.node?.stable_unlocked_ms ?? 750),
|
|
274
264
|
remainingStabilityMs,
|
|
265
|
+
{ waitThroughLogin: true },
|
|
275
266
|
);
|
|
276
267
|
if (!stableAfter) {
|
|
277
268
|
throw new Error('Mobile wallet did not remain unlocked for the required stability window.');
|
|
@@ -279,6 +270,7 @@ export async function ensureUnlocked(input) {
|
|
|
279
270
|
return {
|
|
280
271
|
action: input.action,
|
|
281
272
|
unlocked: Boolean(result?.ok ?? result?.unlocked ?? true),
|
|
273
|
+
...(result?.alreadyUnlocked ? { alreadyUnlocked: true } : {}),
|
|
282
274
|
keyringUnlocked:
|
|
283
275
|
selectedStatus(stableAfter, input)?.keyringUnlocked === true,
|
|
284
276
|
account: selectedAccount(stableAfter, input),
|
|
@@ -286,7 +278,9 @@ export async function ensureUnlocked(input) {
|
|
|
286
278
|
deviceName: selectedStatus(stableAfter, input)?.deviceName ?? null,
|
|
287
279
|
platform: selectedStatus(stableAfter, input)?.platform ?? null,
|
|
288
280
|
redacted: true,
|
|
289
|
-
proofPath:
|
|
281
|
+
proofPath: result?.alreadyUnlocked
|
|
282
|
+
? 'agentic-wallet-status-after-missing-login-input'
|
|
283
|
+
: 'agentic-wallet-unlock',
|
|
290
284
|
};
|
|
291
285
|
}
|
|
292
286
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deeeed/metamask-harness",
|
|
3
|
-
"version": "0.92.
|
|
3
|
+
"version": "0.92.5",
|
|
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.22.
|
|
26
|
-
"@farmslot/adapter-sdk": "0.
|
|
27
|
-
"@farmslot/adapter-web": "0.10.
|
|
28
|
-
"@farmslot/agent-runtime": "0.22.
|
|
24
|
+
"@farmslot/adapter-node": "0.1.23",
|
|
25
|
+
"@farmslot/adapter-rn": "0.22.9",
|
|
26
|
+
"@farmslot/adapter-sdk": "0.14.0",
|
|
27
|
+
"@farmslot/adapter-web": "0.10.1",
|
|
28
|
+
"@farmslot/agent-runtime": "0.22.4",
|
|
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.45.0",
|
|
31
|
+
"@farmslot/recipe-cli": "0.18.0",
|
|
32
|
+
"@farmslot/recipe-runner": "0.36.0",
|
|
33
33
|
"agent-device": "0.19.3",
|
|
34
34
|
"commander": "^12.0.0",
|
|
35
35
|
"esbuild": "0.28.1",
|