@mentra/engine 3.2.1-dev.277 → 3.2.1-dev.279

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 (53) hide show
  1. package/build/generated/releaseMetadata.js +5 -5
  2. package/build/generated/releaseMetadata.js.map +1 -1
  3. package/build/services/AcsMeetingService.d.ts +22 -6
  4. package/build/services/AcsMeetingService.d.ts.map +1 -1
  5. package/build/services/AcsMeetingService.js +39 -20
  6. package/build/services/AcsMeetingService.js.map +1 -1
  7. package/build/services/CallGainSweep.d.ts +97 -0
  8. package/build/services/CallGainSweep.d.ts.map +1 -0
  9. package/build/services/CallGainSweep.js +249 -0
  10. package/build/services/CallGainSweep.js.map +1 -0
  11. package/build/services/GlassesMicProbe.d.ts +2 -0
  12. package/build/services/GlassesMicProbe.d.ts.map +1 -1
  13. package/build/services/GlassesMicProbe.js +20 -19
  14. package/build/services/GlassesMicProbe.js.map +1 -1
  15. package/build/services/LocalMiniappRuntime.d.ts +18 -0
  16. package/build/services/LocalMiniappRuntime.d.ts.map +1 -1
  17. package/build/services/LocalMiniappRuntime.js +131 -1
  18. package/build/services/LocalMiniappRuntime.js.map +1 -1
  19. package/build/services/MicSessionManager.d.ts +83 -0
  20. package/build/services/MicSessionManager.d.ts.map +1 -0
  21. package/build/services/MicSessionManager.js +198 -0
  22. package/build/services/MicSessionManager.js.map +1 -0
  23. package/build/services/MicStateCoordinator.d.ts +48 -5
  24. package/build/services/MicStateCoordinator.d.ts.map +1 -1
  25. package/build/services/MicStateCoordinator.js +91 -10
  26. package/build/services/MicStateCoordinator.js.map +1 -1
  27. package/build/services/micPolicy.d.ts +84 -0
  28. package/build/services/micPolicy.d.ts.map +1 -0
  29. package/build/services/micPolicy.js +82 -0
  30. package/build/services/micPolicy.js.map +1 -0
  31. package/build/stores/bluetoothSettingKeys.d.ts.map +1 -1
  32. package/build/stores/bluetoothSettingKeys.js +3 -0
  33. package/build/stores/bluetoothSettingKeys.js.map +1 -1
  34. package/build/stores/settings.d.ts +5 -0
  35. package/build/stores/settings.d.ts.map +1 -1
  36. package/build/stores/settings.js +62 -0
  37. package/build/stores/settings.js.map +1 -1
  38. package/build/utils/pcm16.d.ts +20 -0
  39. package/build/utils/pcm16.d.ts.map +1 -1
  40. package/build/utils/pcm16.js +32 -1
  41. package/build/utils/pcm16.js.map +1 -1
  42. package/package.json +8 -8
  43. package/src/generated/releaseMetadata.ts +5 -5
  44. package/src/services/AcsMeetingService.ts +45 -20
  45. package/src/services/CallGainSweep.ts +318 -0
  46. package/src/services/GlassesMicProbe.ts +20 -17
  47. package/src/services/LocalMiniappRuntime.ts +152 -3
  48. package/src/services/MicSessionManager.ts +255 -0
  49. package/src/services/MicStateCoordinator.ts +91 -10
  50. package/src/services/micPolicy.ts +129 -0
  51. package/src/stores/bluetoothSettingKeys.ts +3 -0
  52. package/src/stores/settings.ts +66 -0
  53. package/src/utils/pcm16.ts +43 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LocalMiniappRuntime.d.ts","sourceRoot":"","sources":["../../src/services/LocalMiniappRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalMiniappRuntime.d.ts","sourceRoot":"","sources":["../../src/services/LocalMiniappRuntime.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ import localDisplayManager from "./LocalDisplayManager";
