@extentos/mcp-server 0.0.16 → 0.0.17

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 (61) hide show
  1. package/dist/generated/schemas.js +7 -7
  2. package/dist/generated/schemas.js.map +1 -1
  3. package/dist/index.js +2 -2
  4. package/dist/tools/data/capabilities.js +1 -1
  5. package/dist/tools/data/capabilities.js.map +1 -1
  6. package/dist/tools/data/version.d.ts.map +1 -1
  7. package/dist/tools/data/version.js +6 -1
  8. package/dist/tools/data/version.js.map +1 -1
  9. package/dist/tools/definitions.d.ts.map +1 -1
  10. package/dist/tools/definitions.js +23 -4
  11. package/dist/tools/definitions.js.map +1 -1
  12. package/dist/tools/docs/index.d.ts.map +1 -1
  13. package/dist/tools/docs/index.js +51 -19
  14. package/dist/tools/docs/index.js.map +1 -1
  15. package/dist/tools/handlers/createSimulatorSession.js +2 -2
  16. package/dist/tools/handlers/createSimulatorSession.js.map +1 -1
  17. package/dist/tools/handlers/generateConnectionModule.d.ts.map +1 -1
  18. package/dist/tools/handlers/generateConnectionModule.js +146 -34
  19. package/dist/tools/handlers/generateConnectionModule.js.map +1 -1
  20. package/dist/tools/handlers/generateConsumer.d.ts.map +1 -1
  21. package/dist/tools/handlers/generateConsumer.js +30 -5
  22. package/dist/tools/handlers/generateConsumer.js.map +1 -1
  23. package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -1
  24. package/dist/tools/handlers/getPlatformInfo.js +129 -20
  25. package/dist/tools/handlers/getPlatformInfo.js.map +1 -1
  26. package/dist/tools/handlers/getVoiceCommandGuidance.js +1 -1
  27. package/dist/tools/handlers/getVoiceCommandGuidance.js.map +1 -1
  28. package/dist/tools/handlers/initSpec.d.ts.map +1 -1
  29. package/dist/tools/handlers/initSpec.js +2 -1
  30. package/dist/tools/handlers/initSpec.js.map +1 -1
  31. package/dist/tools/handlers/inspectIntegration.d.ts.map +1 -1
  32. package/dist/tools/handlers/inspectIntegration.js +5 -35
  33. package/dist/tools/handlers/inspectIntegration.js.map +1 -1
  34. package/dist/tools/handlers/updateSpec.d.ts +1 -1
  35. package/dist/tools/handlers/updateSpec.d.ts.map +1 -1
  36. package/dist/tools/handlers/updateSpec.js +49 -1
  37. package/dist/tools/handlers/updateSpec.js.map +1 -1
  38. package/dist/tools/handlers/validateIntegration.d.ts.map +1 -1
  39. package/dist/tools/handlers/validateIntegration.js +5 -26
  40. package/dist/tools/handlers/validateIntegration.js.map +1 -1
  41. package/dist/tools/templates/androidBootstrap.js +67 -67
  42. package/dist/tools/templates/callbackHandler.d.ts.map +1 -1
  43. package/dist/tools/templates/callbackHandler.js +22 -6
  44. package/dist/tools/templates/callbackHandler.js.map +1 -1
  45. package/dist/tools/templates/iosBootstrap.js +64 -64
  46. package/dist/tools/templates/streamConsumer.js +16 -4
  47. package/dist/tools/templates/streamConsumer.js.map +1 -1
  48. package/dist/tools/util/dependency.d.ts +7 -0
  49. package/dist/tools/util/dependency.d.ts.map +1 -0
  50. package/dist/tools/util/dependency.js +61 -0
  51. package/dist/tools/util/dependency.js.map +1 -0
  52. package/dist/tools/util/generatedHash.d.ts +13 -0
  53. package/dist/tools/util/generatedHash.d.ts.map +1 -0
  54. package/dist/tools/util/generatedHash.js +37 -0
  55. package/dist/tools/util/generatedHash.js.map +1 -0
  56. package/dist/tools/util/permissions.d.ts.map +1 -1
  57. package/dist/tools/util/permissions.js +26 -5
  58. package/dist/tools/util/permissions.js.map +1 -1
  59. package/dist/tools/validation/validateSpec.js +1 -1
  60. package/dist/tools/validation/validateSpec.js.map +1 -1
  61. package/package.json +1 -1
