@extentos/mcp-server 0.10.2 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +2 -2
  2. package/dist/generated/schemas.js +1 -1
  3. package/dist/generated/schemas.js.map +1 -1
  4. package/dist/tools/data/capabilities.d.ts +4 -1
  5. package/dist/tools/data/capabilities.d.ts.map +1 -1
  6. package/dist/tools/data/capabilities.js +15 -11
  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 +13 -10
  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 +36 -18
  13. package/dist/tools/data/codeExamples.js.map +1 -1
  14. package/dist/tools/data/datMigrationMap.js +1 -1
  15. package/dist/tools/data/datMigrationMap.js.map +1 -1
  16. package/dist/tools/data/version.js +22 -22
  17. package/dist/tools/data/version.js.map +1 -1
  18. package/dist/tools/definitions.d.ts.map +1 -1
  19. package/dist/tools/definitions.js +61 -19
  20. package/dist/tools/definitions.js.map +1 -1
  21. package/dist/tools/docs/index.d.ts.map +1 -1
  22. package/dist/tools/docs/index.js +23 -24
  23. package/dist/tools/docs/index.js.map +1 -1
  24. package/dist/tools/handlers/generateConnectionModule.js +12 -2
  25. package/dist/tools/handlers/generateConnectionModule.js.map +1 -1
  26. package/dist/tools/handlers/getEventLog.d.ts.map +1 -1
  27. package/dist/tools/handlers/getEventLog.js +38 -2
  28. package/dist/tools/handlers/getEventLog.js.map +1 -1
  29. package/dist/tools/templates/androidBootstrap.d.ts.map +1 -1
  30. package/dist/tools/templates/androidBootstrap.js +10 -0
  31. package/dist/tools/templates/androidBootstrap.js.map +1 -1
  32. package/dist/tools/templates/iosBootstrap.js +5 -5
  33. package/package.json +68 -68
