@bota.dev/react-native-app-sdk 2.0.0-beta.1 → 2.0.0-beta.10

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.
Files changed (125) hide show
  1. package/README.md +104 -4
  2. package/android/build.gradle +1 -0
  3. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevices.kt +22 -0
  4. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDiagnostics.kt +53 -0
  5. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogs.kt +16 -0
  6. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploads.kt +144 -14
  7. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordings.kt +150 -29
  8. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKEncryptedUploadV2Materials.kt +27 -0
  9. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKModule.kt +86 -3
  10. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevicesTest.kt +35 -0
  11. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogsTest.kt +33 -0
  12. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploadsTest.kt +135 -6
  13. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingsTest.kt +236 -10
  14. package/generated/codegen-contract.json +568 -8
  15. package/ios/BotaDeviceSDK.mm +114 -0
  16. package/ios/BotaDeviceSDKAppleBridge.swift +141 -4
  17. package/ios/BotaDeviceSDKAppleDevices.swift +11 -0
  18. package/ios/BotaDeviceSDKAppleDiagnostics.swift +40 -0
  19. package/ios/BotaDeviceSDKAppleLogs.swift +18 -0
  20. package/ios/BotaDeviceSDKAppleRecordingUploads.swift +138 -6
  21. package/ios/BotaDeviceSDKAppleRecordings.swift +113 -5
  22. package/ios/BotaDeviceSDKEncryptedUploadV2Materials.swift +40 -0
  23. package/lib/commonjs/BotaClient.js +16 -2
  24. package/lib/commonjs/BotaClient.js.map +1 -1
  25. package/lib/commonjs/ble/constants.js +5 -1
  26. package/lib/commonjs/ble/constants.js.map +1 -1
  27. package/lib/commonjs/ble/deviceDiagnostics.js +240 -0
  28. package/lib/commonjs/ble/deviceDiagnostics.js.map +1 -0
  29. package/lib/commonjs/client.js +183 -28
  30. package/lib/commonjs/client.js.map +1 -1
  31. package/lib/commonjs/clientPresence.js +26 -0
  32. package/lib/commonjs/clientPresence.js.map +1 -0
  33. package/lib/commonjs/index.js +29 -0
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/managers/DeviceManager.js +23 -0
  36. package/lib/commonjs/managers/DeviceManager.js.map +1 -1
  37. package/lib/commonjs/managers/NativeUploadQueue.js +386 -0
  38. package/lib/commonjs/managers/NativeUploadQueue.js.map +1 -0
  39. package/lib/commonjs/managers/RecordingManager.js +83 -102
  40. package/lib/commonjs/managers/RecordingManager.js.map +1 -1
  41. package/lib/commonjs/managers/uploadRecoveryMetadata.js +83 -0
  42. package/lib/commonjs/managers/uploadRecoveryMetadata.js.map +1 -0
  43. package/lib/commonjs/sdkIdentity.js +10 -0
  44. package/lib/commonjs/sdkIdentity.js.map +1 -0
  45. package/lib/commonjs/specs/NativeBotaDeviceSDK.js.map +1 -1
  46. package/lib/commonjs/uploadRecovery.js +68 -0
  47. package/lib/commonjs/uploadRecovery.js.map +1 -0
  48. package/lib/module/BotaClient.js +16 -2
  49. package/lib/module/BotaClient.js.map +1 -1
  50. package/lib/module/ble/constants.js +4 -0
  51. package/lib/module/ble/constants.js.map +1 -1
  52. package/lib/module/ble/deviceDiagnostics.js +234 -0
  53. package/lib/module/ble/deviceDiagnostics.js.map +1 -0
  54. package/lib/module/client.js +183 -28
  55. package/lib/module/client.js.map +1 -1
  56. package/lib/module/clientPresence.js +22 -0
  57. package/lib/module/clientPresence.js.map +1 -0
  58. package/lib/module/index.js +4 -0
  59. package/lib/module/index.js.map +1 -1
  60. package/lib/module/managers/DeviceManager.js +23 -0
  61. package/lib/module/managers/DeviceManager.js.map +1 -1
  62. package/lib/module/managers/NativeUploadQueue.js +380 -0
  63. package/lib/module/managers/NativeUploadQueue.js.map +1 -0
  64. package/lib/module/managers/RecordingManager.js +83 -102
  65. package/lib/module/managers/RecordingManager.js.map +1 -1
  66. package/lib/module/managers/uploadRecoveryMetadata.js +77 -0
  67. package/lib/module/managers/uploadRecoveryMetadata.js.map +1 -0
  68. package/lib/module/sdkIdentity.js +6 -0
  69. package/lib/module/sdkIdentity.js.map +1 -0
  70. package/lib/module/specs/NativeBotaDeviceSDK.js.map +1 -1
  71. package/lib/module/uploadRecovery.js +64 -0
  72. package/lib/module/uploadRecovery.js.map +1 -0
  73. package/lib/typescript/BotaClient.d.ts +2 -0
  74. package/lib/typescript/BotaClient.d.ts.map +1 -1
  75. package/lib/typescript/ble/constants.d.ts +4 -0
  76. package/lib/typescript/ble/constants.d.ts.map +1 -1
  77. package/lib/typescript/ble/deviceDiagnostics.d.ts +10 -0
  78. package/lib/typescript/ble/deviceDiagnostics.d.ts.map +1 -0
  79. package/lib/typescript/client.d.ts +24 -3
  80. package/lib/typescript/client.d.ts.map +1 -1
  81. package/lib/typescript/clientPresence.d.ts +26 -0
  82. package/lib/typescript/clientPresence.d.ts.map +1 -0
  83. package/lib/typescript/index.d.ts +10 -4
  84. package/lib/typescript/index.d.ts.map +1 -1
  85. package/lib/typescript/managers/DeviceManager.d.ts +5 -1
  86. package/lib/typescript/managers/DeviceManager.d.ts.map +1 -1
  87. package/lib/typescript/managers/NativeUploadQueue.d.ts +41 -0
  88. package/lib/typescript/managers/NativeUploadQueue.d.ts.map +1 -0
  89. package/lib/typescript/managers/RecordingManager.d.ts +3 -8
  90. package/lib/typescript/managers/RecordingManager.d.ts.map +1 -1
  91. package/lib/typescript/managers/types.d.ts +6 -1
  92. package/lib/typescript/managers/types.d.ts.map +1 -1
  93. package/lib/typescript/managers/uploadRecoveryMetadata.d.ts +6 -0
  94. package/lib/typescript/managers/uploadRecoveryMetadata.d.ts.map +1 -0
  95. package/lib/typescript/models/Device.d.ts +42 -0
  96. package/lib/typescript/models/Device.d.ts.map +1 -1
  97. package/lib/typescript/models/Recording.d.ts +47 -0
  98. package/lib/typescript/models/Recording.d.ts.map +1 -1
  99. package/lib/typescript/models/Status.d.ts +5 -1
  100. package/lib/typescript/models/Status.d.ts.map +1 -1
  101. package/lib/typescript/sdkIdentity.d.ts +3 -0
  102. package/lib/typescript/sdkIdentity.d.ts.map +1 -0
  103. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts +70 -0
  104. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts.map +1 -1
  105. package/lib/typescript/uploadRecovery.d.ts +27 -0
  106. package/lib/typescript/uploadRecovery.d.ts.map +1 -0
  107. package/package.json +1 -1
  108. package/scripts/bota_device_sdk_spm_workaround.rb +26 -15
  109. package/src/BotaClient.ts +17 -3
  110. package/src/ble/constants.ts +5 -0
  111. package/src/ble/deviceDiagnostics.ts +238 -0
  112. package/src/client.ts +189 -18
  113. package/src/clientPresence.ts +33 -0
  114. package/src/index.ts +18 -0
  115. package/src/managers/DeviceManager.ts +23 -0
  116. package/src/managers/NativeUploadQueue.ts +330 -0
  117. package/src/managers/RecordingManager.ts +83 -116
  118. package/src/managers/types.ts +7 -1
  119. package/src/managers/uploadRecoveryMetadata.ts +59 -0
  120. package/src/models/Device.ts +43 -0
  121. package/src/models/Recording.ts +52 -0
  122. package/src/models/Status.ts +5 -1
  123. package/src/sdkIdentity.ts +3 -0
  124. package/src/specs/NativeBotaDeviceSDK.ts +66 -0
  125. package/src/uploadRecovery.ts +66 -0