@@ -11,16 +11,31 @@ const PLACEMENT_SNIPPETS_CONTENT = `Five placements for ExtentosConnectionPage.
11
11
 
12
12
  ANDROID — Jetpack Compose
13
13
 
14
- (1) Dedicated route — single-purpose route, navigate from any button.
14
+ (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.
15
15
 
16
16
  // build.gradle.kts: implementation("androidx.navigation:navigation-compose:2.8.4")
17
17
  val navController = rememberNavController()
18
18
  NavHost(navController, startDestination = "home") {
19
19
  composable("home") { HomeScreen(onOpenGlasses = { navController.navigate("glasses") }) }
20
- composable("glasses") { ExtentosConnectionPage(glasses) }
20
+ composable("glasses") {
21
+ Scaffold(
22
+ topBar = {
23
+ TopAppBar(
24
+ title = { Text("Glasses") },
25
+ navigationIcon = {
26
+ IconButton(onClick = { navController.popBackStack() }) {
27
+ Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
28
+ }
29
+ },
30
+ )
31
+ },
32
+ ) { padding ->
33
+ ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))
34
+ }
35
+ }
21
36
  }
22
37
 
23
- (2) Settings subscreen — pushed onto the back stack from a Settings list row.
38
+ (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.
24
39
 
25
40
  composable("settings") {
26
41
  Column {
@@ -30,7 +45,22 @@ ANDROID — Jetpack Compose
30
45
  )
31
46
  }
32
47
  }
33
- composable("glasses") { ExtentosConnectionPage(glasses) }
48
+ composable("glasses") {
49
+ Scaffold(
50
+ topBar = {
51
+ TopAppBar(
52
+ title = { Text("Smart glasses") },
53
+ navigationIcon = {
54
+ IconButton(onClick = { navController.popBackStack() }) {
55
+ Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
56
+ }
57
+ },
58
+ )
59
+ },
60
+ ) { padding ->
61
+ ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))
62
+ }
63
+ }
34
64
 
35
65
  (3) Bottom-nav tab — co-equal destination alongside the app's main screens.
36
66
 
@@ -75,12 +105,13 @@ ANDROID — Jetpack Compose
75
105
 
76
106
  iOS — SwiftUI
77
107
 
78
- (1) Dedicated route — pushed via NavigationLink from anywhere.
108
+ (1) Dedicated route — pushed via NavigationLink from anywhere. The system NavigationStack provides a back chevron; .navigationTitle makes the bar visible.
79
109
 
80
110
  NavigationStack {
81
111
  HomeView()
82
112
  .navigationDestination(for: GlassesRoute.self) { _ in
83
- ExtentosConnectionPage()
113
+ ExtentosConnectionPage(glasses: glasses)
114
+ .navigationTitle("Glasses")
84
115
  }
85
116
  }
86
117
 
@@ -90,7 +121,8 @@ iOS — SwiftUI
90
121
  NavigationLink("Smart glasses", value: GlassesRoute())
91
122
  }
92
123
  .navigationDestination(for: GlassesRoute.self) { _ in
93
- ExtentosConnectionPage()
124
+ ExtentosConnectionPage(glasses: glasses)
125
+ .navigationTitle("Smart glasses")
94
126
  }
95
127
 
96
128
  (3) Bottom tab — TabView destination.
@@ -123,7 +155,7 @@ export const DOC_INDEX = [
123
155
  "Catalog topics: trigger_types, action_types, block_types, stream_types, spec_format, template_syntax, toggles, app_callback_guide, library_api, voice_ux_guide, permissions, connection_ui_placement. Each has inline minimal examples sufficient for most specs. " +
124
156
  "Constraint topics: constraints_and_limitations, audio_video_coexistence, spec_validation_rules. " +
125
157
  "Mutation tool sequence (deterministic, in order): " +
126
- "(1) getPlatformInfo — one call to fetch capability surface and library version. " +
158
+ "(1) getPlatformInfo — one call to fetch capability surface (compact: names + tiers, ~2KB) and library version. Default response is compact; pass expand: ['capabilities.full'] for per-primitive params/payload/requires/constraints, or expand: ['schema'] for the raw JSON Schema (rarely needed — validateSpec handles validation). " +
127
159
  "(2) generateConnectionModule — one-shot scaffold (bootstrap + dependencies + empty spec). Surfaces a developerInstructions.Step 1 prompt to ask the dev about ExtentosConnectionPage placement; do not skip it. " +
128
160
  "(3) initSpec — populate the first real spec from primitives you composed. " +
129
161
  "(4) generateConsumer(kind: 'callback') — stub app_callback handlers if your spec uses any. Use kind: 'stream' for stream consumers. " +
@@ -366,7 +398,7 @@ export const DOC_INDEX = [
366
398
  "- HOST-APP BRIDGE: app_callback (the most important — calls into developer code)\n" +
367
399
  "- MEDIA: block_call, speak_text, earcon_beep\n" +
368
400
  "- STATE: set_toggle, set_variable\n" +
369
- "- CONTROL FLOW: branch, when_connected, retry_with_backoff, buffer_and_replay, delay, abort, prompt\n" +
401
+ "- CONTROL FLOW: branch, when_connected, retry_with_backoff, buffer_and_replay, delay, abort, ask_user\n" +
370
402
  "- DIAGNOSTICS: log\n\n" +
371
403
  "─── app_callback ───\n" +
372
404
  "**The single most important action.** Routes flow control from the spec into the developer's native code. This is how 'voice phrase → my app does the thing' works.\n\n" +
@@ -464,10 +496,10 @@ export const DOC_INDEX = [
464
496
  "- delay cannot be cancelled by another trigger's flow. If you need a 'stop' trigger to abort an in-flight delay, the canonical pattern is the toggle-gated branch shown above — the long flow's later actions check the toggle state and no-op if the stop trigger flipped it off.\n\n" +
465
497
  "─── abort ───\n" +
466
498
  "Terminates the flow immediately. Use for early-exit on error conditions inside a branch's then[].\n\n" +
467
- "─── prompt ───\n" +
468
- "Synthesizes a TTS question and waits for a voice response. Returns the response transcript.\n" +
469
- "Required: type, text, save_as\n" +
470
- "Optional: timeout_seconds\n\n" +
499
+ "─── ask_user ───\n" +
500
+ "Voice Q&A: speaks the `question` via TTS, captures the user's spoken response into `save_as`. **NOT for LLM calls** — the action's name says what it does (ask the user). For LLM/AI calls, use `app_callback` with a developer-implemented handler (the `prompt` field of that handler's input is the natural-sense LLM prompt).\n" +
501
+ "Required: type, question, save_as\n" +
502
+ "Optional: timeout_seconds (default 5, max 30), min_confidence (default 0.4)\n\n" +
471
503
  "─── log ───\n" +
472
504
  "Emit a structured log event into the runtime event log (visible in getEventLog).\n\n" +
473
505
  "Required: type, level ('debug' | 'info' | 'warning' | 'error'), message (supports {{template}})\n" +
@@ -484,13 +516,13 @@ export const DOC_INDEX = [
484
516
  ` { "type": "block_call", "block_id": "main_camera", "save_as": "photo" },\n` +
485
517
  ` { "type": "app_callback", "handler": "describe_image", "input": { "image": "{{photo.uri}}" }, "save_as": "description" },\n` +
486
518
  ` { "type": "speak_text", "text": "{{description.text}}" }\n`,
487
- keywords: ["action", "block_call", "app_callback", "branch", "retry", "speak", "set_toggle", "set_variable", "delay", "log", "earcon", "prompt", "host-app", "callback"],
519
+ keywords: ["action", "block_call", "app_callback", "branch", "retry", "speak", "set_toggle", "set_variable", "delay", "log", "earcon", "ask_user", "prompt", "host-app", "callback"],
488
520
  relatedTools: ["updateSpec", "generateConsumer"],
489
521
  },
490
522
  {
491
523
  topic: "voice_ux_guide",
492
524
  title: "Voice Command UX",
493
- content: "Phrases should be 3+ syllables, free of homophones, free of digits (STT rarely round-trips them), free of punctuation. Named captures {{query}} must be the final token. Provide 3+ alternates for natural paraphrase. Avoid Meta wake words (hey meta, hey facebook, ok meta) — they conflict with on-device Meta AI. Consider match_mode: \"fuzzy\" for long phrases.",
525
+ content: "Phrases should be 3+ syllables, free of homophones, free of digits (STT rarely round-trips them), free of punctuation. Named captures {{query}} must be the final token. Provide 3+ alternates for natural paraphrase. Avoid Meta wake words (hey meta, hey facebook, ok meta) — they conflict with on-device Meta AI. Default match_mode \"contains\" tolerates paraphrase; if you set match_mode: \"exact\", add 3+ alternates.",
494
526
  keywords: ["voice", "phrase", "command", "homophone", "capture", "stt", "disambiguation", "alternate"],
495
527
  relatedTools: ["getVoiceCommandGuidance", "updateSpec"],
496
528
  },
@@ -628,7 +660,7 @@ export const DOC_INDEX = [
628
660
  "1. **WRITE**: `{ \"type\": \"set_toggle\", \"key\": \"<name>\", \"value\": <literal> }` — mutates the toggle. Validation rule R11 rejects unknown keys.\n" +
629
661
  "2. **READ in branch**: `{ \"variable\": \"toggles.<name>\", \"operator\": \"equals\", \"value\": <literal> }` — branch reads the live toggle value at the decision point (never cached).\n" +
630
662
  "3. **READ via template**: `{{toggles.<name>}}` resolves to the current value; usable inside any string field that supports template substitution.\n\n" +
631
- "─── listening_mode ───\nWhen STT runs against the glasses microphone.\n\nType: enum\nDefault: `off` on Meta Ray-Ban (the connection-page UI toggle drives this — flips between `off` and `always_on`)\nValues: `off`, `wake_word`, `on_demand`, `always_on`\n- `off`: STT disabled entirely.\n- `wake_word`: listen for wake word, switch to always-on after detection. **Not yet wired on Meta Ray-Ban** (DAT 0.5 doesn't expose Meta's wake-word API; treat as future-only).\n- `on_demand`: only while push_to_talk or prompt is active.\n- `always_on`: continuous transcription.\n\nWhen to use set_toggle for this: usually you don't — it's user-controlled via the connection page. Programmatic flips are valid but consider whether the user actually wanted listening on.\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"listening_mode\", \"value\": \"always_on\" }\n\n─── camera_streaming_enabled ───\nGlobal kill switch for ALL camera primitives: video_frames stream, capture_photo block, capture_video block, outgoing_video_stream.\n\nType: boolean\nDefault: true\n\nWhen false: every camera-using primitive fails fast with `camera_disabled_by_user`. Useful for runtime opt-out (e.g., user toggles off camera in connection page; flows that try to capture get a clean error to handle).\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"camera_streaming_enabled\", \"value\": false }\n\n─── audio_capture_enabled ───\nGlobal kill switch for ALL audio-capture primitives: audio_chunks stream, record_audio block, outgoing_audio_stream, transcription_incremental.\n\nType: boolean\nDefault: true\n\nDistinct from `transcription_enabled`: this gates raw audio acquisition; transcription_enabled gates STT processing on top of it. Setting audio_capture_enabled=false while transcription_enabled=true silently produces no transcripts.\n\nWhen false: any audio-capturing flow fails fast.\n\n─── transcription_enabled ───\nWhether the library runs STT. Distinct from audio_capture_enabled — you may want raw audio without STT (for custom on-device models via audio_chunks).\n\nType: boolean\nDefault: false\n\n**Required to start a transcription_incremental stream.** Without this true, the stream is declared but produces no data. Common pattern: a `start taking notes` voice trigger flips this true; a `stop taking notes` trigger flips it false.\n\nSide effect: while true, audio routes to HFP — the user briefly loses high-quality A2DP playback if any.\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"transcription_enabled\", \"value\": true }\n\n─── battery_save_mode ───\nWhen true, the lib applies battery-conscious clamps automatically: video_frames clamps to LOW resolution + 2 fps; outgoing_video_stream is disabled; prompt timeouts shorten; speak_text suppresses progressive-response filler.\n\nType: boolean\nDefault: false\n\nCanonical use: a `thermal_warning` trigger at severity moderate+ flips this true. Pair with the `thermal_throttle` initSpec preset for the canonical shape. Manually flipping false re-enables the constraints.\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"battery_save_mode\", \"value\": true }\n\n─── voice_confirmations ───\nWhether the library plays canned earcons before/after voice commands (start beep, stop beep).\n\nType: boolean\nDefault: true\n\nWhen false: voice triggers fire silently — useful for ambient assistants or accessibility flows where the user prefers quiet operation. The dev still controls per-action TTS via speak_text; this only affects auto-played confirmation beeps.\n\n─── audio_video_coexistence_policy ───\nControls what happens when a flow tries to open an audio primitive while a video primitive is active (or vice versa). DAT 0.5 routes audio over HFP, which suspends A2DP — the lib enforces this policy to prevent overlapping primitives that conflict.\n\nType: enum\nDefault: `prefer_video`\nValues: `prefer_audio`, `prefer_video`, `strict_reject`\n- `prefer_audio`: pause the active video stream while audio runs; resume video on completion.\n- `prefer_video`: reject the new audio primitive; flow continues without it.\n- `strict_reject`: abort the flow with an error.\n\nSee `audio_video_coexistence` topic for the full coexistence model.\n\n─── privacy_mode ───\n**The one super-toggle.** When true, forces camera + audio capture off, disables STT, suppresses notification forwarding, and reflects in the connection-page UI with a clear privacy indicator. Equivalent to Alexa Do Not Disturb.\n\nType: boolean\nDefault: false\n\nLayered semantics: every other toggle is FLAT (effective value = stored value). privacy_mode is the only LAYERED toggle — the lib computes effective values at the decision point. e.g., `effectiveListeningMode = if (privacyMode) \"off\" else toggles.listeningMode`. Spec authors don't need to handle this layering; it's enforced in the lib's flow executor.\n\nCommon pattern: a `set_toggle privacy_mode true` action is a sledgehammer for end-of-session cleanup. Always pair with a means to flip it back off (UI toggle on the connection page is the primary path).\n\n── Reading toggle state from flows ──\nBranch example — abort a photo flow if privacy is on:\n { \"type\": \"branch\",\n \"condition\": { \"variable\": \"toggles.privacy_mode\", \"operator\": \"equals\", \"value\": true },\n \"then\": [{ \"type\": \"abort\", \"reason\": \"privacy_mode_active\" }]\n }\n\nTemplate example — speak the current battery-save state:\n { \"type\": \"speak_text\", \"text\": \"Battery save is {{toggles.battery_save_mode}}.\" }\n\nWhen-connected predicate (preferred over branch for connection gating):\n { \"type\": \"when_connected\", \"action\": { ... }, \"predicate\": \"toggle_on:transcription_enabled\" }\n\n── Common mistakes ──\n- **Setting `transcription_enabled: true` without declaring a `transcription_incremental` stream** — toggle has no effect; the lib has nothing to gate.\n- **Setting `privacy_mode: true` and forgetting to unset it** — sticks until a UI toggle clears it. Hitting privacy mode at the end of a flow without a recovery path leaves the device locked down indefinitely.\n- **Comparing toggle values with the wrong type in branch**: `transcription_enabled` is boolean — use `value: true`, not `value: \"true\"` (string). Validator may not catch type mismatches at spec-load; expect silent always-false branches.\n- **Trying to set toggles not in the 8-key allowlist** — validation rule R11 rejects with the list of valid keys.",
663
+ "─── listening_mode ───\nWhen STT runs against the glasses microphone.\n\nType: enum\nDefault: `off` on Meta Ray-Ban (the connection-page UI toggle drives this — flips between `off` and `always_on`)\nValues: `off`, `wake_word`, `on_demand`, `always_on`\n- `off`: STT disabled entirely.\n- `wake_word`: listen for wake word, switch to always-on after detection. **Not yet wired on Meta Ray-Ban** (DAT 0.5 doesn't expose Meta's wake-word API; treat as future-only).\n- `on_demand`: only while push_to_talk or ask_user is active.\n- `always_on`: continuous transcription.\n\nWhen to use set_toggle for this: usually you don't — it's user-controlled via the connection page. Programmatic flips are valid but consider whether the user actually wanted listening on.\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"listening_mode\", \"value\": \"always_on\" }\n\n─── camera_streaming_enabled ───\nGlobal kill switch for ALL camera primitives: video_frames stream, capture_photo block, capture_video block, outgoing_video_stream.\n\nType: boolean\nDefault: true\n\nWhen false: every camera-using primitive fails fast with `camera_disabled_by_user`. Useful for runtime opt-out (e.g., user toggles off camera in connection page; flows that try to capture get a clean error to handle).\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"camera_streaming_enabled\", \"value\": false }\n\n─── audio_capture_enabled ───\nGlobal kill switch for ALL audio-capture primitives: audio_chunks stream, record_audio block, outgoing_audio_stream, transcription_incremental.\n\nType: boolean\nDefault: true\n\nDistinct from `transcription_enabled`: this gates raw audio acquisition; transcription_enabled gates STT processing on top of it. Setting audio_capture_enabled=false while transcription_enabled=true silently produces no transcripts.\n\nWhen false: any audio-capturing flow fails fast.\n\n─── transcription_enabled ───\nWhether the library runs STT. Distinct from audio_capture_enabled — you may want raw audio without STT (for custom on-device models via audio_chunks).\n\nType: boolean\nDefault: false\n\n**Required to start a transcription_incremental stream.** Without this true, the stream is declared but produces no data. Common pattern: a `start taking notes` voice trigger flips this true; a `stop taking notes` trigger flips it false.\n\nSide effect: while true, audio routes to HFP — the user briefly loses high-quality A2DP playback if any.\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"transcription_enabled\", \"value\": true }\n\n─── battery_save_mode ───\nWhen true, the lib applies battery-conscious clamps automatically: video_frames clamps to LOW resolution + 2 fps; outgoing_video_stream is disabled; ask_user timeouts shorten; speak_text suppresses progressive-response filler.\n\nType: boolean\nDefault: false\n\nCanonical use: a `thermal_warning` trigger at severity moderate+ flips this true. Pair with the `thermal_throttle` initSpec preset for the canonical shape. Manually flipping false re-enables the constraints.\n\nMinimal:\n { \"type\": \"set_toggle\", \"key\": \"battery_save_mode\", \"value\": true }\n\n─── voice_confirmations ───\nWhether the library plays canned earcons before/after voice commands (start beep, stop beep).\n\nType: boolean\nDefault: true\n\nWhen false: voice triggers fire silently — useful for ambient assistants or accessibility flows where the user prefers quiet operation. The dev still controls per-action TTS via speak_text; this only affects auto-played confirmation beeps.\n\n─── audio_video_coexistence_policy ───\nControls what happens when a flow tries to open an audio primitive while a video primitive is active (or vice versa). DAT 0.5 routes audio over HFP, which suspends A2DP — the lib enforces this policy to prevent overlapping primitives that conflict.\n\nType: enum\nDefault: `prefer_video`\nValues: `prefer_audio`, `prefer_video`, `strict_reject`\n- `prefer_audio`: pause the active video stream while audio runs; resume video on completion.\n- `prefer_video`: reject the new audio primitive; flow continues without it.\n- `strict_reject`: abort the flow with an error.\n\nSee `audio_video_coexistence` topic for the full coexistence model.\n\n─── privacy_mode ───\n**The one super-toggle.** When true, forces camera + audio capture off, disables STT, suppresses notification forwarding, and reflects in the connection-page UI with a clear privacy indicator. Equivalent to Alexa Do Not Disturb.\n\nType: boolean\nDefault: false\n\nLayered semantics: every other toggle is FLAT (effective value = stored value). privacy_mode is the only LAYERED toggle — the lib computes effective values at the decision point. e.g., `effectiveListeningMode = if (privacyMode) \"off\" else toggles.listeningMode`. Spec authors don't need to handle this layering; it's enforced in the lib's flow executor.\n\nCommon pattern: a `set_toggle privacy_mode true` action is a sledgehammer for end-of-session cleanup. Always pair with a means to flip it back off (UI toggle on the connection page is the primary path).\n\n── Reading toggle state from flows ──\nBranch example — abort a photo flow if privacy is on:\n { \"type\": \"branch\",\n \"condition\": { \"variable\": \"toggles.privacy_mode\", \"operator\": \"equals\", \"value\": true },\n \"then\": [{ \"type\": \"abort\", \"reason\": \"privacy_mode_active\" }]\n }\n\nTemplate example — speak the current battery-save state:\n { \"type\": \"speak_text\", \"text\": \"Battery save is {{toggles.battery_save_mode}}.\" }\n\nWhen-connected predicate (preferred over branch for connection gating):\n { \"type\": \"when_connected\", \"action\": { ... }, \"predicate\": \"toggle_on:transcription_enabled\" }\n\n── Common mistakes ──\n- **Setting `transcription_enabled: true` without declaring a `transcription_incremental` stream** — toggle has no effect; the lib has nothing to gate.\n- **Setting `privacy_mode: true` and forgetting to unset it** — sticks until a UI toggle clears it. Hitting privacy mode at the end of a flow without a recovery path leaves the device locked down indefinitely.\n- **Comparing toggle values with the wrong type in branch**: `transcription_enabled` is boolean — use `value: true`, not `value: \"true\"` (string). Validator may not catch type mismatches at spec-load; expect silent always-false branches.\n- **Trying to set toggles not in the 8-key allowlist** — validation rule R11 rejects with the list of valid keys.",
632
664
  keywords: [
633
665
  "toggle",
634
666
  "privacy_mode",
@@ -710,8 +742,8 @@ export const DOC_INDEX = [
710
742
  {
711
743
  topic: "simulator_browser_mode",
712
744
  title: "Simulator Browser Mode",
713
- content: "Browser mode provisions a web UI via createSimulatorSession — agent receives sessionUrl, opens in browser, browser loads the spec and drives simulated hardware. WebSocket hub coordinates app ↔ browser ↔ optional observer. Supports injection (forced events) and replay of recorded sessions. Session bound to meter tier.",
714
- keywords: ["browser", "session", "websocket", "injection", "replay", "simulator", "url"],
745
+ content: "Browser mode provisions a web UI via createSimulatorSession — agent receives sessionUrl, MCP attempts OS-native browser auto-open (best-effort), browser loads the spec and drives simulated hardware. WebSocket hub coordinates app ↔ browser ↔ optional observer. Supports injection (forced events) and replay of recorded sessions. Session bound to meter tier. Response includes `sessionUrl` + `autoOpenAttempted: boolean` + `autoOpenPlatform`. When `autoOpenAttempted: true`, the URL was sent to the developer's default browser — surface as a confirmation message (e.g., 'the simulator should be open in your browser'). When `autoOpenAttempted: false` (EXTENTOS_NO_AUTO_OPEN=1, headless/SSH/sandboxed environment, per-call `autoOpenBrowser: false`, or no compatible OS launcher), explicitly print the `sessionUrl` to the developer with copy-paste instructions. The URL is the guaranteed delivery channel — auto-open is a best-effort optimization.",
746
+ keywords: ["browser", "session", "websocket", "injection", "replay", "simulator", "url", "auto-open", "autoOpenAttempted"],
715
747
  relatedTools: ["createSimulatorSession", "getSimulatorStatus", "getEventLog"],
716
748
  },
717
749
  {
@@ -880,7 +912,7 @@ export const DOC_INDEX = [
880
912
  {
881
913
  topic: "device_code_flow",
882
914
  title: "Device-Code Auth Flow (Anonymous → Linked)",
883
- content: "First simulator session works with no signup — anonymous tier, 500-event meter keyed on installId. When the meter exhausts, createSimulatorSession returns status:'auth_required' with userCode + verificationUrl + deviceCode + expiresInSeconds. Three-call agent-driven choreography: (1) agent surfaces userCode + verificationUrl to the dev (auto-open already attempted by MCP); (2) agent calls completeAuthLink(deviceCode), which polls backend until the dev finishes signup at the verification page (up to 600s), writes ~/.extentos/auth.json on success; (3) agent re-invokes createSimulatorSession with the same spec — the new bearer token is picked up automatically and the happy-path response returns. No background work between calls — the agent holds the deviceCode. Why not server-driven: MCP tool calls are request/response, no cross-call state, agents can't show progress on a 10-minute blocking call. Tier transitions: anonymous (500) → free_account (1000) → paid (unlimited). Meter is net-of-anonymous-consumption (early linking preserves more of the free budget).",
915
+ content: "First simulator session works with no signup — anonymous tier, 500-event meter keyed on installId. When the meter exhausts, createSimulatorSession returns status:'auth_required' with userCode + verificationUrl + deviceCode + expiresInSeconds. Three-call agent-driven choreography: (1) agent surfaces userCode + verificationUrl to the dev — response carries `autoOpenAttempted: boolean`; when true, the verification page is opening in the dev's default browser (surface as confirmation); when false (headless/sandboxed env, EXTENTOS_NO_AUTO_OPEN=1, no compatible OS launcher), explicitly print the verificationUrl with copy-paste instructions; (2) agent calls completeAuthLink(deviceCode), which polls backend until the dev finishes signup at the verification page (up to 600s), writes ~/.extentos/auth.json on success; (3) agent re-invokes createSimulatorSession with the same spec — the new bearer token is picked up automatically and the happy-path response returns. No background work between calls — the agent holds the deviceCode. Why not server-driven: MCP tool calls are request/response, no cross-call state, agents can't show progress on a 10-minute blocking call. Tier transitions: anonymous (500) → free_account (1000) → paid (unlimited). Meter is net-of-anonymous-consumption (early linking preserves more of the free budget).",
884
916
  keywords: [
885
917
  "auth",
886
918
  "device code",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/docs/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/docs/index.ts"],"names":[],"mappings":"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"}
@@ -103,8 +103,8 @@ export async function handleCreateSimulatorSession(raw) {
103
103
  : instructionsFor(parsed.platform),
104
104
  warnings,
105
105
  summary: attached
106
- ? `Session ${body.sessionId} ready. Device auto-attached — no rebuild needed; the simulator URL has opened in your browser.`
107
- : `Session ${body.sessionId} ready. Rebuild ${parsed.platform} project to bake URL into the binary.`,
106
+ ? `Session ${body.sessionId} ready. Device auto-attached — no rebuild needed. ${autoOpen.attempted ? "Browser auto-open attempted — the simulator should be visible in the developer's default browser." : "Browser auto-open skipped (autoOpenBrowser:false, EXTENTOS_NO_AUTO_OPEN=1, or unsupported environment) — surface sessionUrl to the developer for them to open manually."}`
107
+ : `Session ${body.sessionId} ready. Rebuild ${parsed.platform} project to bake URL into the binary. ${autoOpen.attempted ? "Browser auto-open attempted — the simulator should be visible in the developer's default browser." : "Browser auto-open skipped (autoOpenBrowser:false, EXTENTOS_NO_AUTO_OPEN=1, or unsupported environment) — surface sessionUrl to the developer for them to open manually."}`,
108
108
  };
109
109
  if (parsed.platform === "ios") {
110
110
  // iOS: when auto-bind attached the device, the running app is already
@@ -1 +1 @@
1
- {"version":3,"file":"createSimulatorSession.js","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createSimulatorSession.js","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateConnectionModule.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/generateConnectionModule.ts"],"names":[],"mappings":"AAUA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAkC5E,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAcvE"}
1
+ {"version":3,"file":"generateConnectionModule.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/generateConnectionModule.ts"],"names":[],"mappings":"AASA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAiI5E,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAoCvE"}
@@ -1,20 +1,24 @@
1
1
  // generateConnectionModule — project scaffold tool.
2
2
  // Spec: docs/mcp/MCP_TOOLS.md § generateConnectionModule
3
3
  // Output shapes: Android (Gradle+Kotlin) vs iOS (SPM+Swift) differ per that spec.
4
- import { createHash } from "node:crypto";
5
4
  import { androidSourcePath, iosModuleName } from "../util/appPackage.js";
6
5
  import { buildEmptyManifest, EMPTY_SPEC_CONTENT } from "../util/manifest.js";
7
6
  import { renderAndroidBootstrap } from "../templates/androidBootstrap.js";
8
7
  import { renderIosBootstrap, renderIosAppPatchHint } from "../templates/iosBootstrap.js";
9
8
  import { VERSION_INFO } from "../data/version.js";
10
9
  import { okResponse, errorResponse } from "../response.js";
11
- function sha256(content) {
12
- return `sha256:${createHash("sha256").update(content).digest("hex")}`;
13
- }
10
+ import { hashGeneratedContent } from "../util/generatedHash.js";
14
11
  // Source of truth: data/version.ts. Hardcoding "1.0.0" here was a bug — it
15
12
  // scaffolded projects pointing at a version older than the auto-bind probe
16
13
  // code shipped, so fresh installs missed Track B+ entirely.
17
14
  const DEFAULT_LIBRARY_VERSION = VERSION_INFO.latestStable;
15
+ const PLACEMENT_IDS = [
16
+ "dedicated_route",
17
+ "settings_subscreen",
18
+ "bottom_tab",
19
+ "modal_sheet",
20
+ "headless",
21
+ ];
18
22
  const PLACEMENT_OPTIONS = [
19
23
  { id: "dedicated_route", label: "Dedicated route (e.g. 'connection' or 'glasses')" },
20
24
  { id: "settings_subscreen", label: "Subscreen inside Settings" },
@@ -22,6 +26,75 @@ const PLACEMENT_OPTIONS = [
22
26
  { id: "modal_sheet", label: "Modal bottom sheet from a Settings row" },
23
27
  { id: "headless", label: "No UI (headless) — glasses run in background only" },
24
28
  ];
29
+ // Placement-aware `suggestedRendering`. Each entry is the actual snippet the
30
+ // agent should write — same content surfaced by searchDocs(connection_ui_placement).
31
+ // Mirror the snippets in mcp-server/src/tools/docs/index.ts and
32
+ // docs/mcp/LIBRARY_API.md § Connection UI § Placement.
33
+ const ANDROID_PLACEMENT_RENDERING = {
34
+ dedicated_route: 'composable("glasses") {\n' +
35
+ ' Scaffold(\n' +
36
+ ' topBar = {\n' +
37
+ ' TopAppBar(\n' +
38
+ ' title = { Text("Glasses") },\n' +
39
+ ' navigationIcon = {\n' +
40
+ ' IconButton(onClick = { navController.popBackStack() }) {\n' +
41
+ ' Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")\n' +
42
+ ' }\n' +
43
+ ' },\n' +
44
+ ' )\n' +
45
+ ' },\n' +
46
+ ' ) { padding ->\n' +
47
+ ' ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))\n' +
48
+ ' }\n' +
49
+ '}',
50
+ settings_subscreen: 'composable("glasses") {\n' +
51
+ ' Scaffold(\n' +
52
+ ' topBar = {\n' +
53
+ ' TopAppBar(\n' +
54
+ ' title = { Text("Smart glasses") },\n' +
55
+ ' navigationIcon = {\n' +
56
+ ' IconButton(onClick = { navController.popBackStack() }) {\n' +
57
+ ' Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")\n' +
58
+ ' }\n' +
59
+ ' },\n' +
60
+ ' )\n' +
61
+ ' },\n' +
62
+ ' ) { padding ->\n' +
63
+ ' ExtentosConnectionPage(glasses, modifier = Modifier.padding(padding))\n' +
64
+ ' }\n' +
65
+ '}',
66
+ bottom_tab: 'composable("glasses") { ExtentosConnectionPage(glasses) }',
67
+ modal_sheet: 'if (sheetOpen) {\n' +
68
+ ' ModalBottomSheet(onDismissRequest = { sheetOpen = false }) {\n' +
69
+ ' ExtentosConnectionPage(glasses)\n' +
70
+ ' }\n' +
71
+ '}',
72
+ headless: "// headless — do not render ExtentosConnectionPage; bootstrap connects in background",
73
+ };
74
+ const IOS_PLACEMENT_RENDERING = {
75
+ dedicated_route: 'NavigationStack {\n' +
76
+ ' HomeView()\n' +
77
+ ' .navigationDestination(for: GlassesRoute.self) { _ in\n' +
78
+ ' ExtentosConnectionPage(glasses: glasses)\n' +
79
+ ' .navigationTitle("Glasses")\n' +
80
+ ' }\n' +
81
+ '}',
82
+ settings_subscreen: 'Form {\n' +
83
+ ' NavigationLink("Smart glasses", value: GlassesRoute())\n' +
84
+ '}\n' +
85
+ '.navigationDestination(for: GlassesRoute.self) { _ in\n' +
86
+ ' ExtentosConnectionPage(glasses: glasses)\n' +
87
+ ' .navigationTitle("Smart glasses")\n' +
88
+ '}',
89
+ bottom_tab: 'TabView {\n' +
90
+ ' HomeView().tabItem { Label("Home", systemImage: "house") }\n' +
91
+ ' ExtentosConnectionPage(glasses: glasses)\n' +
92
+ ' .tabItem { Label("Glasses", systemImage: "dot.radiowaves.left.and.right") }\n' +
93
+ '}',
94
+ modal_sheet: 'Button("Glasses") { sheetOpen = true }\n' +
95
+ ' .sheet(isPresented: $sheetOpen) { ExtentosConnectionPage(glasses: glasses) }',
96
+ headless: "// headless — do not render ExtentosConnectionPage; bootstrap connects in background",
97
+ };
25
98
  const PLACEMENT_SNIPPET_LINK = {
26
99
  uri: "extentos://docs/connection_ui_placement",
27
100
  mimeType: "text/markdown",
@@ -32,11 +105,29 @@ export function handleGenerateConnectionModule(raw) {
32
105
  if ("error" in parsed)
33
106
  return parsed.error;
34
107
  const args = parsed.args;
108
+ // Programmatic placement gate. Without `placement`, the agent has no scaffold
109
+ // to apply — only the question + valid options + the snippets pointer. This
110
+ // closes the loophole where an agent saw `developerInstructions: "REQUIRED:
111
+ // ask the dev"` in the same payload as `suggestedRendering: "..."` and
112
+ // resolved the ambiguity wrong by silently defaulting.
113
+ if (!args.placement) {
114
+ return okResponse({
115
+ status: "needs_placement",
116
+ placementGuidance: {
117
+ instruction: "Ask the developer where ExtentosConnectionPage should live. Re-call generateConnectionModule with placement set to one of the optionsSummary ids to receive the scaffolding files.",
118
+ question: "Where should the glasses connection page live in your app?",
119
+ optionsSummary: PLACEMENT_OPTIONS,
120
+ snippetsResourceLink: PLACEMENT_SNIPPET_LINK,
121
+ },
122
+ developerInstructions: "Step 1: Read placementGuidance.question + optionsSummary out loud and wait for the developer's answer. Step 2: Re-call generateConnectionModule with the same arguments plus `placement: \"<chosen_id>\"` to receive files, dependencies, suggestedRendering, and the rest of the scaffold. Headless is a valid answer — pick it only if the dev says so.",
123
+ summary: "No scaffolding emitted: placement is required. Re-call with `placement` set to one of the 5 option ids.",
124
+ });
125
+ }
35
126
  const libraryVersion = args.libraryVersion ?? DEFAULT_LIBRARY_VERSION;
36
127
  const concise = args.responseFormat === "concise";
37
128
  const payload = args.platform === "android"
38
- ? buildAndroid(args.appPackage, libraryVersion, concise)
39
- : buildIos(args.appPackage, libraryVersion, concise);
129
+ ? buildAndroid(args.appPackage, libraryVersion, concise, args.placement)
130
+ : buildIos(args.appPackage, libraryVersion, concise, args.placement);
40
131
  return okResponse(payload);
41
132
  }
42
133
  function parseArgs(raw) {
@@ -82,6 +173,20 @@ function parseArgs(raw) {
82
173
  }),
83
174
  };
84
175
  }
176
+ let placement;
177
+ if (obj.placement !== undefined) {
178
+ if (typeof obj.placement !== "string" || !PLACEMENT_IDS.includes(obj.placement)) {
179
+ return {
180
+ error: errorResponse({
181
+ code: "invalid_arguments",
182
+ message: `placement must be one of ${PLACEMENT_IDS.join(", ")} (got ${JSON.stringify(obj.placement)}).`,
183
+ fixHint: "Pass placement: \"dedicated_route\" | \"settings_subscreen\" | \"bottom_tab\" | \"modal_sheet\" | \"headless\". Omit the field entirely to receive the placement question instead.",
184
+ retryable: false,
185
+ }),
186
+ };
187
+ }
188
+ placement = obj.placement;
189
+ }
85
190
  const args = {
86
191
  platform,
87
192
  glasses: "meta_rayban",
@@ -90,10 +195,11 @@ function parseArgs(raw) {
90
195
  responseFormat: obj.responseFormat === "concise" || obj.responseFormat === "detailed"
91
196
  ? obj.responseFormat
92
197
  : undefined,
198
+ placement,
93
199
  };
94
200
  return { args };
95
201
  }
96
- function buildAndroid(appPackage, libraryVersion, concise) {
202
+ function buildAndroid(appPackage, libraryVersion, concise, placement) {
97
203
  const sourcePath = androidSourcePath(appPackage);
98
204
  const specPath = "app/src/main/assets/extentos.spec.json";
99
205
  const bootstrapPath = `app/src/main/java/${sourcePath}/extentos/ExtentosBootstrap.kt`;
@@ -109,7 +215,7 @@ function buildAndroid(appPackage, libraryVersion, concise) {
109
215
  {
110
216
  path: bootstrapPath,
111
217
  template: "connection_module",
112
- hash: sha256(bootstrapContent),
218
+ hash: hashGeneratedContent(bootstrapContent),
113
219
  generatedAt: nowIso,
114
220
  generatedByTool: "generateConnectionModule",
115
221
  },
@@ -161,15 +267,15 @@ function buildAndroid(appPackage, libraryVersion, concise) {
161
267
  "android.permission.BLUETOOTH_SCAN",
162
268
  "android.permission.INTERNET",
163
269
  ],
164
- suggestedRendering: `composable("connection") { ExtentosConnectionPage(glasses) }`,
270
+ placement,
271
+ suggestedRendering: ANDROID_PLACEMENT_RENDERING[placement],
165
272
  placementGuidance: {
166
- instruction: "Before writing navigation code, ask the developer where ExtentosConnectionPage should live. Do not guess.",
167
- question: "Where should the glasses connection page live in your app?",
273
+ chosen: placement,
168
274
  optionsSummary: PLACEMENT_OPTIONS,
169
275
  snippetsResourceLink: PLACEMENT_SNIPPET_LINK,
170
276
  },
171
- developerInstructions: developerInstructionsAndroid(),
172
- summary: `Scaffolded Extentos ${libraryVersion} for Android app ${appPackage}. Wrote 1 generated file, 1 empty spec, and 1 manifest. 3 Gradle dependencies, 3 permissions, 1 repository (mavenLocal), and 1 BuildConfig field to wire.`,
277
+ developerInstructions: developerInstructionsAndroid(placement),
278
+ summary: `Scaffolded Extentos ${libraryVersion} for Android app ${appPackage} with placement: ${placement}. Wrote 1 generated file, 1 empty spec, and 1 manifest. 3 Gradle dependencies, 3 permissions, 1 repository (mavenLocal), and 1 BuildConfig field to wire.`,
173
279
  };
174
280
  if (!concise) {
175
281
  payload.wireInstructions =
@@ -186,7 +292,7 @@ function buildAndroid(appPackage, libraryVersion, concise) {
186
292
  }
187
293
  return payload;
188
294
  }
189
- function buildIos(appPackage, libraryVersion, concise) {
295
+ function buildIos(appPackage, libraryVersion, concise, placement) {
190
296
  const moduleName = iosModuleName(appPackage);
191
297
  const specPath = `Sources/${moduleName}/Resources/extentos.spec.json`;
192
298
  const bootstrapPath = `Sources/${moduleName}/Extentos/ExtentosBootstrap.swift`;
@@ -202,7 +308,7 @@ function buildIos(appPackage, libraryVersion, concise) {
202
308
  {
203
309
  path: bootstrapPath,
204
310
  template: "connection_module",
205
- hash: sha256(bootstrapContent),
311
+ hash: hashGeneratedContent(bootstrapContent),
206
312
  generatedAt: nowIso,
207
313
  generatedByTool: "generateConnectionModule",
208
314
  },
@@ -265,15 +371,15 @@ function buildIos(appPackage, libraryVersion, concise) {
265
371
  },
266
372
  },
267
373
  },
268
- suggestedRendering: "NavigationStack { ExtentosConnectionPage() }",
374
+ placement,
375
+ suggestedRendering: IOS_PLACEMENT_RENDERING[placement],
269
376
  placementGuidance: {
270
- instruction: "Before writing navigation code, ask the developer where ExtentosConnectionPage should live. Do not guess.",
271
- question: "Where should the glasses connection page live in your app?",
377
+ chosen: placement,
272
378
  optionsSummary: PLACEMENT_OPTIONS,
273
379
  snippetsResourceLink: PLACEMENT_SNIPPET_LINK,
274
380
  },
275
- developerInstructions: developerInstructionsIos(),
276
- summary: `Scaffolded Extentos ${libraryVersion} for iOS bundle ${appPackage}. Wrote 1 generated file, 1 app-entry patch hint, 1 empty spec, and 1 manifest. 1 SPM dependency, Info.plist additions listed, and 1 Xcode build phase to add.`,
381
+ developerInstructions: developerInstructionsIos(placement),
382
+ summary: `Scaffolded Extentos ${libraryVersion} for iOS bundle ${appPackage} with placement: ${placement}. Wrote 1 generated file, 1 app-entry patch hint, 1 empty spec, and 1 manifest. 1 SPM dependency, Info.plist additions listed, and 1 Xcode build phase to add.`,
277
383
  };
278
384
  if (!concise) {
279
385
  payload.wireInstructions =
@@ -292,20 +398,26 @@ function buildIos(appPackage, libraryVersion, concise) {
292
398
  }
293
399
  return payload;
294
400
  }
295
- // Top-of-response narrative the agent reads first. Calls out the placement
296
- // decision explicitly so an agent can't silently default to headless. Mirrors
297
- // createSimulatorSession's `developerInstructions` precedent.
298
- function developerInstructionsAndroid() {
299
- return ("Step 1 (REQUIRED, do not skip): Ask the developer where ExtentosConnectionPage should live in their app — read placementGuidance.question + placementGuidance.optionsSummary out loud and wait for an answer before writing any navigation code. Headless is one of the 5 valid answers; pick it only if the dev says so. " +
300
- "Step 2: Apply the files[], dependencies[], repositories[], buildConfigFields[], and permissions[] outputs. " +
301
- "Step 3: Set the Application class to ExtentosBootstrap in AndroidManifest.xml (`android:name=\".extentos.ExtentosBootstrap\"`). " +
302
- "Step 4: Render the chosen placement using the snippet from searchDocs(topic: \"connection_ui_placement\"). " +
303
- "Step 5: Run initSpec to populate the spec, then generateConsumer for callback handlers, then validateIntegration before testing.");
401
+ // Top-of-response narrative the agent reads first. The placement gate is now
402
+ // programmatic (handler returns `status: "needs_placement"` when the arg is
403
+ // omitted), so these instructions assume the placement is already chosen.
404
+ function developerInstructionsAndroid(placement) {
405
+ const renderStep = placement === "headless"
406
+ ? "Step 4: Headless — do NOT render ExtentosConnectionPage. The bootstrap connects in the background. Optionally read glasses.connection.state for a status badge."
407
+ : `Step 4: Render the chosen placement (${placement}) using suggestedRendering, or fetch the full snippet via searchDocs(topic: "connection_ui_placement").`;
408
+ return ("Step 1: Apply the files[], dependencies[], repositories[], buildConfigFields[], and permissions[] outputs. " +
409
+ "Step 2: Set the Application class to ExtentosBootstrap in AndroidManifest.xml (`android:name=\".extentos.ExtentosBootstrap\"`). " +
410
+ "Step 3: Add `androidx.navigation:navigation-compose` to deps if your placement uses NavHost (dedicated_route, settings_subscreen, bottom_tab). " +
411
+ renderStep +
412
+ " Step 5: Run initSpec to populate the spec, then generateConsumer for callback handlers, then validateIntegration before testing.");
304
413
  }
305
- function developerInstructionsIos() {
306
- return ("Step 1 (REQUIRED, do not skip): Ask the developer where ExtentosConnectionPage should live in their app — read placementGuidance.question + placementGuidance.optionsSummary out loud and wait for an answer before writing any navigation code. Headless is one of the 5 valid answers; pick it only if the dev says so. " +
307
- "Step 2: Apply files[] (the ExtentosBootstrap.swift create plus the manual_patch hint for App.swift), dependencies[], infoPlistAdditions, gitignoreAdditions, and the spmBuildPhase. Replace REPLACE_ME placeholders with Meta Developer Center values. " +
308
- "Step 3: Render the chosen placement using the snippet from searchDocs(topic: \"connection_ui_placement\"). " +
309
- "Step 4: Run initSpec to populate the spec, then generateConsumer for callback handlers, then validateIntegration before testing.");
414
+ function developerInstructionsIos(placement) {
415
+ const renderStep = placement === "headless"
416
+ ? "Step 3: Headless do NOT render ExtentosConnectionPage. The bootstrap connects in the background. Optionally observe `glasses.connection.state` for a status badge."
417
+ : `Step 3: Render the chosen placement (${placement}) using suggestedRendering, or fetch the full snippet via searchDocs(topic: "connection_ui_placement").`;
418
+ return ("Step 1: Apply files[] (the ExtentosBootstrap.swift create plus the manual_patch hint for App.swift), dependencies[], infoPlistAdditions, gitignoreAdditions, and the spmBuildPhase. Replace REPLACE_ME placeholders with Meta Developer Center values. " +
419
+ "Step 2: Wire onOpenURL and scenePhase observers per the App.swift manual_patch. " +
420
+ renderStep +
421
+ " Step 4: Run initSpec to populate the spec, then generateConsumer for callback handlers, then validateIntegration before testing.");
310
422
  }
311
423
  //# sourceMappingURL=generateConnectionModule.js.map