@onekeyfe/hd-core 1.2.0-alpha.104 → 1.2.0-alpha.105

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.
@@ -561,17 +561,22 @@ describe('DeviceCommands failure mapping', () => {
561
561
  });
562
562
 
563
563
  describe('DeviceCommands Protocol V2 interactive response compatibility', () => {
564
- it('still auto-acks ButtonRequest when no hardware UI listener is registered', async () => {
564
+ it('auto-acks Pro2 ButtonRequest and registers Cancel instead of Initialize', async () => {
565
565
  const commands = createCommands();
566
566
  const emit = jest.fn();
567
+ const cancelDevice = jest.spyOn(commands, 'cancelDevice').mockResolvedValue(undefined);
568
+ const cancelDeviceOnOneKeyDevice = jest
569
+ .spyOn(commands, 'cancelDeviceOnOneKeyDevice')
570
+ .mockResolvedValue(undefined);
567
571
  const commonCall = jest.fn().mockResolvedValue({
568
572
  type: 'Success',
569
573
  message: {},
570
574
  });
575
+ const setCancelableAction = jest.fn();
571
576
  commands.device = {
572
577
  ...commands.device,
573
578
  getCurrentDeviceType: jest.fn(() => 'pro2'),
574
- setCancelableAction: jest.fn(),
579
+ setCancelableAction,
575
580
  emit,
576
581
  listenerCount: jest.fn(() => 0),
577
582
  } as any;
@@ -593,6 +598,9 @@ describe('DeviceCommands Protocol V2 interactive response compatibility', () =>
593
598
  expect.objectContaining({ code: 'ButtonRequest_PinEntry' })
594
599
  );
595
600
  expect(commonCall).toHaveBeenCalledWith('ButtonAck', {}, undefined);
601
+ await setCancelableAction.mock.calls[0][0]();
602
+ expect(cancelDevice).toHaveBeenCalledTimes(1);
603
+ expect(cancelDeviceOnOneKeyDevice).not.toHaveBeenCalled();
596
604
  });
597
605
 
598
606
  it('rejects PassphraseRequest when the Pro2 UI listener is not registered', async () => {
@@ -1,12 +1,14 @@
1
- import { HardwareErrorCode } from '@onekeyfe/hd-shared';
2
- import { TRANSPORT_EVENT } from '@onekeyfe/hd-transport';
1
+ import { EDeviceType, HardwareErrorCode } from '@onekeyfe/hd-shared';
2
+ import { DeviceType, TRANSPORT_EVENT } from '@onekeyfe/hd-transport';
3
3
 
4
4
  import { initConnector, initCore } from '../src/core';
5
5
  import { DataManager } from '../src/data-manager';
6
6
  import TransportManager from '../src/data-manager/TransportManager';
7
7
  import { Device } from '../src/device/Device';
8
+ import { cancelDeviceInPrompt, cancelDeviceWithInitialize } from '../src/device/DeviceCommands';
8
9
  import { DevicePool } from '../src/device/DevicePool';
9
10
  import { CORE_EVENT, DEVICE, IFRAME } from '../src/events';
11
+ import { PROTOCOL_V2_DEVICE_STATUS_GET_MESSAGE_TYPE } from '../src/protocols/protocol-v2';
10
12
 
11
13
  import type Core from '../src/core';
12
14
  import type { CoreMessage } from '../src/events';
@@ -271,6 +273,115 @@ describe('public device lifecycle events', () => {
271
273
  expect(device.isUsedHere()).toBe(false);
272
274
  });
273
275
 
276
+ test.each([
277
+ ['V2', 'Cancel', 'webusb'],
278
+ ['V2', 'Cancel', 'desktop-web-ble'],
279
+ ['V2', 'Cancel', 'react-native'],
280
+ ['V1', 'Initialize', 'webusb'],
281
+ ['V1', 'Cancel', 'desktop-web-ble'],
282
+ ] as const)(
283
+ 'sends Protocol %s %s without treating the acquired %s session as disconnected',
284
+ async (protocol, messageType, env) => {
285
+ jest.spyOn(DataManager, 'getSettings').mockReturnValue(env as never);
286
+ const device = createInitializedDevice(protocol);
287
+ const post = jest.fn().mockResolvedValue(undefined);
288
+ const call = jest.fn().mockResolvedValue(undefined);
289
+ const cancel = jest.fn().mockResolvedValue(undefined);
290
+ device.originalDescriptor.session = device.mainId;
291
+ (device as unknown as { deviceAcquired: boolean }).deviceAcquired = true;
292
+ (device as any).commands = { transport: { post, call }, cancel };
293
+ device.setCancelableAction(() =>
294
+ messageType === 'Cancel'
295
+ ? cancelDeviceInPrompt(device, false)
296
+ : cancelDeviceWithInitialize(device)
297
+ );
298
+
299
+ await device.interruptionFromUser();
300
+
301
+ if (messageType === 'Cancel') {
302
+ expect(post).toHaveBeenCalledWith(device.mainId, 'Cancel', {});
303
+ expect(call).not.toHaveBeenCalled();
304
+ } else {
305
+ expect(call).toHaveBeenCalledWith(device.mainId, 'Initialize', {});
306
+ expect(post).not.toHaveBeenCalled();
307
+ }
308
+ expect(cancel).toHaveBeenCalledTimes(1);
309
+ expect(device.hasDeviceAcquire()).toBe(true);
310
+ }
311
+ );
312
+
313
+ test.each([
314
+ [EDeviceType.Pro2, 'webusb', false, DeviceType.PRO2],
315
+ [EDeviceType.Neo, 'webusb', false, DeviceType.NEO],
316
+ [EDeviceType.Pro2, 'desktop-web-ble', true, DeviceType.PRO2],
317
+ [EDeviceType.Neo, 'desktop-web-ble', true, DeviceType.NEO],
318
+ [EDeviceType.Pro2, 'react-native', true, DeviceType.PRO2],
319
+ [EDeviceType.Neo, 'react-native', true, DeviceType.NEO],
320
+ [EDeviceType.Pro2, 'lowlevel', false, DeviceType.PRO2],
321
+ ] as const)(
322
+ 'refreshes %s runtime state after acquiring a fresh %s session',
323
+ async (deviceType, env, isBle, protocolV2DeviceType) => {
324
+ jest.spyOn(DataManager, 'getSettings').mockReturnValue(env as never);
325
+ const device = createInitializedDevice('V2');
326
+ const staleProtocolInfo = {
327
+ version: 1,
328
+ build_fingerprint: 'bootloader__1.0.0__abcdef0__PROD__RELEASE',
329
+ supported_messages: [],
330
+ };
331
+ const freshProtocolInfo = {
332
+ version: 1,
333
+ build_fingerprint: 'application__5.0.0__abcdef0__PROD__RELEASE',
334
+ supported_messages: [PROTOCOL_V2_DEVICE_STATUS_GET_MESSAGE_TYPE],
335
+ };
336
+ device.updateState(
337
+ {
338
+ identity: { deviceType },
339
+ status: { mode: 'bootloader' },
340
+ raw: { protocolV2ProtocolInfo: staleProtocolInfo },
341
+ },
342
+ 'initialize'
343
+ );
344
+ const acquire = jest
345
+ .fn()
346
+ .mockResolvedValue(isBle ? { uuid: 'fresh-session', protocolType: 'V2' } : 'fresh-session');
347
+ device.deviceConnector = { acquire } as never;
348
+
349
+ await device.acquire('V2', { throwOnRunPromiseError: true });
350
+ const typedCall = jest.fn().mockImplementation((requestType: string) => {
351
+ if (requestType === 'DeviceInfoGet') {
352
+ return {
353
+ message: {
354
+ protocol_version: 2,
355
+ hw: { Device_type: protocolV2DeviceType, serial_no: 'SERIAL-001' },
356
+ fw: { application: { version: '5.0.0' } },
357
+ },
358
+ };
359
+ }
360
+ if (requestType === 'ProtocolInfoRequest') {
361
+ return { message: freshProtocolInfo };
362
+ }
363
+ if (requestType === 'DeviceStatusGet') {
364
+ return {
365
+ message: { init_states: true, unlocked: true, device_id: 'wallet-device-id' },
366
+ };
367
+ }
368
+ throw new Error(`Unexpected request: ${requestType}`);
369
+ });
370
+ device.commands.typedCall = typedCall as never;
371
+
372
+ await device.initialize();
373
+
374
+ expect(typedCall.mock.calls.map(callArgs => callArgs[0])).toEqual([
375
+ 'DeviceInfoGet',
376
+ 'ProtocolInfoRequest',
377
+ 'DeviceStatusGet',
378
+ ]);
379
+ expect(device.state?.status.mode).toBe('normal');
380
+ expect(device.state?.identity.deviceType).toBe(deviceType);
381
+ expect(device.hasDeviceAcquire()).toBe(true);
382
+ }
383
+ );
384
+
274
385
  test('exposes the current transport usage state in public device snapshots', () => {
275
386
  const getSettings = jest
276
387
  .spyOn(DataManager, 'getSettings')
@@ -252,56 +252,6 @@ describe('getDeviceState', () => {
252
252
  }
253
253
  );
254
254
 
255
- test.each([
256
- [EDeviceType.Pro2, DeviceType.PRO2],
257
- [EDeviceType.Neo, DeviceType.NEO],
258
- ] as const)('invalidates cached loader state when %s is cancelled', async (deviceType, type) => {
259
- const typedCall = jest.fn().mockImplementation((requestType: string) => {
260
- if (requestType === 'DeviceInfoGet') {
261
- return {
262
- message: {
263
- protocol_version: 2,
264
- hw: { Device_type: type, serial_no: 'SERIAL-1' },
265
- fw: { application: { version: '5.0.0' } },
266
- },
267
- };
268
- }
269
- if (requestType === 'ProtocolInfoRequest') {
270
- return { message: protocolV2ApplicationInfo };
271
- }
272
- if (requestType === 'DeviceStatusGet') {
273
- return {
274
- message: { init_states: true, unlocked: true, device_id: 'wallet-1' },
275
- };
276
- }
277
- throw new Error(`Unexpected request: ${requestType}`);
278
- });
279
- const cancel = jest.fn().mockResolvedValue(undefined);
280
- const device = createV2Device(typedCall);
281
- (device as any).commands = { cancel, typedCall };
282
- device.updateState(
283
- {
284
- protocol: 'V2',
285
- identity: { deviceType },
286
- status: { mode: 'bootloader' },
287
- raw: { protocolV2ProtocolInfo: getProtocolV2LoaderInfo('bootloader') },
288
- },
289
- 'initialize'
290
- );
291
-
292
- await device.interruptionFromUser();
293
- await device.initialize();
294
-
295
- expect(cancel).toHaveBeenCalledTimes(1);
296
- expect(device.state?.status.mode).toBe('normal');
297
- expect(device.state?.identity.deviceId).toBe('wallet-1');
298
- expect(typedCall.mock.calls.map(call => call[0])).toEqual([
299
- 'DeviceInfoGet',
300
- 'ProtocolInfoRequest',
301
- 'DeviceStatusGet',
302
- ]);
303
- });
304
-
305
255
  test.each(['bootloader', 'romloader'] as const)(
306
256
  'keeps live %s mode after refreshing cached loader state',
307
257
  async mode => {
@@ -1,5 +1,4 @@
1
1
  import { Buffer } from 'buffer';
2
-
3
2
  import { EFirmwareType, ERRORS, HardwareErrorCode } from '@onekeyfe/hd-shared';
4
3
  import { sha256 } from '@noble/hashes/sha256';
5
4
  import { bytesToHex } from '@noble/hashes/utils';
@@ -2756,19 +2755,35 @@ describe('Protocol V2 feature adapter', () => {
2756
2755
  });
2757
2756
  });
2758
2757
 
2759
- test('syncs Protocol V2 cached features without cached profile', () => {
2758
+ test('syncs Protocol V2 cached features and renegotiates the adopted command channel', async () => {
2759
+ const typedCall = jest.fn().mockResolvedValue({ message: protocolV2ApplicationInfo });
2760
2760
  const cached = Device.fromDescriptor({ ...descriptor, protocolType: 'V2' } as any);
2761
2761
  (cached as any).features = {
2762
2762
  ...normalizeProtocolV2Features({ ...descriptor, protocolType: 'V2' } as any),
2763
2763
  deviceId: null,
2764
2764
  serialNo: 'CACHED-SERIAL',
2765
2765
  };
2766
+ (cached as any).commands = { typedCall };
2766
2767
 
2767
2768
  const current = Device.fromDescriptor({ ...descriptor, protocolType: 'V2' } as any);
2769
+ current.updateState(
2770
+ {
2771
+ raw: { protocolV2ProtocolInfo: protocolV2BootloaderInfo },
2772
+ status: { mode: 'bootloader' },
2773
+ },
2774
+ 'initialize'
2775
+ );
2768
2776
  current.updateFromCache(cached);
2769
2777
 
2778
+ await expect(current.ensureProtocolV2RuntimeContext()).resolves.toEqual(
2779
+ protocolV2ApplicationInfo
2780
+ );
2781
+
2770
2782
  expect(current.getCurrentDeviceId()).toBeUndefined();
2771
2783
  expect(current.getCurrentSerialNo()).toBe('CACHED-SERIAL');
2784
+ expect(typedCall).toHaveBeenCalledWith('ProtocolInfoRequest', 'ProtocolInfo', {
2785
+ eventless_wallet_session: true,
2786
+ });
2772
2787
  expect(current.toMessageObject()).toMatchObject({
2773
2788
  serialNo: 'CACHED-SERIAL',
2774
2789
  uuid: 'CACHED-SERIAL',
@@ -5116,9 +5131,9 @@ describe('Protocol V2 firmware update targets', () => {
5116
5131
  getCommands: () => activeCommands,
5117
5132
  });
5118
5133
  (method as any).protocolV2LegacyDirectUpdate = true;
5119
- (method as any).rebootProtocolV2ToBootloader = jest.fn().mockImplementation(async () => {
5134
+ (method as any).rebootProtocolV2ToBootloader = jest.fn().mockImplementation(() => {
5120
5135
  activeCommands = { typedCall: bootloaderTypedCall };
5121
- return true;
5136
+ return Promise.resolve(true);
5122
5137
  });
5123
5138
  method.postTipMessage = jest.fn();
5124
5139
  method.postProgressMessage = jest.fn();
@@ -164,6 +164,7 @@ export declare class Device extends EventEmitter {
164
164
  }): Promise<Features>;
165
165
  updateProtocolV2Features(deviceInfo?: ProtocolV2DeviceInfo, deviceStatus?: DeviceStatus | null, runtimeMode?: ProtocolV2RuntimeMode, protocolInfo?: ProtocolInfo): Features;
166
166
  updateProtocolV2Status(status: DeviceStatus): Features;
167
+ private invalidateProtocolV2RuntimeState;
167
168
  markTransportDisconnected(): void;
168
169
  invalidateAfterWipe(): void;
169
170
  markProtocolV2Reboot(rebootType: DeviceRebootType): void;
@@ -1 +1 @@
1
- {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../../src/device/Device.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -960,6 +960,7 @@ declare class Device extends EventEmitter {
960
960
  }): Promise<Features>;
961
961
  updateProtocolV2Features(deviceInfo?: ProtocolV2DeviceInfo, deviceStatus?: DeviceStatus$1 | null, runtimeMode?: ProtocolV2RuntimeMode, protocolInfo?: ProtocolInfo): Features;
962
962
  updateProtocolV2Status(status: DeviceStatus$1): Features;
963
+ private invalidateProtocolV2RuntimeState;
963
964
  markTransportDisconnected(): void;
964
965
  invalidateAfterWipe(): void;
965
966
  markProtocolV2Reboot(rebootType: DeviceRebootType): void;
package/dist/index.js CHANGED
@@ -45245,6 +45245,7 @@ class Device extends events.exports {
45245
45245
  yield this.commands.dispose(false);
45246
45246
  }
45247
45247
  this.commands = new DeviceCommands(this, (_g = this.mainId) !== null && _g !== void 0 ? _g : '');
45248
+ this.invalidateProtocolV2RuntimeState();
45248
45249
  }
45249
45250
  catch (error) {
45250
45251
  if (options === null || options === void 0 ? void 0 : options.forceProtocolDetection) {
@@ -45898,8 +45899,7 @@ class Device extends events.exports {
45898
45899
  const previousStatus = (_d = (_c = this.state) === null || _c === void 0 ? void 0 : _c.raw) === null || _d === void 0 ? void 0 : _d.protocolV2DeviceStatus;
45899
45900
  return this.updateProtocolV2Features(previousDeviceInfo, Object.assign(Object.assign({}, previousStatus), status));
45900
45901
  }
45901
- markTransportDisconnected() {
45902
- this.deviceAcquired = false;
45902
+ invalidateProtocolV2RuntimeState() {
45903
45903
  if (!this.isProtocolV2())
45904
45904
  return;
45905
45905
  this.protocolV2StateNeedsReload = true;
@@ -45908,6 +45908,10 @@ class Device extends events.exports {
45908
45908
  this.protocolV2RuntimeContextRequestToken = undefined;
45909
45909
  this.clearPreInitialized();
45910
45910
  }
45911
+ markTransportDisconnected() {
45912
+ this.deviceAcquired = false;
45913
+ this.invalidateProtocolV2RuntimeState();
45914
+ }
45911
45915
  invalidateAfterWipe() {
45912
45916
  const deviceId = this.getCurrentDeviceId();
45913
45917
  if (deviceId) {
@@ -45917,10 +45921,7 @@ class Device extends events.exports {
45917
45921
  if (this.originalDescriptor.path !== deviceId) {
45918
45922
  deviceWalletSessionStore.deleteDevice(this.originalDescriptor.path);
45919
45923
  }
45920
- this.protocolV2StateNeedsReload = true;
45921
- this.protocolV2RuntimeContext = undefined;
45922
- this.protocolV2RuntimeContextPromise = undefined;
45923
- this.protocolV2RuntimeContextRequestToken = undefined;
45924
+ this.invalidateProtocolV2RuntimeState();
45924
45925
  }
45925
45926
  this.passphraseState = undefined;
45926
45927
  this.stateStore = new DeviceStateStore();
@@ -45930,11 +45931,7 @@ class Device extends events.exports {
45930
45931
  markProtocolV2Reboot(rebootType) {
45931
45932
  if (!this.isProtocolV2())
45932
45933
  return;
45933
- this.protocolV2StateNeedsReload = true;
45934
- this.protocolV2RuntimeContext = undefined;
45935
- this.protocolV2RuntimeContextPromise = undefined;
45936
- this.protocolV2RuntimeContextRequestToken = undefined;
45937
- this.clearPreInitialized();
45934
+ this.invalidateProtocolV2RuntimeState();
45938
45935
  let loaderMode;
45939
45936
  if (rebootType === hdTransport.DeviceRebootType.Bootloader) {
45940
45937
  loaderMode = 'bootloader';
@@ -45990,6 +45987,7 @@ class Device extends events.exports {
45990
45987
  if (device.features) {
45991
45988
  this._updateFeatures(device.features);
45992
45989
  }
45990
+ this.invalidateProtocolV2RuntimeState();
45993
45991
  }
45994
45992
  run(fn, options) {
45995
45993
  return __awaiter(this, void 0, void 0, function* () {
@@ -46102,7 +46100,6 @@ class Device extends events.exports {
46102
46100
  var _a, _b;
46103
46101
  return __awaiter(this, void 0, void 0, function* () {
46104
46102
  const error = hdShared.ERRORS.TypedError(hdShared.HardwareErrorCode.DeviceInterruptedFromUser);
46105
- this.markTransportDisconnected();
46106
46103
  yield ((_a = this.cancelableAction) === null || _a === void 0 ? void 0 : _a.call(this, error));
46107
46104
  yield ((_b = this.commands) === null || _b === void 0 ? void 0 : _b.cancel());
46108
46105
  if (this.runPromise) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onekeyfe/hd-core",
3
- "version": "1.2.0-alpha.104",
3
+ "version": "1.2.0-alpha.105",
4
4
  "description": "Core processes and APIs for communicating with OneKey hardware devices.",
5
5
  "author": "OneKey",
6
6
  "homepage": "https://github.com/OneKeyHQ/hardware-js-sdk#readme",
@@ -25,8 +25,8 @@
25
25
  "url": "https://github.com/OneKeyHQ/hardware-js-sdk/issues"
26
26
  },
27
27
  "dependencies": {
28
- "@onekeyfe/hd-shared": "1.2.0-alpha.104",
29
- "@onekeyfe/hd-transport": "1.2.0-alpha.104",
28
+ "@onekeyfe/hd-shared": "1.2.0-alpha.105",
29
+ "@onekeyfe/hd-transport": "1.2.0-alpha.105",
30
30
  "axios": "1.15.2",
31
31
  "bignumber.js": "^9.0.2",
32
32
  "buffer": "^6.0.3",
@@ -46,5 +46,5 @@
46
46
  "@types/w3c-web-usb": "^1.0.10",
47
47
  "@types/web-bluetooth": "^0.0.21"
48
48
  },
49
- "gitHead": "32d75f15aadfa59e4f02f1acb24dc6e5aada94c8"
49
+ "gitHead": "06431636d7bf40ab8ae28fd44a01893c0f220a74"
50
50
  }
@@ -488,6 +488,10 @@ export class Device extends EventEmitter {
488
488
  }
489
489
 
490
490
  this.commands = new DeviceCommands(this, this.mainId ?? '');
491
+ // Protocol V2 runtime metadata belongs to one active transport link. A
492
+ // successful acquire creates a fresh link/session, so never carry cached
493
+ // ProtocolInfo or pre-initialize state across that boundary.
494
+ this.invalidateProtocolV2RuntimeState();
491
495
  } catch (error) {
492
496
  if (options?.forceProtocolDetection) {
493
497
  this.originalDescriptor.protocolType = previousProtocol;
@@ -1304,8 +1308,7 @@ export class Device extends EventEmitter {
1304
1308
  });
1305
1309
  }
1306
1310
 
1307
- markTransportDisconnected() {
1308
- this.deviceAcquired = false;
1311
+ private invalidateProtocolV2RuntimeState() {
1309
1312
  if (!this.isProtocolV2()) return;
1310
1313
  this.protocolV2StateNeedsReload = true;
1311
1314
  this.protocolV2RuntimeContext = undefined;
@@ -1314,6 +1317,11 @@ export class Device extends EventEmitter {
1314
1317
  this.clearPreInitialized();
1315
1318
  }
1316
1319
 
1320
+ markTransportDisconnected() {
1321
+ this.deviceAcquired = false;
1322
+ this.invalidateProtocolV2RuntimeState();
1323
+ }
1324
+
1317
1325
  invalidateAfterWipe() {
1318
1326
  const deviceId = this.getCurrentDeviceId();
1319
1327
  if (deviceId) {
@@ -1323,10 +1331,7 @@ export class Device extends EventEmitter {
1323
1331
  if (this.originalDescriptor.path !== deviceId) {
1324
1332
  deviceWalletSessionStore.deleteDevice(this.originalDescriptor.path);
1325
1333
  }
1326
- this.protocolV2StateNeedsReload = true;
1327
- this.protocolV2RuntimeContext = undefined;
1328
- this.protocolV2RuntimeContextPromise = undefined;
1329
- this.protocolV2RuntimeContextRequestToken = undefined;
1334
+ this.invalidateProtocolV2RuntimeState();
1330
1335
  }
1331
1336
 
1332
1337
  this.passphraseState = undefined;
@@ -1338,11 +1343,7 @@ export class Device extends EventEmitter {
1338
1343
  markProtocolV2Reboot(rebootType: DeviceRebootType) {
1339
1344
  if (!this.isProtocolV2()) return;
1340
1345
 
1341
- this.protocolV2StateNeedsReload = true;
1342
- this.protocolV2RuntimeContext = undefined;
1343
- this.protocolV2RuntimeContextPromise = undefined;
1344
- this.protocolV2RuntimeContextRequestToken = undefined;
1345
- this.clearPreInitialized();
1346
+ this.invalidateProtocolV2RuntimeState();
1346
1347
  let loaderMode: 'bootloader' | 'romloader' | undefined;
1347
1348
  if (rebootType === DeviceRebootType.Bootloader) {
1348
1349
  loaderMode = 'bootloader';
@@ -1416,6 +1417,10 @@ export class Device extends EventEmitter {
1416
1417
  if (device.features) {
1417
1418
  this._updateFeatures(device.features);
1418
1419
  }
1420
+ // Adopting another Device instance's command channel also crosses an active
1421
+ // link boundary. Renegotiate runtime metadata on that channel instead of
1422
+ // retaining ProtocolInfo from the previous instance/session.
1423
+ this.invalidateProtocolV2RuntimeState();
1419
1424
  }
1420
1425
 
1421
1426
  async run(fn?: () => Promise<void>, options?: RunOptions) {
@@ -1545,10 +1550,6 @@ export class Device extends EventEmitter {
1545
1550
 
1546
1551
  async interruptionFromUser() {
1547
1552
  const error = ERRORS.TypedError(HardwareErrorCode.DeviceInterruptedFromUser);
1548
- // Cancellation often ends the transport session, especially during firmware
1549
- // update reboot or exit. Invalidate V2 state before awaiting asynchronous
1550
- // cancellation callbacks so the next request cannot reuse a stale runtime mode.
1551
- this.markTransportDisconnected();
1552
1553
  await this.cancelableAction?.(error);
1553
1554
  await this.commands?.cancel();
1554
1555