@@ -443,7 +443,7 @@ final class TranscriptionViewModel: ObservableObject {
443
443
  explanation: "Subscribe to transcriptions() once at view-model init, append final segments to your state. Compose / SwiftUI re-renders on the StateFlow / @Published update. The library auto-restarts the recognizer between utterances to keep the stream continuous (~100-300ms gap).",
444
444
  gotchas: [
445
445
  "transcriptions() is gated by listening_mode + audio_capture_enabled + privacy_mode toggles. If transcripts stop arriving unexpectedly, check those — likely listening_mode flipped to 'off' from a UI control.",
446
- "Mic audio routes over HFP while transcriptions are active; A2DP music playback drops to mono 8 kHz for the duration. Show a 'listening…' indicator so the user knows why.",
446
+ "Mic audio routes over HFP while transcriptions are active; A2DP music playback drops to voice-band HFP mono for the duration. Show a 'listening…' indicator so the user knows why.",
447
447
  "Partial transcripts arrive 5-20 per second on a normal-speed utterance. Throttle / debounce in your UI if you render every emission — rendering 200 Compose updates per second is wasteful.",
448
448
  ],
449
449
  relatedFeatures: ["transcription_incremental"],
@@ -1609,7 +1609,7 @@ The agent reads each \`speak\` event's \`details.text\` — that is what the app
1609
1609
  const CONVERSATION_AGENT_LOOP = {
1610
1610
  pattern: "conversation_agent_loop",
1611
1611
  title: "LEGACY Phase 3 conversation runtime (REMOVED on Android in 1.4.0 — historical reference; use assistant_agent_loop)",
1612
- description: "**LEGACY — REMOVED on Android in 1.4.0 (`glasses.conversation` / `glasses.ai` no longer exist there; the iOS port is unpublished).** For new voice-assistant work use `assistant_agent_loop` (Phase 4 `glasses.assistant.start { tool(...) { ... } }`). The Phase 4 customer surface drops ~60% LoC vs this pattern, ships zero on-device ML (no ONNX models to bundle), and lets the model decide which tool to call instead of the customer hand-writing `when (turn.text)` keyword routing. This Phase 3 pattern stays in the catalog as historical migration reference only — the snippets do not compile against Android 1.4.0. See `searchDocs(topic:'assistant_runtime')` migration section for the side-by-side Phase 3 → Phase 4 walkthrough. The Phase 3 `glasses.conversation.onWake { listen() / speak() / ai.complete() }` API composes VAD + STT + Smart Turn + TTS + BYOK LLM in the shared Rust core; the agent loop here drives wake + follow-up utterances via `injectTranscript` and asserts symmetric `conversation.*` event pairs.",
1612
+ description: "**LEGACY — REMOVED on Android in 1.4.0 (`glasses.conversation` / `glasses.ai` no longer exist there, and the API never shipped on iOS).** For new voice-assistant work use `assistant_agent_loop` (Phase 4 `glasses.assistant.start { tool(...) { ... } }`). The Phase 4 customer surface drops ~60% LoC vs this pattern, ships zero on-device ML (no ONNX models to bundle), and lets the model decide which tool to call instead of the customer hand-writing `when (turn.text)` keyword routing. This Phase 3 pattern stays in the catalog as historical migration reference only — the snippets do not compile against Android 1.4.0. See `searchDocs(topic:'assistant_runtime')` migration section for the side-by-side Phase 3 → Phase 4 walkthrough. The Phase 3 `glasses.conversation.onWake { listen() / speak() / ai.complete() }` API composes VAD + STT + Smart Turn + TTS + BYOK LLM in the shared Rust core; the agent loop here drives wake + follow-up utterances via `injectTranscript` and asserts symmetric `conversation.*` event pairs.",
1613
1613
  code: {
1614
1614
  kotlin: `// ── Application bootstrap (do once, typically in Application.onCreate
1615
1615
  // after RECORD_AUDIO is granted) ────────────────────────────────────
@@ -1948,7 +1948,7 @@ import com.extentos.glasses.core.assistant.AssistantProvider
1948
1948
  import com.extentos.glasses.core.assistant.AssistantSession
1949
1949
  import com.extentos.glasses.core.assistant.ToolResult
1950
1950
  import com.extentos.glasses.core.assistant.tool
1951
- import com.extentos.glasses.core.valueOrNull
1951
+ import com.extentos.glasses.core.assistant.orToolError
1952
1952
  import kotlinx.coroutines.CoroutineScope
1953
1953
  import kotlinx.coroutines.Deferred
1954
1954
  import kotlinx.coroutines.Dispatchers
@@ -2098,7 +2098,7 @@ class StravaAssistantHandler(
2098
2098
  if (capture == null) return@tool ToolResult.Err("nothing was recording")
2099
2099
  glasses.camera.stopVideo()
2100
2100
  val result = capture.await()
2101
- val clip = result.valueOrNull() ?: return@tool ToolResult.Err("video capture failed")
2101
+ val clip = result.orToolError { return@tool it }
2102
2102
  library.add(clip)
2103
2103
  ToolResult.Ok("video saved")
2104
2104
  }
@@ -2137,8 +2137,11 @@ class StravaAssistantHandler(
2137
2137
  // matchers to disambiguate. See getCapabilityGuide(feature:"assistant_vision")
2138
2138
  // gotcha about describe-vs-save.
2139
2139
  tool("describe_scene", "Describe what the runner is currently looking at without saving the photo. Call for 'what do you see' / 'describe this' / 'tell me about this'.") {
2140
- val photo = glasses.camera.capturePhoto().valueOrNull()
2141
- ?: return@tool ToolResult.Err("camera failed")
2140
+ // orToolError: on failure the tool returns the core's canonical,
2141
+ // user-actionable message (e.g. paused → "Tap the right temple…"),
2142
+ // so the assistant can tell the user what to DO — never a bare
2143
+ // "camera failed" the model can't act on.
2144
+ val photo = glasses.camera.capturePhoto().orToolError { return@tool it }
2142
2145
  val uri = photo.uri
2143
2146
  ?: return@tool ToolResult.Err("photo had no uri")
2144
2147
  // session is the AssistantSession returned by start();
@@ -2149,8 +2152,11 @@ class StravaAssistantHandler(
2149
2152
  ToolResult.Ok("looking")
2150
2153
  }
2151
2154
  tool("save_photo", "Save a photo to the runner's library WITHOUT describing it. Call for 'save this' / 'capture this' / 'take a picture' / 'remember this view'.") {
2152
- val photo = glasses.camera.capturePhoto().valueOrNull()
2153
- ?: return@tool ToolResult.Err("camera failed")
2155
+ // orToolError: on failure the tool returns the core's canonical,
2156
+ // user-actionable message (e.g. paused → "Tap the right temple…"),
2157
+ // so the assistant can tell the user what to DO — never a bare
2158
+ // "camera failed" the model can't act on.
2159
+ val photo = glasses.camera.capturePhoto().orToolError { return@tool it }
2154
2160
  val uri = photo.uri
2155
2161
  ?: return@tool ToolResult.Err("photo had no uri")
2156
2162
  val ext = when (Photos.mediaTypeFromUri(uri)) {
@@ -2175,7 +2181,10 @@ class StravaAssistantHandler(
2175
2181
  // active conversation. Swap this line for a button onClick,
2176
2182
  // a gesture handler, or any other trigger that calls
2177
2183
  // session?.wake() — the library doesn't dictate the
2178
- // mechanism, only the lifecycle.
2184
+ // mechanism, only the lifecycle. NOTE: wake() is a suspend
2185
+ // function. onPhrase's handler block is already a suspend
2186
+ // context, but a plain call site (Compose onClick, a View
2187
+ // listener) must launch it: scope.launch { session?.wake() }.
2179
2188
  glasses.voice.onPhrase("hey strava") { session?.wake() }
2180
2189
  }
2181
2190
  }
@@ -2308,6 +2317,9 @@ final class StravaAssistantHandler: @unchecked Sendable {
2308
2317
  // Wake mechanism — canonical pattern uses glasses.voice.onPhrase; the
2309
2318
  // session is Dormant until the phrase fires session.wake(). Swap for a
2310
2319
  // button tap, gesture, or any trigger that calls session.wake().
2320
+ // NOTE: wake() is async. onPhrase's closure is already an async
2321
+ // context, but a plain call site (a SwiftUI Button action) must
2322
+ // wrap it: Task { try? await session.wake() }.
2311
2323
  // (Strong capture is correct: AssistantSession is not class-bound so
2312
2324
  // 'weak' won't compile, and the closure holds no 'self' — no cycle.)
2313
2325
  self.wakeRegistration = glasses.voice.onPhrase(phrase: "hey strava") { [session] in
@@ -2468,7 +2480,7 @@ side with this agent loop and watch the panel react.`,
2468
2480
  "**Tool body runs on Dispatchers.IO (Kotlin) / Swift Task (Swift); suspending camera/storage/HTTP calls are fine.** Per-tool blocking opt-out via `tool(name, desc, blocking = true) { ... }` per synthesis #9 — when true, the model waits silently for the result before speaking. Default is non-blocking (model says \"let me check...\" while the tool runs). Use blocking=true for sub-100ms tools where the filler would be awkward (\"what time is it\" returning in 10 ms).",
2469
2481
  "**Managed gateway by default; BYOK via dashboard Credentials.** No OpenAI key in the app — zero config. `start()` opens the realtime WebSocket against the Extentos managed gateway, which holds the key and meters usage. There is no `glasses.assistant.setOpenaiApiKey` on the SDK (it was removed when the assistant moved to gateway-only). To use your own OpenAI key, add it in the dashboard Credentials section; the gateway swaps it in server-side — still metered, still through Extentos. See `getCredentialGuide(service: \"openai\")`.",
2470
2482
  "**`glasses.ai.complete` is deprecated in v1.4.0 and removed in v2.0.0.** Use the OpenAI SDK directly for non-voice LLM calls (image description, summarization, etc.). Migration: see `searchDocs(topic:'assistant_runtime')` → migration section walkthrough C.",
2471
- "**Vision via `session.includeImage(uri, prompt = null)` (v1.4 addition).** Capture a photo, hand the URI to the assistant inside a tool body — the model sees it + speaks about it in its configured voice. URI accepts data: / http(s): / file:// / content://. The image persists in conversation history at the provider, so follow-up questions in the same session work without re-sending. Active-only (throws NotReady otherwise — safe inside a tool body where the session is always Active). Canonical pattern: `tool(\"describe_scene\", \"...\") { val photo = glasses.camera.capturePhoto().valueOrNull(); session.includeImage(photo.uri); ToolResult.Ok(\"looking\") }`. See getCapabilityGuide(feature:\"assistant_vision\") for the prompt-parameter pattern + URI-type gotchas.",
2483
+ "**Vision via `session.includeImage(uri, prompt = null)` (v1.4 addition).** Capture a photo, hand the URI to the assistant inside a tool body — the model sees it + speaks about it in its configured voice. URI accepts data: / http(s): / file:// / content://. The image persists in conversation history at the provider, so follow-up questions in the same session work without re-sending. Active-only (throws NotReady otherwise — safe inside a tool body where the session is always Active). Canonical pattern: `tool(\"describe_scene\", \"...\") { val photo = glasses.camera.capturePhoto().orToolError { return@tool it }; session.includeImage(photo.uri); ToolResult.Ok(\"looking\") }` — `orToolError` (Kotlin `com.extentos.glasses.core.assistant.orToolError`; Swift `try ….orToolError()`) short-circuits the tool with the core's canonical user-actionable message (paused → \"Tap the right temple…\") so the assistant can tell the user what to do; never map capture failures to a bare \"camera failed\". See getCapabilityGuide(feature:\"assistant_vision\") for the prompt-parameter pattern + URI-type gotchas.",
2472
2484
  "**Mid-session primitives (iter5 addition).** Four building blocks on `AssistantSession`: `setReasoningEffort(level)` for dynamic effort routing, `updateInstructions(text)` for persona/mode swaps, `cancelSpeak()` for tool-driven interrupts, `conversationHistory(limit)` for forwarding context to a stronger model. All composable with the existing tool surface — write tools that call them in their bodies. Canonical escalation pattern: a `ask_smart_model` tool body reads `session.conversationHistory()`, formats it as context, calls the customer's own GPT-5 (or Anthropic Claude, or Gemini) client, returns the response as `ToolResult.Ok(answer)` — the realtime model then speaks the answer in its configured voice. Active-only (except conversationHistory which is always safe). See getCapabilityGuide(feature:\"assistant_session_runtime\") for the canonical snippet of each.",
2473
2485
  ],
2474
2486
  relatedFeatures: ["assistant_runtime", "assistant_start", "assistant_tool", "assistant_provider_openai", "assistant_vision", "assistant_session_runtime", "audio_chunks", "speak", "capture_photo"],
@@ -2508,7 +2520,7 @@ import com.extentos.glasses.core.assistant.AssistantProvider
2508
2520
  import com.extentos.glasses.core.assistant.AssistantSession
2509
2521
  import com.extentos.glasses.core.assistant.ToolResult
2510
2522
  import com.extentos.glasses.core.assistant.tool
2511
- import com.extentos.glasses.core.valueOrNull
2523
+ import com.extentos.glasses.core.assistant.orToolError
2512
2524
  import android.util.Log
2513
2525
  import kotlinx.coroutines.CoroutineScope
2514
2526
  import kotlinx.coroutines.Dispatchers
@@ -2557,8 +2569,11 @@ class NotesAssistant(
2557
2569
  }
2558
2570
 
2559
2571
  tool("save_photo", "Take a photo and save it to the user's library. Call when the user says 'save this' or 'take a picture'.") {
2560
- val photo = glasses.camera.capturePhoto().valueOrNull()
2561
- ?: return@tool ToolResult.Err("camera failed")
2572
+ // orToolError: on failure the tool returns the core's canonical,
2573
+ // user-actionable message (e.g. paused → "Tap the right temple…"),
2574
+ // so the assistant can tell the user what to DO — never a bare
2575
+ // "camera failed" the model can't act on.
2576
+ val photo = glasses.camera.capturePhoto().orToolError { return@tool it }
2562
2577
  val uri = photo.uri ?: return@tool ToolResult.Err("no uri")
2563
2578
  Log.i(TAG, "save_photo: uri=\${uri.take(60)} \${photo.width}x\${photo.height}")
2564
2579
  val dst = File(library.photosDir, "photo-\${System.currentTimeMillis()}.jpg")
@@ -2569,8 +2584,11 @@ class NotesAssistant(
2569
2584
  }
2570
2585
 
2571
2586
  tool("describe_scene", "Describe what the user is currently looking at WITHOUT saving the photo. Call for 'what do you see' / 'describe this' / 'tell me about this'.") {
2572
- val photo = glasses.camera.capturePhoto().valueOrNull()
2573
- ?: return@tool ToolResult.Err("camera failed")
2587
+ // orToolError: on failure the tool returns the core's canonical,
2588
+ // user-actionable message (e.g. paused → "Tap the right temple…"),
2589
+ // so the assistant can tell the user what to DO — never a bare
2590
+ // "camera failed" the model can't act on.
2591
+ val photo = glasses.camera.capturePhoto().orToolError { return@tool it }
2574
2592
  val uri = photo.uri ?: return@tool ToolResult.Err("no uri")
2575
2593
  Log.i(TAG, "describe_scene: handing uri to session.includeImage")
2576
2594
  session?.includeImage(uri)
@@ -2641,9 +2659,9 @@ final class NotesAssistant: @unchecked Sendable {
2641
2659
  }
2642
2660
 
2643
2661
  config.tool("save_photo", description: "Take a photo and save it to the library. Call when the user says 'save this' / 'take a picture'.") {
2644
- guard let photo = (await self.glasses.camera.capturePhoto()).success else {
2645
- return .err("camera failed")
2646
- }
2662
+ // orToolError(): on failure the tool short-circuits with the core's
2663
+ // canonical, user-actionable message (paused → "Tap the right temple…").
2664
+ let photo = try (await self.glasses.camera.capturePhoto()).orToolError()
2647
2665
  NSLog("NotesAssistant save_photo: width=\\(photo.width)")
2648
2666
  self.library.addPhoto(photo)
2649
2667
  return .ok("photo saved")
@@ -1 +1 @@
1
- {"version":3,"file":"codeExamples.js","sourceRoot":"","sources":["../../../src/tools/data/codeExamples.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codeExamples.js","sourceRoot":"","sources":["../../../src/tools/data/codeExamples.ts"],"names":[],"mappings":"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"}
@@ -150,7 +150,7 @@ export const DAT_MIGRATION_ENTRIES = [
150
150
  },
151
151
  extentosCall: "glasses.display.show { } / glasses.display.clear() / glasses.display.isAvailable",
152
152
  extentosFeature: "display",
153
- whatChanges: "Build a declarative DisplayNode tree (column/row/text/button/image) instead of managing raw Display config + add/remove. Gate on glasses.display.isAvailable (a no-op on non-display models). Neural-Band select/back gestures route to your onClick/onBack. (Android shipped; iOS DisplayClient port pending.)",
153
+ whatChanges: "Build a declarative DisplayNode tree (column/row/text/button/image) instead of managing raw Display config + add/remove. Gate on glasses.display.isAvailable (a no-op on non-display models). Neural-Band select/back gestures route to your onClick/onBack. (Ships in both SDKs; on-glasses rendering via Meta DAT is live on Android, iOS delivery in progress.)",
154
154
  drill: { codeExample: "display_browse_detail" },
155
155
  },
156
156
  {
@@ -1 +1 @@
1
- {"version":3,"file":"datMigrationMap.js","sourceRoot":"","sources":["../../../src/tools/data/datMigrationMap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"datMigrationMap.js","sourceRoot":"","sources":["../../../src/tools/data/datMigrationMap.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,15 @@
6
6
  // scaffold a project pointing at 1.0.0 (no probe code) while running
7
7
  // 0.0.7+ server-side smarts that needed 1.1.x to function.
8
8
  //
9
- // The Android library is published to Maven Central com.extentos:glasses
10
- // + glasses-ui at 1.4.0 (2026-07-02) so consumers resolve it from the
11
- // default mavenCentral() repo with no workaround. The current voice-AI
12
- // surface is the Phase 4 assistant runtime (`glasses.assistant.start(provider)
13
- // { tool(...) { ... } }` — the model owns wake/turn-taking/intent). The
14
- // Phase 3 conversation runtime (`glasses.conversation.onWake { listen() /
15
- // speak() / ai.complete() }`) was REMOVED — it does NOT exist on current
16
- // Android; do not reference it. The iOS Swift package is not yet published;
17
- // see CLAUDE.md "Library publishing".
9
+ // The Android library is published to Maven Central (com.extentos:glasses
10
+ // + glasses-ui) and the iOS library as a Swift package from
11
+ // github.com/extentos/swift-glasses both version in LOCKSTEP (see CLAUDE.md
12
+ // "Library publishing"). The current voice-AI surface is the Phase 4
13
+ // assistant runtime (`glasses.assistant.start(provider) { tool(...) { ... } }`
14
+ // the model owns wake/turn-taking/intent). The Phase 3 conversation
15
+ // runtime (`glasses.conversation.onWake { listen() / speak() /
16
+ // ai.complete() }`) was REMOVED it does NOT exist on current Android;
17
+ // do not reference it.
18
18
  // Source of truth: android-library/gradle/libs.versions.toml → mwdat (Android;
19
19
  // core/camera/display/mockdevice all ride this ref) and the Swift package's
20
20
  // MWDAT `from:` floor (iOS). Same drift class as kotlinVersion below
@@ -31,7 +31,7 @@ export const VERSION_INFO = {
31
31
  // block (1.4.0-phase4-dogfood via mavenLocal) is retired — pre-release
32
32
  // handling in generateConnectionModule / validateIntegration keys on the
33
33
  // version-string suffix, not on a field here.
34
- latestStable: "1.6.0",
34
+ latestStable: "1.7.0",
35
35
  specVersion: "1.0",
36
36
  android: {
37
37
  minimumSdk: 31,
@@ -53,7 +53,7 @@ export const VERSION_INFO = {
53
53
  kotlinVersion: "2.1.20",
54
54
  // Toolchain minimums (F-R4-8 from DOGFOOD_R4). The library's transitive
55
55
  // Compose deps determine the floor:
56
- // - com.extentos:glasses-ui:1.6.0 brings in androidx.compose.* 1.9.0
56
+ // - com.extentos:glasses-ui:1.7.0 brings in androidx.compose.* 1.9.0
57
57
  // (via compose-bom 2024.10.00 and direct deps)
58
58
  // - Compose 1.9.0 AAR-metadata declares "requires AGP >= 8.6.0"
59
59
  // - AGP 8.6+ requires Gradle 8.7+ (Android Gradle Plugin compatibility table)
@@ -74,8 +74,8 @@ export const VERSION_INFO = {
74
74
  datSdkVersion: DAT_SDK_VERSION,
75
75
  artifacts: {
76
76
  android: {
77
- core: "com.extentos:glasses:1.6.0",
78
- ui: "com.extentos:glasses-ui:1.6.0",
77
+ core: "com.extentos:glasses:1.7.0",
78
+ ui: "com.extentos:glasses-ui:1.7.0",
79
79
  // glasses-debug is NOT yet a real Android module. iOS has a `GlassesDebug`
80
80
  // product in the Swift package (see ios.products below), but the Android
81
81
  // equivalent was never scaffolded into `android-library/settings.gradle.kts`
@@ -88,15 +88,15 @@ export const VERSION_INFO = {
88
88
  },
89
89
  ios: {
90
90
  package: "https://github.com/extentos/swift-glasses",
91
- // iOS is NOT yet published (Mac-VPS task; see CLAUDE.md "Library
92
- // publishing"). The Swift package versions in LOCKSTEP with Android,
93
- // so once it ships it will mirror latestStable (1.3.0). Until then we
94
- // surface an explicit unpublished sentinel rather than a stale literal
95
- // version a misleading "1.1.36-pair" made getPlatformInfo.artifacts.ios
96
- // look resolvable when no such release exists.
97
- version: "unpublished",
98
- published: false,
99
- versionNote: "iOS Swift package is not yet published. When it ships from github.com/extentos/swift-glasses it will version-lock to the Android line (currently 1.6.0). Do not add a SwiftPM dependency on a tag that does not exist yet.",
91
+ // Published in lockstep with the Android line the Swift package tag
92
+ // and the Maven Central version cut from the same core, so this field
93
+ // must always equal latestStable. set-sdk-version.mjs rewrites it in
94
+ // the same pass as artifacts.android; don't hand-bump one without the
95
+ // other. (Pre-1.7.0 this held an "unpublished" sentinel that
96
+ // generateConnectionModule keyed its local-path interim on.)
97
+ version: "1.7.0",
98
+ published: true,
99
+ versionNote: "iOS Swift package ships from github.com/extentos/swift-glasses, version-locked to the Android release line. Standard SwiftPM ranges resolve it: .package(url: \"https://github.com/extentos/swift-glasses\", from: \"1.7.0\").",
100
100
  products: ["GlassesCore", "GlassesUI", "GlassesDebug", "GlassesLifecycle", "GlassesTesting"],
101
101
  },
102
102
  },
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/tools/data/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,qEAAqE;AACrE,2DAA2D;AAC3D,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,uEAAuE;AACvE,+EAA+E;AAC/E,wEAAwE;AACxE,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,sCAAsC;AACtC,+EAA+E;AAC/E,4EAA4E;AAC5E,qEAAqE;AACrE,yEAAyE;AACzE,wEAAwE;AACxE,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO;IAChB,GAAG,EAAE,OAAO;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,8CAA8C;IAC9C,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,yEAAyE;QACzE,wEAAwE;QACxE,qEAAqE;QACrE,kEAAkE;QAClE,yFAAyF;QACzF,oEAAoE;QACpE,gEAAgE;QAChE,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,aAAa,EACX,wPAAwP;QAC1P,0EAA0E;QAC1E,uEAAuE;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,uDAAuD;QACvD,aAAa,EAAE,QAAQ;QACvB,wEAAwE;QACxE,oCAAoC;QACpC,qEAAqE;QACrE,iDAAiD;QACjD,gEAAgE;QAChE,8EAA8E;QAC9E,2EAA2E;QAC3E,qDAAqD;QACrD,iBAAiB,EAAE,OAAO;QAC1B,oBAAoB,EAAE,KAAK;KAC5B;IACD,GAAG,EAAE;QACH,uBAAuB,EAAE,MAAM;QAC/B,YAAY,EAAE,KAAK;QACnB,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,+DAA+D;QAC/D,mBAAmB,EAAE,MAAM;KAC5B;IACD,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE;QACT,OAAO,EAAE;YACP,IAAI,EAAE,4BAA4B;YAClC,EAAE,EAAE,+BAA+B;YACnC,2EAA2E;YAC3E,yEAAyE;YACzE,6EAA6E;YAC7E,0EAA0E;YAC1E,4EAA4E;YAC5E,uEAAuE;YACvE,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;SACxE;QACD,GAAG,EAAE;YACH,OAAO,EAAE,2CAA2C;YACpD,iEAAiE;YACjE,qEAAqE;YACrE,sEAAsE;YACtE,uEAAuE;YACvE,0EAA0E;YAC1E,+CAA+C;YAC/C,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,KAAK;YAChB,WAAW,EACT,4NAA4N;YAC9N,QAAQ,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;SAC7F;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/tools/data/version.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,0EAA0E;AAC1E,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,qEAAqE;AACrE,2DAA2D;AAC3D,EAAE;AACF,0EAA0E;AAC1E,4DAA4D;AAC5D,8EAA8E;AAC9E,qEAAqE;AACrE,+EAA+E;AAC/E,sEAAsE;AACtE,+DAA+D;AAC/D,wEAAwE;AACxE,uBAAuB;AACvB,+EAA+E;AAC/E,4EAA4E;AAC5E,qEAAqE;AACrE,yEAAyE;AACzE,wEAAwE;AACxE,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE,OAAO;IAChB,GAAG,EAAE,OAAO;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,0EAA0E;IAC1E,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,8CAA8C;IAC9C,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,yEAAyE;QACzE,wEAAwE;QACxE,qEAAqE;QACrE,kEAAkE;QAClE,yFAAyF;QACzF,oEAAoE;QACpE,gEAAgE;QAChE,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;QACb,aAAa,EACX,wPAAwP;QAC1P,0EAA0E;QAC1E,uEAAuE;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,uDAAuD;QACvD,aAAa,EAAE,QAAQ;QACvB,wEAAwE;QACxE,oCAAoC;QACpC,qEAAqE;QACrE,iDAAiD;QACjD,gEAAgE;QAChE,8EAA8E;QAC9E,2EAA2E;QAC3E,qDAAqD;QACrD,iBAAiB,EAAE,OAAO;QAC1B,oBAAoB,EAAE,KAAK;KAC5B;IACD,GAAG,EAAE;QACH,uBAAuB,EAAE,MAAM;QAC/B,YAAY,EAAE,KAAK;QACnB,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,+DAA+D;QAC/D,mBAAmB,EAAE,MAAM;KAC5B;IACD,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE;QACT,OAAO,EAAE;YACP,IAAI,EAAE,4BAA4B;YAClC,EAAE,EAAE,+BAA+B;YACnC,2EAA2E;YAC3E,yEAAyE;YACzE,6EAA6E;YAC7E,0EAA0E;YAC1E,4EAA4E;YAC5E,uEAAuE;YACvE,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;SACxE;QACD,GAAG,EAAE;YACH,OAAO,EAAE,2CAA2C;YACpD,sEAAsE;YACtE,sEAAsE;YACtE,qEAAqE;YACrE,sEAAsE;YACtE,6DAA6D;YAC7D,6DAA6D;YAC7D,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,IAAI;YACf,WAAW,EACT,gOAAgO;YAClO,QAAQ,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;SAC7F;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAMpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,EAAE,KAAK,CAAC;KAC7B,CAAC;CACH;AAMD,eAAO,MAAM,eAAe,EAAE,OAAO,EAy6BpC,CAAC;AAEF,eAAO,MAAM,SAAS,QAAyB,CAAC;AAShD,wBAAgB,iCAAiC,CAC/C,IAAI,GAAE,SAAS,OAAO,EAAoB,GACzC,IAAI,CAiBN"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAMpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,EAAE,KAAK,CAAC;KAC7B,CAAC;CACH;AAMD,eAAO,MAAM,eAAe,EAAE,OAAO,EA89BpC,CAAC;AAEF,eAAO,MAAM,SAAS,QAAyB,CAAC;AAShD,wBAAgB,iCAAiC,CAC/C,IAAI,GAAE,SAAS,OAAO,EAAoB,GACzC,IAAI,CAiBN"}
@@ -118,7 +118,11 @@ export const toolDefinitions = [
118
118
  properties: {
119
119
  platform: platformEnum,
120
120
  glasses: glassesEnum,
121
- appPackage: { type: "string", minLength: 1 },
121
+ appPackage: {
122
+ type: "string",
123
+ minLength: 1,
124
+ description: "The Extentos project identity (reverse-DNS). This is what the SDK reports as the app id for telemetry, agent config, and sounds — it is NOT required to equal the store bundle id / applicationId (the scaffold bakes it as config.appId, decoupled). For a NEW app, use your bundle id. For an EXISTING app already shipped to both stores with DIFFERENT locked bundle ids, pass the SAME appPackage on BOTH platforms — both then share ONE Extentos project (one agent config, one sound set, per-platform analytics) regardless of the store ids.",
125
+ },
122
126
  libraryVersion: { type: "string" },
123
127
  responseFormat: responseFormatEnum,
124
128
  placement: {
@@ -140,7 +144,7 @@ export const toolDefinitions = [
140
144
  capabilities: {
141
145
  type: "array",
142
146
  items: { type: "string" },
143
- description: "The SDK capabilities your app uses (feature names from getPlatformInfo — e.g. [\"capture_photo\", \"transcription_incremental\", \"speak\", \"display\"]). The scaffold records them in the integration manifest AND emits ExtentosConfig.usedCapabilities (Android) so the connection page shows one tile per capability — lit when the connected glasses provide it, dimmed when they don't (e.g. Display on a non-display Ray-Ban). Omit → no capability tiles and no derived camera/mic/speaker permissions (declare nothing, show nothing). Re-run with an updated set to change it (the bootstrap regenerates). iOS records them in the manifest; the Swift usedCapabilities emission is pending the iOS SDK port.",
147
+ description: "The SDK capabilities your app uses (feature names from getPlatformInfo — e.g. [\"capture_photo\", \"transcription_incremental\", \"speak\", \"display\"]). The scaffold records them in the integration manifest AND emits ExtentosConfig.usedCapabilities (Android) so the connection page shows one tile per capability — lit when the connected glasses provide it, dimmed when they don't (e.g. Display on a non-display Ray-Ban). Omit → no capability tiles and no derived camera/mic/speaker permissions (declare nothing, show nothing). Re-run with an updated set to change it (the bootstrap regenerates). Both platforms emit ExtentosConfig.usedCapabilities Kotlin setOf(CapabilityKind.X, …) / Swift [.camera, …].",
144
148
  },
145
149
  },
146
150
  required: ["platform", "glasses", "appPackage"],
@@ -433,13 +437,21 @@ export const toolDefinitions = [
433
437
  // --- 3. Implementation Guidance ---
434
438
  {
435
439
  name: "getVoiceCommandGuidance",
436
- description: "Analyze proposed voice phrases for UX issues (length, homophones, digit-usage, Meta wake-word collision, ambiguity with existing phrases) before wiring them into a wake trigger. Applies equally to Phase 3 `glasses.conversation.onWake(phrase) { ... }` registrations AND legacy `glasses.voice.onPhrase(phrase) { ... }` / direct `glasses.audio.transcriptions()` consumers — the issues this catches (phrases that sound identical to another, collision with Meta's hardware wake word, hard-to-pronounce digits) are the same regardless of which API surface dispatches the handler. USE before adding new phrase-match conditions to ANY voice-driven handler. DON'T USE for general voice docs (use searchDocs topic 'conversation_runtime' for Phase 3, 'voice_integration' for the legacy primitives).",
440
+ description: "Analyze proposed voice phrases for UX issues (length, homophones, digit-usage, Meta wake-word collision, ambiguity with existing phrases) before wiring them into a wake trigger. Returns { results, generalGuidance, summary }: `results` is one entry per input phrase — { phrase, issues: [{ severity: 'error' | 'warning' | 'info', rule, message }], suggestions: [], collisions: [] } — where `collisions` lists exact-duplicate matches and `issues` carries per-rule findings (rules: too_short, homophone_risk, digit_usage, punctuation, collision, disambiguation, meta_wake_word_overlap, match_mode_hint). Only `collision` and `meta_wake_word_overlap` are error-severity (fix before wiring); everything else is advisory. `generalGuidance` is cross-phrase advice; `summary` is a one-line rollup. Applies equally to Phase 3 `glasses.conversation.onWake(phrase) { ... }` registrations AND legacy `glasses.voice.onPhrase(phrase) { ... }` / direct `glasses.audio.transcriptions()` consumers — the issues this catches are the same regardless of which API surface dispatches the handler. USE before adding new phrase-match conditions to ANY voice-driven handler. DON'T USE for general voice docs (use searchDocs topic 'conversation_runtime' for Phase 3, 'voice_integration' for the legacy primitives).",
437
441
  inputSchema: {
438
442
  type: "object",
439
443
  properties: {
440
- phrases: { type: "array", items: { type: "string" }, minItems: 1 },
441
- existingPhrases: { type: "array", items: { type: "string" } },
442
- glasses: glassesEnum,
444
+ phrases: {
445
+ type: "array",
446
+ items: { type: "string" },
447
+ minItems: 1,
448
+ description: "The proposed wake / trigger phrases to analyze (at least one). Each is scored against every rule — e.g. ['take a photo', 'start recording'].",
449
+ },
450
+ existingPhrases: {
451
+ type: "array",
452
+ items: { type: "string" },
453
+ description: "Phrases already wired into the app. Optional — when given, the analyzer also flags exact-duplicate collisions and shared-prefix ambiguity between the new `phrases` and these already-registered ones.",
454
+ },
443
455
  },
444
456
  required: ["phrases"],
445
457
  additionalProperties: false,
@@ -447,7 +459,7 @@ export const toolDefinitions = [
447
459
  },
448
460
  {
449
461
  name: "getPermissions",
450
- description: "Derive Android permissions, iOS Info.plist keys, and Meta DAT scopes from the list of SDK capabilities the app uses. USE after deciding which features (capture_photo, transcription_incremental, voice_command, …) the app integrates. DON'T USE for capability discovery (use getPlatformInfo).",
462
+ description: "Derive the Android permissions, iOS Info.plist keys, and Meta DAT scopes a list of SDK capabilities requires. Returns { android, ios, metaDat, summary } — **ALWAYS all three platform blocks regardless of the `platform` argument** (which only frames the one-line `summary`; it does NOT filter the response). `android` = { permissions[], manifestEntries[] (ready-to-paste <uses-permission> lines), foregroundService: { required, types[], declaration, devInstructions }, notificationListener: { required, declaration, devInstructions }, minimumSdk, compileSdk, targetSdk }. `ios` = { plistKeys: [{ key, value, reason }] }. `metaDat` = { scopes[], registrationRequired, registrationSteps[] }. Capabilities that need no platform permission (e.g. speak, connection_state, earcon) contribute nothing and are accepted silently — they never error. USE after deciding which features (capture_photo, transcription_incremental, voice_command, …) the app integrates. DON'T USE for capability discovery (use getPlatformInfo).",
451
463
  inputSchema: {
452
464
  type: "object",
453
465
  properties: {
@@ -457,7 +469,10 @@ export const toolDefinitions = [
457
469
  minItems: 1,
458
470
  description: "Capability names from getPlatformInfo.features[].name. e.g. ['capture_photo', 'transcription_incremental', 'voice_command'].",
459
471
  },
460
- platform: platformEnum,
472
+ platform: {
473
+ ...platformEnum,
474
+ description: "Selects how the one-line `summary` is phrased (Android vs iOS framing). Required — but does NOT filter the response: the android, ios, and metaDat blocks are all returned either way.",
475
+ },
461
476
  },
462
477
  required: ["capabilities", "platform"],
463
478
  additionalProperties: false,
@@ -466,22 +481,28 @@ export const toolDefinitions = [
466
481
  // --- 4. Validation ---
467
482
  {
468
483
  name: "inspectIntegration",
469
- description: "Read-only snapshot of current Extentos integration: manifest, generated-file hashes, dependency status, connection-page-config. USE before validateIntegration or for a 'what's wired so far?' read. DON'T USE for correctness checking (use validateIntegration).",
484
+ description: "Read-only snapshot of the current Extentos integration at a project path. Returns { found, manifest, generatedFilesStatus, dependency, drift, connectionPageConfig, gaps, summary }. **`found: false` is NOT an error** — when no extentos.manifest.json exists the call still succeeds, returning empty sub-objects plus a `gaps` remediation string that tells you to run generateConnectionModule. When `found: true`: `manifest` is the parsed extentos.manifest.json; `generatedFilesStatus` is per-file { path, exists, hasMarker, hashMatch }; `dependency` is { found, coordinate, file } for the Gradle/SPM dependency; `drift` is { fileDrift: [{ path, reason: 'missing' | 'marker_absent' | 'hash_mismatch' }], dependencyDrift: boolean }; `connectionPageConfig` is the committed connection-page snapshot (or null); `gaps` is an array of human-readable remediation strings; `summary` is a one-line rollup. USE before validateIntegration or for a 'what's wired so far?' read. DON'T USE for correctness checking / a pre-test gate (use validateIntegration — it severity-tiers the same surface and adds ~15 checks).",
470
485
  inputSchema: {
471
486
  type: "object",
472
487
  properties: {
473
- projectPath: { type: "string" },
488
+ projectPath: {
489
+ type: "string",
490
+ description: "Absolute (or cwd-relative) path to the project root holding extentos.manifest.json. Optional — defaults to the MCP server's current working directory (process.cwd()); pass it explicitly whenever the project isn't the cwd.",
491
+ },
474
492
  },
475
493
  additionalProperties: false,
476
494
  },
477
495
  },
478
496
  {
479
497
  name: "validateIntegration",
480
- description: "Check the WHOLE project for correctness manifest, generated files, dependency, permissions (vs the manifest's capabilities list), bootstrap wiring, toolchain versions. Pre-testing gate. USE after changes before testing. DON'T USE for reading state (use inspectIntegration).",
498
+ description: "Pre-test gate that runs ~15 severity-tiered checks over the whole project manifest present + parses, generated-file markers + hashes, dependency declared, library-version freshness, Android Meta-DAT repo declaration, bootstrap wiring (ExtentosGlasses.create / Extentos.create), connection-page config, toolchain (AGP/Gradle) floors, foreground-service hints, and permissions. The permissions check DERIVES the permissions your declared `capabilities` imply and verifies they're present in the REAL app/src/main/AndroidManifest.xml <uses-permission> elements (Android) or the app target's Info.plist keys (iOS) — the runtime source of truth, not the manifest JSON's permissions array. Returns { valid, checks, summary }: each `checks[]` entry is { name, passed, severity?: 'error' | 'warn' | 'info', details?, fix? }. `valid` is true when zero ERROR-severity checks fail; warn/info are advisories that don't block. `summary` reads 'Safe to test' ONLY at zero warnings — any warning demotes it to 'review before testing'. So treat this as a graded readiness report, not a binary pass/fail. USE after making changes, before testing. DON'T USE for reading state without judging it (use inspectIntegration).",
481
499
  inputSchema: {
482
500
  type: "object",
483
501
  properties: {
484
- projectPath: { type: "string" },
502
+ projectPath: {
503
+ type: "string",
504
+ description: "Absolute (or cwd-relative) path to the project root. Optional — defaults to the MCP server's current working directory (process.cwd()); pass it explicitly whenever the project isn't the cwd.",
505
+ },
485
506
  },
486
507
  additionalProperties: false,
487
508
  },
@@ -545,9 +566,23 @@ export const toolDefinitions = [
545
566
  inputSchema: {
546
567
  type: "object",
547
568
  properties: {
548
- deviceCode: { type: "string", minLength: 1 },
549
- maxWaitSeconds: { type: "integer", minimum: 1, maximum: 600 },
550
- pollIntervalSeconds: { type: "integer", minimum: 1, maximum: 30 },
569
+ deviceCode: {
570
+ type: "string",
571
+ minLength: 1,
572
+ description: "The `deviceCode` from createSimulatorSession's auth_required (HTTP 402) response — the opaque handle the backend correlates the developer's signup with. A stale/unknown code returns unknown_device_code (call createSimulatorSession again for a fresh one).",
573
+ },
574
+ maxWaitSeconds: {
575
+ type: "integer",
576
+ minimum: 1,
577
+ maximum: 600,
578
+ description: "Max seconds to keep polling for the developer to finish signup. Default 600 (also the cap). On timeout returns auth_timeout (retryable) — call again with the SAME deviceCode while it's still valid.",
579
+ },
580
+ pollIntervalSeconds: {
581
+ type: "integer",
582
+ minimum: 1,
583
+ maximum: 30,
584
+ description: "Seconds between backend polls. Default 5; clamped to [1, 30]. The backend may push a longer interval, which then overrides this value.",
585
+ },
551
586
  },
552
587
  required: ["deviceCode"],
553
588
  additionalProperties: false,
@@ -591,6 +626,10 @@ export const toolDefinitions = [
591
626
  },
592
627
  responseFormat: responseFormatEnum,
593
628
  redactBinary: { type: "boolean" },
629
+ collapseRepeats: {
630
+ type: "boolean",
631
+ description: "When true (default), consecutive payload-identical events (same layer/severity/type/message/details — timestamps excluded) collapse into ONE entry carrying `repeat: N` and `lastTimestamp`, so a runaway emitter can't fill the response with one line repeated hundreds of times. `totalEvents` and the summary count RAW events. Pass false for the uncollapsed rows.",
632
+ },
594
633
  },
595
634
  required: ["sessionId"],
596
635
  additionalProperties: false,
@@ -642,7 +681,7 @@ export const toolDefinitions = [
642
681
  audioWavBase64: {
643
682
  type: "string",
644
683
  minLength: 1,
645
- description: "DEFERRED to v1.1 — passing this field returns `not_implemented`. The intended path: base64-encoded WAV (8 kHz mono i16 LE PCM); library decodes and feeds through audio_chunks Flow to the active real provider. Needs a Rust core extension that Sprint 1's machine-split deliberately avoids. For end-to-end real-provider validation in the meantime, run the OpenAi provider session with a real mic source (sim browser tab mic, or real glasses).",
684
+ description: "DEFERRED to v1.1 — passing this field returns `not_implemented`. The intended path: base64-encoded WAV (mono i16 LE PCM; rate matched to the live audio path at implementation time); library decodes and feeds through audio_chunks Flow to the active real provider. Needs a Rust core extension that Sprint 1's machine-split deliberately avoids. For end-to-end real-provider validation in the meantime, run the OpenAi provider session with a real mic source (sim browser tab mic, or real glasses).",
646
685
  },
647
686
  },
648
687
  required: ["sessionId"],
@@ -786,7 +825,7 @@ export const toolDefinitions = [
786
825
  // --- 6. Production ---
787
826
  {
788
827
  name: "getProductionChecklist",
789
- description: "Return a personalized production-readiness checklist based on the SDK capabilities the app uses + the handlers it declares. USE when going to production. DON'T USE during development.",
828
+ description: "Return a personalized production-readiness checklist based on the SDK capabilities the app uses, the handlers it declares, and the BYOK services it integrates. Returns { ready, steps, summary }: `ready` is true when no step has status 'needed'; each `steps[]` entry is { category, description, status: 'done' | 'needed' | 'optional', details, fix?, requiredScopes?, affectedHandlers?, codeChange?: { file, hint } }. Steps are conditional — streams add a foreground-service step, voice/camera/audio add a real-hardware-verification step, and declared BYOK `services` (or the Phase 3 conversation runtime) add an API-keys step. Pass `projectPath` so the Meta-account and credential-swap steps read the project's real build state and report 'done' instead of 'needed'. Cross-links: getPermissions for the exact permission set the Permissions-Audit step verifies, getCredentialGuide for the per-provider key setup the API-Keys step needs, validateIntegration for the structural pre-test gate. USE when going to production. DON'T USE during development.",
790
829
  inputSchema: {
791
830
  type: "object",
792
831
  properties: {
@@ -806,7 +845,10 @@ export const toolDefinitions = [
806
845
  description: 'BYOK provider names the app actually integrates (e.g. ["anthropic", "openai"]). The trigger for the API Keys step — a DAT-native app (capture_photo + speak) or a Phase 4 managed-gateway app declares none and skips it.',
807
846
  },
808
847
  platform: platformEnum,
809
- projectPath: { type: "string" },
848
+ projectPath: {
849
+ type: "string",
850
+ description: "Absolute (or cwd-relative) path to the project root. Optional — when given, the Meta-Developer-Account and Credential-Swap steps read the real build state (Android extentos_meta_credentials.xml / iOS Info.plist MWDAT dict) to mark themselves 'done' vs 'needed'. Omit → every step is assumed not-yet-done.",
851
+ },
810
852
  },
811
853
  required: ["capabilities", "platform"],
812
854
  additionalProperties: false,
@@ -814,7 +856,7 @@ export const toolDefinitions = [
814
856
  },
815
857
  {
816
858
  name: "getCredentialGuide",
817
- description: "Return step-by-step credential setup instructions for the Meta DAT plus each BYOK AI service the app integrates with. USE when wiring a new BYOK provider or graduating from simulator to real hardware. DON'T USE during simulator-only dev loop.",
859
+ description: "Return step-by-step credential setup for the Meta DAT build identity plus each BYOK AI provider the app integrates. Returns { metaCredentials, serviceCredentials, keyStorage, summary }: `metaCredentials` = { required, requiredScope: 'real_hardware_only', scopeNote, steps[], configChange: { file, keys[], example, note? } } — the `requiredScope` / `scopeNote` say Meta DAT creds are needed ONLY for builds on real Ray-Ban Meta hardware; sim/emulator dev works without them, so DON'T lead the developer through Meta's developer-portal registration until the hardware milestone. `serviceCredentials` = one entry per BYOK service { service, forHandlers[], steps[], codeExample }. `keyStorage` = platform-specific { preferredPath, fallbackPath, doNotDo[], notes[] } secure-storage guidance. Cross-links: getProductionChecklist for where these steps sit in the ship sequence, getCredentialStatus / setCredential for the account-vaulted path (secrets pasted in the dashboard, never through the agent). USE when wiring a new BYOK provider or graduating from simulator to real hardware. DON'T USE during the simulator-only dev loop (Meta DAT creds aren't needed there).",
818
860
  inputSchema: {
819
861
  type: "object",
820
862
  properties: {