@@ -135,6 +135,15 @@ export type NativeEncryptedUploadV2Recording = {
135
135
  generation: number;
136
136
  ciphertextLength: string;
137
137
  ciphertextSha256: string;
138
+ startedAtMs?: string;
139
+ durationMs?: string;
140
+ plaintextLength?: string;
141
+ storageFormat?: number;
142
+ };
143
+ export type NativePendingRecording = {
144
+ profile: string;
145
+ legacy?: NativeDeviceRecording;
146
+ encrypted?: NativeEncryptedUploadV2Recording;
138
147
  };
139
148
  export type NativeEncryptedUploadV2Capability = {
140
149
  encodingVersion: number;
@@ -195,6 +204,7 @@ export type NativeRecordingTransferResult = {
195
204
  localPath: string;
196
205
  e2eEncrypted: boolean;
197
206
  contentSha256?: string;
207
+ fileSizeBytes: number;
198
208
  };
199
209
  export type NativeRecordingUploadProgress = {
200
210
  taskId: string;
@@ -206,6 +216,7 @@ export type NativeRecordingUploadRequest = {
206
216
  recordingId: string;
207
217
  deviceId: string;
208
218
  localPath: string;
219
+ fileSizeBytes?: number;
209
220
  uploadUrl: string;
210
221
  uploadToken?: string;
211
222
  completeUrl?: string;
@@ -285,6 +296,50 @@ export type NativeDeviceLogLine = {
285
296
  message: string;
286
297
  isBacklog: boolean;
287
298
  };
299
+ export type NativeDiagnosticFault = {
300
+ cpu_id: number;
301
+ cpu_emu: string;
302
+ core_emu: string;
303
+ hsb_emu: string;
304
+ audio_emu: string;
305
+ wireless_emu: string;
306
+ };
307
+ export type NativeDiagnosticExecution = {
308
+ task?: string;
309
+ reti?: string;
310
+ rets?: string;
311
+ pc_trace: ReadonlyArray<string>;
312
+ };
313
+ export type NativeDiagnosticRuntime = {
314
+ heap_free_bytes?: number;
315
+ task_stack_remaining_bytes?: number;
316
+ };
317
+ export type NativeDiagnosticBreadcrumb = {
318
+ delta_ms: number;
319
+ code: string;
320
+ arg0: number;
321
+ };
322
+ export type NativeDiagnosticReport = {
323
+ fault: NativeDiagnosticFault;
324
+ execution: NativeDiagnosticExecution;
325
+ runtime?: NativeDiagnosticRuntime;
326
+ breadcrumbs?: ReadonlyArray<NativeDiagnosticBreadcrumb>;
327
+ };
328
+ export type NativeDiagnosticEvent = {
329
+ event_id: string;
330
+ event_type: string;
331
+ reason_code: string;
332
+ uptime_ms: number;
333
+ signature: string;
334
+ firmware_build_id: string;
335
+ subsystem: string;
336
+ state_before_event: string;
337
+ report?: NativeDiagnosticReport;
338
+ };
339
+ export type NativeDiagnosticsBatch = {
340
+ schema_version: number;
341
+ events: ReadonlyArray<NativeDiagnosticEvent>;
342
+ };
288
343
  export type NativeWiFiConfigResult = {
289
344
  success: boolean;
290
345
  error?: string;
@@ -305,7 +360,16 @@ export type NativeDeviceWiFiScanResult = {
305
360
  networks: ReadonlyArray<NativeWiFiScanNetwork>;
306
361
  currentSsid?: string;
307
362
  };
363
+ export type NativeClientContext = {
364
+ schemaVersion: number;
365
+ sessionId: string;
366
+ sequence: number;
367
+ platform: string;
368
+ sdkPackage: string;
369
+ sdkVersion: string;
370
+ };
308
371
  export interface Spec extends TurboModule {
372
+ nextClientPresence: (deviceId: string) => Promise<NativeClientContext | null>;
309
373
  readonly onDeviceDiscovered: EventEmitter<NativeDiscoveredDevice>;
310
374
  readonly onDeviceDisconnected: EventEmitter<NativeDeviceDisconnection>;
311
375
  readonly onDeviceStatusUpdated: EventEmitter<NativeDeviceStatus>;
@@ -365,16 +429,22 @@ export interface Spec extends TurboModule {
365
429
  startWiFiStatusUpdates: (device: NativeConnectedDevice) => Promise<void>;
366
430
  startDeviceLogs: (device: NativeConnectedDevice) => Promise<void>;
367
431
  stopDeviceLogs: () => Promise<void>;
432
+ readDiagnosticEvents: (device: NativeConnectedDevice) => Promise<NativeDiagnosticsBatch>;
433
+ acknowledgeDiagnosticEvents: (device: NativeConnectedDevice, acceptedEventIds: ReadonlyArray<string>) => Promise<void>;
368
434
  stopStatusUpdates: () => Promise<void>;
369
435
  stopWiFiStatusUpdates: () => Promise<void>;
370
436
  stopScan: () => Promise<void>;
371
437
  syncRecording: (device: NativeConnectedDevice, recording: NativeDeviceRecording, sinkId: string) => Promise<NativeRecordingTransferResult>;
372
438
  syncEncryptedRecordingV2: (device: NativeConnectedDevice, recording: NativeEncryptedUploadV2Recording, operationId: string) => Promise<void>;
439
+ listPendingRecordings: (device: NativeConnectedDevice) => Promise<ReadonlyArray<NativePendingRecording>>;
440
+ cancelEncryptedRecordingV2: (operationId: string) => Promise<void>;
441
+ releaseEncryptedUploadV2Material: (materialRegistrationId: string) => Promise<void>;
373
442
  resolveEncryptedUploadV2Profile: (requestId: string, decision: NativeEncryptedUploadV2ProfileDecision) => Promise<void>;
374
443
  rejectEncryptedUploadV2Profile: (requestId: string, errorCode: string) => Promise<void>;
375
444
  confirmRecording: (device: NativeConnectedDevice, recordingUuid: string) => Promise<void>;
376
445
  uploadRecordingFile: (request: NativeRecordingUploadRequest) => Promise<void>;
377
446
  cancelRecordingUpload: (taskId: string) => Promise<void>;
447
+ releaseRecordingFile: (taskId: string, localPath: string) => Promise<void>;
378
448
  loadCompatibilityUploadQueue: () => Promise<string>;
379
449
  saveCompatibilityUploadQueue: (serializedTasks: string) => Promise<void>;
380
450
  stopAllRecordingOperations: () => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeBotaDeviceSDK.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeBotaDeviceSDK.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeBotaDeviceSDK.d.ts","sourceRoot":"","sources":["../../../src/specs/NativeBotaDeviceSDK.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { UploadInfo, UploadRecoveryContext, UploadRecoveryProvider } from './models/Recording';
2
+ /** A host-owned, authenticated lease. It must permanently reject changed identities. */
3
+ export interface UploadRecoveryBackend {
4
+ scopeKey: string;
5
+ signal: AbortSignal;
6
+ checkScope(): void;
7
+ dispose(): void;
8
+ getRecording(id: string, signal: AbortSignal): Promise<{
9
+ id: string;
10
+ status: string;
11
+ metadata?: Record<string, unknown>;
12
+ content_sha256?: string | null;
13
+ file_size_bytes?: number | null;
14
+ }>;
15
+ getUploadInfo(id: string, relay: boolean, contentType: string | undefined, signal: AbortSignal): Promise<Pick<UploadInfo, 'uploadUrl' | 'relay' | 'contentType'>>;
16
+ completeRecording(id: string, data: {
17
+ duration_seconds?: number;
18
+ file_size_bytes: number;
19
+ content_sha256?: string;
20
+ }, signal: AbortSignal): Promise<unknown>;
21
+ }
22
+ /** Build scoped metadata recovery while native SDK storage retains recording bytes.
23
+ * A null host lease parks work until its original account is available.
24
+ * Even an already-uploaded recording requires the exact backend completion ACK.
25
+ */
26
+ export declare function createUploadRecoveryProvider(openBackend: (task: UploadRecoveryContext) => Promise<UploadRecoveryBackend | null>): UploadRecoveryProvider;
27
+ //# sourceMappingURL=uploadRecovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploadRecovery.d.ts","sourceRoot":"","sources":["../../src/uploadRecovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEpG,wFAAwF;AACxF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,IAAI,IAAI,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC;IAChB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QACrD,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACjE,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC;IAClK,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7J;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAClF,sBAAsB,CA2CxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bota.dev/react-native-app-sdk",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.10",
4
4
  "description": "React Native facade for the Bota App SDK",
5
5
  "packageManager": "npm@12.0.2",
6
6
  "main": "lib/commonjs/index.js",
@@ -25,29 +25,40 @@ module BotaDeviceSDKSPMWorkaround
25
25
  end
26
26
 
27
27
  rewrite_aggregate_modulemap_references(installer)
28
+ installer.pod_targets.each do |pod_target|
29
+ pod_target.build_settings.each do |configuration_name, build_settings|
30
+ path = pod_target.xcconfig_path(configuration_name)
31
+ # Expo can re-save this cached config after the SPM post-install hook.
32
+ rewrite_modulemap_config(build_settings.xcconfig, path)
33
+ end
34
+ end
28
35
  end
29
36
 
30
37
  def self.rewrite_aggregate_modulemap_references(installer)
31
- nested = "${PODS_CONFIGURATION_BUILD_DIR}/#{POD_NAME}/#{POD_NAME}.modulemap"
32
- flattened = "${PODS_CONFIGURATION_BUILD_DIR}/#{POD_NAME}.modulemap"
33
-
34
38
  installer.aggregate_targets.each do |aggregate_target|
35
39
  aggregate_target.xcconfigs.each do |configuration_name, config_file|
36
- changed = false
37
- %w[OTHER_CFLAGS OTHER_SWIFT_FLAGS].each do |key|
38
- value = config_file.attributes[key]
39
- next unless value
40
-
41
- updated = value.gsub(nested, flattened)
42
- next if updated == value
43
-
44
- config_file.attributes[key] = updated
45
- changed = true
46
- end
47
- config_file.save_as(aggregate_target.xcconfig_path(configuration_name)) if changed
40
+ rewrite_modulemap_config(config_file, aggregate_target.xcconfig_path(configuration_name))
48
41
  end
49
42
  end
50
43
  end
51
44
 
45
+ def self.rewrite_modulemap_config(config_file, path)
46
+ nested = "${PODS_CONFIGURATION_BUILD_DIR}/#{POD_NAME}/#{POD_NAME}.modulemap"
47
+ flattened = "${PODS_CONFIGURATION_BUILD_DIR}/#{POD_NAME}.modulemap"
48
+ changed = false
49
+ %w[OTHER_CFLAGS OTHER_SWIFT_FLAGS].each do |key|
50
+ value = config_file.attributes[key]
51
+ next unless value
52
+
53
+ updated = value.gsub(nested, flattened)
54
+ next if updated == value
55
+
56
+ config_file.attributes[key] = updated
57
+ changed = true
58
+ end
59
+ config_file.save_as(path) if changed
60
+ end
61
+
52
62
  private_class_method :rewrite_aggregate_modulemap_references
63
+ private_class_method :rewrite_modulemap_config
53
64
  end
package/src/BotaClient.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import EventEmitter from 'eventemitter3';
2
+ import type { ClientPresence } from './clientPresence';
2
3
 
3
4
  import type { BotaDeviceSDKClient } from './client';
4
5
  import { getCompatibilityClient } from './compatibility/runtime';
5
6
  import { DeviceManager } from './managers/DeviceManager';
6
7
  import { OTAManager } from './managers/OTAManager';
7
8
  import { RecordingManager } from './managers/RecordingManager';
9
+ import { rejectRecordingDataStore } from './managers/uploadRecoveryMetadata';
8
10
  import type {
9
11
  BluetoothState,
10
12
  BotaClientEvents,
@@ -17,15 +19,22 @@ import { logger, type LogHandler } from './utils/logger';
17
19
 
18
20
  const log = logger.tag('BotaClient');
19
21
 
20
- const normalizeConfig = (config: BotaConfig): Required<BotaConfig> => ({
22
+ type NormalizedConfig = Required<Omit<BotaConfig, 'uploadRecoveryProvider' | 'recordingDataStore'>> &
23
+ Pick<BotaConfig, 'uploadRecoveryProvider'>;
24
+
25
+ const normalizeConfig = (config: BotaConfig): NormalizedConfig => ({
21
26
  environment: config.environment ?? 'production',
22
27
  backgroundSyncEnabled: config.backgroundSyncEnabled ?? true,
23
28
  wifiOnlyUpload: config.wifiOnlyUpload ?? false,
24
29
  logLevel: config.logLevel ?? 'warn',
25
30
  debug: config.debug ?? false,
31
+ ...(config.uploadRecoveryProvider ? { uploadRecoveryProvider: config.uploadRecoveryProvider } : {}),
26
32
  });
27
33
 
28
34
  class BotaClientImpl extends EventEmitter<BotaClientEvents> {
35
+ readonly clientPresence: ClientPresence = {
36
+ nextReport: async (deviceId) => this._deviceManager?.clientPresence.nextReport(deviceId) ?? null,
37
+ };
29
38
  private _config: BotaConfig | null = null;
30
39
  private _state: SdkState = 'uninitialized';
31
40
  private _bluetoothState: BluetoothState = 'unknown';
@@ -74,6 +83,11 @@ class BotaClientImpl extends EventEmitter<BotaClientEvents> {
74
83
  }
75
84
 
76
85
  configure(config: BotaConfig = {}): Promise<void> {
86
+ try {
87
+ rejectRecordingDataStore(config.recordingDataStore);
88
+ } catch (error) {
89
+ return Promise.reject(error);
90
+ }
77
91
  if (this._configurePromise && !this._destroyPromise) {
78
92
  return this._configurePromise;
79
93
  }
@@ -141,7 +155,7 @@ class BotaClientImpl extends EventEmitter<BotaClientEvents> {
141
155
  return queued;
142
156
  }
143
157
 
144
- private async performConfigure(config: Required<BotaConfig>): Promise<void> {
158
+ private async performConfigure(config: NormalizedConfig): Promise<void> {
145
159
  if (this._state !== 'uninitialized' || this._nativeOwned) {
146
160
  log.warn('SDK already configured, reconfiguring');
147
161
  await this.releaseOwnerGraph();
@@ -170,7 +184,7 @@ class BotaClientImpl extends EventEmitter<BotaClientEvents> {
170
184
 
171
185
  deviceManager = new DeviceManager();
172
186
  await deviceManager.initialize();
173
- recordingManager = new RecordingManager();
187
+ recordingManager = new RecordingManager({ uploadRecoveryProvider: config.uploadRecoveryProvider });
174
188
  await recordingManager.initialize();
175
189
  otaManager = new OTAManager(deviceManager);
176
190
 
@@ -1,3 +1,8 @@
1
1
  export const DEVICE_LOG_FLAG_BACKLOG = 0x01;
2
2
  export const DEVICE_LOG_FLAG_DROPPED = 0x02;
3
3
  export const BLE_ERROR_STORAGE_KEY_UNAVAILABLE = 0x14;
4
+
5
+ export const DEVICE_DIAGNOSTICS_EVT_META = 0x90;
6
+ export const DEVICE_DIAGNOSTICS_EVT_SIGNATURE = 0x91;
7
+ export const DEVICE_DIAGNOSTICS_EVT_END = 0x92;
8
+ export const DEVICE_DIAGNOSTICS_EVT_DETAIL = 0x95;
@@ -0,0 +1,238 @@
1
+ import { Buffer } from 'buffer';
2
+
3
+ import {
4
+ DEVICE_DIAGNOSTICS_EVT_END,
5
+ DEVICE_DIAGNOSTICS_EVT_DETAIL,
6
+ DEVICE_DIAGNOSTICS_EVT_META,
7
+ DEVICE_DIAGNOSTICS_EVT_SIGNATURE,
8
+ } from './constants';
9
+ import type {
10
+ DeviceDiagnosticEvent,
11
+ DeviceDiagnosticEventType,
12
+ DeviceDiagnosticReasonCode,
13
+ DeviceDiagnosticsBatch,
14
+ } from '../models/Device';
15
+
16
+ const EVENT_TYPES: Record<number, DeviceDiagnosticEventType> = {
17
+ 1: 'reset', 2: 'watchdog', 3: 'hard_fault', 4: 'storage',
18
+ 5: 'power', 6: 'radio', 7: 'security',
19
+ };
20
+ const REASONS: Record<number, DeviceDiagnosticReasonCode> = {
21
+ 1: 'watchdog_timeout', 2: 'cpu_illegal_instruction',
22
+ 3: 'cpu_misaligned_access', 4: 'cpu_stack_overflow',
23
+ 5: 'cpu_usage_fault', 6: 'memory_protection_fault',
24
+ 7: 'invalid_register_read', 8: 'invalid_register_write',
25
+ 9: 'audio_subsystem_fault', 10: 'wireless_subsystem_fault',
26
+ 11: 'flash_mmu_fault', 12: 'low_voltage_reset',
27
+ 255: 'unknown_cpu_exception',
28
+ };
29
+ const SUBSYSTEMS: Record<number, string> = {
30
+ 0: 'system', 1: 'audio', 2: 'wireless', 3: 'storage',
31
+ 4: 'power', 5: 'security',
32
+ };
33
+ const STATES: Record<number, string> = {
34
+ 0: 'boot', 1: 'deep_standby', 2: 'recording', 3: 'upload_preparing',
35
+ 4: 'uploading', 5: 'error_recovery', 6: 'full_sleep',
36
+ };
37
+ const BREADCRUMBS: Record<number, string> = {
38
+ 1: 'boot', 2: 'standby_entered', 3: 'recording_started',
39
+ 4: 'upload_preparing', 5: 'upload_started', 6: 'error_recovery',
40
+ 7: 'full_sleep',
41
+ };
42
+ const DETAIL_WIRE_SIZE = 176;
43
+
44
+ function u64LeHex(bytes: Uint8Array): string {
45
+ return Buffer.from(bytes).reverse().toString('hex').padStart(16, '0');
46
+ }
47
+
48
+ export function diagnosticEventIdCommand(eventId: string): Buffer {
49
+ if (!/^[0-9a-f]{16}$/.test(eventId)) {
50
+ throw new Error('Diagnostic event_id must be 16 lowercase hex characters');
51
+ }
52
+ return Buffer.concat([
53
+ Buffer.from([0x11]),
54
+ Buffer.from(eventId, 'hex').reverse(),
55
+ ]);
56
+ }
57
+
58
+ type PartialEvent = Omit<DeviceDiagnosticEvent, 'signature' | 'firmware_build_id' |
59
+ 'subsystem' | 'state_before_event'> & {
60
+ signature?: string;
61
+ firmware_build_id?: string;
62
+ subsystem?: string;
63
+ state_before_event?: string;
64
+ };
65
+
66
+ interface DetailAssembly {
67
+ buffer: Buffer;
68
+ received: number;
69
+ }
70
+
71
+ function normalizedAddress(value: number): string | undefined {
72
+ if (value === 0) return undefined;
73
+ const region = (value & 0x80000000) !== 0
74
+ ? 'sdram'
75
+ : (value & 0x40000000) !== 0 ? 'ram' : 'rom';
76
+ const offset = (value & 0x3fffffff).toString(16).padStart(8, '0');
77
+ return `${region}:${offset}`;
78
+ }
79
+
80
+ function fixedHex32(value: number): string {
81
+ return value.toString(16).padStart(8, '0');
82
+ }
83
+
84
+ function decodeDetail(bytes: Buffer): Pick<DeviceDiagnosticEvent,
85
+ 'firmware_build_id' | 'subsystem' | 'state_before_event' | 'report'> {
86
+ if (bytes.length !== DETAIL_WIRE_SIZE || bytes[0] !== 1) {
87
+ throw new Error('Unsupported diagnostic detail payload');
88
+ }
89
+ const hasReport = (bytes[1] & 1) !== 0;
90
+ const firmwareBuildId = Buffer.from(bytes.subarray(2, 14)).toString('ascii');
91
+ if (!/^[0-9a-f]{12}$/.test(firmwareBuildId)) {
92
+ throw new Error('Invalid diagnostic firmware build id');
93
+ }
94
+ const common = {
95
+ firmware_build_id: firmwareBuildId,
96
+ subsystem: SUBSYSTEMS[bytes[14]] ?? 'system',
97
+ state_before_event: STATES[bytes[15]] ?? 'unknown',
98
+ };
99
+ if (!hasReport) return common;
100
+
101
+ const pcCount = Math.min(bytes[17], 6);
102
+ const breadcrumbCount = Math.min(bytes[18], 8);
103
+ const runtimeMask = bytes[19];
104
+ const pcTrace: string[] = [];
105
+ for (let index = 0; index < pcCount; index++) {
106
+ const address = normalizedAddress(bytes.readUInt32LE(48 + index * 4));
107
+ if (address) pcTrace.push(address);
108
+ }
109
+ const task = Buffer.from(bytes.subarray(80, 96)).toString('ascii').replace(/\0.*$/, '');
110
+ const breadcrumbs = [];
111
+ for (let index = 0; index < breadcrumbCount; index++) {
112
+ const offset = 96 + index * 10;
113
+ breadcrumbs.push({
114
+ delta_ms: bytes.readInt32LE(offset),
115
+ code: BREADCRUMBS[bytes.readUInt16LE(offset + 4)] ?? 'state_changed',
116
+ arg0: bytes.readInt32LE(offset + 6),
117
+ });
118
+ }
119
+ const reti = normalizedAddress(bytes.readUInt32LE(40));
120
+ const rets = normalizedAddress(bytes.readUInt32LE(44));
121
+ return {
122
+ ...common,
123
+ report: {
124
+ fault: {
125
+ cpu_id: bytes[16],
126
+ cpu_emu: fixedHex32(bytes.readUInt32LE(20)),
127
+ core_emu: fixedHex32(bytes.readUInt32LE(24)),
128
+ hsb_emu: fixedHex32(bytes.readUInt32LE(28)),
129
+ audio_emu: fixedHex32(bytes.readUInt32LE(32)),
130
+ wireless_emu: fixedHex32(bytes.readUInt32LE(36)),
131
+ },
132
+ execution: {
133
+ ...(task ? { task } : {}),
134
+ ...(reti ? { reti } : {}),
135
+ ...(rets ? { rets } : {}),
136
+ pc_trace: pcTrace,
137
+ },
138
+ ...((runtimeMask & 3) !== 0 ? {
139
+ runtime: {
140
+ ...((runtimeMask & 1) !== 0
141
+ ? { heap_free_bytes: bytes.readUInt32LE(72) } : {}),
142
+ ...((runtimeMask & 2) !== 0
143
+ ? { task_stack_remaining_bytes: bytes.readUInt32LE(76) } : {}),
144
+ },
145
+ } : {}),
146
+ ...(breadcrumbs.length ? { breadcrumbs } : {}),
147
+ },
148
+ };
149
+ }
150
+
151
+ export class DeviceDiagnosticsDecoder {
152
+ private events = new Map<number, PartialEvent>();
153
+ private details = new Map<number, DetailAssembly>();
154
+
155
+ push(packet: Buffer): DeviceDiagnosticsBatch | null {
156
+ if (packet.length === 17 && packet[0] === DEVICE_DIAGNOSTICS_EVT_META) {
157
+ const type = EVENT_TYPES[packet[2]];
158
+ if (!type) return null;
159
+ this.events.set(packet[1], {
160
+ event_id: u64LeHex(packet.subarray(9, 17)),
161
+ event_type: type,
162
+ reason_code: REASONS[packet.readUInt16LE(3)] ?? 'unknown_cpu_exception',
163
+ uptime_ms: packet.readUInt32LE(5),
164
+ });
165
+ return null;
166
+ }
167
+ if (packet.length === 10 && packet[0] === DEVICE_DIAGNOSTICS_EVT_SIGNATURE) {
168
+ const event = this.events.get(packet[1]);
169
+ if (event) event.signature = u64LeHex(packet.subarray(2, 10));
170
+ return null;
171
+ }
172
+ if (packet.length >= 6 && packet.length <= 20 &&
173
+ packet[0] === DEVICE_DIAGNOSTICS_EVT_DETAIL) {
174
+ const index = packet[1];
175
+ const offset = packet.readUInt16LE(2);
176
+ const total = packet.readUInt16LE(4);
177
+ if (total !== DETAIL_WIRE_SIZE || offset + packet.length - 6 > total) {
178
+ this.reset();
179
+ throw new Error('Invalid diagnostic detail chunk');
180
+ }
181
+ let detail = this.details.get(index);
182
+ if (offset === 0) {
183
+ if (detail) {
184
+ this.reset();
185
+ throw new Error(`Duplicate diagnostic detail at index ${index}`);
186
+ }
187
+ detail = { buffer: Buffer.alloc(total), received: 0 };
188
+ this.details.set(index, detail);
189
+ }
190
+ if (!detail || detail.received !== offset) {
191
+ this.reset();
192
+ throw new Error(`Out-of-order diagnostic detail at index ${index}`);
193
+ }
194
+ packet.copy(detail.buffer, offset, 6);
195
+ detail.received += packet.length - 6;
196
+ if (detail.received === total) {
197
+ const event = this.events.get(index);
198
+ if (!event) {
199
+ this.reset();
200
+ throw new Error(`Diagnostic detail without metadata at index ${index}`);
201
+ }
202
+ try {
203
+ Object.assign(event, decodeDetail(detail.buffer));
204
+ } catch (error) {
205
+ this.reset();
206
+ throw error;
207
+ }
208
+ }
209
+ return null;
210
+ }
211
+ if (packet.length === 2 && packet[0] === DEVICE_DIAGNOSTICS_EVT_END) {
212
+ const expected = packet[1];
213
+ const events: DeviceDiagnosticEvent[] = [];
214
+ for (let index = 0; index < expected; index++) {
215
+ const event = this.events.get(index);
216
+ if (!event?.signature || !event.firmware_build_id ||
217
+ !event.subsystem || !event.state_before_event ||
218
+ this.details.get(index)?.received !== DETAIL_WIRE_SIZE) {
219
+ this.reset();
220
+ throw new Error(`Incomplete diagnostic event at index ${index}`);
221
+ }
222
+ events.push(event as DeviceDiagnosticEvent);
223
+ }
224
+ const batch: DeviceDiagnosticsBatch = {
225
+ schema_version: 1,
226
+ events,
227
+ };
228
+ this.reset();
229
+ return batch;
230
+ }
231
+ return null;
232
+ }
233
+
234
+ reset(): void {
235
+ this.events.clear();
236
+ this.details.clear();
237
+ }
238
+ }