33
33
  import headingService from "./HeadingService";
34
34
  import localSttFallbackCoordinator from "./LocalSttFallbackCoordinator";
35
35
  import micStateCoordinator from "./MicStateCoordinator";
36
+ import micSessionManager, { MIC_SOURCE_CONFLICT } from "./MicSessionManager";
37
+ import { ENGINE_ONLY_USE_CASES, MIC_USE_CASES, VOICE_CALL_PACKAGES } from "./micPolicy";
36
38
  import { BlobStore } from "./BlobStore";
37
39
  import { CloudAudioSubscriptionSync } from "./CloudAudioSubscriptionSync";
38
40
  import { phoneCameraFovCoordinator } from "./PhoneCameraFovCoordinator";
@@ -369,6 +371,13 @@ class LocalMiniappRuntime {
369
371
  * cloud transcription subscription in buildCloudAudioSubscriptions.
370
372
  */
371
373
  transcriptionHintsByApp = new Map();
374
+ /**
375
+ * Microphone sessions taken through session.mic.acquire, by session id.
376
+ *
377
+ * Bookkeeping only, so a release can be matched to its owner; MicSessionManager holds the real
378
+ * leases and resolves them into hardware state.
379
+ */
380
+ micSessionsByApp = new Map();
372
381
  /** Ping interval handle. */
373
382
  pingIntervalId = null;
374
383
  foregroundProbeTimers = new Map();
@@ -747,6 +756,10 @@ class LocalMiniappRuntime {
747
756
  unregisterApp(packageName) {
748
757
  console.log(`${LOG_TAG}: unregisterApp(${packageName})`);
749
758
  const releasedMicGateOverride = micStateCoordinator.clearMiniappGateOverrides(packageName);
759
+ // Backstop for a miniapp that crashed or was killed mid-call: the microphone profile and the
760
+ // PCM claim must not outlive the app that asked for them.
761
+ this.forgetMicSessions(packageName);
762
+ micSessionManager.releaseOwner(packageName);
750
763
  this.clearForegroundProbe(packageName);
751
764
  this.clearMiniappAuthRefresh(packageName);
752
765
  this.clearMiniappAuthDeliveryRetry(packageName);
@@ -1007,6 +1020,12 @@ class LocalMiniappRuntime {
1007
1020
  case MiniappRequestType.MIC_SET_LOUDNESS_GATE_ENABLED:
1008
1021
  void this.handleMicSetLoudnessGateEnabled(packageName, payload, requestId);
1009
1022
  break;
1023
+ case MiniappRequestType.MIC_ACQUIRE:
1024
+ this.handleMicAcquire(packageName, payload, requestId);
1025
+ break;
1026
+ case MiniappRequestType.MIC_RELEASE:
1027
+ this.handleMicRelease(packageName, payload, requestId);
1028
+ break;
1010
1029
  case MiniappRequestType.PING:
1011
1030
  // SDK should handle this itself; reply PONG just in case
1012
1031
  this.sendToMiniapp(packageName, { type: MiniappResponseType.PONG }, requestId);
@@ -2726,6 +2745,96 @@ class LocalMiniappRuntime {
2726
2745
  });
2727
2746
  }
2728
2747
  }
2748
+ /**
2749
+ * session.mic.acquire — take a semantic microphone session.
2750
+ *
2751
+ * The miniapp names a use case; MicSessionManager and micPolicy decide what that means for the
2752
+ * hardware. This handler is only the gate: who is allowed to ask for what.
2753
+ */
2754
+ handleMicAcquire(packageName, payload, requestId) {
2755
+ const app = this.connectedApps.get(packageName);
2756
+ const hasMicPermission = app?.installedManifest?.permissions?.some((p) => p.type === "MICROPHONE");
2757
+ if (!hasMicPermission) {
2758
+ logPermissionNotDeclared(packageName, "MICROPHONE", "to acquire a microphone session", `{"type": "MICROPHONE"}`);
2759
+ this.sendResult(packageName, requestId, false, undefined, {
2760
+ code: MiniappErrorCode.PERMISSION_NOT_DECLARED,
2761
+ message: `MICROPHONE permission not declared in miniapp.json. Add {"type": "MICROPHONE"} to the "permissions" array.`,
2762
+ permission: "MICROPHONE",
2763
+ operation: MiniappRequestType.MIC_ACQUIRE,
2764
+ });
2765
+ return;
2766
+ }
2767
+ const source = payload.source;
2768
+ const useCase = payload.useCase;
2769
+ if (source !== "glasses" && source !== "phone") {
2770
+ this.sendResult(packageName, requestId, false, undefined, {
2771
+ code: MiniappErrorCode.INVALID_ARGUMENT,
2772
+ message: `source must be "glasses" or "phone"`,
2773
+ });
2774
+ return;
2775
+ }
2776
+ if (!MIC_USE_CASES.includes(useCase)) {
2777
+ this.sendResult(packageName, requestId, false, undefined, {
2778
+ code: MiniappErrorCode.INVALID_ARGUMENT,
2779
+ message: `useCase must be one of ${MIC_USE_CASES.join(", ")}`,
2780
+ });
2781
+ return;
2782
+ }
2783
+ // A voice call gets a microphone profile tuned for close-talk speech, so which app may ask for
2784
+ // one is a product decision, not a permission a manifest can grant itself.
2785
+ if (useCase === "voice_call" && !VOICE_CALL_PACKAGES.includes(packageName)) {
2786
+ this.sendResult(packageName, requestId, false, undefined, {
2787
+ code: MiniappErrorCode.PERMISSION_DENIED,
2788
+ message: `${packageName} is not allowed to acquire a voice_call microphone session`,
2789
+ });
2790
+ return;
2791
+ }
2792
+ // Diagnostic leases exist so the mic probe measures what users actually get. Handing one to a
2793
+ // miniapp would also hand it a glasses lease it could pair with a meeting join.
2794
+ if (ENGINE_ONLY_USE_CASES.includes(useCase)) {
2795
+ this.sendResult(packageName, requestId, false, undefined, {
2796
+ code: MiniappErrorCode.PERMISSION_DENIED,
2797
+ message: `the ${useCase} microphone use case is reserved for the Mentra App`,
2798
+ });
2799
+ return;
2800
+ }
2801
+ try {
2802
+ const session = micSessionManager.acquire({ owner: packageName, source, useCase: useCase });
2803
+ this.micSessionsByApp.set(session.id, { packageName, session });
2804
+ console.log(`${LOG_TAG}: mic_acquire #${session.id} ${useCase}/${source} (by ${packageName})`);
2805
+ this.sendResult(packageName, requestId, true, { sessionId: session.id });
2806
+ }
2807
+ catch (err) {
2808
+ const message = err instanceof Error ? err.message : "mic acquire error";
2809
+ console.warn(`${LOG_TAG}: mic_acquire failed for ${packageName}:`, message);
2810
+ this.sendResult(packageName, requestId, false, undefined, {
2811
+ code: message.startsWith(MIC_SOURCE_CONFLICT) ? MiniappErrorCode.MIC_SOURCE_CONFLICT : MiniappErrorCode.INTERNAL,
2812
+ message,
2813
+ });
2814
+ }
2815
+ }
2816
+ /** session.mic.acquire(...).release() — drop one session, if the caller owns it. */
2817
+ handleMicRelease(packageName, payload, requestId) {
2818
+ const sessionId = payload.sessionId;
2819
+ const entry = typeof sessionId === "number" ? this.micSessionsByApp.get(sessionId) : undefined;
2820
+ if (!entry || entry.packageName !== packageName) {
2821
+ // Idempotent by design: a miniapp releasing twice, or releasing after unregister already
2822
+ // dropped its sessions, is not an error worth failing a teardown path over.
2823
+ this.sendResult(packageName, requestId, true);
2824
+ return;
2825
+ }
2826
+ this.micSessionsByApp.delete(entry.session.id);
2827
+ entry.session.release();
2828
+ console.log(`${LOG_TAG}: mic_release #${entry.session.id} (by ${packageName})`);
2829
+ this.sendResult(packageName, requestId, true);
2830
+ }
2831
+ /** Drop the bookkeeping for every session an app owns. The manager is the source of truth. */
2832
+ forgetMicSessions(packageName) {
2833
+ for (const [id, entry] of this.micSessionsByApp) {
2834
+ if (entry.packageName === packageName)
2835
+ this.micSessionsByApp.delete(id);
2836
+ }
2837
+ }
2729
2838
  /**
2730
2839
  * session.system.scanQr — host camera overlay. Must not clear miniapp
2731
2840
  * foreground; the host seam is responsible for presenting a Modal on top.
@@ -3158,6 +3267,18 @@ class LocalMiniappRuntime {
3158
3267
  return;
3159
3268
  if (!(await this.requireOsPermission(packageName, requestId, PermissionFeatures.MICROPHONE, "microphone")))
3160
3269
  return;
3270
+ // The wearer's voice rides a microphone session, not the meeting. An app allowed to make voice
3271
+ // calls must hold one before the sink starts, or it would get a call configured for dictation.
3272
+ // Other joiners are not required to: without a session the BLE LC3 uplink is simply not
3273
+ // selected and the audio rides the WHIP capture path, exactly as it did before.
3274
+ const glassesSession = micSessionManager.hasGlassesSession(packageName);
3275
+ if (VOICE_CALL_PACKAGES.includes(packageName) && !glassesSession) {
3276
+ this.sendResult(packageName, requestId, false, undefined, {
3277
+ code: MiniappErrorCode.MIC_SESSION_REQUIRED,
3278
+ message: "acquire a glasses microphone session before joining a meeting",
3279
+ });
3280
+ return;
3281
+ }
3161
3282
  const meetingUrl = typeof payload.meetingUrl === "string" ? payload.meetingUrl : "";
3162
3283
  const token = typeof payload.token === "string" ? payload.token : "";
3163
3284
  const displayName = typeof payload.displayName === "string" ? payload.displayName : undefined;
@@ -3210,7 +3331,14 @@ class LocalMiniappRuntime {
3210
3331
  });
3211
3332
  const startedAt = Date.now();
3212
3333
  try {
3213
- const state = await this.joinSoftapMeeting(packageName, { meetingUrl, token, displayName, video, origin });
3334
+ const state = await this.joinSoftapMeeting(packageName, {
3335
+ meetingUrl,
3336
+ token,
3337
+ displayName,
3338
+ video,
3339
+ origin,
3340
+ glassesSession,
3341
+ });
3214
3342
  softapTrace("meeting_join_result", {
3215
3343
  packageName,
3216
3344
  requestId: requestId ?? "none",
@@ -3239,6 +3367,7 @@ class LocalMiniappRuntime {
3239
3367
  videoSource,
3240
3368
  displayName,
3241
3369
  origin,
3370
+ glassesSession,
3242
3371
  ...(video ? { video } : {}),
3243
3372
  });
3244
3373
  this.sendResult(packageName, requestId, true, state);
@@ -3521,6 +3650,7 @@ class LocalMiniappRuntime {
3521
3650
  videoSource: options.videoSource,
3522
3651
  displayName: options.displayName,
3523
3652
  origin: args.origin,
3653
+ glassesSession: args.glassesSession,
3524
3654
  ...(args.video ? { video: args.video } : {}),
3525
3655
  }),
3526
3656
  leaveMeeting: (pkg) => acsMeetingService.leave(pkg),