@extentos/mcp-server 0.0.79 → 0.0.81

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 (47) hide show
  1. package/dist/cli/setup.d.ts.map +1 -1
  2. package/dist/cli/setup.js +47 -17
  3. package/dist/cli/setup.js.map +1 -1
  4. package/dist/tools/data/capabilities.d.ts +30 -11
  5. package/dist/tools/data/capabilities.d.ts.map +1 -1
  6. package/dist/tools/data/capabilities.js +31 -12
  7. package/dist/tools/data/capabilities.js.map +1 -1
  8. package/dist/tools/data/capabilityPatterns.d.ts.map +1 -1
  9. package/dist/tools/data/capabilityPatterns.js +137 -0
  10. package/dist/tools/data/capabilityPatterns.js.map +1 -1
  11. package/dist/tools/data/codeExamples.d.ts.map +1 -1
  12. package/dist/tools/data/codeExamples.js +268 -12
  13. package/dist/tools/data/codeExamples.js.map +1 -1
  14. package/dist/tools/data/version.js +7 -7
  15. package/dist/tools/definitions.d.ts.map +1 -1
  16. package/dist/tools/definitions.js +48 -14
  17. package/dist/tools/definitions.js.map +1 -1
  18. package/dist/tools/docs/index.d.ts +12 -0
  19. package/dist/tools/docs/index.d.ts.map +1 -1
  20. package/dist/tools/docs/index.js +127 -1
  21. package/dist/tools/docs/index.js.map +1 -1
  22. package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -1
  23. package/dist/tools/handlers/createSimulatorSession.js +24 -3
  24. package/dist/tools/handlers/createSimulatorSession.js.map +1 -1
  25. package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -1
  26. package/dist/tools/handlers/getPlatformInfo.js +8 -8
  27. package/dist/tools/handlers/getPlatformInfo.js.map +1 -1
  28. package/dist/tools/handlers/getSimulatorStatus.d.ts.map +1 -1
  29. package/dist/tools/handlers/getSimulatorStatus.js +37 -2
  30. package/dist/tools/handlers/getSimulatorStatus.js.map +1 -1
  31. package/dist/tools/handlers/injectTranscript.d.ts +3 -0
  32. package/dist/tools/handlers/injectTranscript.d.ts.map +1 -0
  33. package/dist/tools/handlers/injectTranscript.js +89 -0
  34. package/dist/tools/handlers/injectTranscript.js.map +1 -0
  35. package/dist/tools/handlers/searchDocs.d.ts.map +1 -1
  36. package/dist/tools/handlers/searchDocs.js +36 -11
  37. package/dist/tools/handlers/searchDocs.js.map +1 -1
  38. package/dist/tools/handlers/validateIntegration.d.ts.map +1 -1
  39. package/dist/tools/handlers/validateIntegration.js +74 -15
  40. package/dist/tools/handlers/validateIntegration.js.map +1 -1
  41. package/dist/tools/registry.d.ts.map +1 -1
  42. package/dist/tools/registry.js +2 -0
  43. package/dist/tools/registry.js.map +1 -1
  44. package/dist/tools/util/permissions.d.ts.map +1 -1
  45. package/dist/tools/util/permissions.js +70 -30
  46. package/dist/tools/util/permissions.js.map +1 -1
  47. package/package.json +1 -1
@@ -0,0 +1,89 @@
1
+ // injectTranscript — F-R4-13.
2
+ //
3
+ // Drive a wake-phrase or partial-transcript into a live simulator session
4
+ // without a human clicking chips in the browser tab. Mirrors the
5
+ // simulator UI's click-to-fire mechanism — the frame travels through the
6
+ // same hub path, so handler dispatch + event-log entries are identical
7
+ // to a real STT result.
8
+ //
9
+ // USE for agent-driven end-to-end tests of wake-phrase / fallback flows
10
+ // (e.g. createSimulatorSession → injectTranscript("start recording") →
11
+ // getEventLog to verify the handler fired). DON'T USE for static
12
+ // validation (use validateIntegration) or capability discovery.
13
+ import { okResponse, errorResponse } from "../response.js";
14
+ import { backendFetch } from "../util/backendClient.js";
15
+ export async function handleInjectTranscript(raw) {
16
+ if (!raw || typeof raw !== "object") {
17
+ return errorResponse({
18
+ code: "invalid_arguments",
19
+ message: "injectTranscript requires { sessionId, text }.",
20
+ fixHint: 'Pass { sessionId: "sim_...", text: "start recording" }. Optional: isFinal (boolean, default true), confidence (0-1, default 0.99), partial (boolean — when true, type defaults to "stt_partial").',
21
+ retryable: false,
22
+ });
23
+ }
24
+ const o = raw;
25
+ if (typeof o.sessionId !== "string" || !o.sessionId.trim()) {
26
+ return errorResponse({
27
+ code: "invalid_arguments",
28
+ message: "sessionId (string) is required.",
29
+ fixHint: "Pass the sessionId returned by createSimulatorSession.",
30
+ retryable: false,
31
+ });
32
+ }
33
+ if (typeof o.text !== "string" || o.text.length === 0) {
34
+ return errorResponse({
35
+ code: "invalid_arguments",
36
+ message: "text (non-empty string) is required.",
37
+ fixHint: 'Pass text: "start recording" (or any wake-phrase / utterance).',
38
+ retryable: false,
39
+ });
40
+ }
41
+ const partial = o.partial === true;
42
+ const frameType = partial ? "stt_partial" : "stt_transcript";
43
+ const isFinal = typeof o.isFinal === "boolean" ? o.isFinal : !partial;
44
+ const confidence = typeof o.confidence === "number" ? o.confidence : 0.99;
45
+ const payload = {
46
+ type: frameType,
47
+ text: o.text,
48
+ isFinal,
49
+ confidence,
50
+ source: "manual_trigger",
51
+ };
52
+ const res = await backendFetch(`/api/sessions/${encodeURIComponent(o.sessionId)}/inject`, {
53
+ method: "POST",
54
+ body: payload,
55
+ });
56
+ if (res.status === 404) {
57
+ return errorResponse({
58
+ code: "session_not_found",
59
+ message: `No session found with id ${JSON.stringify(o.sessionId)}.`,
60
+ fixHint: "Call createSimulatorSession to start a new session.",
61
+ retryable: false,
62
+ });
63
+ }
64
+ if (res.status === 409) {
65
+ const body = res.data;
66
+ return errorResponse({
67
+ code: "app_not_attached",
68
+ message: body?.message ??
69
+ "Inject not delivered: the session exists but no app role is currently attached.",
70
+ fixHint: "Start your app (build + run on the emulator/device) so the WebSocket attaches, then retry. Confirm with getSimulatorStatus — connectedRoles.app should be present.",
71
+ retryable: true,
72
+ });
73
+ }
74
+ if (!res.ok || !res.data || res.data.delivered !== true) {
75
+ return errorResponse({
76
+ code: "backend_unreachable",
77
+ message: `Backend /api/sessions/${o.sessionId}/inject failed: ${res.errorText ?? `HTTP ${res.status}`}.`,
78
+ fixHint: "Ensure the Extentos backend is reachable.",
79
+ retryable: true,
80
+ });
81
+ }
82
+ return okResponse({
83
+ sessionId: o.sessionId,
84
+ delivered: true,
85
+ frame: res.data.frame ?? payload,
86
+ summary: `Injected ${frameType} "${o.text.slice(0, 60)}${o.text.length > 60 ? "…" : ""}" into ${o.sessionId}. Follow up with getEventLog(sessionId, filter: "voice") to verify your handler matched + dispatched.`,
87
+ });
88
+ }
89
+ //# sourceMappingURL=injectTranscript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectTranscript.js","sourceRoot":"","sources":["../../../src/tools/handlers/injectTranscript.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"searchDocs.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/searchDocs.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CA+CzD"}
1
+ {"version":3,"file":"searchDocs.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/searchDocs.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CA2EzD"}
@@ -1,7 +1,7 @@
1
1
  // searchDocs — deterministic keyword retrieval against the bundled doc index.
