@extentos/mcp-server 0.11.7 → 0.11.8
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/dist/generated/events.d.ts +55 -1
- package/dist/generated/events.d.ts.map +1 -1
- package/dist/generated/events.js +73 -1
- package/dist/generated/events.js.map +1 -1
- package/dist/generated/glasses-models.d.ts +1 -1
- package/dist/generated/glasses-models.d.ts.map +1 -1
- package/dist/generated/glasses-models.js +1 -0
- package/dist/generated/glasses-models.js.map +1 -1
- package/dist/generated/schemas.d.ts.map +1 -1
- package/dist/generated/schemas.js +3 -2
- package/dist/generated/schemas.js.map +1 -1
- package/dist/tools/data/assistantCatalog.js +1 -1
- package/dist/tools/data/assistantCatalog.js.map +1 -1
- package/dist/tools/data/capabilities.d.ts +527 -0
- package/dist/tools/data/capabilities.d.ts.map +1 -1
- package/dist/tools/data/capabilities.js +24 -0
- package/dist/tools/data/capabilities.js.map +1 -1
- package/dist/tools/data/codeExamples.js +2 -2
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +12 -4
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/docs/index.js +192 -192
- package/dist/tools/docs/index.js.map +1 -1
- package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -1
- package/dist/tools/handlers/createSimulatorSession.js +4 -4
- package/dist/tools/handlers/createSimulatorSession.js.map +1 -1
- package/dist/tools/handlers/generateConnectionModule.d.ts.map +1 -1
- package/dist/tools/handlers/generateConnectionModule.js +4 -4
- package/dist/tools/handlers/generateConnectionModule.js.map +1 -1
- package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -1
- package/dist/tools/handlers/getPlatformInfo.js +29 -18
- package/dist/tools/handlers/getPlatformInfo.js.map +1 -1
- package/dist/tools/util/manifest.d.ts.map +1 -1
- package/dist/tools/util/manifest.js +3 -1
- package/dist/tools/util/manifest.js.map +1 -1
- package/package.json +1 -1
|
@@ -18,13 +18,21 @@ import { REALTIME_MODELS, VOICES, COMPACTION_MODELS } from "./data/assistantCata
|
|
|
18
18
|
// Valid setSimDevice ids — generated from device-registry/glasses-models.json.
|
|
19
19
|
import { GLASSES_MODEL_IDS } from "../generated/glasses-models.js";
|
|
20
20
|
const platformEnum = { type: "string", enum: ["android", "ios"] };
|
|
21
|
-
|
|
21
|
+
// Vendor axis (2026-07-24): canonical vendor token is "meta" (model ids carry
|
|
22
|
+
// the product line). "meta_rayban" is accepted as a legacy alias — agents,
|
|
23
|
+
// docs, and manifests in the wild still send it — and normalizes to "meta"
|
|
24
|
+
// in every handler.
|
|
25
|
+
const glassesEnum = {
|
|
26
|
+
type: "string",
|
|
27
|
+
enum: ["meta", "meta_rayban"],
|
|
28
|
+
description: "Target glasses vendor. Canonical: 'meta'. 'meta_rayban' is a legacy alias (same vendor) kept for compatibility.",
|
|
29
|
+
};
|
|
22
30
|
const responseFormatEnum = { type: "string", enum: ["concise", "detailed"] };
|
|
23
31
|
export const toolDefinitions = [
|
|
24
32
|
// --- 1. Discovery and Planning ---
|
|
25
33
|
{
|
|
26
34
|
name: "getPlatformInfo",
|
|
27
|
-
description: "Return static platform metadata: library version + the list of SDK capabilities the glasses expose. **Phase 4 assistant runtime** (`glasses.assistant.start(provider) { tool(name, description) { body -> ToolResult } }`) is the canonical voice-assistant API — the model owns wake/turn-taking/intent/confirmation, the customer writes tool bodies that act on app state. The legacy Phase 3 conversation runtime (`glasses.conversation.onWake { listen() / speak() / ai.complete() }`) was REMOVED on Android in 1.4.0. Lower-level primitives are still surfaced for fine-grained control (audio.transcriptions, audio.recordDiscrete, audio.speak, audio.audioChunks, camera.capturePhoto, camera.videoFrames, toggles, connection.state, …). The right first call for any new task — primes the agent on what primitives are available before writing handler code. **Default response is COMPACT** — capability names and categories only — keeping the typical first-call cost ~2KB. Per-feature call shape + idiom + gotchas comes from `getCapabilityGuide(feature)`; full compositional patterns (Phase 4 `assistant_agent_loop` for the canonical glasses.assistant.start loop; legacy `conversation_agent_loop` for Phase 3; `voice_qa_assistant` for the pre-Phase-3 manual composition) from `getCodeExample(pattern)`; conceptual docs from `searchDocs(topic: 'assistant_runtime')` for the Phase 4 surface, `searchDocs(topic: 'conversation_runtime')` for Phase 3, or `searchDocs(topic: 'voice_integration')` for the legacy primitives. Pass `expand: ['capabilities.full']` for the machine-readable catalog with params/payload/requires/constraints. **glasses is optional (F-R4-01)** — defaults to `
|
|
35
|
+
description: "Return static platform metadata: library version + the list of SDK capabilities the glasses expose. **Phase 4 assistant runtime** (`glasses.assistant.start(provider) { tool(name, description) { body -> ToolResult } }`) is the canonical voice-assistant API — the model owns wake/turn-taking/intent/confirmation, the customer writes tool bodies that act on app state. The legacy Phase 3 conversation runtime (`glasses.conversation.onWake { listen() / speak() / ai.complete() }`) was REMOVED on Android in 1.4.0. Lower-level primitives are still surfaced for fine-grained control (audio.transcriptions, audio.recordDiscrete, audio.speak, audio.audioChunks, camera.capturePhoto, camera.videoFrames, toggles, connection.state, …). The right first call for any new task — primes the agent on what primitives are available before writing handler code. **Default response is COMPACT** — capability names and categories only — keeping the typical first-call cost ~2KB. Per-feature call shape + idiom + gotchas comes from `getCapabilityGuide(feature)`; full compositional patterns (Phase 4 `assistant_agent_loop` for the canonical glasses.assistant.start loop; legacy `conversation_agent_loop` for Phase 3; `voice_qa_assistant` for the pre-Phase-3 manual composition) from `getCodeExample(pattern)`; conceptual docs from `searchDocs(topic: 'assistant_runtime')` for the Phase 4 surface, `searchDocs(topic: 'conversation_runtime')` for Phase 3, or `searchDocs(topic: 'voice_integration')` for the legacy primitives. Pass `expand: ['capabilities.full']` for the machine-readable catalog with params/payload/requires/constraints. **glasses is optional (F-R4-01)** — defaults to `meta` (the only currently supported vendor; `meta_rayban` is accepted as a legacy alias); pass it explicitly for forward compatibility once additional vendors land. **Already built on raw Meta DAT?** Call `getMigrationGuide` — it maps your existing DAT symbols to Extentos primitives and gives an ordered cutover plan, rather than starting from scratch. USE at session start before scaffolding or writing handler code. DON'T USE for what's installed in the project (use inspectIntegration).",
|
|
28
36
|
inputSchema: {
|
|
29
37
|
type: "object",
|
|
30
38
|
properties: {
|
|
@@ -751,7 +759,7 @@ export const toolDefinitions = [
|
|
|
751
759
|
},
|
|
752
760
|
{
|
|
753
761
|
name: "setSimDevice",
|
|
754
|
-
description: "Switch the simulated glasses DEVICE MODEL — one of the
|
|
762
|
+
description: "Switch the simulated glasses DEVICE MODEL — one of the six simulatable models: rayban_meta, oakley_meta_hstn, oakley_meta_vanguard, rayban_meta_optics, meta_glasses (camera + audio, NO display), and rayban_display (display + Neural Band). The selected device's capability profile drives `glasses.display.isAvailable` on the connected app, so this is how an agent tests BOTH branches of a capability-gated feature headless: set `rayban_display` to exercise the display path (glasses.display.show renders), set any no-display model to verify the graceful degradation (the app's isAvailable guard declines; show() no-ops). The model identity ALSO surfaces to the app as `glasses.device.type` (and in the assistant's glasses-state context), so per-model polish — e.g. an Oakley-specific default voice — is testable by switching between models that share the same capability profile. Mirrors the sim's device dropdown — the change persists on the session AND is pushed live to a connected app (the gate flips without a reconnect), and a `device_changed` event lands in getEventLog(filter:'lifecycle'). USE before driving a display flow to pin which device you're testing; pair with getDisplayState / injectInput. DON'T USE for the camera scene (setSimVideo) or voice (injectTranscript).",
|
|
755
763
|
inputSchema: {
|
|
756
764
|
type: "object",
|
|
757
765
|
properties: {
|
|
@@ -759,7 +767,7 @@ export const toolDefinitions = [
|
|
|
759
767
|
device: {
|
|
760
768
|
type: "string",
|
|
761
769
|
enum: [...GLASSES_MODEL_IDS],
|
|
762
|
-
description: "The device model to simulate. 'rayban_display' = Ray-Ban Display (glasses.display.isAvailable → true; display features work). The other
|
|
770
|
+
description: "The device model to simulate. 'rayban_display' = Ray-Ban Display (glasses.display.isAvailable → true; display features work). The other five — 'rayban_meta' (Gen 1/2), 'oakley_meta_hstn', 'oakley_meta_vanguard', 'rayban_meta_optics' (prescription-first Gen 2), 'meta_glasses' (the 2026 Meta-branded line) — share the camera+audio no-display profile but carry distinct identities (glasses.device.type). A new session defaults to rayban_meta.",
|
|
763
771
|
},
|
|
764
772
|
},
|
|
765
773
|
required: ["sessionId", "device"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/docs/index.js
CHANGED
|
@@ -15,194 +15,194 @@ const AGP_FLOOR = VERSION_INFO.android.minimumAgpVersion;
|
|
|
15
15
|
// Per-placement code snippets surfaced by topic 'connection_ui_placement'.
|
|
16
16
|
// Mirrored in docs/mcp/LIBRARY_API.md § Connection UI § Placement.
|
|
17
17
|
// Five Android (Compose) + five iOS (SwiftUI) options.
|
|
18
|
-
const PLACEMENT_SNIPPETS_CONTENT = `Five placements for ExtentosConnectionPage. Each block shows the minimum code in the developer's app — the library handles all glasses-state rendering inside ExtentosConnectionPage(glasses).
|
|
19
|
-
|
|
20
|
-
Imports (Android) — every placement snippet below assumes these. Most are auto-imported by Compose IDEs; surface them here so MCP-only agents don't have to guess the package:
|
|
21
|
-
|
|
22
|
-
import androidx.compose.material3.*
|
|
23
|
-
import androidx.compose.material3.IconButton
|
|
24
|
-
import androidx.compose.material.icons.Icons
|
|
25
|
-
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
26
|
-
import androidx.compose.material.icons.filled.Home
|
|
27
|
-
import androidx.compose.material.icons.filled.Sensors
|
|
28
|
-
import androidx.compose.runtime.*
|
|
29
|
-
import androidx.compose.ui.Modifier
|
|
30
|
-
import androidx.navigation.compose.* // NavHost-based snippets (1,2,3) only — skip for state-based nav
|
|
31
|
-
import com.extentos.glasses.ui.ExtentosConnectionPage
|
|
32
|
-
|
|
33
|
-
Obtaining \`glasses\` (Android) — every snippet references the same \`glasses\` value. Reach it from your Application class. Pattern using the recommended init-helper template:
|
|
34
|
-
|
|
35
|
-
// In your Compose layer where you mount the NavHost:
|
|
36
|
-
val context = LocalContext.current
|
|
37
|
-
val app = context.applicationContext as YourApp // your Application subclass
|
|
38
|
-
val glasses = app.glasses // ExtentosGlasses instance
|
|
39
|
-
|
|
40
|
-
// If you used the Application-subclass scaffold template instead, replace
|
|
41
|
-
// \`YourApp\` with \`ExtentosBootstrap\` (the generated subclass holds the
|
|
42
|
-
// same \`glasses\` property).
|
|
43
|
-
|
|
44
|
-
ANDROID — Jetpack Compose
|
|
45
|
-
|
|
46
|
-
(1) Dedicated route — single-purpose route, navigate from any button. ExtentosConnectionPage uses fillMaxSize() and is unopinionated about navigation, so wrap it in a Scaffold + TopAppBar with a back arrow.
|
|
47
|
-
|
|
48
|
-
// build.gradle.kts: implementation("androidx.navigation:navigation-compose:2.8.4")
|
|
49
|
-
val navController = rememberNavController()
|
|
50
|
-
NavHost(navController, startDestination = "home") {
|
|
51
|
-
composable("home") { HomeScreen(onOpenGlasses = { navController.navigate("glasses") }) }
|
|
52
|
-
composable("glasses") {
|
|
53
|
-
Scaffold(
|
|
54
|
-
topBar = {
|
|
55
|
-
TopAppBar(
|
|
56
|
-
title = { Text("Glasses") },
|
|
57
|
-
navigationIcon = {
|
|
58
|
-
IconButton(onClick = { navController.popBackStack() }) {
|
|
59
|
-
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
)
|
|
63
|
-
},
|
|
64
|
-
) { padding ->
|
|
65
|
-
ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
State-based navigation — no navigation-compose dependency. ExtentosConnectionPage is
|
|
71
|
-
container-agnostic, so render it wherever your "glasses" screen shows:
|
|
72
|
-
|
|
73
|
-
when (screen) {
|
|
74
|
-
Screen.Glasses -> ExtentosConnectionPage(glasses, modifier = Modifier.fillMaxSize())
|
|
75
|
-
// ... your other screens (AnimatedContent / Crossfade / plain if-else all work)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
(2) Settings subscreen — pushed onto the back stack from a Settings list row. Same Scaffold wrap as (1) so the dev can return to Settings.
|
|
79
|
-
|
|
80
|
-
composable("settings") {
|
|
81
|
-
Column {
|
|
82
|
-
ListItem(
|
|
83
|
-
headlineContent = { Text("Smart glasses") },
|
|
84
|
-
modifier = Modifier.clickable { navController.navigate("glasses") },
|
|
85
|
-
)
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
composable("glasses") {
|
|
89
|
-
Scaffold(
|
|
90
|
-
topBar = {
|
|
91
|
-
TopAppBar(
|
|
92
|
-
title = { Text("Smart glasses") },
|
|
93
|
-
navigationIcon = {
|
|
94
|
-
IconButton(onClick = { navController.popBackStack() }) {
|
|
95
|
-
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
)
|
|
99
|
-
},
|
|
100
|
-
) { padding ->
|
|
101
|
-
ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
(3) Bottom-nav tab — co-equal destination alongside the app's main screens.
|
|
106
|
-
|
|
107
|
-
// build.gradle.kts: implementation("androidx.navigation:navigation-compose:2.8.4")
|
|
108
|
-
val navController = rememberNavController()
|
|
109
|
-
val backStackEntry by navController.currentBackStackEntryAsState()
|
|
110
|
-
val currentRoute = backStackEntry?.destination?.route ?: "home"
|
|
111
|
-
Scaffold(
|
|
112
|
-
bottomBar = {
|
|
113
|
-
NavigationBar {
|
|
114
|
-
NavigationBarItem(
|
|
115
|
-
selected = currentRoute == "home",
|
|
116
|
-
onClick = { if (currentRoute != "home") navController.navigate("home") },
|
|
117
|
-
icon = { Icon(Icons.Default.Home, null) },
|
|
118
|
-
label = { Text("Home") },
|
|
119
|
-
)
|
|
120
|
-
NavigationBarItem(
|
|
121
|
-
selected = currentRoute == "glasses",
|
|
122
|
-
onClick = { if (currentRoute != "glasses") navController.navigate("glasses") },
|
|
123
|
-
icon = { Icon(Icons.Default.Sensors, null) },
|
|
124
|
-
label = { Text("Glasses") },
|
|
125
|
-
)
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
) { padding ->
|
|
129
|
-
NavHost(navController, startDestination = "home", modifier = Modifier.padding(padding)) {
|
|
130
|
-
composable("home") { HomeScreen() }
|
|
131
|
-
composable("glasses") { ExtentosConnectionPage(glasses) }
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
(4) Modal bottom sheet — overlay launched from a Settings row or app-bar action.
|
|
136
|
-
|
|
137
|
-
var sheetOpen by remember { mutableStateOf(false) }
|
|
138
|
-
IconButton(onClick = { sheetOpen = true }) { Icon(Icons.Default.Sensors, "Glasses") }
|
|
139
|
-
if (sheetOpen) {
|
|
140
|
-
ModalBottomSheet(onDismissRequest = { sheetOpen = false }) {
|
|
141
|
-
ExtentosConnectionPage(glasses)
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
(5) Headless — no UI; bootstrap connects in the background. Just don't render
|
|
146
|
-
ExtentosConnectionPage anywhere. Library state still emits via
|
|
147
|
-
glasses.connection.state for any custom UI you want to surface (e.g. a
|
|
148
|
-
badge in your top app bar). The connection runs from ExtentosBootstrap.
|
|
149
|
-
|
|
150
|
-
iOS — SwiftUI
|
|
151
|
-
|
|
152
|
-
Obtaining \`glasses\` (iOS) — every snippet references the same \`glasses\` value. Reach it from the ExtentosBootstrap singleton:
|
|
153
|
-
|
|
154
|
-
let glasses = ExtentosBootstrap.shared.glasses
|
|
155
|
-
|
|
156
|
-
// Or pass it down from the root @main App struct via @Environment:
|
|
157
|
-
@main struct YourApp: App {
|
|
158
|
-
var body: some Scene {
|
|
159
|
-
WindowGroup {
|
|
160
|
-
HomeView()
|
|
161
|
-
.environment(\\.glasses, ExtentosBootstrap.shared.glasses)
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
(1) Dedicated route — pushed via NavigationLink from anywhere. The system NavigationStack provides a back chevron; .navigationTitle makes the bar visible. (GlassesRoute is YOUR navigation value, not an SDK type — define it once: struct GlassesRoute: Hashable {}.)
|
|
167
|
-
|
|
168
|
-
NavigationStack {
|
|
169
|
-
HomeView()
|
|
170
|
-
.navigationDestination(for: GlassesRoute.self) { _ in
|
|
171
|
-
ExtentosConnectionPage(glasses: glasses)
|
|
172
|
-
.navigationTitle("Glasses")
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
(2) Settings subscreen — row inside Form/List that pushes the page.
|
|
177
|
-
|
|
178
|
-
Form {
|
|
179
|
-
NavigationLink("Smart glasses", value: GlassesRoute())
|
|
180
|
-
}
|
|
181
|
-
.navigationDestination(for: GlassesRoute.self) { _ in
|
|
182
|
-
ExtentosConnectionPage(glasses: glasses)
|
|
183
|
-
.navigationTitle("Smart glasses")
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
(3) Bottom tab — TabView destination.
|
|
187
|
-
|
|
188
|
-
TabView {
|
|
189
|
-
HomeView().tabItem { Label("Home", systemImage: "house") }
|
|
190
|
-
ExtentosConnectionPage().tabItem { Label("Glasses", systemImage: "dot.radiowaves.left.and.right") }
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
(4) Modal sheet — overlay launched from any button.
|
|
194
|
-
|
|
195
|
-
@State private var sheetOpen = false
|
|
196
|
-
Button("Glasses") { sheetOpen = true }
|
|
197
|
-
.sheet(isPresented: $sheetOpen) { ExtentosConnectionPage() }
|
|
198
|
-
|
|
199
|
-
(5) Headless — bootstrap is created at App init() / @main; just don't render
|
|
200
|
-
ExtentosConnectionPage. Connection still runs in the background. Use
|
|
201
|
-
glasses.connection.state in your own views if you want a custom indicator.
|
|
202
|
-
|
|
203
|
-
NOTES
|
|
204
|
-
- 'glasses' refers to the ExtentosGlasses instance created in ExtentosBootstrap. On Android pass it from your Application subclass; on iOS reach it via the bootstrap singleton.
|
|
205
|
-
- ExtentosConnectionPage uses fillMaxSize() (Android) / takes the full available space (iOS). Embed it in a container that gives it a finite layout (Scaffold body, NavHost destination, sheet content, etc.) — placing it inside a Column/VStack with other content stacked below requires Modifier.weight or a fixed height.
|
|
18
|
+
const PLACEMENT_SNIPPETS_CONTENT = `Five placements for ExtentosConnectionPage. Each block shows the minimum code in the developer's app — the library handles all glasses-state rendering inside ExtentosConnectionPage(glasses).
|
|
19
|
+
|
|
20
|
+
Imports (Android) — every placement snippet below assumes these. Most are auto-imported by Compose IDEs; surface them here so MCP-only agents don't have to guess the package:
|
|
21
|
+
|
|
22
|
+
import androidx.compose.material3.*
|
|
23
|
+
import androidx.compose.material3.IconButton
|
|
24
|
+
import androidx.compose.material.icons.Icons
|
|
25
|
+
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
26
|
+
import androidx.compose.material.icons.filled.Home
|
|
27
|
+
import androidx.compose.material.icons.filled.Sensors
|
|
28
|
+
import androidx.compose.runtime.*
|
|
29
|
+
import androidx.compose.ui.Modifier
|
|
30
|
+
import androidx.navigation.compose.* // NavHost-based snippets (1,2,3) only — skip for state-based nav
|
|
31
|
+
import com.extentos.glasses.ui.ExtentosConnectionPage
|
|
32
|
+
|
|
33
|
+
Obtaining \`glasses\` (Android) — every snippet references the same \`glasses\` value. Reach it from your Application class. Pattern using the recommended init-helper template:
|
|
34
|
+
|
|
35
|
+
// In your Compose layer where you mount the NavHost:
|
|
36
|
+
val context = LocalContext.current
|
|
37
|
+
val app = context.applicationContext as YourApp // your Application subclass
|
|
38
|
+
val glasses = app.glasses // ExtentosGlasses instance
|
|
39
|
+
|
|
40
|
+
// If you used the Application-subclass scaffold template instead, replace
|
|
41
|
+
// \`YourApp\` with \`ExtentosBootstrap\` (the generated subclass holds the
|
|
42
|
+
// same \`glasses\` property).
|
|
43
|
+
|
|
44
|
+
ANDROID — Jetpack Compose
|
|
45
|
+
|
|
46
|
+
(1) Dedicated route — single-purpose route, navigate from any button. ExtentosConnectionPage uses fillMaxSize() and is unopinionated about navigation, so wrap it in a Scaffold + TopAppBar with a back arrow.
|
|
47
|
+
|
|
48
|
+
// build.gradle.kts: implementation("androidx.navigation:navigation-compose:2.8.4")
|
|
49
|
+
val navController = rememberNavController()
|
|
50
|
+
NavHost(navController, startDestination = "home") {
|
|
51
|
+
composable("home") { HomeScreen(onOpenGlasses = { navController.navigate("glasses") }) }
|
|
52
|
+
composable("glasses") {
|
|
53
|
+
Scaffold(
|
|
54
|
+
topBar = {
|
|
55
|
+
TopAppBar(
|
|
56
|
+
title = { Text("Glasses") },
|
|
57
|
+
navigationIcon = {
|
|
58
|
+
IconButton(onClick = { navController.popBackStack() }) {
|
|
59
|
+
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
)
|
|
63
|
+
},
|
|
64
|
+
) { padding ->
|
|
65
|
+
ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
State-based navigation — no navigation-compose dependency. ExtentosConnectionPage is
|
|
71
|
+
container-agnostic, so render it wherever your "glasses" screen shows:
|
|
72
|
+
|
|
73
|
+
when (screen) {
|
|
74
|
+
Screen.Glasses -> ExtentosConnectionPage(glasses, modifier = Modifier.fillMaxSize())
|
|
75
|
+
// ... your other screens (AnimatedContent / Crossfade / plain if-else all work)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
(2) Settings subscreen — pushed onto the back stack from a Settings list row. Same Scaffold wrap as (1) so the dev can return to Settings.
|
|
79
|
+
|
|
80
|
+
composable("settings") {
|
|
81
|
+
Column {
|
|
82
|
+
ListItem(
|
|
83
|
+
headlineContent = { Text("Smart glasses") },
|
|
84
|
+
modifier = Modifier.clickable { navController.navigate("glasses") },
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
composable("glasses") {
|
|
89
|
+
Scaffold(
|
|
90
|
+
topBar = {
|
|
91
|
+
TopAppBar(
|
|
92
|
+
title = { Text("Smart glasses") },
|
|
93
|
+
navigationIcon = {
|
|
94
|
+
IconButton(onClick = { navController.popBackStack() }) {
|
|
95
|
+
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
)
|
|
99
|
+
},
|
|
100
|
+
) { padding ->
|
|
101
|
+
ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
(3) Bottom-nav tab — co-equal destination alongside the app's main screens.
|
|
106
|
+
|
|
107
|
+
// build.gradle.kts: implementation("androidx.navigation:navigation-compose:2.8.4")
|
|
108
|
+
val navController = rememberNavController()
|
|
109
|
+
val backStackEntry by navController.currentBackStackEntryAsState()
|
|
110
|
+
val currentRoute = backStackEntry?.destination?.route ?: "home"
|
|
111
|
+
Scaffold(
|
|
112
|
+
bottomBar = {
|
|
113
|
+
NavigationBar {
|
|
114
|
+
NavigationBarItem(
|
|
115
|
+
selected = currentRoute == "home",
|
|
116
|
+
onClick = { if (currentRoute != "home") navController.navigate("home") },
|
|
117
|
+
icon = { Icon(Icons.Default.Home, null) },
|
|
118
|
+
label = { Text("Home") },
|
|
119
|
+
)
|
|
120
|
+
NavigationBarItem(
|
|
121
|
+
selected = currentRoute == "glasses",
|
|
122
|
+
onClick = { if (currentRoute != "glasses") navController.navigate("glasses") },
|
|
123
|
+
icon = { Icon(Icons.Default.Sensors, null) },
|
|
124
|
+
label = { Text("Glasses") },
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
) { padding ->
|
|
129
|
+
NavHost(navController, startDestination = "home", modifier = Modifier.padding(padding)) {
|
|
130
|
+
composable("home") { HomeScreen() }
|
|
131
|
+
composable("glasses") { ExtentosConnectionPage(glasses) }
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
(4) Modal bottom sheet — overlay launched from a Settings row or app-bar action.
|
|
136
|
+
|
|
137
|
+
var sheetOpen by remember { mutableStateOf(false) }
|
|
138
|
+
IconButton(onClick = { sheetOpen = true }) { Icon(Icons.Default.Sensors, "Glasses") }
|
|
139
|
+
if (sheetOpen) {
|
|
140
|
+
ModalBottomSheet(onDismissRequest = { sheetOpen = false }) {
|
|
141
|
+
ExtentosConnectionPage(glasses)
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
(5) Headless — no UI; bootstrap connects in the background. Just don't render
|
|
146
|
+
ExtentosConnectionPage anywhere. Library state still emits via
|
|
147
|
+
glasses.connection.state for any custom UI you want to surface (e.g. a
|
|
148
|
+
badge in your top app bar). The connection runs from ExtentosBootstrap.
|
|
149
|
+
|
|
150
|
+
iOS — SwiftUI
|
|
151
|
+
|
|
152
|
+
Obtaining \`glasses\` (iOS) — every snippet references the same \`glasses\` value. Reach it from the ExtentosBootstrap singleton:
|
|
153
|
+
|
|
154
|
+
let glasses = ExtentosBootstrap.shared.glasses
|
|
155
|
+
|
|
156
|
+
// Or pass it down from the root @main App struct via @Environment:
|
|
157
|
+
@main struct YourApp: App {
|
|
158
|
+
var body: some Scene {
|
|
159
|
+
WindowGroup {
|
|
160
|
+
HomeView()
|
|
161
|
+
.environment(\\.glasses, ExtentosBootstrap.shared.glasses)
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
(1) Dedicated route — pushed via NavigationLink from anywhere. The system NavigationStack provides a back chevron; .navigationTitle makes the bar visible. (GlassesRoute is YOUR navigation value, not an SDK type — define it once: struct GlassesRoute: Hashable {}.)
|
|
167
|
+
|
|
168
|
+
NavigationStack {
|
|
169
|
+
HomeView()
|
|
170
|
+
.navigationDestination(for: GlassesRoute.self) { _ in
|
|
171
|
+
ExtentosConnectionPage(glasses: glasses)
|
|
172
|
+
.navigationTitle("Glasses")
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
(2) Settings subscreen — row inside Form/List that pushes the page.
|
|
177
|
+
|
|
178
|
+
Form {
|
|
179
|
+
NavigationLink("Smart glasses", value: GlassesRoute())
|
|
180
|
+
}
|
|
181
|
+
.navigationDestination(for: GlassesRoute.self) { _ in
|
|
182
|
+
ExtentosConnectionPage(glasses: glasses)
|
|
183
|
+
.navigationTitle("Smart glasses")
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
(3) Bottom tab — TabView destination.
|
|
187
|
+
|
|
188
|
+
TabView {
|
|
189
|
+
HomeView().tabItem { Label("Home", systemImage: "house") }
|
|
190
|
+
ExtentosConnectionPage().tabItem { Label("Glasses", systemImage: "dot.radiowaves.left.and.right") }
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
(4) Modal sheet — overlay launched from any button.
|
|
194
|
+
|
|
195
|
+
@State private var sheetOpen = false
|
|
196
|
+
Button("Glasses") { sheetOpen = true }
|
|
197
|
+
.sheet(isPresented: $sheetOpen) { ExtentosConnectionPage() }
|
|
198
|
+
|
|
199
|
+
(5) Headless — bootstrap is created at App init() / @main; just don't render
|
|
200
|
+
ExtentosConnectionPage. Connection still runs in the background. Use
|
|
201
|
+
glasses.connection.state in your own views if you want a custom indicator.
|
|
202
|
+
|
|
203
|
+
NOTES
|
|
204
|
+
- 'glasses' refers to the ExtentosGlasses instance created in ExtentosBootstrap. On Android pass it from your Application subclass; on iOS reach it via the bootstrap singleton.
|
|
205
|
+
- ExtentosConnectionPage uses fillMaxSize() (Android) / takes the full available space (iOS). Embed it in a container that gives it a finite layout (Scaffold body, NavHost destination, sheet content, etc.) — placing it inside a Column/VStack with other content stacked below requires Modifier.weight or a fixed height.
|
|
206
206
|
- All five placements work with appearance theming via ExtentosTheme (Layer 2). Switch to @ExtentosEscapeHatch only if you need a fully custom UI structure.`;
|
|
207
207
|
export const DOC_INDEX = [
|
|
208
208
|
{
|
|
@@ -823,7 +823,7 @@ export const DOC_INDEX = [
|
|
|
823
823
|
title: "Glasses Display (glasses.display.*)",
|
|
824
824
|
content: "Render UI on the glasses display — the Ray-Ban Display's screen. `glasses.display.show { ... }` builds a DisplayNode tree with a Kotlin builder DSL and hands it to the device; `glasses.display.clear()` wipes it; `glasses.display.isAvailable` gates it. On real hardware the tree renders via Meta DAT's mwdat-display (`sendContent`); in the simulator the browser tab renders it. The panel is ADDITIVE light on a waveguide: it can only add brightness to the world — dark pixels are invisible, nothing occludes, and every element reads translucent over the scene. Design with bright text and strokes, never dark fills; the simulator composites the display additively (screen blend) so previews match the physics. Shipped in BOTH SDKs and fully sim-testable on both; on-glasses rendering via Meta DAT (mwdat-display) is live on Android, with iOS on-glasses delivery in progress. Swift DSL deltas: containers are `flexBox(direction:)` (no column/row sugar), `show`/`clear` are async, tappable ids auto-assign per show, and local-media roots (`image(photo:)` / `video(clip:)`) are Android-only — iOS uses URL-based media.\n\n" +
|
|
825
825
|
"── Per-DEVICE capability ──\n\n" +
|
|
826
|
-
"Display is a capability of the specific DEVICE MODEL, not the vendor: within
|
|
826
|
+
"Display is a capability of the specific DEVICE MODEL, not the vendor: within the Meta lineup, Ray-Ban Display has a screen; Ray-Ban Meta does not. Always branch on `glasses.display.isAvailable`, never on a model name. The gate is LIVE — in the simulator, switching the device model (setSimDevice or the sim's device dropdown) pushes the new profile to the connected app mid-session with no reconnect. A `show {}` on a display-less device is a safe silent no-op; good UX checks the gate and falls back to voice (speak the content, or have the assistant offer to read it aloud).\n\n" +
|
|
827
827
|
"── DSL vocabulary ──\n\n" +
|
|
828
828
|
"Containers: `column(...)` / `row(...)` with gap / padding / background (NONE | CARD) / mainAlign / crossAlign, and an optional `onClick` that makes the whole container tappable (auto-generated positional id: \"box-0\", \"box-1\", ...). Leaves: `text(text, style = HEADING | BODY | CAPTION, color = PRIMARY | SECONDARY, align)`, `button(text, style = PRIMARY | SECONDARY | OUTLINE, icon, align, id, onClick)` (pass an explicit `id` — stable + agent-targetable), `image(url, size = ImageSize.ICON|FILL, cornerRadius = CornerRadius.NONE|SMALL|MEDIUM)` renders a remote image by URL (size + cornerRadius are enums, not Int); `image(photo)` hosts a locally-captured Photo at show() time and renders it full-surface (DSP-29 — the photo mirror of `video(clip)`; release with `forgetHostedImage(photo)` when the photo is deleted, fails with a `display.image_delivery_failed` WARN). `icon(name)`. There is no vector/canvas/local-bitmap drawing path to the display. `show {}` REPLACES the entire display each call; multiple top-level nodes auto-wrap in an implicit column. show() and clear() are suspend.\n\n" +
|
|
829
829
|
"── Video (full-surface only) ──\n\n" +
|
|
@@ -872,7 +872,7 @@ export const DOC_INDEX = [
|
|
|
872
872
|
content: "Manifest version 2 (post pure-SDK pivot). Top-level fields:\n\n" +
|
|
873
873
|
"- `manifestVersion: 2` — bumped from v1 when the spec / integration sub-object dropped.\n" +
|
|
874
874
|
"- `platform: \"android\" | \"ios\"`\n" +
|
|
875
|
-
"- `glasses: \"
|
|
875
|
+
"- `glasses: \"meta\"` — the target vendor (canonical token; older manifests carry the legacy alias `\"meta_rayban\"`, still valid). Meta is the only vendor today.\n" +
|
|
876
876
|
"- `appPackage: string` — Android `applicationId` / iOS bundle identifier. The dashboard groups sims by this value.\n" +
|
|
877
877
|
"- `extentos: { libraryVersion, installedAt, lastUpdatedAt }` — install metadata.\n" +
|
|
878
878
|
"- `generatedFiles: [{ path, template, hash, generatedAt, generatedByTool }]` — the bootstrap (and any future tool-managed files). Detected by `inspectIntegration` / `validateIntegration` for drift via the recorded hash. NOTE: `hash` is `sha256` of a NORMALIZED form of the file, NOT the raw bytes — `sha256sum <file>` will NOT match. Normalization (applied identically on emit + drift-check): line-endings → LF, block comments stripped, trailing whitespace removed, runs of blank lines collapsed, USER-CODE marker bodies masked. So a CRLF checkout or a trimmed KDoc won't trip drift; renames / body edits / added declarations will. Only `generatedFiles` hashes are drift-checked this way — gradle/spm coordinate drift is a separate check (`manifest_coordinate_matches_build`).\n" +
|
|
@@ -1189,7 +1189,7 @@ export const DOC_INDEX = [
|
|
|
1189
1189
|
"── First-build verification (Android) ──\n" +
|
|
1190
1190
|
"After steps 1–9 + wrapper bootstrap, run `./gradlew :app:assembleDebug` from project root (Windows: `gradlew.bat :app:assembleDebug` from PowerShell/cmd — the wrapper bootstrap writes both `gradlew` and `gradlew.bat`; on PowerShell set env vars with `$env:JAVA_HOME=\"...\"`, not the POSIX `KEY=value` form). Expected: ~1–3 min for first build (downloads Gradle distribution + dependencies). On success, APK lands at `app/build/outputs/apk/debug/app-debug.apk`. On failure, `JAVA_HOME` or `sdk.dir` is the most common culprit (see prerequisites).\n\n" +
|
|
1191
1191
|
"── Now run generateConnectionModule ──\n" +
|
|
1192
|
-
"With the host app building cleanly, call `generateConnectionModule({ platform: 'android', glasses: '
|
|
1192
|
+
"With the host app building cleanly, call `generateConnectionModule({ platform: 'android', glasses: 'meta', appPackage: 'com.example.myapp' })`. The first call returns the placement question; ask the dev which placement; re-call with `placement: '<chosen_id>'` to receive the scaffold.\n\n" +
|
|
1193
1193
|
"── iOS — minimum-viable SwiftUI app (GUI path) ──\n" +
|
|
1194
1194
|
"Xcode users: New Project wizard (File > New > Project > App, SwiftUI lifecycle, target iOS 16.0+). After the project is created, `xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16 Pro' build` should succeed before running generateConnectionModule.\n\n" +
|
|
1195
1195
|
"── iOS — headless / CLI path (xcodegen) ──\n" +
|
|
@@ -1338,7 +1338,7 @@ export const DOC_INDEX = [
|
|
|
1338
1338
|
"- DB has a new assistant row but no `speak` event in the log → **output regression**. The answer was computed and persisted but never spoken to the user.\n" +
|
|
1339
1339
|
"- Both layers agree → the flow really worked end-to-end, not just at the protocol layer. This is the assertion that closes the loop.\n\n" +
|
|
1340
1340
|
"── The canonical recipe (Android emulator + browser sim) ──\n\n" +
|
|
1341
|
-
" 1. `createSimulatorSession({ glasses: \"
|
|
1341
|
+
" 1. `createSimulatorSession({ glasses: \"meta\", platform: \"android\", projectPath })` — get-or-create the saved sim.\n" +
|
|
1342
1342
|
" 2. Build + install the app: `./gradlew :app:assembleDebug && adb install -r <apk> && adb shell am start -n <pkg>/.MainActivity`.\n" +
|
|
1343
1343
|
" 3. Wait for the app to attach. `getSimulatorStatus` should show your install in `connectedRoles`. (`hardwareReady: true` flips once the browser sim has loaded once — see CAVEATS below.)\n" +
|
|
1344
1344
|
" 4. **Drive the flow.** `injectTranscript({ sessionId, text: \"ask my coach\" })` — wake matches, handler enters `recordDiscrete`. Then `injectTranscript({ sessionId, text: \"what was my max bench press\" })` — this satisfies the pending `recordDiscrete` directly (see F-R5-03 below). Handler now calls the LLM and `speak`s the result.\n" +
|