@mentra/miniapp 0.3.0-dev.0 → 3.1.0-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -6
- package/dist/background/index.d.ts +7 -4
- package/dist/background/index.d.ts.map +1 -1
- package/dist/background/index.js +1 -0
- package/dist/background/index.js.map +1 -1
- package/dist/background/register.d.ts +3 -2
- package/dist/background/register.d.ts.map +1 -1
- package/dist/background/register.js.map +1 -1
- package/dist/hardware.d.ts +24 -0
- package/dist/hardware.d.ts.map +1 -0
- package/dist/hardware.js +20 -0
- package/dist/hardware.js.map +1 -0
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/modules/camera.d.ts +50 -4
- package/dist/modules/camera.d.ts.map +1 -1
- package/dist/modules/camera.js +20 -5
- package/dist/modules/camera.js.map +1 -1
- package/dist/modules/events.d.ts +10 -17
- package/dist/modules/events.d.ts.map +1 -1
- package/dist/modules/events.js +56 -11
- package/dist/modules/events.js.map +1 -1
- package/dist/modules/glasses.d.ts +8 -0
- package/dist/modules/glasses.d.ts.map +1 -1
- package/dist/modules/glasses.js +13 -0
- package/dist/modules/glasses.js.map +1 -1
- package/dist/modules/languages.d.ts +42 -0
- package/dist/modules/languages.d.ts.map +1 -0
- package/dist/modules/languages.js +57 -0
- package/dist/modules/languages.js.map +1 -0
- package/dist/modules/mic.d.ts +17 -0
- package/dist/modules/mic.d.ts.map +1 -1
- package/dist/modules/mic.js +28 -1
- package/dist/modules/mic.js.map +1 -1
- package/dist/modules/miniapps.d.ts +2 -0
- package/dist/modules/miniapps.d.ts.map +1 -1
- package/dist/modules/miniapps.js.map +1 -1
- package/dist/modules/phone.d.ts +38 -4
- package/dist/modules/phone.d.ts.map +1 -1
- package/dist/modules/phone.js +22 -6
- package/dist/modules/phone.js.map +1 -1
- package/dist/modules/speaker.d.ts +12 -0
- package/dist/modules/speaker.d.ts.map +1 -1
- package/dist/modules/speaker.js +7 -8
- package/dist/modules/speaker.js.map +1 -1
- package/dist/modules/stream.d.ts +6 -2
- package/dist/modules/stream.d.ts.map +1 -1
- package/dist/modules/stream.js +1 -0
- package/dist/modules/stream.js.map +1 -1
- package/dist/modules/system.d.ts +20 -1
- package/dist/modules/system.d.ts.map +1 -1
- package/dist/modules/system.js +13 -1
- package/dist/modules/system.js.map +1 -1
- package/dist/modules/transcription.d.ts +35 -8
- package/dist/modules/transcription.d.ts.map +1 -1
- package/dist/modules/transcription.js +32 -12
- package/dist/modules/transcription.js.map +1 -1
- package/dist/modules/translation.d.ts +9 -3
- package/dist/modules/translation.d.ts.map +1 -1
- package/dist/modules/translation.js +5 -3
- package/dist/modules/translation.js.map +1 -1
- package/dist/protocol.d.ts +24 -2
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +24 -2
- package/dist/protocol.js.map +1 -1
- package/dist/react/capsuleHeaderLayout.d.ts +3 -0
- package/dist/react/capsuleHeaderLayout.d.ts.map +1 -0
- package/dist/react/capsuleHeaderLayout.js +5 -0
- package/dist/react/capsuleHeaderLayout.js.map +1 -0
- package/dist/react/useCapsuleHeaderStyle.d.ts.map +1 -1
- package/dist/react/useCapsuleHeaderStyle.js +6 -1
- package/dist/react/useCapsuleHeaderStyle.js.map +1 -1
- package/dist/session.d.ts +5 -3
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +7 -3
- package/dist/session.js.map +1 -1
- package/dist/sub-path-types.test-d.d.ts +12 -0
- package/dist/sub-path-types.test-d.d.ts.map +1 -1
- package/dist/sub-path-types.test-d.js.map +1 -1
- package/dist/transport/mock.js +5 -0
- package/dist/transport/mock.js.map +1 -1
- package/package.json +16 -3
- package/src/background/index.ts +18 -4
- package/src/background/register.ts +10 -3
- package/src/hardware.ts +25 -0
- package/src/index.ts +23 -9
- package/src/modules/camera.ts +75 -13
- package/src/modules/events.ts +54 -27
- package/src/modules/glasses.ts +14 -0
- package/src/modules/languages.ts +72 -0
- package/src/modules/mic.ts +30 -1
- package/src/modules/miniapps.ts +2 -0
- package/src/modules/phone.ts +59 -24
- package/src/modules/speaker.ts +21 -2
- package/src/modules/stream.ts +7 -2
- package/src/modules/system.ts +26 -1
- package/src/modules/transcription.ts +63 -16
- package/src/modules/translation.ts +22 -8
- package/src/protocol.ts +29 -3
- package/src/react/capsuleHeaderLayout.ts +11 -0
- package/src/react/useCapsuleHeaderStyle.ts +6 -1
- package/src/session.ts +19 -7
- package/src/sub-path-types.test-d.ts +12 -1
- package/src/transport/mock.ts +7 -0
package/dist/modules/speaker.js
CHANGED
|
@@ -166,25 +166,24 @@ export class SpeakerModule {
|
|
|
166
166
|
stopOtherAudio: options.stopOtherAudio ?? false,
|
|
167
167
|
}, { timeoutMs: 0 });
|
|
168
168
|
}
|
|
169
|
-
/**
|
|
170
|
-
* Speak text through the phone. The host streams cloud TTS when connected,
|
|
171
|
-
* then falls back to local offline TTS.
|
|
172
|
-
*
|
|
173
|
-
* Rejects with a MiniappRequestError containing a `code` field on cloud-side
|
|
174
|
-
* TTS failures: `TTS_TEXT_TOO_LONG`, `TTS_INVALID_VOICE`, `TTS_UPSTREAM_ERROR`.
|
|
175
|
-
*/
|
|
176
169
|
async speak(text, options = {}) {
|
|
170
|
+
const normalized = Array.isArray(text) ? text.map((sentence) => sentence.trim()).filter(Boolean) : text.trim();
|
|
171
|
+
if ((Array.isArray(normalized) && normalized.length === 0) || normalized === "") {
|
|
172
|
+
throw { code: MiniappErrorCode.INTERNAL, message: "speak requires at least one non-empty sentence" };
|
|
173
|
+
}
|
|
177
174
|
try {
|
|
178
175
|
// Like play(): resolves only when TTS playback completes, so opt out of the
|
|
179
176
|
// default request timeout (long text can outlast it). Settled by the host
|
|
180
177
|
// result, a stop(), or disconnect.
|
|
181
178
|
const result = await this.session.sendRequest({
|
|
182
179
|
type: MiniappRequestType.SPEAK,
|
|
183
|
-
text,
|
|
180
|
+
text: normalized,
|
|
184
181
|
voice_id: options.voice_id,
|
|
185
182
|
voice_settings: options.voice_settings,
|
|
186
183
|
volume: options.volume,
|
|
187
184
|
stopOtherAudio: options.stopOtherAudio ?? false,
|
|
185
|
+
enableSanitization: options.enableSanitization ?? true,
|
|
186
|
+
forceLocal: options.forceLocal ?? false,
|
|
188
187
|
}, { timeoutMs: 0 });
|
|
189
188
|
return result ?? { completed: true };
|
|
190
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speaker.js","sourceRoot":"","sources":["../../src/modules/speaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAC,gBAAgB,EAAE,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAEhE,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"speaker.js","sourceRoot":"","sources":["../../src/modules/speaker.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/stream.d.ts
CHANGED
|
@@ -70,8 +70,12 @@ export interface StartStreamOptions {
|
|
|
70
70
|
* and automatic recording.
|
|
71
71
|
* - "whip": sub-second WebRTC playback (use `webrtcUrl`/WHEP), but no
|
|
72
72
|
* HLS/DASH and no recording.
|
|
73
|
+
* - "rtmp": RTMPS ingest over TCP 443 → HLS playback. Use when WHIP/SRT
|
|
74
|
+
* UDP is blocked (then play `hlsUrl`, not WHEP).
|
|
73
75
|
*/
|
|
74
|
-
ingest?: "srt" | "whip";
|
|
76
|
+
ingest?: "srt" | "whip" | "rtmp";
|
|
77
|
+
/** Optional Bearer token for direct WHIP Authorization (custom authenticated endpoints). */
|
|
78
|
+
authToken?: string;
|
|
75
79
|
}
|
|
76
80
|
export interface StreamResult {
|
|
77
81
|
streamId: string;
|
|
@@ -89,7 +93,7 @@ export interface StreamResult {
|
|
|
89
93
|
/** Managed streams only: WHEP playback URL (present in "webrtc" mode). */
|
|
90
94
|
webrtcUrl?: string;
|
|
91
95
|
}
|
|
92
|
-
/** Live encoder telemetry
|
|
96
|
+
/** Live encoder and device telemetry emitted periodically by supported glasses firmware. */
|
|
93
97
|
export interface StreamLiveStats {
|
|
94
98
|
/** Current encoded video bitrate in bits per second. */
|
|
95
99
|
bitrate?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/modules/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AAEzC,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;IACnC,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,OAAO,EAAE,MAAM,CAAA;QACf,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAC3B,CAAA;CACF;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAA;IAClD,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,oEAAoE;IACpE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/modules/stream.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/stream.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/modules/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/modules/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAA;AAoH9C,MAAM,OAAO,YAAY;IACvB,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW,CAAC,UAA8B,EAAE;QAChD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAe;gBAC5C,IAAI,EAAE,kBAAkB,CAAC,YAAY;gBACrC,SAAS,EAAE,OAAO,CAAC,MAAM;gBACzB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;gBAC5B,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAe;YAC5C,IAAI,EAAE,kBAAkB,CAAC,oBAAoB;YAC7C,oBAAoB,EAAE,OAAO,CAAC,YAAY;YAC1C,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,IAAI,CAAC,QAAiB;QAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAO;YACnC,IAAI,EAAE,kBAAkB,CAAC,WAAW;YACpC,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;CACF"}
|
package/dist/modules/system.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview SystemModule — OS-level utilities (share, open URL, clipboard, download).
|
|
2
|
+
* @fileoverview SystemModule — OS-level utilities (share, open URL, clipboard, download, QR scan).
|
|
3
3
|
*
|
|
4
4
|
* These bridge to native phone capabilities via LocalMiniappRuntime.
|
|
5
5
|
*/
|
|
@@ -30,6 +30,19 @@ export interface DownloadResult {
|
|
|
30
30
|
success: boolean;
|
|
31
31
|
cancelled?: boolean;
|
|
32
32
|
}
|
|
33
|
+
export interface ScanQrOptions {
|
|
34
|
+
/** Header title on the phone scanner overlay. */
|
|
35
|
+
title?: string;
|
|
36
|
+
/** Hint shown over the camera viewfinder. */
|
|
37
|
+
hint?: string;
|
|
38
|
+
}
|
|
39
|
+
export type ScanQrResult = {
|
|
40
|
+
data: string;
|
|
41
|
+
cancelled?: false;
|
|
42
|
+
} | {
|
|
43
|
+
cancelled: true;
|
|
44
|
+
data?: undefined;
|
|
45
|
+
};
|
|
33
46
|
export declare class SystemModule {
|
|
34
47
|
private readonly session;
|
|
35
48
|
constructor(session: MiniappSession);
|
|
@@ -41,5 +54,11 @@ export declare class SystemModule {
|
|
|
41
54
|
copyToClipboard(text: string): Promise<void>;
|
|
42
55
|
/** Download a file. Opens the OS share sheet so user can choose save location. */
|
|
43
56
|
download(options: DownloadOptions): Promise<DownloadResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Open the phone camera QR scanner as a host overlay. Does not unmount the
|
|
59
|
+
* miniapp (so live sessions survive the scan). Resolves with the raw QR
|
|
60
|
+
* payload, or `{cancelled: true}` if the user dismisses the scanner.
|
|
61
|
+
*/
|
|
62
|
+
scanQr(options?: ScanQrOptions): Promise<ScanQrResult>;
|
|
44
63
|
}
|
|
45
64
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/modules/system.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,sDAAsD;IAChD,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAQxD,uFAAuF;IACvF,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO1B,yCAAyC;IACnC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,kFAAkF;IAC5E,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/modules/system.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,YAAY,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAC,GAAG;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAAC,CAAA;AAElG,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,cAAc;IAEpD,sDAAsD;IAChD,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAQxD,uFAAuF;IACvF,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAO1B,yCAAyC;IACnC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,kFAAkF;IAC5E,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAQjE;;;;OAIG;IACG,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;CAUjE"}
|
package/dist/modules/system.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview SystemModule — OS-level utilities (share, open URL, clipboard, download).
|
|
2
|
+
* @fileoverview SystemModule — OS-level utilities (share, open URL, clipboard, download, QR scan).
|
|
3
3
|
*
|
|
4
4
|
* These bridge to native phone capabilities via LocalMiniappRuntime.
|
|
5
5
|
*/
|
|
@@ -38,5 +38,17 @@ export class SystemModule {
|
|
|
38
38
|
});
|
|
39
39
|
return result ?? { success: false };
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Open the phone camera QR scanner as a host overlay. Does not unmount the
|
|
43
|
+
* miniapp (so live sessions survive the scan). Resolves with the raw QR
|
|
44
|
+
* payload, or `{cancelled: true}` if the user dismisses the scanner.
|
|
45
|
+
*/
|
|
46
|
+
async scanQr(options = {}) {
|
|
47
|
+
const result = await this.session.sendRequest({
|
|
48
|
+
type: MiniappRequestType.SCAN_QR,
|
|
49
|
+
...options,
|
|
50
|
+
}, { timeoutMs: 0 });
|
|
51
|
+
return result ?? { cancelled: true };
|
|
52
|
+
}
|
|
41
53
|
}
|
|
42
54
|
//# sourceMappingURL=system.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/modules/system.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/modules/system.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA0ChD,MAAM,OAAO,YAAY;IACvB,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;IAAG,CAAC;IAExD,sDAAsD;IACtD,KAAK,CAAC,KAAK,CAAC,OAAqB;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAc;YACzD,IAAI,EAAE,kBAAkB,CAAC,KAAK;YAC9B,GAAG,OAAO;SACX,CAAC,CAAA;QACF,OAAO,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACrC,CAAC;IAED,uFAAuF;IACvF,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YACvB,IAAI,EAAE,kBAAkB,CAAC,QAAQ;YACjC,GAAG;SACJ,CAAC,CAAA;IACJ,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAO;YACnC,IAAI,EAAE,kBAAkB,CAAC,cAAc;YACvC,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAiB;YAC5D,IAAI,EAAE,kBAAkB,CAAC,QAAQ;YACjC,GAAG,OAAO;SACX,CAAC,CAAA;QACF,OAAO,MAAM,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,UAAyB,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAC3C;YACE,IAAI,EAAE,kBAAkB,CAAC,OAAO;YAChC,GAAG,OAAO;SACX,EACD,EAAC,SAAS,EAAE,CAAC,EAAC,CACf,CAAA;QACD,OAAO,MAAM,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAA;IACtC,CAAC;CACF"}
|
|
@@ -19,15 +19,29 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { MiniappSession } from "../session";
|
|
21
21
|
import type { TranscriptionData, UnsubscribeFn } from "./events";
|
|
22
|
+
import type { LanguageHint, TranscriptionLanguage } from "./languages";
|
|
22
23
|
/** Configuration for cloud-side transcription behavior. */
|
|
23
24
|
export interface TranscriptionConfig {
|
|
24
|
-
/**
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Language hints to improve auto-detection accuracy. Bare ISO 639-1 codes
|
|
27
|
+
* from the registry (e.g. ["en", "ja"]); registry BCP-47 tags are accepted
|
|
28
|
+
* and normalized ("en-US" -> "en"). Anything else throws
|
|
29
|
+
* `MiniappValidationError`.
|
|
30
|
+
*/
|
|
31
|
+
languageHints?: LanguageHint[];
|
|
26
32
|
/** Custom vocabulary / boosted terms (e.g. ["MentraOS", "HIPAA"]). */
|
|
27
33
|
vocabulary?: string[];
|
|
28
34
|
/** Enable speaker diarisation. Defaults vary by provider. */
|
|
29
35
|
diarization?: boolean;
|
|
30
36
|
}
|
|
37
|
+
export interface TranscriptionOptions {
|
|
38
|
+
/**
|
|
39
|
+
* Use only on-device STT for this listener; never deliver cloud transcripts.
|
|
40
|
+
* Other listeners on the same stream keep their own routing choice. Requires
|
|
41
|
+
* a downloaded local STT model.
|
|
42
|
+
*/
|
|
43
|
+
forceLocal?: boolean;
|
|
44
|
+
}
|
|
31
45
|
export declare class TranscriptionModule {
|
|
32
46
|
private readonly session;
|
|
33
47
|
private readonly unsubs;
|
|
@@ -41,21 +55,34 @@ export declare class TranscriptionModule {
|
|
|
41
55
|
* (handlers on `transcription:auto` receive any `transcription:<lang>`
|
|
42
56
|
* event) preserves existing semantics.
|
|
43
57
|
*/
|
|
44
|
-
on(handler: (data: TranscriptionData) => void): UnsubscribeFn;
|
|
58
|
+
on(handler: (data: TranscriptionData) => void, options?: TranscriptionOptions): UnsubscribeFn;
|
|
45
59
|
/**
|
|
46
60
|
* Subscribe to transcription for one or more specific languages. Each call
|
|
47
61
|
* is independent; multiple can be active simultaneously.
|
|
48
62
|
*
|
|
49
|
-
*
|
|
63
|
+
* Languages are validated against the platform registry
|
|
64
|
+
* (`SUPPORTED_TRANSCRIPTION_LANGUAGES`): registry BCP-47 tags pass through,
|
|
65
|
+
* bare registry codes canonicalize ("fr" -> "fr-FR"), anything else throws
|
|
66
|
+
* `MiniappValidationError` immediately — an invalid language must never
|
|
67
|
+
* become a subscription that silently transcribes the wrong thing
|
|
68
|
+
* (OS-1746 / issue 021).
|
|
69
|
+
*
|
|
70
|
+
* @param language - Registry tag(s), e.g. `"en-US"` or `["en-US", "es-ES"]`.
|
|
50
71
|
* @param handler - Called for every event in any of the listed languages.
|
|
51
72
|
*/
|
|
52
|
-
forLanguage(language:
|
|
73
|
+
forLanguage(language: TranscriptionLanguage | TranscriptionLanguage[], handler: (data: TranscriptionData) => void, options?: TranscriptionOptions): UnsubscribeFn;
|
|
53
74
|
/**
|
|
54
75
|
* Apply transcription configuration (language hints, custom vocabulary,
|
|
55
|
-
* diarisation toggle).
|
|
56
|
-
*
|
|
76
|
+
* diarisation toggle). Hints are validated against the registry and
|
|
77
|
+
* normalized to bare codes ("en-US" -> "en"); unknown values throw
|
|
78
|
+
* `MiniappValidationError` synchronously.
|
|
79
|
+
*
|
|
80
|
+
* Sent to the phone runtime as a REQUEST (not a one-shot) so the returned
|
|
81
|
+
* promise rejects if the runtime cannot apply it — a config that the
|
|
82
|
+
* platform ignores must be loud, not silent (issue 021 S3). Cached locally
|
|
83
|
+
* so the runtime can re-apply on reconnect.
|
|
57
84
|
*/
|
|
58
|
-
configure(config: TranscriptionConfig): void
|
|
85
|
+
configure(config: TranscriptionConfig): Promise<void>;
|
|
59
86
|
/** Tear down every transcription subscription this module owns. */
|
|
60
87
|
stop(): void;
|
|
61
88
|
/** True iff `MICROPHONE` is declared in the miniapp's manifest. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcription.d.ts","sourceRoot":"","sources":["../../src/modules/transcription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAE9D,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC
|
|
1
|
+
{"version":3,"file":"transcription.d.ts","sourceRoot":"","sources":["../../src/modules/transcription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAE9D,OAAO,KAAK,EAAC,YAAY,EAAE,qBAAqB,EAAC,MAAM,aAAa,CAAA;AAEpE,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAA;IAC9B,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,qBAAa,mBAAmB;IAIlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,aAAa,CAAmC;gBAE3B,OAAO,EAAE,cAAc;IAEpD;;;;;;;OAOG;IACH,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAAE,OAAO,GAAE,oBAAyB,GAAG,aAAa;IAMjG;;;;;;;;;;;;;OAaG;IACH,WAAW,CACT,QAAQ,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EACzD,OAAO,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC1C,OAAO,GAAE,oBAAyB,GACjC,aAAa;IA4BhB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,mEAAmE;IACnE,IAAI,IAAI,IAAI;IAWZ,mEAAmE;IACnE,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,0EAA0E;IAC1E,UAAU,IAAI,mBAAmB,GAAG,IAAI;IAMxC,OAAO,CAAC,KAAK;CAOd"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
* rejects with PERMISSION_NOT_DECLARED otherwise.
|
|
19
19
|
*/
|
|
20
20
|
import { MiniappRequestType, MiniappStreamType } from "../protocol";
|
|
21
|
+
import { requireLanguageHint, requireTranscriptionLanguage } from "./languages";
|
|
21
22
|
export class TranscriptionModule {
|
|
22
23
|
constructor(session) {
|
|
23
24
|
this.session = session;
|
|
@@ -32,23 +33,30 @@ export class TranscriptionModule {
|
|
|
32
33
|
* (handlers on `transcription:auto` receive any `transcription:<lang>`
|
|
33
34
|
* event) preserves existing semantics.
|
|
34
35
|
*/
|
|
35
|
-
on(handler) {
|
|
36
|
-
return this.track(this.session._subscribe(`${MiniappStreamType.TRANSCRIPTION}:auto`, handler));
|
|
36
|
+
on(handler, options = {}) {
|
|
37
|
+
return this.track(this.session._subscribe(`${MiniappStreamType.TRANSCRIPTION}:auto`, handler, options));
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
40
|
* Subscribe to transcription for one or more specific languages. Each call
|
|
40
41
|
* is independent; multiple can be active simultaneously.
|
|
41
42
|
*
|
|
42
|
-
*
|
|
43
|
+
* Languages are validated against the platform registry
|
|
44
|
+
* (`SUPPORTED_TRANSCRIPTION_LANGUAGES`): registry BCP-47 tags pass through,
|
|
45
|
+
* bare registry codes canonicalize ("fr" -> "fr-FR"), anything else throws
|
|
46
|
+
* `MiniappValidationError` immediately — an invalid language must never
|
|
47
|
+
* become a subscription that silently transcribes the wrong thing
|
|
48
|
+
* (OS-1746 / issue 021).
|
|
49
|
+
*
|
|
50
|
+
* @param language - Registry tag(s), e.g. `"en-US"` or `["en-US", "es-ES"]`.
|
|
43
51
|
* @param handler - Called for every event in any of the listed languages.
|
|
44
52
|
*/
|
|
45
|
-
forLanguage(language, handler) {
|
|
46
|
-
const langs = Array.isArray(language) ? language : [language];
|
|
53
|
+
forLanguage(language, handler, options = {}) {
|
|
54
|
+
const langs = (Array.isArray(language) ? language : [language]).map((lang) => requireTranscriptionLanguage(lang, "transcription.forLanguage(language)"));
|
|
47
55
|
if (langs.length === 0)
|
|
48
56
|
return () => { };
|
|
49
57
|
const unsubs = [];
|
|
50
58
|
for (const lang of langs) {
|
|
51
|
-
unsubs.push(this.session._subscribe(`${MiniappStreamType.TRANSCRIPTION}:${lang}`, handler));
|
|
59
|
+
unsubs.push(this.session._subscribe(`${MiniappStreamType.TRANSCRIPTION}:${lang}`, handler, options));
|
|
52
60
|
}
|
|
53
61
|
const combined = () => {
|
|
54
62
|
for (const u of unsubs) {
|
|
@@ -64,15 +72,27 @@ export class TranscriptionModule {
|
|
|
64
72
|
}
|
|
65
73
|
/**
|
|
66
74
|
* Apply transcription configuration (language hints, custom vocabulary,
|
|
67
|
-
* diarisation toggle).
|
|
68
|
-
*
|
|
75
|
+
* diarisation toggle). Hints are validated against the registry and
|
|
76
|
+
* normalized to bare codes ("en-US" -> "en"); unknown values throw
|
|
77
|
+
* `MiniappValidationError` synchronously.
|
|
78
|
+
*
|
|
79
|
+
* Sent to the phone runtime as a REQUEST (not a one-shot) so the returned
|
|
80
|
+
* promise rejects if the runtime cannot apply it — a config that the
|
|
81
|
+
* platform ignores must be loud, not silent (issue 021 S3). Cached locally
|
|
82
|
+
* so the runtime can re-apply on reconnect.
|
|
69
83
|
*/
|
|
70
84
|
configure(config) {
|
|
71
|
-
|
|
72
|
-
|
|
85
|
+
const normalized = {
|
|
86
|
+
...config,
|
|
87
|
+
languageHints: config.languageHints?.map((hint) => requireLanguageHint(hint, "transcription.configure(languageHints)")),
|
|
88
|
+
};
|
|
89
|
+
this.currentConfig = { ...normalized };
|
|
90
|
+
return this.session
|
|
91
|
+
.sendRequest({
|
|
73
92
|
type: MiniappRequestType.TRANSCRIPTION_CONFIG,
|
|
74
|
-
config: { ...
|
|
75
|
-
})
|
|
93
|
+
config: { ...normalized },
|
|
94
|
+
})
|
|
95
|
+
.then(() => undefined);
|
|
76
96
|
}
|
|
77
97
|
/** Tear down every transcription subscription this module owns. */
|
|
78
98
|
stop() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcription.js","sourceRoot":"","sources":["../../src/modules/transcription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"transcription.js","sourceRoot":"","sources":["../../src/modules/transcription.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAA;AAGjE,OAAO,EAAC,mBAAmB,EAAE,4BAA4B,EAAC,MAAM,aAAa,CAAA;AA2B7E,MAAM,OAAO,mBAAmB;IAI9B,YAA6B,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QAHnC,WAAM,GAAG,IAAI,GAAG,EAAiB,CAAA;QAC1C,kBAAa,GAA+B,IAAI,CAAA;IAED,CAAC;IAExD;;;;;;;OAOG;IACH,EAAE,CAAC,OAA0C,EAAE,UAAgC,EAAE;QAC/E,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,iBAAiB,CAAC,aAAa,OAAO,EAAE,OAAkC,EAAE,OAAO,CAAC,CAChH,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,WAAW,CACT,QAAyD,EACzD,OAA0C,EAC1C,UAAgC,EAAE;QAElC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3E,4BAA4B,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAC1E,CAAA;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;QAEvC,MAAM,MAAM,GAAoB,EAAE,CAAA;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CAAC,UAAU,CACrB,GAAG,iBAAiB,CAAC,aAAa,IAAI,IAAI,EAAE,EAC5C,OAAkC,EAClC,OAAO,CACR,CACF,CAAA;QACH,CAAC;QACD,MAAM,QAAQ,GAAkB,GAAG,EAAE;YACnC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,CAAC,EAAE,CAAA;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACH,SAAS,CAAC,MAA2B;QACnC,MAAM,UAAU,GAAwB;YACtC,GAAG,MAAM;YACT,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,mBAAmB,CAAC,IAAI,EAAE,wCAAwC,CAAC,CACpE;SACF,CAAA;QACD,IAAI,CAAC,aAAa,GAAG,EAAC,GAAG,UAAU,EAAC,CAAA;QACpC,OAAO,IAAI,CAAC,OAAO;aAChB,WAAW,CAAO;YACjB,IAAI,EAAE,kBAAkB,CAAC,oBAAoB;YAC7C,MAAM,EAAE,EAAC,GAAG,UAAU,EAAC;SACxB,CAAC;aACD,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;IAC1B,CAAC;IAED,mEAAmE;IACnE,IAAI;QACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,CAAC,EAAE,CAAA;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,mEAAmE;IACnE,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;IAC1D,CAAC;IAED,0EAA0E;IAC1E,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAC,GAAG,IAAI,CAAC,aAAa,EAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5D,CAAC;IAED,2EAA2E;IAEnE,KAAK,CAAC,KAAoB;QAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACtB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzB,KAAK,EAAE,CAAA;QACT,CAAC,CAAA;IACH,CAAC;CACF"}
|
|
@@ -18,7 +18,13 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { MiniappSession } from "../session";
|
|
20
20
|
import type { TranslationData, UnsubscribeFn } from "./events";
|
|
21
|
+
import type { TranscriptionLanguage } from "./languages";
|
|
21
22
|
export type TranslationHandler = (data: TranslationData) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Translation source: a registry language, or "auto" to let the cloud detect
|
|
25
|
+
* the spoken language.
|
|
26
|
+
*/
|
|
27
|
+
export type TranslationSource = TranscriptionLanguage | "auto";
|
|
22
28
|
export declare class TranslationModule {
|
|
23
29
|
private readonly session;
|
|
24
30
|
private readonly unsubs;
|
|
@@ -38,18 +44,18 @@ export declare class TranslationModule {
|
|
|
38
44
|
* regardless of source. Useful for "I'm a Spanish speaker, translate
|
|
39
45
|
* whatever I hear to Spanish."
|
|
40
46
|
*/
|
|
41
|
-
to(target:
|
|
47
|
+
to(target: TranscriptionLanguage | TranscriptionLanguage[], handler: TranslationHandler): UnsubscribeFn;
|
|
42
48
|
/**
|
|
43
49
|
* Subscribe to a specific source → target translation pair. Pass an
|
|
44
50
|
* array for `target` to fan a single handler across multiple targets
|
|
45
51
|
* from the same source.
|
|
46
52
|
*/
|
|
47
|
-
fromTo(source:
|
|
53
|
+
fromTo(source: TranslationSource, target: TranscriptionLanguage | TranscriptionLanguage[], handler: TranslationHandler): UnsubscribeFn;
|
|
48
54
|
/**
|
|
49
55
|
* @deprecated Renamed to `fromTo(source, target, handler)` for cloud
|
|
50
56
|
* SDK v3 parity. This alias will be removed in a future release.
|
|
51
57
|
*/
|
|
52
|
-
forLanguagePair(fromLang:
|
|
58
|
+
forLanguagePair(fromLang: TranslationSource, toLang: TranscriptionLanguage, handler: TranslationHandler): UnsubscribeFn;
|
|
53
59
|
/** Tear down every translation subscription this module owns. */
|
|
54
60
|
stop(): void;
|
|
55
61
|
/** True iff `MICROPHONE` is declared in the miniapp's manifest. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../src/modules/translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAE5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAA;AAEhE,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAErB,OAAO,EAAE,cAAc;IAEpD;;;;;;;;OAQG;IACH,EAAE,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa;IAS9C;;;;OAIG;IACH,EAAE,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"translation.d.ts","sourceRoot":"","sources":["../../src/modules/translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,UAAU,CAAA;AAE5D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAA;AAEtD,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAA;AAEhE;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,MAAM,CAAA;AAE9D,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAErB,OAAO,EAAE,cAAc;IAEpD;;;;;;;;OAQG;IACH,EAAE,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa;IAS9C;;;;OAIG;IACH,EAAE,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EAAE,OAAO,EAAE,kBAAkB,GAAG,aAAa;IA0BvG;;;;OAIG;IACH,MAAM,CACJ,MAAM,EAAE,iBAAiB,EACzB,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,EACvD,OAAO,EAAE,kBAAkB,GAC1B,aAAa;IA4BhB;;;OAGG;IACH,eAAe,CACb,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,kBAAkB,GAC1B,aAAa;IAIhB,iEAAiE;IACjE,IAAI,IAAI,IAAI;IAWZ,mEAAmE;IACnE,IAAI,aAAa,IAAI,OAAO,CAE3B;IAID,OAAO,CAAC,KAAK;CAOd"}
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* MICROPHONE permission required.
|
|
18
18
|
*/
|
|
19
19
|
import { MiniappStreamType } from "../protocol";
|
|
20
|
+
import { requireTranscriptionLanguage } from "./languages";
|
|
20
21
|
export class TranslationModule {
|
|
21
22
|
constructor(session) {
|
|
22
23
|
this.session = session;
|
|
@@ -40,7 +41,7 @@ export class TranslationModule {
|
|
|
40
41
|
* whatever I hear to Spanish."
|
|
41
42
|
*/
|
|
42
43
|
to(target, handler) {
|
|
43
|
-
const targets = Array.isArray(target) ? target : [target];
|
|
44
|
+
const targets = (Array.isArray(target) ? target : [target]).map((t) => requireTranscriptionLanguage(t, "translation.to(target)"));
|
|
44
45
|
if (targets.length === 0)
|
|
45
46
|
return () => { };
|
|
46
47
|
const unsubs = [];
|
|
@@ -65,12 +66,13 @@ export class TranslationModule {
|
|
|
65
66
|
* from the same source.
|
|
66
67
|
*/
|
|
67
68
|
fromTo(source, target, handler) {
|
|
68
|
-
const
|
|
69
|
+
const validSource = source === "auto" ? "auto" : requireTranscriptionLanguage(source, "translation.fromTo(source)");
|
|
70
|
+
const targets = (Array.isArray(target) ? target : [target]).map((t) => requireTranscriptionLanguage(t, "translation.fromTo(target)"));
|
|
69
71
|
if (targets.length === 0)
|
|
70
72
|
return () => { };
|
|
71
73
|
const unsubs = [];
|
|
72
74
|
for (const t of targets) {
|
|
73
|
-
unsubs.push(this.session._subscribe(`${MiniappStreamType.TRANSLATION}:${
|
|
75
|
+
unsubs.push(this.session._subscribe(`${MiniappStreamType.TRANSLATION}:${validSource}:${t}`, handler));
|
|
74
76
|
}
|
|
75
77
|
const composite = () => {
|
|
76
78
|
for (const u of unsubs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation.js","sourceRoot":"","sources":["../../src/modules/translation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"translation.js","sourceRoot":"","sources":["../../src/modules/translation.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -44,6 +44,8 @@ export declare enum MiniappRequestType {
|
|
|
44
44
|
RGB_LED = "miniapp_rgb_led",
|
|
45
45
|
/** One-shot location poll. */
|
|
46
46
|
LOCATION_POLL = "miniapp_location_poll",
|
|
47
|
+
/** Read a bounded snapshot of phone calendar events. */
|
|
48
|
+
CALENDAR_LIST_EVENTS = "miniapp_calendar_list_events",
|
|
47
49
|
/** Start a turn-by-turn navigation trip. Android only. */
|
|
48
50
|
NAVIGATION_START = "miniapp_navigation_start",
|
|
49
51
|
/** Stop the active navigation trip (if any). */
|
|
@@ -93,6 +95,15 @@ export declare enum MiniappRequestType {
|
|
|
93
95
|
* for callers who want to control the sensor directly. G2 only today.
|
|
94
96
|
*/
|
|
95
97
|
IMU_SET_ENABLED = "miniapp_imu_set_enabled",
|
|
98
|
+
/** Explicitly enable/disable glasses-side VAD (GX8002). Mirrors the app's mic settings toggle. */
|
|
99
|
+
MIC_SET_VAD_ENABLED = "miniapp_mic_set_vad_enabled",
|
|
100
|
+
/** Explicitly enable/disable the center-mic loudness gate ("Barrier"). */
|
|
101
|
+
MIC_SET_LOUDNESS_GATE_ENABLED = "miniapp_mic_set_loudness_gate_enabled",
|
|
102
|
+
/**
|
|
103
|
+
* Enable or disable Wi-Fi ADB (wireless debugging) on Mentra Live.
|
|
104
|
+
* SYSTEM-only — host rejects with NOT_PERMITTED for non-system callers.
|
|
105
|
+
*/
|
|
106
|
+
SET_WIFI_ADB_STATE = "miniapp_set_wifi_adb_state",
|
|
96
107
|
/** Share content via the OS share sheet. */
|
|
97
108
|
SHARE = "miniapp_share",
|
|
98
109
|
/** Open a URL in the system browser. */
|
|
@@ -101,6 +112,11 @@ export declare enum MiniappRequestType {
|
|
|
101
112
|
COPY_CLIPBOARD = "miniapp_copy_clipboard",
|
|
102
113
|
/** Download a file (triggers OS share sheet for save location). */
|
|
103
114
|
DOWNLOAD = "miniapp_download",
|
|
115
|
+
/**
|
|
116
|
+
* Open a phone-camera QR scanner overlay. Host must not unmount the miniapp
|
|
117
|
+
* (clearing foreground fires UI_CLOSE and can hang up live sessions).
|
|
118
|
+
*/
|
|
119
|
+
SCAN_QR = "miniapp_scan_qr",
|
|
104
120
|
/**
|
|
105
121
|
* Phone-local persistent binary blob storage, scoped to (userId, packageName).
|
|
106
122
|
* Unlike STORAGE_* (small string KV in MMKV), blobs are arbitrary bytes written
|
|
@@ -239,7 +255,6 @@ export declare enum MiniappStreamType {
|
|
|
239
255
|
* fire. See agents/miniapp-speaker-state-and-notif-dismissed-plan.md.
|
|
240
256
|
*/
|
|
241
257
|
PHONE_NOTIFICATION_DISMISSED = "phone_notification_dismissed",
|
|
242
|
-
CALENDAR_EVENT = "calendar_event",
|
|
243
258
|
PHOTO_TAKEN = "photo_taken",
|
|
244
259
|
STREAM_STATUS = "stream_status"
|
|
245
260
|
}
|
|
@@ -248,6 +263,8 @@ export declare enum MiniappErrorCode {
|
|
|
248
263
|
INVALID_ARGUMENT = "INVALID_ARGUMENT",
|
|
249
264
|
/** The miniapp subscribed to a stream whose required permission wasn't in its manifest. */
|
|
250
265
|
PERMISSION_NOT_DECLARED = "PERMISSION_NOT_DECLARED",
|
|
266
|
+
/** The required phone OS permission is not currently granted. */
|
|
267
|
+
PERMISSION_DENIED = "PERMISSION_DENIED",
|
|
251
268
|
/** Request routed to a method that isn't supported yet. */
|
|
252
269
|
NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
|
|
253
270
|
/** Request timed out or the session was torn down before it could complete. */
|
|
@@ -258,9 +275,14 @@ export declare enum MiniappErrorCode {
|
|
|
258
275
|
TTS_TEXT_TOO_LONG = "TTS_TEXT_TOO_LONG",
|
|
259
276
|
TTS_INVALID_VOICE = "TTS_INVALID_VOICE",
|
|
260
277
|
TTS_UPSTREAM_ERROR = "TTS_UPSTREAM_ERROR",
|
|
278
|
+
/** `speak({forceLocal: true})` but the on-device offline TTS model isn't downloaded/ready. */
|
|
279
|
+
TTS_LOCAL_UNAVAILABLE = "TTS_LOCAL_UNAVAILABLE",
|
|
261
280
|
/** Not connected / pre-ACK and transport closed. */
|
|
262
281
|
NOT_CONNECTED = "NOT_CONNECTED",
|
|
263
|
-
/**
|
|
282
|
+
/**
|
|
283
|
+
* Caller is not a system app — SYSTEM-only APIs (interop list/start/stop/invoke,
|
|
284
|
+
* setWifiAdbState) reject with this code.
|
|
285
|
+
*/
|
|
264
286
|
NOT_PERMITTED = "NOT_PERMITTED",
|
|
265
287
|
/** Target miniapp is not installed. */
|
|
266
288
|
APP_NOT_FOUND = "APP_NOT_FOUND",
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,oBAAY,kBAAkB;IAC5B,8EAA8E;IAC9E,OAAO,oBAAoB;IAE3B,yDAAyD;IACzD,YAAY,yBAAyB;IAErC,8DAA8D;IAC9D,SAAS,sBAAsB;IAE/B;;;;OAIG;IACH,OAAO,oBAAoB;IAE3B,uEAAuE;IACvE,MAAM,mBAAmB;IAEzB,8EAA8E;IAC9E,UAAU,uBAAuB;IAEjC,sDAAsD;IACtD,UAAU,uBAAuB;IAEjC,2DAA2D;IAC3D,KAAK,kBAAkB;IAEvB;;;;;OAKG;IACH,mBAAmB,gCAAgC;IACnD,oBAAoB,iCAAiC;IACrD,oBAAoB,iCAAiC;IACrD,oBAAoB,iCAAiC;IAErD,mCAAmC;IACnC,OAAO,oBAAoB;IAE3B,8BAA8B;IAC9B,aAAa,0BAA0B;IAEvC,0DAA0D;IAC1D,gBAAgB,6BAA6B;IAC7C,gDAAgD;IAChD,eAAe,4BAA4B;IAC3C,mFAAmF;IACnF,kBAAkB,+BAA+B;IACjD,0FAA0F;IAC1F,6BAA6B,0CAA0C;IACvE,qFAAqF;IACrF,6BAA6B,0CAA0C;IACvE,sFAAsF;IACtF,oBAAoB,iCAAiC;IACrD,sFAAsF;IACtF,wBAAwB,qCAAqC;IAC7D;;;;6EAIyE;IACzE,0BAA0B,uCAAuC;IACjE;;sFAEkF;IAClF,6BAA6B,0CAA0C;IACvE;4DACwD;IACxD,wBAAwB,qCAAqC;IAC7D,iFAAiF;IACjF,6BAA6B,0CAA0C;IAEvE,kCAAkC;IAClC,WAAW,wBAAwB;IACnC,WAAW,wBAAwB;IACnC,cAAc,2BAA2B;IACzC,YAAY,yBAAyB;IACrC,aAAa,0BAA0B;IACvC,WAAW,wBAAwB;IACnC,eAAe,4BAA4B;IAC3C,oBAAoB,iCAAiC;IACrD,aAAa,0BAA0B;IAEvC,iCAAiC;IACjC,UAAU,uBAAuB;IAEjC,2EAA2E;IAC3E,cAAc,2BAA2B;IAEzC;;;;OAIG;IACH,eAAe,4BAA4B;IAE3C,4CAA4C;IAC5C,KAAK,kBAAkB;IACvB,wCAAwC;IACxC,QAAQ,qBAAqB;IAC7B,yCAAyC;IACzC,cAAc,2BAA2B;IACzC,mEAAmE;IACnE,QAAQ,qBAAqB;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
|