@mentra/miniapp 0.3.0-dev.0 → 0.3.0-dev.1

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 (55) hide show
  1. package/README.md +8 -6
  2. package/dist/background/index.d.ts +4 -3
  3. package/dist/background/index.d.ts.map +1 -1
  4. package/dist/background/index.js.map +1 -1
  5. package/dist/background/register.d.ts +3 -2
  6. package/dist/background/register.d.ts.map +1 -1
  7. package/dist/background/register.js.map +1 -1
  8. package/dist/index.d.ts +3 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/modules/camera.d.ts +50 -4
  11. package/dist/modules/camera.d.ts.map +1 -1
  12. package/dist/modules/camera.js +20 -5
  13. package/dist/modules/camera.js.map +1 -1
  14. package/dist/modules/events.d.ts +10 -17
  15. package/dist/modules/events.d.ts.map +1 -1
  16. package/dist/modules/events.js +56 -11
  17. package/dist/modules/events.js.map +1 -1
  18. package/dist/modules/phone.d.ts +38 -4
  19. package/dist/modules/phone.d.ts.map +1 -1
  20. package/dist/modules/phone.js +22 -6
  21. package/dist/modules/phone.js.map +1 -1
  22. package/dist/modules/speaker.d.ts +7 -0
  23. package/dist/modules/speaker.d.ts.map +1 -1
  24. package/dist/modules/speaker.js +8 -8
  25. package/dist/modules/speaker.js.map +1 -1
  26. package/dist/modules/transcription.d.ts +10 -2
  27. package/dist/modules/transcription.d.ts.map +1 -1
  28. package/dist/modules/transcription.js +4 -4
  29. package/dist/modules/transcription.js.map +1 -1
  30. package/dist/protocol.d.ts +6 -1
  31. package/dist/protocol.d.ts.map +1 -1
  32. package/dist/protocol.js +6 -1
  33. package/dist/protocol.js.map +1 -1
  34. package/dist/session.d.ts +5 -3
  35. package/dist/session.d.ts.map +1 -1
  36. package/dist/session.js +7 -3
  37. package/dist/session.js.map +1 -1
  38. package/dist/sub-path-types.test-d.d.ts +12 -0
  39. package/dist/sub-path-types.test-d.d.ts.map +1 -1
  40. package/dist/sub-path-types.test-d.js.map +1 -1
  41. package/dist/transport/mock.js +2 -0
  42. package/dist/transport/mock.js.map +1 -1
  43. package/package.json +11 -2
  44. package/src/background/index.ts +3 -3
  45. package/src/background/register.ts +10 -3
  46. package/src/index.ts +2 -2
  47. package/src/modules/camera.ts +75 -13
  48. package/src/modules/events.ts +54 -27
  49. package/src/modules/phone.ts +59 -24
  50. package/src/modules/speaker.ts +17 -2
  51. package/src/modules/transcription.ts +21 -4
  52. package/src/protocol.ts +9 -2
  53. package/src/session.ts +19 -7
  54. package/src/sub-path-types.test-d.ts +12 -1
  55. package/src/transport/mock.ts +3 -0