2
2
  // Spec: docs/mcp/MCP_TOOLS.md § searchDocs
3
3
  import { okResponse, errorResponse } from "../response.js";
4
- import { DOC_INDEX, searchDocsIndex } from "../docs/index.js";
4
+ import { DOC_INDEX, extractSnippets, searchDocsIndex } from "../docs/index.js";
5
5
  export function handleSearchDocs(raw) {
6
6
  if (!raw || typeof raw !== "object") {
7
7
  return errorResponse({
@@ -14,6 +14,14 @@ export function handleSearchDocs(raw) {
14
14
  const obj = raw;
15
15
  const queryStr = typeof obj.query === "string" ? obj.query.trim() : "";
16
16
  const topicFilter = typeof obj.topic === "string" && obj.topic ? obj.topic : undefined;
17
+ // F-R4-10: snippet mode returns the matching paragraphs from each
18
+ // topic instead of the full topic body. Default is "full" for
19
+ // back-compat. Customers running cross-topic keyword searches benefit
20
+ // most — a single query used to dump ~13KB of library_api topic plus
21
+ // another ~6KB toggles topic; in snippet mode, only the paragraphs
22
+ // containing the keyword(s) come back.
23
+ const rawMode = typeof obj.mode === "string" ? obj.mode.toLowerCase() : "";
24
+ const mode = rawMode === "snippets" || rawMode === "snippet" ? "snippets" : "full";
17
25
  // At least one of query or topic must be supplied. Topic-only is valid —
18
26
  // it returns the full content of that topic, matching the description's
19
27
  // "by topic OR keyword" promise (F-R4-2).
@@ -33,18 +41,35 @@ export function handleSearchDocs(raw) {
33
41
  retryable: false,
34
42
  });
35
43
  }
44
+ // Snippet mode requires a query to extract against; without one there's
45
+ // nothing to snippet down to. Fall back to full topic body when caller
46
+ // passed only topic.
47
+ const effectiveMode = mode === "snippets" && queryStr ? "snippets" : "full";
36
48
  const hits = searchDocsIndex(queryStr, topicFilter);
37
- const results = hits.map((e) => ({
38
- topic: e.topic,
39
- title: e.title,
40
- content: e.content,
41
- relatedTools: e.relatedTools,
42
- }));
49
+ const results = hits.map((e) => {
50
+ if (effectiveMode === "snippets") {
51
+ const snippets = extractSnippets(e.content, queryStr);
52
+ return {
53
+ topic: e.topic,
54
+ title: e.title,
55
+ snippets,
56
+ relatedTools: e.relatedTools,
57
+ };
58
+ }
59
+ return {
60
+ topic: e.topic,
61
+ title: e.title,
62
+ content: e.content,
63
+ relatedTools: e.relatedTools,
64
+ };
65
+ });
43
66
  const summary = results.length === 0
44
67
  ? `No matching topics for query ${JSON.stringify(queryStr)}${topicFilter ? ` in topic ${JSON.stringify(topicFilter)}` : ""}.`
45
- : queryStr
46
- ? `Found ${results.length} matching topic${results.length === 1 ? "" : "s"}: ${results.map((r) => r.topic).join(", ")}.`
47
- : `Returned full content for topic ${JSON.stringify(topicFilter)}.`;
48
- return okResponse({ results, totalResults: results.length, summary });
68
+ : effectiveMode === "snippets"
69
+ ? `Found ${results.length} topic${results.length === 1 ? "" : "s"} matching ${JSON.stringify(queryStr)}: ${results.map((r) => r.topic).join(", ")}. Returned matching paragraphs only — pass mode: "full" (or omit mode) to receive the full topic bodies.`
70
+ : queryStr
71
+ ? `Found ${results.length} matching topic${results.length === 1 ? "" : "s"}: ${results.map((r) => r.topic).join(", ")}.`
72
+ : `Returned full content for topic ${JSON.stringify(topicFilter)}.`;
73
+ return okResponse({ results, totalResults: results.length, mode: effectiveMode, summary });
49
74
  }
50
75
  //# sourceMappingURL=searchDocs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"searchDocs.js","sourceRoot":"","sources":["../../../src/tools/handlers/searchDocs.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2CAA2C;AAE3C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,6CAA6C;YACtD,OAAO,EAAE,yJAAyJ;YAClK,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvF,yEAAyE;IACzE,wEAAwE;IACxE,0CAA0C;IAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,sDAAsD;YAC/D,OAAO,EAAE,yJAAyJ;YAClK,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,EAAE,CAAC;QACnE,OAAO,aAAa,CAAC;YACnB,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,sBAAsB,SAAS,CAAC,MAAM,kBAAkB;YACrG,OAAO,EAAE,iBAAiB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACrE,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY,EAAE,CAAC,CAAC,YAAY;KAC7B,CAAC,CAAC,CAAC;IAEJ,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC;QAClC,CAAC,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;QAC7H,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,kBAAkB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACxH,CAAC,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;IACxE,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"searchDocs.js","sourceRoot":"","sources":["../../../src/tools/handlers/searchDocs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntegration.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/validateIntegration.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA0B7D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAkVlE"}
1
+ {"version":3,"file":"validateIntegration.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/validateIntegration.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA0B7D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAuVlE"}
@@ -273,7 +273,7 @@ export function handleValidateIntegration(raw) {
273
273
  // The check still surfaces the configuration so devs targeting
274
274
  // background-survival know they need to wire a foreground service.
275
275
  if (manifestCaps.length > 0) {
276
- const { passed, details, fix } = checkBackgroundExecution(projectPath, platform, manifestCaps);
276
+ const { passed, details, fix } = checkBackgroundExecution(projectPath, platform, manifestCaps, depResult.found);
277
277
  // Always passes — both states (declared or not) are valid app
278
278
  // configurations. Foreground-only and background-surviving are both
279
279
  // legitimate choices; the validator just surfaces which one's wired
@@ -347,17 +347,40 @@ export function handleValidateIntegration(raw) {
347
347
  : `All blocking checks pass — review ${warnCount} warning${warnCount === 1 ? "" : "s"} before testing.`;
348
348
  return okResponse({ valid, checks, summary });
349
349
  }
350
- // Capability-driven background-execution hint. `record_audio` (continuous
351
- // mic) and `video_frames` (continuous camera) are the SDK features that
352
- // require a foreground-service declaration on Android 14+ to survive
353
- // backgrounding. On iOS the equivalent is the UIBackgroundModes plist key.
354
- // Foreground use without these declarations works fine this is a warning
355
- // only, surfaced so devs aren't surprised when the OS suspends their handler.
356
- const BACKGROUND_SENSITIVE_CAPABILITIES = new Set(["record_audio", "video_frames", "audio_chunks"]);
357
- function checkBackgroundExecution(projectPath, platform, capabilities) {
358
- const needsBg = capabilities.some((c) => BACKGROUND_SENSITIVE_CAPABILITIES.has(c));
359
- if (!needsBg) {
360
- return { passed: true, details: "No continuous-capture capabilities declared background execution not required." };
350
+ // Capability-driven background-execution hint. These SDK features open a
351
+ // CONTINUOUS mic/camera stream under the hood and benefit from a
352
+ // foreground-service declaration on Android 14+ if the app wants to keep
353
+ // capturing while backgrounded. On iOS the equivalent is the
354
+ // UIBackgroundModes plist key. Foreground-only apps do NOT need any of
355
+ // this the OS's foreground-while-visible exemption covers them so this
356
+ // check is severity:info, not warn/error.
357
+ //
358
+ // F-R4-07: pre-fix this set only contained record_audio / video_frames /
359
+ // audio_chunks. `voice_command` / `transcription_incremental` / `wake_word`
360
+ // / `fallback` ALSO open continuous transcript subscriptions (via the
361
+ // library's internal DefaultVoiceClient + transcriptions()) — declaring
362
+ // `voice_command` alone is enough to need the same FG-service hint as
363
+ // `transcription_incremental` even if the customer never wrote
364
+ // `audio.transcriptions().collect { ... }` themselves. Pre-fix this caused
365
+ // the contradiction with getPermissions (which DID flag the FG service for
366
+ // transcription_incremental inputs).
367
+ const BACKGROUND_SENSITIVE_CAPABILITIES = new Set([
368
+ "record_audio",
369
+ "video_frames",
370
+ "audio_chunks",
371
+ "voice_command",
372
+ "transcription_incremental",
373
+ "wake_word",
374
+ "fallback",
375
+ "outgoing_audio_stream",
376
+ ]);
377
+ function checkBackgroundExecution(projectPath, platform, capabilities, libraryDepFound) {
378
+ const bgSensitiveDeclared = capabilities.filter((c) => BACKGROUND_SENSITIVE_CAPABILITIES.has(c));
379
+ if (bgSensitiveDeclared.length === 0) {
380
+ return {
381
+ passed: true,
382
+ details: "No continuous-capture capabilities declared — neither getPermissions nor this check flags a foreground service.",
383
+ };
361
384
  }
362
385
  if (platform === "android") {
363
386
  const candidates = ["app/src/main/AndroidManifest.xml"];
@@ -367,13 +390,49 @@ function checkBackgroundExecution(projectPath, platform, capabilities) {
367
390
  continue;
368
391
  const text = readFileSync(abs, "utf8");
369
392
  if (text.includes("android:foregroundServiceType")) {
370
- return { passed: true, details: "AndroidManifest declares foregroundServiceType." };
393
+ return {
394
+ passed: true,
395
+ details: `AndroidManifest declares foregroundServiceType (continuous-capture caps: ${bgSensitiveDeclared.join(", ")}).`,
396
+ };
371
397
  }
372
398
  }
399
+ // F-R5-02: pre-fix this check flagged "no service entry" even when the
400
+ // app correctly used the library's default service. glasses-core ships
401
+ // GlassesForegroundService with foregroundServiceType="microphone" and
402
+ // declares it in the library AndroidManifest.xml — manifest-merger
403
+ // contributes the <service> entry into the consumer's merged manifest
404
+ // at build time. The consumer's `app/src/main/AndroidManifest.xml`
405
+ // doesn't show it (it's not in the source), so the regex above misses
406
+ // it. Cross-reference against `dependency_declared`: if the library is
407
+ // a dep, the merged manifest WILL have the entry.
408
+ if (libraryDepFound) {
409
+ const cameraCaps = bgSensitiveDeclared.filter((c) => c === "video_frames");
410
+ const micCaps = bgSensitiveDeclared.filter((c) => c !== "video_frames");
411
+ if (cameraCaps.length === 0) {
412
+ // Pure mic / mic-adjacent caps — fully covered by the library's
413
+ // default service (foregroundServiceType="microphone").
414
+ return {
415
+ passed: true,
416
+ details: `glasses-core ships GlassesForegroundService (foregroundServiceType="microphone") and contributes the <service> entry into the merged manifest via manifest-merger. ` +
417
+ `Continuous-capture caps ${bgSensitiveDeclared.join(", ")} are covered. ` +
418
+ `Customer must call GlassesForegroundService.start(context) from an Activity AFTER RECORD_AUDIO is granted at runtime (NOT from Application.onCreate — see getPermissions.android.foregroundService.devInstructions / F-R4-12 for the Android 14+ timing requirement). The validator cannot tell from static analysis whether the start() call is wired — verify in your Activity.`,
419
+ };
420
+ }
421
+ // Customer has video_frames; library's default mic service covers
422
+ // the mic side but camera survival needs a subclass.
423
+ return {
424
+ passed: false,
425
+ details: `glasses-core ships GlassesForegroundService (foregroundServiceType="microphone") which covers ${micCaps.join(", ") || "the mic-side caps"} via manifest-merger, but ${cameraCaps.join(", ")} needs foregroundServiceType="camera" too — the default service is mic-only.`,
426
+ fix: "Subclass com.extentos.glasses.core.service.GlassesForegroundService, override extentosForegroundServiceType to ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA | ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE, and declare <service android:name=\"<your.subclass>\" android:foregroundServiceType=\"camera|microphone\" android:exported=\"false\" /> in your app's AndroidManifest.xml (the library's default declaration stays microphone-only). Start it via your.subclass::start(context) from an Activity AFTER both RECORD_AUDIO and CAMERA are granted at runtime — F-R4-12 timing applies.",
427
+ };
428
+ }
373
429
  return {
374
430
  passed: false,
375
- details: "Continuous-capture capabilities are declared (record_audio / audio_chunks / video_frames) but AndroidManifest has no <service android:foregroundServiceType=...> entry. Capture works fine while the app is in the foreground; this only matters if you need it to survive backgrounding (screen off / user pressed home).",
376
- fix: "The Extentos library does not yet ship its own foreground service. For in-foreground testing, ignore this warning. For background-surviving capture, implement your own Service subclass with foregroundServiceType=\"microphone\" (or \"camera\") and start it from your Application or root Activity.",
431
+ details: `Continuous-capture capabilities are declared (${bgSensitiveDeclared.join(", ")}) but neither the consumer manifest declares a <service android:foregroundServiceType=...> entry nor is com.extentos:glasses in dependencies (which would contribute one via manifest-merger). ` +
432
+ `Foreground-only apps don't need one Android's foreground-while-visible exemption covers the mic/camera access. ` +
433
+ `Wire a foreground service only if you want capture to survive backgrounding (screen off / user pressed home).`,
434
+ fix: "Two paths: (a) Easiest — add com.extentos:glasses to your Gradle dependencies. glasses-core ships GlassesForegroundService (foregroundServiceType=\"microphone\") and declares <service> in its AndroidManifest.xml; manifest-merger contributes it to your app. Call GlassesForegroundService.start(context) from an Activity AFTER RECORD_AUDIO is granted at runtime (NOT from Application.onCreate — F-R4-12 timing). " +
435
+ "(b) Subclass / replace — if you need camera-type foreground (rare; videoFrames-in-background), subclass GlassesForegroundService, override extentosForegroundServiceType, and add your own <service> entry to AndroidManifest.xml.",
377
436
  };
378
437
  }
379
438
  if (platform === "ios") {
@@ -1 +1 @@
1
- {"version":3,"file":"validateIntegration.js","sourceRoot":"","sources":["../../../src/tools/handlers/validateIntegration.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,oCAAoC;AACpC,gCAAgC;AAChC,4EAA4E;AAC5E,mEAAmE;AACnE,wDAAwD;AACxD,sDAAsD;AACtD,oDAAoD;AACpD,yEAAyE;AACzE,wEAAwE;AACxE,kDAAkD;AAClD,iFAAiF;AACjF,8DAA8D;AAC9D,2EAA2E;AAC3E,uCAAuC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,UAAU,EAAmB,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAYlD,MAAM,UAAU,GAAG,oBAAoB,CAAC;AAExC,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,GAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,cAAc;QACtB,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC9C,OAAO,EAAE,cAAc;YACrB,CAAC,CAAC,mCAAmC,YAAY,GAAG;YACpD,CAAC,CAAC,kBAAkB,YAAY,GAAG;QACrC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,4DAA4D;KAC/F,CAAC,CAAC;IAEH,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM;YACN,OAAO,EAAE,qEAAqE;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAA4B,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG;SACxE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,6BAA6B,UAAU,CAAC,CAAC,CAAC,GAAG;YACtD,GAAG,EAAE,0CAA0C;SAChD,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAQ,CAAC,QAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5F,wBAAwB;IACxB,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC3D,CAAC,CAAE,QAAQ,CAAC,cAAiD;QAC7D,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,gEAAgE;QAChE,6DAA6D;QAC7D,iEAAiE;QACjE,+DAA+D;QAC/D,sDAAsD;aACjD,IACH,oBAAoB,CAAC,IAAI,CAAC,KAAK,YAAY;YAC3C,0BAA0B,CAAC,IAAI,CAAC,KAAK,YAAY,EACjD,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,CAAC;QACC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,YAAY,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,aAAa,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,uBAAuB;YAC7B,MAAM;YACN,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;YACtC,OAAO,EAAE,MAAM;gBACb,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,kBAAkB,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wBAAwB;gBAC1G,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,MAAM;gBACT,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,+HAA+H;SACpI,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,MAAM,SAAS,GAAG,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,SAAS,CAAC,KAAK;QACvB,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;QAC/C,OAAO,EAAE,SAAS,CAAC,KAAK;YACtB,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,aAAa,SAAS,CAAC,IAAI,GAAG;YACvD,CAAC,CAAC,YAAY,SAAS,CAAC,UAAU,IAAI,QAAQ,OAAO,SAAS,CAAC,IAAI,IAAI,mCAAmC,mFAAmF;QAC/L,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iEAAiE;KACrG,CAAC,CAAC;IAEH,oEAAoE;IACpE,kEAAkE;IAClE,kEAAkE;IAClE,mEAAmE;IACnE,mEAAmE;IACnE,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC;QACzC,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,KAAK,MAAM,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACxC,OAAO,EAAE,SAAS;gBAChB,CAAC,CAAC,iBAAiB,SAAS,CAAC,aAAa,0BAA0B;gBACpE,CAAC,CAAC,iBAAiB,SAAS,CAAC,aAAa,sBAAsB,MAAM,iOAAiO;YACzS,GAAG,EAAE,SAAS;gBACZ,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,2BAA2B,MAAM,4CAA4C,SAAS,CAAC,aAAa,yDAAyD,MAAM,wDAAwD,SAAS,CAAC,aAAa,+BAA+B,MAAM,yOAAyO;SACrgB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACvD,kEAAkE;QAClE,mEAAmE;QACnE,+DAA+D;QAC/D,uDAAuD;QACvD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,uDAAuD,SAAS,CAAC,IAAI,iCAAiC;SAChH,CAAC,CAAC;IACL,CAAC;IAED,iEAAiE;IACjE,iEAAiE;IACjE,oEAAoE;IACpE,kEAAkE;IAClE,iEAAiE;IACjE,wEAAwE;IACxE,iDAAiD;IACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAI,QAAQ,CAAC,MAA6C,EAAE,SAAS,IAAI,sBAAsB,CAAC;QAC/G,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5C,4FAA4F;YAC5F,8DAA8D;YAC9D,+DAA+D;YAC/D,8DAA8D;YAC9D,iBAAiB;YACjB,MAAM,OAAO,GAAG,4EAA4E,CAAC;YAC7F,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC;gBACN,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClG,kEAAkE;gBAClE,wEAAwE;gBACxE,qEAAqE;gBACrE,qEAAqE;gBACrE,iEAAiE;gBACjE,kCAAkC;gBAClC,MAAM,SAAS,GAAG,iBAAiB,CAAC;gBACpC,MAAM,QAAQ,GACZ,IAAI,MAAM,CAAC,YAAY,SAAS,mBAAmB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;uBACpE,IAAI,MAAM,CAAC,KAAK,SAAS,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;uBAC7D,IAAI,CAAC;gBACV,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qBAAqB;oBAC3B,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,OAAO;wBACd,CAAC,CAAC,oCAAoC,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,SAAS,4JAA4J;wBACnP,+DAA+D;wBAC/D,mEAAmE;wBACnE,oEAAoE;wBACpE,iEAAiE;wBACjE,gEAAgE;wBAChE,+DAA+D;wBAC/D,gBAAgB;wBAChB,CAAC,CAAC,oDAAoD,SAAS,0qBAA0qB;iBAC5uB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,yEAAyE;IACzE,uEAAuE;IACvE,mEAAmE;IACnE,EAAE;IACF,qEAAqE;IACrE,sEAAsE;IACtE,sEAAsE;IACtE,oEAAoE;IACpE,kEAAkE;IAClE,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACvD,CAAC,CAAE,QAAQ,CAAC,YAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACxF,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,MAAM;YAChB,OAAO,EACL,4JAA4J;YAC9J,GAAG,EACD,8FAA8F;gBAC9F,sEAAsE;gBACtE,6EAA6E;gBAC7E,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,6BAA6B,CAAC;gBAC3G,kCAAkC;SACrC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,6BAA6B,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5F,MAAM,UAAU,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvF,MAAM,QAAQ,GACZ,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACxE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,WAAyB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjG,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,sBAAsB;YAC5B,MAAM;YACN,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;YACtC,OAAO,EAAE,MAAM;gBACb,CAAC,CAAC,yBAAyB,QAAQ,CAAC,MAAM,aAAa,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;gBACrJ,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACvD,GAAG,EAAE,MAAM;gBACT,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,4IAA4I;SACjJ,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IACrE,mEAAmE;IACnE,wEAAwE;IACxE,yEAAyE;IACzE,0EAA0E;IAC1E,uBAAuB;IACvB,EAAE;IACF,0EAA0E;IAC1E,yEAAyE;IACzE,uEAAuE;IACvE,uEAAuE;IACvE,+DAA+D;IAC/D,mEAAmE;IACnE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,wBAAwB,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC/F,8DAA8D;QAC9D,oEAAoE;QACpE,oEAAoE;QACpE,qDAAqD;QACrD,iEAAiE;QACjE,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,mFAAmF;YACzH,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,gEAAgE;IAChE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,QAAQ;QACjB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACvC,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,eAAe,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC3C,CAAC,CAAC,yCAAyC;QAC7C,GAAG,EAAE,QAAQ;YACX,CAAC,CAAC,+bAA+b;YACjc,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,iEAAiE;IACjE,wEAAwE;IACxE,qEAAqE;IACrE,iEAAiE;IACjE,iBAAiB;IACjB,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEpB,4BAA4B;IAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElC,mEAAmE;IACnE,yEAAyE;IACzE,oEAAoE;IACpE,uEAAuE;IACvE,qEAAqE;IACrE,oEAAoE;IACpE,sBAAsB;IACtB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAA6C,CAAC;QAC7E,MAAM,kBAAkB,GACtB,OAAO,aAAa,EAAE,iBAAiB,KAAK,QAAQ;YAClD,CAAC,CAAE,aAAa,CAAC,iBAA4B;YAC7C,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC7C,MAAM,qBAAqB,GACzB,OAAO,aAAa,EAAE,oBAAoB,KAAK,QAAQ;YACrD,CAAC,CAAE,aAAa,CAAC,oBAA+B;YAChD,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAClF,MAAM,KAAK,GAAG,UAAU,KAAK,CAAC,CAAC;IAC/B,+EAA+E;IAC/E,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,OAAO,GACX,CAAC,KAAK;QACJ,CAAC,CAAC,GAAG,UAAU,SAAS,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,WAAW,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wBAAwB;QAC9H,CAAC,CAAC,SAAS,KAAK,CAAC;YACf,CAAC,CAAC,4CAA4C;YAC9C,CAAC,CAAC,qCAAqC,SAAS,WAAW,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;IAE9G,OAAO,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,2EAA2E;AAC3E,2EAA2E;AAC3E,8EAA8E;AAC9E,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;AAEpG,SAAS,wBAAwB,CAC/B,WAAmB,EACnB,QAAgB,EAChB,YAAsB;IAEtB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kFAAkF,EAAE,CAAC;IACvH,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;gBACnD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC;YACtF,CAAC;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EACL,4TAA4T;YAC9T,GAAG,EAAE,ySAAyS;SAC/S,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;QACtD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,6FAA6F;YACtG,GAAG,EAAE,+FAA+F;SACrG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,QAAQ,GAAG,EAAE,CAAC;AACrE,CAAC;AAED,oDAAoD;AACpD,mEAAmE;AACnE,EAAE;AACF,wDAAwD;AACxD,oEAAoE;AACpE,sEAAsE;AACtE,uDAAuD;AACvD,oDAAoD;AACpD,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,qEAAqE;AACrE,kDAAkD;AAClD,qDAAqD;AACrD,EAAE;AACF,mEAAmE;AACnE,wEAAwE;AACxE,qEAAqE;AACrE,wDAAwD;AACxD,SAAS,aAAa,CACpB,WAAmB,EACnB,cAA8C,EAC9C,QAAgB;IAEhB,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IACtD,MAAM,MAAM,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAEvF,8CAA8C;IAC9C,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IAED,kEAAkE;IAClE,kEAAkE;IAClE,iEAAiE;IACjE,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,QAAQ,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC;QAClC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AACnE,gEAAgE;AAChE,oEAAoE;AACpE,0BAA0B;AAC1B,SAAS,wBAAwB,CAC/B,IAAY,EACZ,MAAc,EACd,GAAW,EACX,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,CAAC;IAEP,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAa,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM;YAAE,SAAS;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1E,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO,GAAG,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,wEAAwE;AACxE,4EAA4E;AAC5E,sEAAsE;AACtE,+DAA+D;AAC/D,oEAAoE;AACpE,SAAS,cAAc,CACrB,WAAmB,EACnB,cAA8C,EAC9C,QAAgB;IAEhB,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,oBAAoB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,aAAa;YACnF,GAAG,EAAE,+BAA+B;SACrC,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,cAAc,GAClB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC1E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,0CAA0C,cAAc,6FAA6F;YAC9J,GAAG,EAAE,uJAAuJ;SAC7J,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,gJAAgJ;YACzJ,GAAG,EAAE,oMAAoM;SAC1M,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,mBAAmB,cAAc,mBAAmB;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,WAAmB,EACnB,QAAgB,EAChB,QAAiC;IAEjC,MAAM,SAAS,GAAG,CAAC,wBAAwB,EAAE,eAAe,EAAE,uBAAuB,EAAE,eAAe,CAAC,CAAC;IACxG,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,oBAAoB,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QAChC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM;QACR,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAA6C,CAAC;QACtE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;YACvD,CAAC,CAAE,MAAO,CAAC,mBAAsD;YACjE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAK,CAAC,CAAC,UAAqB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC7F,CAAC;QACF,OAAO;YACL,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACpC,OAAO,EAAE,KAAK;gBACZ,CAAC,CAAC,qDAAqD;gBACvD,CAAC,CAAC,sFAAsF;YAC1F,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iFAAiF;SAC3G,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAA0C,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC;YACnD,CAAC,CAAE,GAAI,CAAC,kBAAqD;YAC7D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC;QAC5D,OAAO;YACL,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACpC,OAAO,EAAE,KAAK;gBACZ,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,oEAAoE;YACxE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,+CAA+C;SACzE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB,EAAE,MAAc;IACxD,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,uJAAuJ,MAAM,oBAAoB;YAC1L,GAAG,EAAE,0DAA0D,MAAM,yDAAyD,MAAM,iCAAiC;SACtK,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,iBAAiB,MAAM,GAAG;SAC9E,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,mCAAmC,MAAM,8JAA8J,MAAM,cAAc;QAC9Q,GAAG,EAAE,kBAAkB,MAAM,OAAO,KAAK,CAAC,MAAM,iDAAiD,MAAM,iBAAiB;KACzH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB;IAC9D,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,+GAA+G,SAAS,oBAAoB;YACrJ,GAAG,EAAE,yCAAyC,SAAS,wFAAwF;SAChJ,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,UAAU,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,iBAAiB,SAAS,GAAG;SACpF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,UAAU,KAAK,CAAC,OAAO,UAAU,KAAK,CAAC,MAAM,0BAA0B,SAAS,2GAA2G,SAAS,IAAI;QACjN,GAAG,EAAE,6EAA6E,SAAS,sDAAsD;KAClJ,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAmB;IAC9C,MAAM,UAAU,GAAG;QACjB,mDAAmD;QACnD,yCAAyC;QACzC,+BAA+B;KAChC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAA4B,CAAC;YAChF,IAAI,MAAM,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO;oBACL,IAAI,EAAE,8BAA8B;oBACpC,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,mDAAmD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB;oBACxH,GAAG,EAAE,mEAAmE;iBACzE,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,OAAO;gBACL,IAAI,EAAE,8BAA8B;gBACpC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC7C,OAAO,EAAE,OAAO,CAAC,MAAM;oBACrB,CAAC,CAAC,iBAAiB,OAAO,CAAC,MAAM,2BAA2B,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACrH,CAAC,CAAC,2DAA2D;aAChE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,IAAI,EAAE,8BAA8B;gBACpC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,8CAA8C,UAAU,CAAC,CAAC,CAAC,GAAG;gBACvE,GAAG,EAAE,8DAA8D;aACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAmB,EAAE,QAAgB;IACjE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACvD,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAa,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM;YAAE,SAAS;QACrG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,IAAI,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,IAAI,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,CAAU;IAC5B,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAU;IACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"validateIntegration.js","sourceRoot":"","sources":["../../../src/tools/handlers/validateIntegration.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAiBhD,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAE9E,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAgBhD,CAAC"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkBhD,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAE9E,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiBhD,CAAC"}
@@ -13,6 +13,7 @@ import { handleGetPlatformInfo } from "./handlers/getPlatformInfo.js";
13
13
  import { handleGetProductionChecklist } from "./handlers/getProductionChecklist.js";
14
14
  import { handleGetSimulatorStatus } from "./handlers/getSimulatorStatus.js";
15
15
  import { handleGetVoiceCommandGuidance } from "./handlers/getVoiceCommandGuidance.js";
16
+ import { handleInjectTranscript } from "./handlers/injectTranscript.js";
16
17
  import { handleInspectIntegration } from "./handlers/inspectIntegration.js";
17
18
  import { handleSearchDocs } from "./handlers/searchDocs.js";
18
19
  import { handleValidateIntegration } from "./handlers/validateIntegration.js";
@@ -29,6 +30,7 @@ export const handlers = {
29
30
  getProductionChecklist: handleGetProductionChecklist,
30
31
  getSimulatorStatus: handleGetSimulatorStatus,
31
32
  getVoiceCommandGuidance: handleGetVoiceCommandGuidance,
33
+ injectTranscript: handleInjectTranscript,
32
34
  inspectIntegration: handleInspectIntegration,
33
35
  searchDocs: handleSearchDocs,
34
36
  validateIntegration: handleValidateIntegration,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,yEAAyE;AACzE,yEAAyE;AAGzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAI9E,MAAM,CAAC,MAAM,QAAQ,GAAgC;IACnD,gBAAgB,EAAE,sBAAsB;IACxC,sBAAsB,EAAE,4BAA4B;IACpD,wBAAwB,EAAE,8BAA8B;IACxD,kBAAkB,EAAE,wBAAwB;IAC5C,cAAc,EAAE,oBAAoB;IACpC,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,iBAAiB;IAC9B,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,qBAAqB;IACtC,sBAAsB,EAAE,4BAA4B;IACpD,kBAAkB,EAAE,wBAAwB;IAC5C,uBAAuB,EAAE,6BAA6B;IACtD,kBAAkB,EAAE,wBAAwB;IAC5C,UAAU,EAAE,gBAAgB;IAC5B,mBAAmB,EAAE,yBAAyB;CAC/C,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,yEAAyE;AACzE,yEAAyE;AAGzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAI9E,MAAM,CAAC,MAAM,QAAQ,GAAgC;IACnD,gBAAgB,EAAE,sBAAsB;IACxC,sBAAsB,EAAE,4BAA4B;IACpD,wBAAwB,EAAE,8BAA8B;IACxD,kBAAkB,EAAE,wBAAwB;IAC5C,cAAc,EAAE,oBAAoB;IACpC,kBAAkB,EAAE,wBAAwB;IAC5C,WAAW,EAAE,iBAAiB;IAC9B,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,qBAAqB;IACtC,sBAAsB,EAAE,4BAA4B;IACpD,kBAAkB,EAAE,wBAAwB;IAC5C,uBAAuB,EAAE,6BAA6B;IACtD,gBAAgB,EAAE,sBAAsB;IACxC,kBAAkB,EAAE,wBAAwB;IAC5C,UAAU,EAAE,gBAAgB;IAC5B,mBAAmB,EAAE,yBAAyB;CAC/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/tools/util/permissions.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,oBAAoB,EAAE;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAyKD,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CA+DhG;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAaxF;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAiBhG;AAYD,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAyC,CAAC;AAK7F,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA0B,CAAC"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/tools/util/permissions.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE;QACjB,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,oBAAoB,EAAE;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AA0ND,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CA+DhG;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CAaxF;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,iBAAiB,CAiBhG;AAYD,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAAyC,CAAC;AAK7F,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA0B,CAAC"}
@@ -108,44 +108,84 @@ const IOS_REASONS_BY_KEY = {
108
108
  };
109
109
  const NOTIFICATION_SERVICE_DECLARATION = `<service\n android:name="com.extentos.glasses.core.notifications.ExtentosNotificationListenerService"\n android:label="Notification Mirroring"\n android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"\n android:exported="false">\n <intent-filter>\n <action android:name="android.service.notification.NotificationListenerService" />\n </intent-filter>\n</service>`;
110
110
  const NOTIFICATION_DEV_INSTRUCTIONS = "Add the service declaration above inside <application> in AndroidManifest.xml. At runtime, prompt the user to grant Notification Access via NotificationAccessHelper.openSettings(context). The user must enable the toggle in system Settings → Notifications → Notification access; this permission cannot be requested programmatically.";
111
- // Per-foreground-service-type stub Service declaration. The Extentos
112
- // library does NOT yet ship its own foreground service for mic / camera
113
- // capture (only the notification listener above), so the scaffold emits
114
- // a stub that the customer fills in. The actual Service subclass that
115
- // implements onStartCommand() + startForeground() is customer-owned.
116
- //
117
- // F-DOGFOOD-F28: pre-fix, this declaration field returned null while the
118
- // `foregroundService.required: true` told the agent something needed to
119
- // be wired. The agent had no template to start from — they'd either
120
- // skip the service (works on emulator, breaks in background on real
121
- // device) or guess the wrong syntax.
111
+ // F-R4-11: the Extentos library NOW ships its own foreground service
112
+ // (com.extentos.glasses.core.service.GlassesForegroundService, type=
113
+ // microphone) and declares it in glasses-core's AndroidManifest.xml.
114
+ // Consumer apps inherit the declaration via manifest-merger; no
115
+ // customer-side <service> entry needed. For microphone-only capture the
116
+ // emitted "declaration" is therefore a one-line note pointing at the
117
+ // library service. For camera-type FG (rare) the library's default
118
+ // service doesn't apply; we still emit a stub declaration the customer
119
+ // must implement and declare themselves.
122
120
  function buildForegroundServiceDeclaration(types) {
123
- // Multiple types are combined with `|` in foregroundServiceType per
124
- // Android 14's API: e.g. `microphone|camera`. The single FOREGROUND_SERVICE_*
125
- // sub-permissions for each type are emitted separately via permissions[].
121
+ const isMicOnly = types.length === 1 && types[0] === "microphone";
122
+ if (isMicOnly) {
123
+ return [
124
+ `<!-- F-R4-11: glasses-core's AndroidManifest declares`,
125
+ ` com.extentos.glasses.core.service.GlassesForegroundService with`,
126
+ ` foregroundServiceType="microphone". You inherit it via manifest-merger —`,
127
+ ` no <service> entry needed in your AndroidManifest.xml. Start the service`,
128
+ ` from an Activity AFTER RECORD_AUDIO is granted at runtime:`,
129
+ ` GlassesForegroundService.start(context) // defaults`,
130
+ ` GlassesForegroundService.start(context, title = "MyApp",`,
131
+ ` text = "Listening for voice commands")`,
132
+ ` GlassesForegroundService.stop(context) // on teardown`,
133
+ ` Foreground-only apps can skip starting it entirely. -->`,
134
+ ].join("\n");
135
+ }
136
+ // Camera and combined types still need a customer-owned subclass.
126
137
  const typesAttr = types.join("|");
127
138
  return [
128
- `<!-- F-DOGFOOD-F28: stub foreground service declaration. The Extentos library`,
129
- ` does not yet ship its own foreground service for capture — implement your`,
130
- ` own MicForegroundService (or whatever you name it) that starts in foreground`,
131
- ` and keeps your CoroutineScope alive while glasses.audio.* / glasses.camera.*`,
132
- ` streams are active. Start it from your Activity / Application when your`,
133
- ` handler subscribes; stop it when the subscription ends. -->`,
139
+ `<!-- ${types.includes("camera") ? "F-R4-11: " : ""}The library's default GlassesForegroundService is microphone-only.`,
140
+ ` For ${typesAttr} you need to declare a Service in your AndroidManifest.xml`,
141
+ ` and subclass com.extentos.glasses.core.service.GlassesForegroundService`,
142
+ ` (override foregroundServiceType to combine MICROPHONE | CAMERA), OR write your`,
143
+ ` own Service subclass that calls startForeground(notificationId, notification,`,
144
+ ` FOREGROUND_SERVICE_TYPE_CAMERA${types.includes("microphone") ? " | FOREGROUND_SERVICE_TYPE_MICROPHONE" : ""}).`,
145
+ ` Start it from your Activity AFTER the matching runtime permission is granted. -->`,
134
146
  `<service`,
135
- ` android:name=".MicForegroundService"`,
147
+ ` android:name=".${types.includes("camera") ? "Camera" : "Mic"}ForegroundService"`,
136
148
  ` android:foregroundServiceType="${typesAttr}"`,
137
149
  ` android:exported="false" />`,
138
150
  ].join("\n");
139
151
  }
140
- const FOREGROUND_SERVICE_DEV_INSTRUCTIONS = (types) => `Add the service declaration above inside <application> in AndroidManifest.xml AND ` +
141
- `implement \`MicForegroundService\` (or rename) as a Service subclass that calls ` +
142
- `\`startForeground(notificationId, notification, foregroundServiceType=` +
143
- `${types.includes("camera") ? "FOREGROUND_SERVICE_TYPE_CAMERA" : "FOREGROUND_SERVICE_TYPE_MICROPHONE"})\` ` +
144
- `in onCreate(). Start it from your Application or Activity right before invoking ` +
145
- `the first \`glasses.audio.*\` / \`glasses.camera.*\` continuous stream; stop it once ` +
146
- `the subscription ends. This is only needed for background-surviving capture (screen ` +
147
- `off / user pressed home). Foreground-only apps can skip the service entirely and let ` +
148
- `Android's foreground-while-visible exemption cover the mic / camera access.`;
152
+ const FOREGROUND_SERVICE_DEV_INSTRUCTIONS = (types) => {
153
+ const runtimePerm = types.includes("camera") ? "CAMERA" : "RECORD_AUDIO";
154
+ const isMicOnly = types.length === 1 && types[0] === "microphone";
155
+ const timing = `**Timing (Android 14 / targetSdk 34+) — F-R4-12.** DO NOT start the service from ` +
156
+ `\`Application.onCreate\`. The OS requires \`${runtimePerm}\` to be **granted by the user** ` +
157
+ `before \`startForeground(..., FOREGROUND_SERVICE_TYPE_${types.includes("camera") ? "CAMERA" : "MICROPHONE"})\` ` +
158
+ `runs; otherwise it throws \`SecurityException\` at service-create time and kills the app ` +
159
+ `before the first Activity draws. Start the service from an Activity (or a ViewModel scoped ` +
160
+ `to one) inside the permission-grant callback returned by ` +
161
+ `\`ActivityResultContracts.RequestMultiplePermissions\`, OR check ` +
162
+ `\`ContextCompat.checkSelfPermission(this, Manifest.permission.${runtimePerm}) == PackageManager.PERMISSION_GRANTED\` ` +
163
+ `first.`;
164
+ const scope = `This service is only needed for **background-surviving** capture (screen off / user pressed home). ` +
165
+ `Foreground-only apps can skip starting it entirely; Android's foreground-while-visible exemption ` +
166
+ `covers the mic / camera access. validateIntegration's \`background_execution_declared\` check ` +
167
+ `signals which path you're on.`;
168
+ if (isMicOnly) {
169
+ return (`F-R4-11: glasses-core's AndroidManifest already declares ` +
170
+ `\`com.extentos.glasses.core.service.GlassesForegroundService\` with ` +
171
+ `\`foregroundServiceType="microphone"\` — you inherit it via manifest-merger, ` +
172
+ `so you do NOT need to add a <service> entry to your AndroidManifest.xml.\n\n` +
173
+ `Start the library service with one call:\n\n` +
174
+ ` GlassesForegroundService.start(context) // defaults\n` +
175
+ ` GlassesForegroundService.start(context, title = "MyApp",\n` +
176
+ ` text = "Listening for voice commands")\n` +
177
+ ` GlassesForegroundService.stop(context) // on teardown\n\n` +
178
+ `${timing}\n\n${scope}`);
179
+ }
180
+ // Camera-only or combined microphone+camera: customer still owns the subclass.
181
+ return (`The library's default GlassesForegroundService is microphone-only. For ${types.join("|")} ` +
182
+ `you need to declare your own Service in AndroidManifest.xml (use the declaration above as a ` +
183
+ `starting point) and implement it. Easiest path: subclass ` +
184
+ `\`com.extentos.glasses.core.service.GlassesForegroundService\` and override ` +
185
+ `\`foregroundServiceType\` to combine the bits (e.g. ` +
186
+ `\`MICROPHONE or CAMERA\`). Start it from your Activity once the matching runtime permissions ` +
187
+ `are granted.\n\n${timing}\n\n${scope}`);
188
+ };
149
189
  function knownCapabilities(input) {
150
190
  const set = new Set();
151
191
  for (const c of input)