package/README.md CHANGED
@@ -104,24 +104,24 @@ Convenience wrappers: `onVisibilityChange`, `onCapabilitiesChange`, `onColorSche
104
104
 
105
105
  ## Modules
106
106
 
107
- All event subscribers return an `UnsubscribeFn`. Subscriptions are ref-counted: the SDK only sends `SUBSCRIBE` over the wire when a stream's count transitions 0↔1.
107
+ All event subscribers return an `UnsubscribeFn`. Subscriptions are ref-counted: the SDK sends `SUBSCRIBE` when a stream's active state or routing metadata changes.
108
108
 
109
109
  | Module | Methods |
110
110
  | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
111
111
  | `session.display` | `render(elements, opts?)` — scene API: diffed frames, stable-id in-place updates, `render([])` clears |
112
112
  | `session.speaker` | `play({audioUrl})`, `speak(text, options?)`, `createStream({sampleRate?, volume?})` for bounded 16-bit PCM output, `stop()`, `onStateChange(handler)` |
113
113
  | `session.mic` | `onAudioChunk(handler)`, `onVoiceActivity(handler)`, `stop()`, `hasPermission` |
114
- | `session.transcription` | `on(handler)`, `forLanguage(lang \| [langs], handler)`, `configure({languageHints, vocabulary, diarization})`, `stop()`, `hasPermission` |
114
+ | `session.transcription` | `on(handler, {forceLocal?})`, `forLanguage(lang \| [langs], handler, {forceLocal?})`, `configure({languageHints, vocabulary, diarization})`, `stop()`, `hasPermission` |
115
115
  | `session.translation` | `forLanguagePair(from, to, handler)`, `stop()`, `hasPermission` |
116
116
  | `session.input` | `onButtonPress(handler)`, `onTouch(handler \| gesture, handler \| gestures, handler)` |
117
117
  | `session.location` | `onUpdate(handler)`, `hasPermission` |
118
118
  | `session.imu` | `onHeadPosition(handler)` |
119
119
  | `session.glasses` | `onBattery(handler)`, `onConnection(handler)` |
120
120
  | `session.phone.notifications` | `on(handler)`, `onDismissed(handler)`, `stop()`, `hasPermission` |
121
- | `session.phone.calendar` | `on(handler)`, `stop()`, `hasPermission` |
121
+ | `session.phone.calendar` | `listEvents({startsAt, endsAt, limit?})`, `hasPermission` |
122
122
  | `session.phone` | `onBattery(handler)` |
123
123
  | `session.system` | `share(opts)`, `openUrl(url)`, `copyToClipboard(text)`, `download(opts)` |
124
- | `session.camera` | `takePhoto({size?, compress?, sound?, saveToGallery?})`, `setFov({fov, roiPosition?} \| {preset})`, `hasPermission` |
124
+ | `session.camera` | `takePhoto({size?, mode?, transferMethod?, compress?, sound?, saveToGallery?, zsl?, mfnr?, timeoutMs?, ...})`, `setFov({fov, roiPosition?} \| {preset})`, `hasPermission` |
125
125
  | `session.led` | `turnOn({color?, ontime?, offtime?, count?})`, `turnOff()`, `blink(color, ontime, offtime, count)`, `solid(color, duration)` — resolve after the glasses acknowledge the RGB command |
126
126
  | `session.permissions` | `has(type)`, `getAll()`, `onUpdate(handler)`, `onPermissionError(handler)` |
127
127
  | `session.storage` | `get(key)`, `set(key, value)`, `delete(key)`, `list()` — strings only, scoped to `(userId, packageName)` |
@@ -132,15 +132,17 @@ All event subscribers return an `UnsubscribeFn`. Subscriptions are ref-counted:
132
132
 
133
133
  ### Camera FOV
134
134
 
135
- `await session.camera.setFov({fov, roiPosition})` applies camera FOV/ROI on the glasses and resolves with `CameraFovResult` after the ASG client reports the setting was applied to camera hardware after the restart cooldown. `roiPosition` accepts `"center"`, `"bottom"`, or `"top"` and defaults to `"center"`. You can also call `setFov({preset: "narrow" | "standard" | "wide"})`; presets map to 82, 102, and 118 degrees with center ROI. The call requires `CAMERA` in `miniapp.json` because it controls glasses camera hardware, and rejects with `MiniappRequestError` if the host cannot apply the setting, the glasses only persist it without hardware application, or the glasses report an error.
135
+ `await session.camera.setFov({fov, roiPosition})` applies a temporary, miniapp-owned FOV/ROI override and resolves with `CameraFovResult` after the ASG client reports the setting was applied following the camera restart cooldown. The host restores the previous live miniapp override—or the persistent 118-degree full-sensor base—when this miniapp closes. `roiPosition` accepts `"center"`, `"bottom"`, or `"top"` and defaults to `"center"`. You can also call `setFov({preset: "narrow" | "standard" | "wide"})`; presets map to 82, 102, and 118 degrees with center ROI. The call requires `CAMERA` in `miniapp.json` and rejects with `MiniappRequestError` if the host or glasses cannot apply it.
136
136
 
137
137
  ### Camera Photos
138
138
 
139
139
  `await session.camera.takePhoto(...)` resolves only after the photo is delivered through the phone/cloud upload path. The result includes `{requestId, photoUrl, mimeType, size}`. Glasses-side or phone-relay failures such as `CAMERA_BUSY`, `BATTERY_LOW`, storage errors, or fallback upload failures reject before upload polling completes; intermediate `photo_status` progress and request acceptance alone do not resolve the miniapp photo promise.
140
140
 
141
+ Pass `transferMethod: "ble"` to skip direct Wi-Fi upload and always relay the image through the phone over Bluetooth. The default `"auto"` mode tries direct upload first and falls back to BLE.
142
+
141
143
  ### Transcription language convention
142
144
 
143
- Transcription/translation streams use a colon-suffixed wire format: `transcription:en-US`, `translation:en-US:fr-FR`. `session.transcription.on(handler)` subscribes to `transcription:auto` (cloud auto-detects). The detected language is in the payload. A handler on `transcription:auto` receives any `transcription:<lang>` event — wildcard fan-out — so "give me transcripts in whatever language" works without manual wiring. Use `session.transcription.forLanguage(lang | [langs], handler)` to pin specific languages.
145
+ Transcription/translation streams use a colon-suffixed wire format: `transcription:en-US`, `translation:en-US:fr-FR`. `session.transcription.on(handler)` subscribes to `transcription:auto` (cloud auto-detects). The detected language is in the payload. A handler on `transcription:auto` receives any `transcription:<lang>` event — wildcard fan-out — so "give me transcripts in whatever language" works without manual wiring. Use `session.transcription.forLanguage(lang | [langs], handler)` to pin specific languages. Pass `{forceLocal: true}` as the final argument to either method to require on-device transcription and suppress cloud results for that subscription. Routing is per listener, so a default listener on the same stream can continue receiving cloud transcription.
144
146
 
145
147
  ### Permissions semantics
146
148
 
@@ -15,8 +15,9 @@
15
15
  * separate type-roots on each `exports` entry.
16
16
  */
17
17
  export { MiniappSession, type MiniappSessionOptions } from "../session";
18
- export { registerMiniapp, type MiniappInitHandler } from "./register";
19
- export type { TranscriptionData, TranslationData, ButtonPressData, AudioChunkData, VadData, BatteryData, ConnectionData, WifiData, HeadPositionData, AccelData, LocationData, PhoneNotificationData, NotificationDismissedData, CalendarEventData, HeadingData, TouchData, UnsubscribeFn, } from "../modules/events";
18
+ export { registerMiniapp, type MiniappInitHandler, type TypedMiniappSession } from "./register";
19
+ export type { TranscriptionData, TranslationData, ButtonPressData, AudioChunkData, VadData, BatteryData, ConnectionData, WifiData, HeadPositionData, AccelData, LocationData, PhoneNotificationData, NotificationDismissedData, HeadingData, TouchData, UnsubscribeFn, } from "../modules/events";
20
+ export type { CalendarEvent, CalendarListOptions, CalendarListResult } from "../modules/phone";
20
21
  export { MiniappRequestType, MiniappResponseType, MiniappStreamType, MiniappErrorCode } from "../protocol";
21
22
  export type { ActionContext, ActionHandler, InvokeOptions } from "../modules/actions";
22
23
  export type { DisplayManager } from "../modules/display";
@@ -50,7 +51,7 @@ export type { ViewType, DisplayBreakMode, RenderBox, RenderElement, RenderOption
50
51
  export type { DashboardMode } from "../modules/dashboard";
51
52
  export type { PlayAudioOptions, SpeakOptions, SpeakResult, SpeakerState, SpeakerStateEvent } from "../modules/speaker";
52
53
  export type { ShareOptions, ShareResult, DownloadOptions, DownloadResult } from "../modules/system";
53
- export type { TranscriptionConfig } from "../modules/transcription";
54
+ export type { TranscriptionConfig, TranscriptionOptions } from "../modules/transcription";
54
55
  export type { PermissionErrorEvent } from "../modules/permissions";
55
56
  export type { AuthUpdatePayload, MiniappVisibility, PermissionType, PermissionRecord, GlassesCapabilities, ConnectAckPayload, MiniappAuthState, MiniappRequestError, } from "../session";
56
57
  export type { AuthFetchOptions, AuthModule } from "../modules/auth";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAC,cAAc,EAA6B,MAAM,YAAY,CAAA;AACrE,OAAO,EAAC,eAAe,EAA0B,MAAM,YAAY,CAAA;AAwBnE,uEAAuE;AACvE,yEAAyE;AACzE,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAA;AAoCxG,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,iBAAiB,CAAA;AAEnH,OAAO,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAQ9D,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/background/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAC,cAAc,EAA6B,MAAM,YAAY,CAAA;AACrE,OAAO,EAAC,eAAe,EAAoD,MAAM,YAAY,CAAA;AAwB7F,uEAAuE;AACvE,yEAAyE;AACzE,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAA;AAoCxG,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,iBAAiB,CAAA;AAEnH,OAAO,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAQ9D,OAAO,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,eAAe,CAAA"}
@@ -20,7 +20,8 @@
20
20
  * re-evaluated and the handler fires again with a fresh session.
21
21
  */
22
22
  import { MiniappSession, type MiniappSessionOptions } from "../session";
23
- export type MiniappInitHandler = (session: MiniappSession) => void | Promise<void>;
23
+ export type TypedMiniappSession<TChannels extends object> = MiniappSession<TChannels>;
24
+ export type MiniappInitHandler<TChannels extends object = Record<string, unknown>> = (session: TypedMiniappSession<TChannels>) => void | Promise<void>;
24
25
  /**
25
26
  * Register the miniapp's startup handler. Call once at the top level of
26
27
  * `src/background/index.ts`. Top-level side effects are fine, but the
@@ -34,5 +35,5 @@ export type MiniappInitHandler = (session: MiniappSession) => void | Promise<voi
34
35
  * })
35
36
  * })
36
37
  */
37
- export declare function registerMiniapp(handler: MiniappInitHandler, options?: MiniappSessionOptions): void;
38
+ export declare function registerMiniapp<TChannels extends object = Record<string, unknown>>(handler: MiniappInitHandler<TChannels>, options?: MiniappSessionOptions): void;
38
39
  //# sourceMappingURL=register.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/background/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAC,cAAc,EAAE,KAAK,qBAAqB,EAAC,MAAM,YAAY,CAAA;AAErE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAYlF;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,GAAE,qBAA0B,GAAG,IAAI,CAmCtG"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/background/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAC,cAAc,EAAE,KAAK,qBAAqB,EAAC,MAAM,YAAY,CAAA;AAErE,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,IAAI,cAAc,CAAC,SAAS,CAAC,CAAA;AAErF,MAAM,MAAM,kBAAkB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACnF,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,KACpC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAYzB;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChF,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACtC,OAAO,GAAE,qBAA0B,GAClC,IAAI,CAmCN"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/background/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAC,cAAc,EAA6B,MAAM,YAAY,CAAA;AAcrE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,OAA2B,EAAE,UAAiC,EAAE;IAC9F,MAAM,CAAC,GAAG,UAAoC,CAAA;IAC9C,CAAC,CAAC,oBAAoB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;QAC3C,iEAAiE;QACjE,mDAAmD;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;YAC/B,IAAI,MAAM,IAAI,OAAQ,MAAwB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnE,CAAC;gBAAC,MAAwB,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBAChD,sCAAsC;oBACtC,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,GAAG,CAAC,CAAA;gBAC1E,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACvC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,2DAA2D;YAC3D,8DAA8D;YAC9D,qCAAqC;YACrC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChE,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;gBAChE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,6BAA6B,OAAO,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC,CAAA;YAC3F,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/background/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAC,cAAc,EAA6B,MAAM,YAAY,CAAA;AAkBrE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAsC,EACtC,UAAiC,EAAE;IAEnC,MAAM,CAAC,GAAG,UAAoC,CAAA;IAC9C,CAAC,CAAC,oBAAoB,GAAG,CAAC,UAAkB,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,cAAc,CAAY,OAAO,CAAC,CAAA;QACtD,iEAAiE;QACjE,mDAAmD;QACnD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;YAC/B,IAAI,MAAM,IAAI,OAAQ,MAAwB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACnE,CAAC;gBAAC,MAAwB,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBAChD,sCAAsC;oBACtC,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,GAAG,CAAC,CAAA;gBAC1E,CAAC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACvC,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAA;YAClE,kEAAkE;YAClE,kEAAkE;YAClE,2DAA2D;YAC3D,8DAA8D;YAC9D,qCAAqC;YACrC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChE,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;gBAChE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,6BAA6B,OAAO,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC,CAAA;YAC3F,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -28,7 +28,8 @@ export { MockTransport, isMockExplicitlyRequested } from "./transport/mock";
28
28
  export type { MockTransportOptions } from "./transport/mock";
29
29
  export type { Transport, TransportDisconnectHandler, TransportMessageHandler } from "./transport/types";
30
30
  export type { DisplayBreakMode, RenderBox, RenderElement, RenderOptions, RenderRectStyle, RenderResult, RenderTextStyle, ViewType, } from "./modules/display";
31
- export type { AccelData, AudioChunkData, BatteryData, ButtonPressData, CalendarEventData, ConnectionData, HeadingData, HeadPositionData, LocationData, NotificationDismissedData, PhoneNotificationData, TouchData, TranscriptionData, TranslationData, UnsubscribeFn, VadData, WifiData, } from "./modules/events";
31
+ export type { AccelData, AudioChunkData, BatteryData, ButtonPressData, ConnectionData, HeadingData, HeadPositionData, LocationData, NotificationDismissedData, PhoneNotificationData, TouchData, TranscriptionData, TranslationData, UnsubscribeFn, VadData, WifiData, } from "./modules/events";
32
+ export type { CalendarEvent, CalendarListOptions, CalendarListResult } from "./modules/phone";
32
33
  export type { PlayAudioOptions, SpeakOptions, SpeakResult, SpeakerState, SpeakerStateEvent, SpeakerStreamOptions, SpeakerStreamSampleRate, SpeakerStreamWriteResult, } from "./modules/speaker";
33
34
  export { SpeakerStreamWriter, SPEAKER_STREAM_MAX_BUFFERED_MS, SPEAKER_WRITE_CHUNK_BYTES } from "./modules/speaker";
34
35
  export type { CameraFovPreset, CameraFovRequest, CameraFovResult, CameraRoiPosition, PhotoTaken, SetCameraFovOptions, StartVideoRecordingOptions, StopVideoRecordingOptions, TakePhotoOptions, VideoRecordingStarted, } from "./modules/camera";
@@ -51,7 +52,7 @@ export type { MicModule } from "./modules/mic";
51
52
  export type { ComputedRoute, ComputedRouteStep, ComputeRouteOptions, ComputeRouteResult, LatLng, NavArrived, NavError, NavigationModule, NavManeuver, NavOffRoute, NavPermissionResult, NavPlaceDetails, NavPlaceSuggestion, NavRerouting, NavRoute, NavState, NavStep, NavUpdate, Pivot, PivotEvent, PivotOptions, RouteAvoidances, StartNavigationOptions, TravelMode, } from "./modules/navigation";
52
53
  export type { PermissionsModule, PermissionErrorEvent } from "./modules/permissions";
53
54
  export type { PhoneModule, PhoneNotificationsModule, PhoneCalendarModule } from "./modules/phone";
54
- export type { TranscriptionModule, TranscriptionConfig } from "./modules/transcription";
55
+ export type { TranscriptionModule, TranscriptionConfig, TranscriptionOptions } from "./modules/transcription";
55
56
  export type { TranslationModule } from "./modules/translation";
56
57
  export type { SpeakerModule } from "./modules/speaker";
57
58
  export type { PermissionType, PermissionRecord } from "./session";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,11 @@ export interface TakePhotoOptions {
24
24
  size?: "low" | "medium" | "high" | "max";
25
25
  /** Capture at maximum source quality and optimize BLE delivery for readable text. */
26
26
  mode?: "photo" | "text";
27
+ /**
28
+ * Image delivery path. `auto` tries direct Wi-Fi upload and falls back to
29
+ * BLE; `direct` disables BLE fallback; `ble` always relays through the phone.
30
+ */
31
+ transferMethod?: "auto" | "direct" | "ble";
27
32
  compress?: "none" | "low" | "medium" | "high";
28
33
  sound?: boolean;
29
34
  saveToGallery?: boolean;
@@ -33,6 +38,38 @@ export interface TakePhotoOptions {
33
38
  * manual exposure; ignored otherwise.
34
39
  */
35
40
  exposureTimeNs?: number;
41
+ /** Sensor ISO for this capture only. Only used when `exposureTimeNs` enables manual exposure. */
42
+ iso?: number | null;
43
+ /** After AE convergence, divide the metered exposure by this factor (scan mode). */
44
+ aeExposureDivisor?: number;
45
+ /** Cap ISO after AE metering (scan mode). */
46
+ isoCap?: number;
47
+ /** Request per-capture noise reduction. Sent on the wire; glasses may log `not_implemented`. */
48
+ noiseReduction?: boolean;
49
+ /** Request per-capture edge enhancement. Sent on the wire; glasses may log `not_implemented`. */
50
+ edgeEnhancement?: boolean;
51
+ /**
52
+ * ZSL buffering. Manual and scan stills force it off because fixed sensor controls take priority.
53
+ */
54
+ zsl?: boolean;
55
+ /**
56
+ * MFNR still capture. Manual and scan stills force it off because fixed sensor controls take priority.
57
+ */
58
+ mfnr?: boolean;
59
+ /** ISP digital gain hint. */
60
+ ispDigitalGain?: number;
61
+ /** ISP analog gain hint. */
62
+ ispAnalogGain?: string;
63
+ /**
64
+ * Override the SDK's default 60s request timeout for this capture only.
65
+ * Leave unset for a normal user-triggered capture (the full 60s ceiling is
66
+ * appropriate there). Callers that speculatively fire a capture and may
67
+ * abandon it if the result isn't needed (e.g. a short-lived non-visual
68
+ * assistant turn racing a capture against a ~1s latency cap) should pass a
69
+ * short value here so the abandoned `takePhoto()` promise settles quickly
70
+ * instead of sitting on the default 60s ceiling.
71
+ */
72
+ timeoutMs?: number;
36
73
  }
37
74
  export interface PhotoTaken {
38
75
  /** Request id that correlates ASG status, upload, and phone/cloud logs. */
@@ -43,8 +80,15 @@ export interface PhotoTaken {
43
80
  }
44
81
  export interface WarmUpCameraOptions {
45
82
  size?: "low" | "medium" | "high" | "max";
83
+ /** Match the upcoming capture mode so warm-up and capture share one ASG camera session. */
84
+ mode?: "photo" | "text";
46
85
  exposureTimeNs?: number;
86
+ /** Ready-state hold in milliseconds. Defaults to 15 seconds and is capped at 60 seconds. */
47
87
  durationMs?: number;
88
+ /** ZSL preview buffering for the warm-up session. */
89
+ zsl?: boolean;
90
+ /** MFNR still capture for the warm-up session. */
91
+ mfnr?: boolean;
48
92
  }
49
93
  export interface StartVideoRecordingOptions {
50
94
  /** Video width in pixels. Omit to use the device's saved button-video default. */
@@ -82,10 +126,11 @@ export declare class CameraModule {
82
126
  /** True iff `CAMERA` is declared in the miniapp's manifest. */
83
127
  get hasPermission(): boolean;
84
128
  /**
85
- * Apply camera FOV/ROI settings on the glasses.
129
+ * Apply a session-owned camera FOV/ROI override on the glasses.
86
130
  *
87
131
  * Resolves after the ASG client reports that the setting was applied to camera
88
- * hardware after the restart cooldown. Requires CAMERA permission declared in miniapp.json.
132
+ * hardware after the restart cooldown. The host restores the prior override or persistent base
133
+ * when this miniapp closes. Requires CAMERA permission declared in miniapp.json.
89
134
  */
90
135
  setFov(request: CameraFovRequest): Promise<CameraFovResult>;
91
136
  /**
@@ -100,10 +145,11 @@ export declare class CameraModule {
100
145
  takePhoto(options?: TakePhotoOptions): Promise<PhotoTaken>;
101
146
  /**
102
147
  * Pre-warm the glasses camera so the next takePhoto() is near-instant.
103
- * The camera stays warm for ~durationMs (default 15s); call warmUp() again to
148
+ * The camera stays warm for ~durationMs (default 15s, maximum 60s); call warmUp() again to
104
149
  * extend it. Warm with the same `size` you'll capture with — a mismatched size
105
150
  * forces the camera to reconfigure and loses the speedup. Requires CAMERA
106
- * permission in miniapp.json. Resolves once the camera reports ready.
151
+ * permission in miniapp.json. Resolves once the camera reports ready. The host automatically
152
+ * releases this miniapp's request-owned lease when the miniapp closes.
107
153
  *
108
154
  * Warm-ups are serialized: only one runs at a time and none may start while a
109
155
  * photo is being captured. If the camera is busy (a capture is in flight, or
@@ -1 +1 @@
1
- {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/modules/camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../src/modules/camera.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,11 @@ export class CameraModule {
11
11
  return this.session._hasManifestPermission("CAMERA");
12
12
  }
13
13
  /**
14
- * Apply camera FOV/ROI settings on the glasses.
14
+ * Apply a session-owned camera FOV/ROI override on the glasses.
15
15
  *
16
16
  * Resolves after the ASG client reports that the setting was applied to camera
17
- * hardware after the restart cooldown. Requires CAMERA permission declared in miniapp.json.
17
+ * hardware after the restart cooldown. The host restores the prior override or persistent base
18
+ * when this miniapp closes. Requires CAMERA permission declared in miniapp.json.
18
19
  */
19
20
  async setFov(request) {
20
21
  return this.session.sendRequest({
@@ -36,18 +37,29 @@ export class CameraModule {
36
37
  type: MiniappRequestType.PHOTO,
37
38
  size: options.size ?? "medium",
38
39
  mode: options.mode ?? "photo",
40
+ ...(options.transferMethod !== undefined ? { transferMethod: options.transferMethod } : {}),
39
41
  compress: options.compress ?? "none",
40
42
  sound: options.sound ?? true,
41
43
  saveToGallery: options.saveToGallery ?? false,
42
44
  exposureTimeNs: options.exposureTimeNs,
43
- });
45
+ iso: options.iso,
46
+ aeExposureDivisor: options.aeExposureDivisor,
47
+ isoCap: options.isoCap,
48
+ noiseReduction: options.noiseReduction,
49
+ edgeEnhancement: options.edgeEnhancement,
50
+ zsl: options.zsl,
51
+ mfnr: options.mfnr,
52
+ ispDigitalGain: options.ispDigitalGain,
53
+ ispAnalogGain: options.ispAnalogGain,
54
+ }, options.timeoutMs != null ? { timeoutMs: options.timeoutMs } : undefined);
44
55
  }
45
56
  /**
46
57
  * Pre-warm the glasses camera so the next takePhoto() is near-instant.
47
- * The camera stays warm for ~durationMs (default 15s); call warmUp() again to
58
+ * The camera stays warm for ~durationMs (default 15s, maximum 60s); call warmUp() again to
48
59
  * extend it. Warm with the same `size` you'll capture with — a mismatched size
49
60
  * forces the camera to reconfigure and loses the speedup. Requires CAMERA
50
- * permission in miniapp.json. Resolves once the camera reports ready.
61
+ * permission in miniapp.json. Resolves once the camera reports ready. The host automatically
62
+ * releases this miniapp's request-owned lease when the miniapp closes.
51
63
  *
52
64
  * Warm-ups are serialized: only one runs at a time and none may start while a
53
65
  * photo is being captured. If the camera is busy (a capture is in flight, or
@@ -59,8 +71,11 @@ export class CameraModule {
59
71
  await this.session.sendRequest({
60
72
  type: MiniappRequestType.CAMERA_WARM_UP,
61
73
  size: options.size ?? "medium",
74
+ mode: options.mode ?? "photo",
62
75
  exposureTimeNs: options.exposureTimeNs,
63
76
  durationMs: options.durationMs ?? 15000,
77
+ zsl: options.zsl,
78
+ mfnr: options.mfnr,
64
79
  });
65
80
  }
66
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../src/modules/camera.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAyF9C,MAAM,OAAO,YAAY;IACvB,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,+DAA+D;IAC/D,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAkB;YAC/C,IAAI,EAAE,kBAAkB,CAAC,UAAU;YACnC,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,UAA4B,EAAE;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAa;YAC1C,IAAI,EAAE,kBAAkB,CAAC,KAAK;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;YAC7C,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,UAA+B,EAAE;QAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAO;YACnC,IAAI,EAAE,kBAAkB,CAAC,cAAc;YACvC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,QAAQ;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK;SACxC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,mBAAmB,CAAC,UAAsC,EAAE;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAwB;YACrD,IAAI,EAAE,kBAAkB,CAAC,qBAAqB;YAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;SAC5B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,kBAAkB,CAAC,WAAmB,EAAE,UAAqC,EAAE;QACnF,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAO;YACnC,IAAI,EAAE,kBAAkB,CAAC,oBAAoB;YAC7C,WAAW;YACX,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;SACzC,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"camera.js","sourceRoot":"","sources":["../../src/modules/camera.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * - session.imu.onHeadPosition(...)
10
10
  * - session.location.onUpdate(...)
11
11
  * - session.glasses.onBattery(...) / onConnection(...)
12
- * - session.phone.onNotification(...) / onCalendarEvent(...) / onBattery(...)
12
+ * - session.phone.notifications.on(...) / session.phone.onBattery(...)
13
13
  *
14
14
  * This module's only public method is `subscribe(rawStreamType, handler)` —
15
15
  * a forward-compat escape hatch for new event types not yet wrapped on a
@@ -29,6 +29,8 @@
29
29
  */
30
30
  import { MiniappSession } from "../session";
31
31
  export type UnsubscribeFn = () => void;
32
+ /** @internal Host-selected delivery target for a transcription event. */
33
+ export type TranscriptionEventRoute = "default" | "forceLocal" | "all";
32
34
  export interface TranscriptionData {
33
35
  text: string;
34
36
  isFinal: boolean;
@@ -112,19 +114,6 @@ export interface NotificationDismissedData {
112
114
  /** Unix ms timestamp of the dismissal. */
113
115
  timestamp: number;
114
116
  }
115
- export interface CalendarEventData {
116
- eventId: string;
117
- title: string;
118
- /** ISO 8601 start time. */
119
- dtStart: string;
120
- /** ISO 8601 end time. */
121
- dtEnd: string;
122
- timezone: string;
123
- allDay: boolean;
124
- location: string;
125
- notes: string;
126
- calendarId: string;
127
- }
128
117
  export interface VadData {
129
118
  /** True while the user is speaking (voice detected), false when silent. */
130
119
  status: boolean;
@@ -142,8 +131,10 @@ export interface AudioChunkData {
142
131
  export declare class EventManager {
143
132
  private readonly session;
144
133
  private readonly emitter;
145
- /** Stream -> ref count. Outbound SUBSCRIBE is sent when refs transition 0↔1. */
134
+ /** Stream -> ref count. Outbound SUBSCRIBE tracks active streams and routing changes. */
146
135
  private readonly refCounts;
136
+ /** Transcription stream -> refs that require on-device-only processing. */
137
+ private readonly forceLocalRefCounts;
147
138
  constructor(session: MiniappSession);
148
139
  /**
149
140
  * Generic subscribe. `stream` is the raw wire value, including any language
@@ -157,11 +148,13 @@ export declare class EventManager {
157
148
  * via a separate envelope `type`; the EventManager only routes them
158
149
  * locally.
159
150
  */
160
- subscribe(stream: string, handler: (data: unknown) => void): UnsubscribeFn;
151
+ subscribe(stream: string, handler: (data: unknown) => void, options?: {
152
+ forceLocal?: boolean;
153
+ }): UnsubscribeFn;
161
154
  /** Unsubscribe every handler on every stream this EventManager owns. */
162
155
  unsubscribeAll(): void;
163
156
  /** @internal */
164
- _forwardEvent(stream: string, data: unknown): void;
157
+ _forwardEvent(stream: string, data: unknown, transcriptionRoute?: TranscriptionEventRoute): void;
165
158
  private sendSubscriptionUpdate;
166
159
  }
167
160
  //# sourceMappingURL=events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/modules/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/modules/events.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * - session.imu.onHeadPosition(...)
10
10
  * - session.location.onUpdate(...)
11
11
  * - session.glasses.onBattery(...) / onConnection(...)
12
- * - session.phone.onNotification(...) / onCalendarEvent(...) / onBattery(...)
12
+ * - session.phone.notifications.on(...) / session.phone.onBattery(...)
13
13
  *
14
14
  * This module's only public method is `subscribe(rawStreamType, handler)` —
15
15
  * a forward-compat escape hatch for new event types not yet wrapped on a
@@ -36,8 +36,10 @@ export class EventManager {
36
36
  constructor(session) {
37
37
  this.session = session;
38
38
  this.emitter = new EventEmitter();
39
- /** Stream -> ref count. Outbound SUBSCRIBE is sent when refs transition 0↔1. */
39
+ /** Stream -> ref count. Outbound SUBSCRIBE tracks active streams and routing changes. */
40
40
  this.refCounts = new Map();
41
+ /** Transcription stream -> refs that require on-device-only processing. */
42
+ this.forceLocalRefCounts = new Map();
41
43
  }
42
44
  /**
43
45
  * Generic subscribe. `stream` is the raw wire value, including any language
@@ -51,42 +53,73 @@ export class EventManager {
51
53
  * via a separate envelope `type`; the EventManager only routes them
52
54
  * locally.
53
55
  */
54
- subscribe(stream, handler) {
55
- this.emitter.on(stream, handler);
56
+ subscribe(stream, handler, options = {}) {
56
57
  const isInternal = stream.startsWith("_");
58
+ const forceLocal = options.forceLocal === true && stream.startsWith(`${MiniappStreamType.TRANSCRIPTION}:`);
59
+ const listener = (data, route) => {
60
+ if (stream.startsWith(`${MiniappStreamType.TRANSCRIPTION}:`)) {
61
+ // Hosts that predate routed transcription events omit `route`. Treat
62
+ // those events as the default/cloud path so a forceLocal listener can
63
+ // never accidentally receive cloud text.
64
+ if (forceLocal ? route !== "forceLocal" && route !== "all" : route === "forceLocal")
65
+ return;
66
+ }
67
+ handler(data);
68
+ };
69
+ this.emitter.on(stream, listener);
57
70
  if (!isInternal) {
58
71
  const before = this.refCounts.get(stream) ?? 0;
59
72
  this.refCounts.set(stream, before + 1);
60
- if (before === 0) {
73
+ const forceLocalBefore = this.forceLocalRefCounts.get(stream) ?? 0;
74
+ const defaultBefore = before - forceLocalBefore;
75
+ if (forceLocal)
76
+ this.forceLocalRefCounts.set(stream, forceLocalBefore + 1);
77
+ if (before === 0 || (forceLocal && forceLocalBefore === 0) || (!forceLocal && defaultBefore === 0)) {
61
78
  this.sendSubscriptionUpdate();
62
79
  }
63
80
  }
64
81
  return () => {
65
- this.emitter.off(stream, handler);
82
+ this.emitter.off(stream, listener);
66
83
  if (isInternal)
67
84
  return;
68
85
  const current = this.refCounts.get(stream) ?? 0;
86
+ const forceLocalCurrent = this.forceLocalRefCounts.get(stream) ?? 0;
87
+ let subscriptionChanged = current <= 1;
69
88
  if (current <= 1) {
70
89
  this.refCounts.delete(stream);
71
- this.sendSubscriptionUpdate();
72
90
  }
73
91
  else {
74
92
  this.refCounts.set(stream, current - 1);
75
93
  }
94
+ if (forceLocal) {
95
+ if (forceLocalCurrent <= 1) {
96
+ this.forceLocalRefCounts.delete(stream);
97
+ subscriptionChanged = true;
98
+ }
99
+ else {
100
+ this.forceLocalRefCounts.set(stream, forceLocalCurrent - 1);
101
+ }
102
+ }
103
+ else if (current - forceLocalCurrent <= 1) {
104
+ subscriptionChanged = true;
105
+ }
106
+ if (subscriptionChanged)
107
+ this.sendSubscriptionUpdate();
76
108
  };
77
109
  }
78
110
  /** Unsubscribe every handler on every stream this EventManager owns. */
79
111
  unsubscribeAll() {
80
112
  this.emitter.removeAllListeners();
81
113
  this.refCounts.clear();
114
+ this.forceLocalRefCounts.clear();
82
115
  this.sendSubscriptionUpdate();
83
116
  }
84
117
  // -------------------------------------------------------------------------
85
118
  // Internal — called by MiniappSession when EVENT arrives from phone
86
119
  // -------------------------------------------------------------------------
87
120
  /** @internal */
88
- _forwardEvent(stream, data) {
89
- this.emitter.emit(stream, data);
121
+ _forwardEvent(stream, data, transcriptionRoute) {
122
+ this.emitter.emit(stream, data, transcriptionRoute);
90
123
  // Wildcard fan-out: handlers register under wildcard patterns
91
124
  // ("transcription:auto", "translation:*:<target>", …) but the host
92
125
  // delivers events under the CONCRETE stream key
@@ -95,7 +128,7 @@ export class EventManager {
95
128
  // LocalMiniappRuntime.forwardEvent matches on the host side —
96
129
  // otherwise a wildcard subscriber never fires.
97
130
  if (stream.startsWith("transcription:") && stream !== "transcription:auto") {
98
- this.emitter.emit("transcription:auto", data);
131
+ this.emitter.emit("transcription:auto", data, transcriptionRoute);
99
132
  }
100
133
  else if (stream.startsWith("translation:")) {
101
134
  const parts = stream.split(":");
@@ -113,7 +146,19 @@ export class EventManager {
113
146
  }
114
147
  }
115
148
  sendSubscriptionUpdate() {
116
- const subscriptions = Array.from(this.refCounts.keys()).map((stream) => stream === MiniappStreamType.LOCATION_UPDATE ? { stream: "location_stream", rate: "realtime" } : stream);
149
+ const subscriptions = Array.from(this.refCounts.keys()).map((stream) => {
150
+ if (stream === MiniappStreamType.LOCATION_UPDATE)
151
+ return { stream: "location_stream", rate: "realtime" };
152
+ const forceLocalRefs = this.forceLocalRefCounts.get(stream) ?? 0;
153
+ if (forceLocalRefs === 0)
154
+ return stream;
155
+ const totalRefs = this.refCounts.get(stream) ?? 0;
156
+ return {
157
+ stream,
158
+ forceLocal: true,
159
+ ...(totalRefs > forceLocalRefs ? { includeCloud: true } : {}),
160
+ };
161
+ });
117
162
  this.session.sendOneShot({
118
163
  type: MiniappRequestType.SUBSCRIBE,
119
164
  subscriptions,
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/modules/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/modules/events.ts"],"names":[],"mappings":"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"}