@extentos/mcp-server 0.0.10 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +88 -83
- package/dist/tools/data/version.js +6 -6
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +6 -21
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/docs/index.d.ts.map +1 -1
- package/dist/tools/docs/index.js +419 -17
- package/dist/tools/docs/index.js.map +1 -1
- package/dist/tools/handlers/createSimulatorSession.d.ts.map +1 -1
- package/dist/tools/handlers/createSimulatorSession.js +8 -4
- package/dist/tools/handlers/createSimulatorSession.js.map +1 -1
- package/dist/tools/handlers/generateConnectionModule.d.ts.map +1 -1
- package/dist/tools/handlers/generateConnectionModule.js +45 -4
- package/dist/tools/handlers/generateConnectionModule.js.map +1 -1
- package/dist/tools/handlers/generateConsumer.js +30 -20
- package/dist/tools/handlers/generateConsumer.js.map +1 -1
- package/dist/tools/handlers/getEventLog.d.ts.map +1 -1
- package/dist/tools/handlers/getEventLog.js +5 -0
- package/dist/tools/handlers/getEventLog.js.map +1 -1
- package/dist/tools/handlers/getExampleSpec.d.ts.map +1 -1
- package/dist/tools/handlers/getExampleSpec.js +6 -0
- package/dist/tools/handlers/getExampleSpec.js.map +1 -1
- package/dist/tools/handlers/getPlatformInfo.d.ts.map +1 -1
- package/dist/tools/handlers/getPlatformInfo.js +10 -0
- package/dist/tools/handlers/getPlatformInfo.js.map +1 -1
- package/dist/tools/handlers/getSimulatorStatus.d.ts.map +1 -1
- package/dist/tools/handlers/getSimulatorStatus.js +8 -2
- package/dist/tools/handlers/getSimulatorStatus.js.map +1 -1
- package/dist/tools/handlers/getVoiceCommandGuidance.d.ts.map +1 -1
- package/dist/tools/handlers/getVoiceCommandGuidance.js +6 -1
- package/dist/tools/handlers/getVoiceCommandGuidance.js.map +1 -1
- package/dist/tools/handlers/initSpec.d.ts.map +1 -1
- package/dist/tools/handlers/initSpec.js +23 -7
- package/dist/tools/handlers/initSpec.js.map +1 -1
- package/dist/tools/handlers/inspectIntegration.d.ts.map +1 -1
- package/dist/tools/handlers/inspectIntegration.js +6 -0
- package/dist/tools/handlers/inspectIntegration.js.map +1 -1
- package/dist/tools/handlers/searchDocs.d.ts.map +1 -1
- package/dist/tools/handlers/searchDocs.js +4 -1
- package/dist/tools/handlers/searchDocs.js.map +1 -1
- package/dist/tools/handlers/updateSpec.d.ts.map +1 -1
- package/dist/tools/handlers/updateSpec.js +10 -2
- package/dist/tools/handlers/updateSpec.js.map +1 -1
- package/dist/tools/handlers/validateIntegration.d.ts.map +1 -1
- package/dist/tools/handlers/validateIntegration.js +9 -1
- package/dist/tools/handlers/validateIntegration.js.map +1 -1
- package/dist/tools/handlers/validateSpec.d.ts.map +1 -1
- package/dist/tools/handlers/validateSpec.js +8 -1
- package/dist/tools/handlers/validateSpec.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +0 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/templates/androidBootstrap.d.ts.map +1 -1
- package/dist/tools/templates/androidBootstrap.js +45 -2
- package/dist/tools/templates/androidBootstrap.js.map +1 -1
- package/dist/tools/templates/callbackHandler.d.ts.map +1 -1
- package/dist/tools/templates/callbackHandler.js +16 -4
- package/dist/tools/templates/callbackHandler.js.map +1 -1
- package/dist/tools/templates/iosBootstrap.d.ts.map +1 -1
- package/dist/tools/templates/iosBootstrap.js +76 -48
- package/dist/tools/templates/iosBootstrap.js.map +1 -1
- package/dist/tools/util/manifest.d.ts +10 -0
- package/dist/tools/util/manifest.d.ts.map +1 -1
- package/dist/tools/util/manifest.js +5 -1
- package/dist/tools/util/manifest.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/docs/index.js
CHANGED
|
@@ -118,36 +118,368 @@ export const DOC_INDEX = [
|
|
|
118
118
|
{
|
|
119
119
|
topic: "getting_started",
|
|
120
120
|
title: "Getting Started with Extentos",
|
|
121
|
-
content: "Extentos lets agents build Meta Ray-Ban apps from a structured spec.
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
content: "Extentos lets agents build Meta Ray-Ban apps from a structured spec. The library carries all hardware logic — developer code is a spec file plus thin generated glue (bootstrap + callback dispatch + optional stream consumer) plus handler bodies. " +
|
|
122
|
+
"Agents plan composition themselves; there is no planning tool. Read the catalog topics below to see what primitives exist, then assemble the smallest spec your goal needs. " +
|
|
123
|
+
"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
|
+
"Constraint topics: constraints_and_limitations, audio_video_coexistence, spec_validation_rules. " +
|
|
125
|
+
"Mutation tool sequence (deterministic, in order): " +
|
|
126
|
+
"(1) getPlatformInfo — one call to fetch capability surface and library version. " +
|
|
127
|
+
"(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
|
+
"(3) initSpec — populate the first real spec from primitives you composed. " +
|
|
129
|
+
"(4) generateConsumer(kind: 'callback') — stub app_callback handlers if your spec uses any. Use kind: 'stream' for stream consumers. " +
|
|
130
|
+
"(5) validateIntegration — pre-test correctness gate. Re-run after every mutation. " +
|
|
131
|
+
"(6) createSimulatorSession — provision a browser simulator session to test end-to-end. " +
|
|
132
|
+
"For changes after step 3: inspectIntegration → updateSpec → generateConsumer (if handlers/streams added) → validateIntegration. " +
|
|
133
|
+
"Reference library: getExampleSpec returns 8 worked patterns (voice_assistant, live_translation, etc.). On-demand only — read it when studying a complex composition. The catalog topics cover the simple cases without it.",
|
|
134
|
+
keywords: ["setup", "start", "first", "begin", "overview", "walkthrough", "tool order", "workflow", "catalog"],
|
|
135
|
+
relatedTools: ["getPlatformInfo", "generateConnectionModule", "initSpec", "searchDocs", "validateIntegration"],
|
|
124
136
|
},
|
|
125
137
|
{
|
|
126
138
|
topic: "block_types",
|
|
127
139
|
title: "Block Types",
|
|
128
|
-
content: "
|
|
129
|
-
|
|
140
|
+
content: "**Blocks are discrete, bounded media-capture operations.** A block is *declared* in spec.blocks[] (with config) and *invoked* from a trigger's actions[] via a `block_call` action. The result is bound to a save_as variable for use in subsequent actions. 3 block types:\n\n" +
|
|
141
|
+
"─── capture_photo ───\n" +
|
|
142
|
+
"One-shot still photo from the glasses camera. Tier: dat_native (high confidence).\n\n" +
|
|
143
|
+
"When to use: voice-driven photo capture ('take a photo', 'describe what you see'), or capture_button-driven photography.\n" +
|
|
144
|
+
"When NOT to use: continuous frames for ML — use video_frames stream at low fps. Burst capture — call capture_photo multiple times from a flow with delay between, OR use video_frames at 7-15 fps and consume manually.\n\n" +
|
|
145
|
+
"Required: type, id\n" +
|
|
146
|
+
"Optional params: resolution ('LOW' | 'MEDIUM' | 'HIGH'), format ('jpeg' | 'heic')\n" +
|
|
147
|
+
"Returns: { uri, width, height, format, exif }\n\n" +
|
|
148
|
+
"Field rules:\n" +
|
|
149
|
+
"- resolution: HIGH adds ~400ms latency on Gen 1 hardware vs MEDIUM. Use LOW for ML inputs that downscale anyway. MEDIUM is the right default.\n" +
|
|
150
|
+
"- format: 'heic' is ~50% smaller but Android Bitmap pipelines need conversion. 'jpeg' is the universal default.\n\n" +
|
|
151
|
+
"Constraints:\n" +
|
|
152
|
+
"- Requires GlassesState == Active. Calling while not Active fails with NotConnected.\n" +
|
|
153
|
+
"- Camera exclusivity: blocks while outgoing_video stream is active (unless audio_video_coexistence_policy = prefer_video AND resolution = LOW).\n\n" +
|
|
154
|
+
"Common mistakes:\n" +
|
|
155
|
+
"- Calling capture_photo in a tight loop expecting frame-rate semantics — use video_frames stream instead. capture_photo has shutter overhead on every call.\n" +
|
|
156
|
+
"- Setting resolution = HIGH for ML inputs that you'll downscale — wastes capture time and battery.\n\n" +
|
|
157
|
+
"Minimal:\n" +
|
|
158
|
+
` { "type": "capture_photo", "id": "main_camera", "params": { "resolution": "MEDIUM", "format": "jpeg" } }\n` +
|
|
159
|
+
"Then in a trigger:\n" +
|
|
160
|
+
` { "type": "block_call", "block_id": "main_camera", "save_as": "photo" } → result available as {{photo}} or {{photo.uri}}\n\n` +
|
|
161
|
+
"─── capture_video ───\n" +
|
|
162
|
+
"Bounded video clip with explicit duration. Tier: phone_side_workaround (degraded confidence).\n\n" +
|
|
163
|
+
"When to use: short demo / share clips up to 60s. Always-bounded — there's no live-stream video capture in Meta DAT, so this is clip-only.\n" +
|
|
164
|
+
"When NOT to use: continuous video for AR / ML — use video_frames stream. Live broadcasting — not supported on Meta Ray-Ban.\n\n" +
|
|
165
|
+
"Required: type, id\n" +
|
|
166
|
+
"Optional params: resolution ('LOW' | 'MEDIUM' | 'HIGH'), duration_seconds (max 60, default 10), format ('mp4_hevc' | 'mp4_h264'), include_audio (default false)\n" +
|
|
167
|
+
"Returns: { uri, durationMs, format, width, height }\n\n" +
|
|
168
|
+
"Field rules:\n" +
|
|
169
|
+
"- format: 'mp4_hevc' is HEVC passthrough — fast, no thermal load. 'mp4_h264' triggers MediaCodec re-encode — drops to <5 fps on Gen 1 hardware (issue #44). Use HEVC unless your downstream consumer can't decode it.\n" +
|
|
170
|
+
"- include_audio = true: forces HFP audio route, killing high-quality A2DP playback for the duration of capture. Default off.\n" +
|
|
171
|
+
"- duration_seconds: do NOT set higher than 30 on battery-constrained sessions; thermal_warning typically fires at moderate severity around 30s of HEVC.\n\n" +
|
|
172
|
+
"Common mistakes:\n" +
|
|
173
|
+
"- Choosing h264 because 'it's universal' — the encoder choice causes the FPS cliff. Default to hevc.\n" +
|
|
174
|
+
"- Long clips (60s) without a thermal_warning trigger to downgrade — expect dropped frames and degraded quality past ~30s.\n\n" +
|
|
175
|
+
"Minimal:\n" +
|
|
176
|
+
` { "type": "capture_video", "id": "main_clip", "params": { "max_duration_seconds": 5, "resolution": "MEDIUM", "format": "mp4_hevc" } }\n\n` +
|
|
177
|
+
"─── record_audio ───\n" +
|
|
178
|
+
"Bounded mic capture from the glasses, auto-transcribed on completion. Tier: phone_side_workaround (degraded confidence).\n\n" +
|
|
179
|
+
"When to use: voice-note flows ('take a note'), short dictation. STT runs automatically using the platform's on-device recognizer.\n" +
|
|
180
|
+
"When NOT to use: continuous transcription — use the transcription_incremental stream. Audio-only recording without STT — not exposed; this block always transcribes.\n\n" +
|
|
181
|
+
"Required: type, id\n" +
|
|
182
|
+
"Optional params: max_duration_seconds (max 60, default 15), silence_timeout_seconds (max 10, default 2), quality ('standard' | 'high')\n" +
|
|
183
|
+
"Returns: { transcript, audioDurationMs, rawAudioUri }\n\n" +
|
|
184
|
+
"Field rules:\n" +
|
|
185
|
+
"- silence_timeout_seconds: the recording stops automatically when this much silence is detected. Lower for snappy UX (1-2s); raise to 4-5s if users tend to pause.\n" +
|
|
186
|
+
"- quality: 'high' is misleading — Meta DAT routes the mic over HFP mono 8 kHz. 'high' is effectively the same as 'standard' until A2DP-grade mic capture lands. Treat them as equivalent for now.\n" +
|
|
187
|
+
"- STT runs on-device via Android SpeechRecognizer / iOS SFSpeechRecognizer — no cloud cost, no developer config required.\n\n" +
|
|
188
|
+
"Common mistakes:\n" +
|
|
189
|
+
"- Expecting raw audio for custom STT — the block always returns a transcript. To do custom STT, use the audio_chunks stream + your own ASR.\n" +
|
|
190
|
+
"- Setting max_duration_seconds = 60 without thermal awareness — works fine, but if the spec also captures video, you'll hit thermal limits faster.\n\n" +
|
|
191
|
+
"Minimal:\n" +
|
|
192
|
+
` { "type": "record_audio", "id": "note_recorder", "params": { "max_duration_seconds": 30, "silence_timeout_seconds": 3, "quality": "standard" } }\n\n` +
|
|
193
|
+
"── Block result usage ──\n" +
|
|
194
|
+
"After a block_call action with save_as: 'photo' (or any name), the result is bound to that variable. Reference fields via dot notation in subsequent actions: {{photo.uri}}, {{photo.width}}, {{note.transcript}}, {{clip.durationMs}}. The bare {{photo}} resolves to the URI for capture_photo and capture_video. See template_syntax topic.",
|
|
195
|
+
keywords: ["block", "capture_photo", "capture_video", "record_audio", "photo", "video", "audio", "capture", "hevc", "h264", "stt"],
|
|
130
196
|
relatedTools: ["getPlatformInfo", "initSpec", "updateSpec"],
|
|
131
197
|
},
|
|
132
198
|
{
|
|
133
199
|
topic: "stream_types",
|
|
134
200
|
title: "Stream Types",
|
|
135
|
-
content: "
|
|
136
|
-
|
|
201
|
+
content: "**Streams are continuous flows of media or events.** A stream is *declared* in spec.streams[] (with config), *gated by a toggle* at runtime, and *consumed by developer code* in ExtentosStreams.{kt,swift} (generated by `generateConsumer(kind: 'stream')`). Direction matters: video_frames / audio_chunks / transcription_incremental are OUTBOUND from glasses; outgoing_video / outgoing_audio are phone→glasses.\n\n" +
|
|
202
|
+
"5 stream types. All require `generateConsumer(kind: 'stream')` to scaffold the consumer file. Lifecycle is tied to app foreground; on Android 14+ you need FOREGROUND_SERVICE permission and a foregroundServiceType declaration in AndroidManifest.xml.\n\n" +
|
|
203
|
+
"─── video_frames ───\n" +
|
|
204
|
+
"Outbound stream of camera frames from the glasses. Tier: dat_native.\n\n" +
|
|
205
|
+
"When to use: continuous on-device ML (object detection, scene classification). Live preview UI. Anything needing frames > 1/second.\n" +
|
|
206
|
+
"When NOT to use: one-shot still capture (use capture_photo block). Bounded clips (use capture_video block). Streaming to a remote server (use outgoing_video_stream — different direction).\n\n" +
|
|
207
|
+
"Required: type, id, config\n" +
|
|
208
|
+
"Config: resolution ('LOW' | 'MEDIUM' | 'HIGH'), frame_rate (2 | 7 | 15 | 24 | 30), codec ('hvc1' | 'h264'), backpressure ('drop_oldest' | 'drop_newest' | 'suspend')\n\n" +
|
|
209
|
+
"Field rules:\n" +
|
|
210
|
+
"- frame_rate × battery: 2 fps for ML workloads (negligible drain). 7-15 fps for preview UI (~1 hr active). 24-30 fps drains battery fast (~30 min); ALWAYS pair with a thermal_throttle preset trigger to downgrade on warning.\n" +
|
|
211
|
+
"- resolution × ML: LOW is sufficient for most on-device models that downscale anyway. Don't ask for HIGH if you're going to crop and downscale.\n" +
|
|
212
|
+
"- codec: hvc1 (HEVC) bypasses the MediaCodec FPS cliff — use it. h264 forces re-encode and drops to <5 fps in practice.\n" +
|
|
213
|
+
"- backpressure: 'drop_oldest' is correct for preview / latest-frame ML. 'drop_newest' for analyses where the historical frame matters more. 'suspend' blocks the producer until consumer drains — only use if your consumer is guaranteed fast.\n\n" +
|
|
214
|
+
"Common mistakes:\n" +
|
|
215
|
+
"- 30 fps + HIGH for ML — wastes battery; downscale to 2 fps + LOW and throttle aggressively.\n" +
|
|
216
|
+
"- No thermal_throttle trigger — 24-30 fps will hit thermal limits within 5 minutes; without a trigger to downgrade, the user just sees a dead session.\n" +
|
|
217
|
+
"- Forgetting the FOREGROUND_SERVICE manifest entry on Android 14+ — `validateIntegration` flags this; `getPermissions` returns the manifest snippet.\n\n" +
|
|
218
|
+
"Minimal:\n" +
|
|
219
|
+
` { "type": "video_frames", "id": "frames", "config": { "resolution": "LOW", "frame_rate": 2, "codec": "hvc1", "backpressure": "drop_oldest" } }\n\n` +
|
|
220
|
+
"─── audio_chunks ───\n" +
|
|
221
|
+
"Outbound stream of raw audio chunks from the glasses mic. Tier: dat_native.\n\n" +
|
|
222
|
+
"When to use: custom on-device or cloud STT (your own model, not Meta's). Audio analysis (silence detection, voice activity, custom keyword spotting).\n" +
|
|
223
|
+
"When NOT to use: phrase recognition (use voice_command trigger — Meta's STT is cheaper). Continuous transcription (use transcription_incremental — already STT'd). Voice notes (use record_audio block — bounded + auto-STT).\n\n" +
|
|
224
|
+
"Required: type, id, config\n" +
|
|
225
|
+
"Config: chunk_millis (default 20), backpressure ('drop_oldest' | 'drop_newest' | 'suspend')\n\n" +
|
|
226
|
+
"Field rules:\n" +
|
|
227
|
+
"- chunk_millis: 20ms is the canonical opus/CELT frame size. Don't change unless your downstream consumer expects something else.\n" +
|
|
228
|
+
"- 16-chunk buffer cap; slow consumers will drop. Profile your consumer — anything > ~50ms per chunk processing on average will fall behind.\n" +
|
|
229
|
+
"- Activating audio_chunks routes audio to HFP, dropping any active A2DP playback to mono 8 kHz. Coexistence is governed by audio_video_coexistence_policy toggle.\n\n" +
|
|
230
|
+
"Minimal:\n" +
|
|
231
|
+
` { "type": "audio_chunks", "id": "mic", "config": { "chunk_millis": 20, "backpressure": "drop_oldest" } }\n\n` +
|
|
232
|
+
"─── transcription_incremental ───\n" +
|
|
233
|
+
"STT events from the platform recognizer (partial + final transcripts). Tier: phone_side_workaround.\n\n" +
|
|
234
|
+
"When to use: continuous live transcription (translation app, dictation). The standard 'live captions' shape.\n" +
|
|
235
|
+
"When NOT to use: one-shot voice-to-text (use record_audio block). Phrase activation (use voice_command trigger). Custom STT model (use audio_chunks stream + your own engine).\n\n" +
|
|
236
|
+
"Required: type, id, config\n" +
|
|
237
|
+
"Config: language (BCP-47 tag, e.g., 'en-US'), min_partial_confidence (default 0.4)\n" +
|
|
238
|
+
"Gated by toggle: transcription_enabled (default false). Set via set_toggle action to start. Fires Transcript.Final and Transcript.Partial events on the consumer Flow.\n\n" +
|
|
239
|
+
"Field rules:\n" +
|
|
240
|
+
"- min_partial_confidence: 0.4 is the platform-recommended floor. Partial events are chatty — debounce in your UI consumer if rendering each one to a Composable / SwiftUI view.\n" +
|
|
241
|
+
"- language: must be a BCP-47 tag. 'en' alone won't work; use 'en-US' or 'en-GB'.\n" +
|
|
242
|
+
"- Activating transcription_incremental routes audio to HFP same as audio_chunks — A2DP playback drops to mono.\n\n" +
|
|
243
|
+
"Minimal:\n" +
|
|
244
|
+
` { "type": "transcription_incremental", "id": "live_transcript", "config": { "language": "en-US" } }\n\n` +
|
|
245
|
+
"─── outgoing_audio_stream ───\n" +
|
|
246
|
+
"Phone→glasses audio (TTS, voice call audio, music). Tier: dat_native.\n\n" +
|
|
247
|
+
"When to use: video-call audio. Custom TTS bypassing platform speak. Streaming music or generated audio.\n" +
|
|
248
|
+
"When NOT to use: simple TTS prompts (use speak_text action — it handles routing). Bounded earcons (use earcon_beep action).\n\n" +
|
|
249
|
+
"Config: chunk_millis (default 20), codec ('opus' | 'pcm_s16le')\n" +
|
|
250
|
+
"Field rules:\n" +
|
|
251
|
+
"- codec: opus for network-sourced audio (compressed). pcm_s16le only for local on-device generation where compression overhead matters.\n\n" +
|
|
252
|
+
"─── outgoing_video_stream ───\n" +
|
|
253
|
+
"Phone→glasses video. Tier: phone_side_workaround.\n\n" +
|
|
254
|
+
"When to use: video-call rendering on the glasses display. Custom AR overlays (limited — no AR display surface on Ray-Ban Gen 1).\n" +
|
|
255
|
+
"Config: resolution, frame_rate (2|7|15|24|30), codec ('hvc1' | 'h264')\n" +
|
|
256
|
+
"Field rules:\n" +
|
|
257
|
+
"- codec: hvc1 (HEVC) passthrough is mandatory for sustained streaming. h264 requires re-encode; thermal_warning will fire moderate severity within 5 minutes.\n\n" +
|
|
258
|
+
"── Stream consumption ──\n" +
|
|
259
|
+
"Stream consumers live in `ExtentosStreams.kt` / `ExtentosStreams.swift`, generated by `generateConsumer({ kind: 'stream', streams: [...] })`. The generated file uses Kotlin `Flow.collect {}` (Android) or Swift `for await … in` (iOS). Lifecycle: scope to `lifecycle` (recommended — auto-cancels on app teardown) or `connection` (only collects while glasses are Active). Toggles gate the actual data flow; set the toggle from a manual_launch trigger or from app code via `glasses.toggles.put(...)`.",
|
|
260
|
+
keywords: ["stream", "video_frames", "audio_chunks", "transcription", "outgoing_audio", "outgoing_video", "flow", "asyncstream", "backpressure", "continuous", "hevc", "battery"],
|
|
137
261
|
relatedTools: ["getPlatformInfo", "generateConsumer", "getPermissions"],
|
|
138
262
|
},
|
|
139
263
|
{
|
|
140
264
|
topic: "trigger_types",
|
|
141
265
|
title: "Trigger Types",
|
|
142
|
-
content: "
|
|
143
|
-
|
|
266
|
+
content: "**Triggers fire flows.** A spec contains 0+ triggers; each describes a stimulus + an `actions[]` flow that runs on every fire. 13 trigger types grouped by stimulus class:\n\n" +
|
|
267
|
+
"- VOICE: voice_command, wake_word, push_to_talk, fallback\n" +
|
|
268
|
+
"- HARDWARE: capture_button, hinges_closed, thermal_warning, audio_route_changed\n" +
|
|
269
|
+
"- LIFECYCLE: manual_launch, connection_state_changed, app_lifecycle_changed\n" +
|
|
270
|
+
"- PHONE: phone_notification_forwarded, incoming_call_detected, location_updated\n\n" +
|
|
271
|
+
"Per-primitive reference below. Each entry: when to use → required → optional → field rules → common mistakes → minimal example.\n\n" +
|
|
272
|
+
"─── voice_command ───\n" +
|
|
273
|
+
"Fire on a phrase match in STT output. The most common trigger for host-app callbacks ('delete all notes', 'take a photo', 'translate this').\n\n" +
|
|
274
|
+
"When to use: phone-app integration via a memorable phrase. Most third-party integrations of glasses use this trigger to call back into the host app's existing logic via app_callback.\n" +
|
|
275
|
+
"When NOT to use: single-word triggers ('start', 'go') — use wake_word with a custom Picovoice model. Continuous transcription — use stream type transcription_incremental fed by a manual_launch.\n\n" +
|
|
276
|
+
"Required: type, phrase, actions\n" +
|
|
277
|
+
"Optional: id, match_mode (default 'contains'), min_confidence (default 0.5), mode (default 'single')\n\n" +
|
|
278
|
+
"Field rules:\n" +
|
|
279
|
+
"- phrase: 3+ syllables for STT reliability. Avoid digits ('say two' — STT rarely round-trips '2'), homophones (two/to/too, four/for, here/hear, no/know, sea/see, right/write), and Meta wake words ('hey meta', 'ok meta', 'hey facebook' — reserved for Meta AI). Named captures via {{name}} must be the FINAL token in the phrase ('translate {{text}}' not '{{text}} please').\n" +
|
|
280
|
+
"- match_mode: 'contains' (default) tolerates STT filler words ('um', 'okay') prepended/appended — almost always the right choice. 'exact' requires verbatim match — use only for short single-token phrases. 'starts_with' is brittle because STT prepends filler — prefer 'contains'.\n" +
|
|
281
|
+
"- min_confidence: 0.5 works for clean speech. Drop to 0.3 in noisy environments (more false positives). Raise to 0.7 for destructive flows ('delete everything').\n" +
|
|
282
|
+
"- mode: 'single' (default) ignores fires while a flow runs. 'restart' cancels in-flight on new fire (use for 'stop listening'-style toggles). 'queued' buffers up to 3 (use for 'save note' where users may rapid-fire).\n\n" +
|
|
283
|
+
"Common mistakes:\n" +
|
|
284
|
+
"- Single-word phrase ('delete') — STT will mishear; require 3+ syllables.\n" +
|
|
285
|
+
"- Numeric phrase ('set timer to 5') — write 'set timer to five' and parse the spelled number in your handler.\n" +
|
|
286
|
+
"- Two triggers whose phrases are homophones ('note' / 'no') — both will fire on either utterance.\n\n" +
|
|
287
|
+
"Minimal:\n" +
|
|
288
|
+
` {\n` +
|
|
289
|
+
` "type": "voice_command",\n` +
|
|
290
|
+
` "id": "t_my_phrase",\n` +
|
|
291
|
+
` "phrase": "do the thing",\n` +
|
|
292
|
+
` "match_mode": "contains",\n` +
|
|
293
|
+
` "actions": [\n` +
|
|
294
|
+
` { "type": "app_callback", "handler": "do_the_thing", "input": {}, "save_as": "result" },\n` +
|
|
295
|
+
` { "type": "speak_text", "text": "Done." }\n` +
|
|
296
|
+
` ]\n` +
|
|
297
|
+
` }\n\n` +
|
|
298
|
+
"─── wake_word ───\n" +
|
|
299
|
+
"Fire on a custom on-device wake word (always-listening, low-power).\n\n" +
|
|
300
|
+
"When to use: short single-word activator that has to work without prior phrase ('hey assistant', 'computer'). Continuous always-listening UX where voice_command's STT cost is too high.\n" +
|
|
301
|
+
"When NOT to use: phrase-based triggers (use voice_command). Anything Meta's reserved wake words ('hey meta', 'hey facebook', 'ok meta') — those are not exposed to third-party apps.\n\n" +
|
|
302
|
+
"Required: type, phrase (built-in or path to a custom Picovoice model), actions\n" +
|
|
303
|
+
"Requires: microphone permission + Picovoice access key for custom models.\n\n" +
|
|
304
|
+
"─── push_to_talk ───\n" +
|
|
305
|
+
"Fire when the user holds a phone-side push-to-talk button while speaking, releases to commit.\n\n" +
|
|
306
|
+
"When to use: explicit voice capture without keyword cost. The host app provides a UI button that drives this.\n" +
|
|
307
|
+
"Required: type, actions. Payload exposes transcript and rawUtterance.\n" +
|
|
308
|
+
"Requires: a phone-UI button surface in the app that calls the runtime to drive this trigger.\n\n" +
|
|
309
|
+
"─── fallback ───\n" +
|
|
310
|
+
"Catches any unrecognized voice utterance that didn't match a voice_command. Max 1 per spec.\n\n" +
|
|
311
|
+
"When to use: graceful 'sorry, I didn't catch that' UX. Always include if the spec has any voice_command.\n" +
|
|
312
|
+
"Required: type, actions. No phrase — it matches by exclusion.\n\n" +
|
|
313
|
+
"Minimal:\n" +
|
|
314
|
+
` { "type": "fallback", "id": "t_fallback", "actions": [{ "type": "speak_text", "text": "Sorry, I didn't catch that." }] }\n\n` +
|
|
315
|
+
"─── manual_launch ───\n" +
|
|
316
|
+
"Fires once when the runtime invokes runtime.invokeManualLaunch() from phone-side code (e.g., a button in your UI).\n\n" +
|
|
317
|
+
"When to use: explicit start of a session-bound flow ('start translation mode', 'begin recording'). Often paired with a set_toggle action to flip transcription_enabled on.\n" +
|
|
318
|
+
"Required: type, actions. No payload.\n\n" +
|
|
319
|
+
"Minimal:\n" +
|
|
320
|
+
` { "type": "manual_launch", "id": "t_start", "actions": [{ "type": "set_toggle", "key": "transcription_enabled", "value": true }] }\n\n` +
|
|
321
|
+
"─── capture_button ───\n" +
|
|
322
|
+
"Fires when the glasses' physical capture button is pressed.\n\n" +
|
|
323
|
+
"When to use: photo/video gestures that should bypass voice. Default-affordance for camera-driven apps.\n" +
|
|
324
|
+
"Required: type, actions. No params, no payload.\n\n" +
|
|
325
|
+
"─── hinges_closed ───\n" +
|
|
326
|
+
"Fires when the glasses' hinges close (user takes them off).\n" +
|
|
327
|
+
"When to use: pause-on-removal UX, save-state on close. Pair with set_toggle to disable streams.\n\n" +
|
|
328
|
+
"─── thermal_warning ───\n" +
|
|
329
|
+
"Fires on device thermal-state escalation. Severity: 'light' | 'moderate' | 'severe' | 'critical'.\n\n" +
|
|
330
|
+
"When to use: protect battery + extend session — listen for severity 'moderate' or higher and downgrade quality. Most camera/streaming specs include a thermal_warning trigger that flips battery_save_mode on. The `thermal_throttle` preset on initSpec auto-injects this.\n" +
|
|
331
|
+
"Required: type, severity, actions.\n\n" +
|
|
332
|
+
"─── connection_state_changed ───\n" +
|
|
333
|
+
"Fires on glasses-connection-state transitions. Use on_transition.from / on_transition.to to gate on specific transitions.\n\n" +
|
|
334
|
+
"When to use: announce connect/disconnect, persist state across reconnects. The `disconnect_announce` preset on initSpec auto-injects a sensible default.\n" +
|
|
335
|
+
"Payload: from, to, cause (all GlassesState bucket strings).\n\n" +
|
|
336
|
+
"─── audio_route_changed ───\n" +
|
|
337
|
+
"Fires when audio routing changes (BT pairing/unpairing, A2DP↔HFP swap).\n" +
|
|
338
|
+
"Payload: from, to. Useful for graceful audio-mode handoff.\n\n" +
|
|
339
|
+
"─── phone_notification_forwarded ───\n" +
|
|
340
|
+
"Fires when a phone notification matching the app's filter is forwarded to glasses TTS.\n\n" +
|
|
341
|
+
"Payload: packageName, title, body.\n" +
|
|
342
|
+
"Requires: Android BIND_NOTIFICATION_LISTENER_SERVICE (user-granted at runtime); iOS UNUserNotificationCenter delegate (system notifications only — third-party app banners not accessible).\n\n" +
|
|
343
|
+
"─── incoming_call_detected ───\n" +
|
|
344
|
+
"Fires when an incoming phone call is detected.\n" +
|
|
345
|
+
"Payload: callerNumber, callerName.\n" +
|
|
346
|
+
"Requires: Android READ_PHONE_STATE permission; iOS CallKit observer.\n\n" +
|
|
347
|
+
"─── location_updated ───\n" +
|
|
348
|
+
"Fires periodically with current GPS coordinates. Throttle via min_interval_millis + min_displacement_meters to control battery cost.\n\n" +
|
|
349
|
+
"Required: type, actions.\n" +
|
|
350
|
+
"Optional: min_interval_millis (default 5000), min_displacement_meters (default 10).\n" +
|
|
351
|
+
"Payload: latitude, longitude, accuracyMeters.\n" +
|
|
352
|
+
"Requires: ACCESS_FINE_LOCATION (Android) or NSLocationWhenInUseUsageDescription (iOS).\n\n" +
|
|
353
|
+
"─── app_lifecycle_changed ───\n" +
|
|
354
|
+
"Fires when the host app's lifecycle state changes ('foreground' / 'background' / 'destroyed').\n" +
|
|
355
|
+
"Use to pause streaming or save state when backgrounded.\n\n" +
|
|
356
|
+
"── Presets ──\n" +
|
|
357
|
+
"Three canned trigger shapes can be auto-injected via initSpec.presetTriggers: 'fallback_default' (a fallback trigger with sensible 'sorry' speech), 'thermal_throttle' (thermal_warning trigger flipping battery_save_mode), 'disconnect_announce' (connection_state_changed announcer). Pass the preset names to initSpec; do not duplicate the trigger shape manually if you use the preset.",
|
|
358
|
+
keywords: ["trigger", "voice_command", "tap", "capture_button", "wake_word", "fallback", "notification", "thermal", "preset", "phrase", "match_mode", "homophone"],
|
|
144
359
|
relatedTools: ["getPlatformInfo", "getVoiceCommandGuidance", "updateSpec"],
|
|
145
360
|
},
|
|
146
361
|
{
|
|
147
362
|
topic: "action_types",
|
|
148
363
|
title: "Action Types",
|
|
149
|
-
content: "
|
|
150
|
-
|
|
364
|
+
content: "**Actions are steps inside a trigger's flow.** Each trigger's actions[] runs sequentially when the trigger fires. Actions can be flat or nested via control-flow actions (branch, when_connected, retry_with_backoff). 15 action types grouped by purpose:\n\n" +
|
|
365
|
+
"- HOST-APP BRIDGE: app_callback (the most important — calls into developer code)\n" +
|
|
366
|
+
"- MEDIA: block_call, speak_text, earcon_beep\n" +
|
|
367
|
+
"- STATE: set_toggle, set_variable\n" +
|
|
368
|
+
"- CONTROL FLOW: branch, when_connected, retry_with_backoff, buffer_and_replay, delay, abort, prompt\n" +
|
|
369
|
+
"- DIAGNOSTICS: log\n\n" +
|
|
370
|
+
"─── app_callback ───\n" +
|
|
371
|
+
"**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" +
|
|
372
|
+
"When to use: ANY time the spec needs to invoke domain logic that lives in the host app — DB writes, AI calls, repository ops, navigation, file IO, network requests, anything that's not a stock primitive. Always wrap arbitrary host-app behavior in an app_callback rather than trying to express it as composed primitives.\n" +
|
|
373
|
+
"When NOT to use: pure spec-side state changes (use set_toggle / set_variable). Stock TTS (use speak_text). Capturing media (use block_call).\n\n" +
|
|
374
|
+
"Required: type, handler (string — the handler name registered in ExtentosCallbacks)\n" +
|
|
375
|
+
"Optional: input (object — payload passed to the handler; values support {{template}} substitution from prior save_as variables), save_as (variable name to capture the handler's return value)\n\n" +
|
|
376
|
+
"Field rules:\n" +
|
|
377
|
+
"- handler: must match a name passed to generateConsumer(kind: 'callback'). Generated stub lives in `ExtentosCallbacks.kt`/`.swift` with USER-CODE markers; the developer fills in the body.\n" +
|
|
378
|
+
"- input: keys are arbitrary, values can be literals OR {{template}} references to prior save_as outputs. Example: `{ image: '{{photo.uri}}', prompt: 'Describe this scene.' }`.\n" +
|
|
379
|
+
"- save_as: the handler's `Success` payload becomes a variable accessible as `{{result}}` (or `{{result.field}}`). The handler's `Error` short-circuits the flow.\n" +
|
|
380
|
+
"- Timeouts surface as 'callback.timeout' events on the runtime event log.\n\n" +
|
|
381
|
+
"Common mistakes:\n" +
|
|
382
|
+
"- Forgetting to call `generateConsumer({ kind: 'callback', handlers: [...] })` after adding a new app_callback — the spec validates fine, but at runtime the handler is missing and the flow errors.\n" +
|
|
383
|
+
"- Passing `suggestedProvider` to generateConsumer for non-AI handlers — the generated comment will say 'wire your AI provider client here', misleading. Only pass suggestedProvider when the handler actually wraps an AI API.\n" +
|
|
384
|
+
"- Trying to express sequential domain logic as multiple app_callback calls when one handler with branching logic would be cleaner. The spec is for hardware orchestration; complex business logic belongs inside the handler.\n\n" +
|
|
385
|
+
"Minimal:\n" +
|
|
386
|
+
` { "type": "app_callback", "handler": "clear_notes", "input": {}, "save_as": "result" }\n\n` +
|
|
387
|
+
"With templated input from a prior block_call:\n" +
|
|
388
|
+
` { "type": "app_callback", "handler": "describe_image", "input": { "image": "{{photo.uri}}" }, "save_as": "description" }\n\n` +
|
|
389
|
+
"─── block_call ───\n" +
|
|
390
|
+
"Invoke a declared block (capture_photo, capture_video, record_audio).\n\n" +
|
|
391
|
+
"Required: type, block_id (must reference an id from spec.blocks[])\n" +
|
|
392
|
+
"Optional: save_as (capture the block's return value as a variable)\n\n" +
|
|
393
|
+
"Minimal:\n" +
|
|
394
|
+
` { "type": "block_call", "block_id": "main_camera", "save_as": "photo" }\n\n` +
|
|
395
|
+
"─── speak_text ───\n" +
|
|
396
|
+
"TTS via the platform speech synthesizer. Routes audio output appropriately based on coexistence policy.\n\n" +
|
|
397
|
+
"Required: type, text (string — supports {{template}} substitution)\n\n" +
|
|
398
|
+
"Field rules:\n" +
|
|
399
|
+
"- text: keep under ~140 characters for snappy UX. Long TTS is interrupting and battery-expensive.\n" +
|
|
400
|
+
"- Calling speak_text while transcription_enabled is on routes audio to HFP — the user briefly loses A2DP music if any.\n\n" +
|
|
401
|
+
"Minimal:\n" +
|
|
402
|
+
` { "type": "speak_text", "text": "Done." }\n` +
|
|
403
|
+
` { "type": "speak_text", "text": "Hello {{user.name}}." }\n\n` +
|
|
404
|
+
"─── earcon_beep ───\n" +
|
|
405
|
+
"Short audio cue (canned sounds, no synthesis). Cheaper and faster than speak_text for confirmations.\n\n" +
|
|
406
|
+
"Required: type, sound ('confirmation' | 'error' | 'notification' | 'start' | 'stop')\n" +
|
|
407
|
+
"Optional: volume (0.0-1.0, default 0.6)\n\n" +
|
|
408
|
+
"─── set_toggle ───\n" +
|
|
409
|
+
"Mutate a runtime toggle (transcription_enabled, camera_streaming_enabled, privacy_mode, etc.). See `toggles` topic for the 8 toggle keys.\n\n" +
|
|
410
|
+
"Required: type, key, value\n\n" +
|
|
411
|
+
"Common mistakes:\n" +
|
|
412
|
+
"- Toggling transcription_enabled without first declaring a transcription_incremental stream — the toggle has no effect.\n" +
|
|
413
|
+
"- Setting privacy_mode true and forgetting to unset it later — privacy_mode suppresses ALL captures until cleared.\n\n" +
|
|
414
|
+
"Minimal:\n" +
|
|
415
|
+
` { "type": "set_toggle", "key": "transcription_enabled", "value": true }\n\n` +
|
|
416
|
+
"─── set_variable ───\n" +
|
|
417
|
+
"Write a flow-scoped variable. Use for synthesized values (counters, computed flags) that subsequent actions reference.\n\n" +
|
|
418
|
+
"Required: type, name, value (literal or {{template}})\n" +
|
|
419
|
+
"Variables are flow-scoped — they live for the duration of a single trigger fire and don't persist across fires (use set_toggle for cross-fire state).\n\n" +
|
|
420
|
+
"─── branch ───\n" +
|
|
421
|
+
"Conditional execution. The single control-flow primitive — there is no `if`/`else` outside branch.\n\n" +
|
|
422
|
+
"Required: type, condition, then[]\n" +
|
|
423
|
+
"Optional: else[]\n\n" +
|
|
424
|
+
"Condition shape: `{ variable: '<dotted.path>', operator: '<op>', value?: <literal> }`\n" +
|
|
425
|
+
"Operators: 'equals', 'not_equals', 'is_empty', 'not_empty', 'greater_than', 'less_than'\n\n" +
|
|
426
|
+
"Field rules:\n" +
|
|
427
|
+
"- variable: dotted path to a save_as'd value or a {{trigger_payload.x}} field. Examples: 'result.description', 'note.transcript', 'toggles.privacy_mode', 'trigger_payload.captures.query'.\n" +
|
|
428
|
+
"- Branch depth: schema permits ≤ 4, but convention is to keep depth ≤ 1. If you need deeper branching, that's a sign the logic should move into an app_callback.\n\n" +
|
|
429
|
+
"Common mistakes:\n" +
|
|
430
|
+
"- Comparing a typed value with a string literal: `{ variable: 'count', operator: 'equals', value: '5' }` when count is a number — use the numeric literal `value: 5`.\n" +
|
|
431
|
+
"- Nesting branches more than 1 deep — refactor into an app_callback handler that returns a discriminator + a single branch on the discriminator.\n\n" +
|
|
432
|
+
"Minimal:\n" +
|
|
433
|
+
` {\n` +
|
|
434
|
+
` "type": "branch",\n` +
|
|
435
|
+
` "condition": { "variable": "result.description", "operator": "is_empty" },\n` +
|
|
436
|
+
` "then": [{ "type": "speak_text", "text": "No result." }],\n` +
|
|
437
|
+
` "else": [{ "type": "speak_text", "text": "{{result.description}}" }]\n` +
|
|
438
|
+
` }\n\n` +
|
|
439
|
+
"─── when_connected ───\n" +
|
|
440
|
+
"Wraps an action that should only run while glasses are Active. If not connected, optionally waits with timeout.\n\n" +
|
|
441
|
+
"Required: type, action (the wrapped action)\n" +
|
|
442
|
+
"Optional: timeout_seconds\n\n" +
|
|
443
|
+
"Use when: a flow can be fired by phone-side logic before the glasses are connected (e.g., manual_launch from a phone UI button) and you want graceful deferral.\n\n" +
|
|
444
|
+
"─── retry_with_backoff ───\n" +
|
|
445
|
+
"Retries an action (typically app_callback) on failure with exponential backoff.\n\n" +
|
|
446
|
+
"Required: type, action\n" +
|
|
447
|
+
"Optional: max_attempts (default 3), initial_delay_seconds (default 1)\n\n" +
|
|
448
|
+
"Field rules:\n" +
|
|
449
|
+
"- Succeeds when the wrapped action populates its save_as. Failure paths bubble up to flow termination unless caught by a branch.\n" +
|
|
450
|
+
"- Use sparingly — most flows should fail fast; only retry idempotent ops (network reads, etc.).\n\n" +
|
|
451
|
+
"─── buffer_and_replay ───\n" +
|
|
452
|
+
"Delays action execution until glasses connect, replaying buffered actions in order.\n" +
|
|
453
|
+
"Niche — use when_connected for the common case.\n\n" +
|
|
454
|
+
"─── delay ───\n" +
|
|
455
|
+
"Pause flow execution for N seconds.\n\n" +
|
|
456
|
+
"Required: type, seconds (number > 0 and ≤ 3600, literal only — not templated)\n\n" +
|
|
457
|
+
"Field rules:\n" +
|
|
458
|
+
"- seconds must be a number literal — `{{some_var}}` is rejected. If you need dynamic delay, compute it in an app_callback handler.\n" +
|
|
459
|
+
"- > 5s is usually wrong UX — users expect glasses to feel instant.\n\n" +
|
|
460
|
+
"─── abort ───\n" +
|
|
461
|
+
"Terminates the flow immediately. Use for early-exit on error conditions inside a branch's then[].\n\n" +
|
|
462
|
+
"─── prompt ───\n" +
|
|
463
|
+
"Synthesizes a TTS question and waits for a voice response. Returns the response transcript.\n" +
|
|
464
|
+
"Required: type, text, save_as\n" +
|
|
465
|
+
"Optional: timeout_seconds\n\n" +
|
|
466
|
+
"─── log ───\n" +
|
|
467
|
+
"Emit a structured log event into the runtime event log (visible in getEventLog).\n\n" +
|
|
468
|
+
"Required: type, level ('debug' | 'info' | 'warning' | 'error'), message (supports {{template}})\n" +
|
|
469
|
+
"Use to mark flow milestones for diagnostics — particularly useful inside branch arms to trace which path executed.\n\n" +
|
|
470
|
+
"── Composition pattern ──\n" +
|
|
471
|
+
"The canonical 'voice phrase → host app → response' shape:\n" +
|
|
472
|
+
` { "type": "app_callback", "handler": "my_handler", "input": { ... }, "save_as": "result" },\n` +
|
|
473
|
+
` { "type": "branch",\n` +
|
|
474
|
+
` "condition": { "variable": "result.ok", "operator": "equals", "value": true },\n` +
|
|
475
|
+
` "then": [{ "type": "speak_text", "text": "{{result.message}}" }],\n` +
|
|
476
|
+
` "else": [{ "type": "speak_text", "text": "Sorry, that failed." }]\n` +
|
|
477
|
+
` }\n\n` +
|
|
478
|
+
"The canonical 'photo + AI → speak result' shape:\n" +
|
|
479
|
+
` { "type": "block_call", "block_id": "main_camera", "save_as": "photo" },\n` +
|
|
480
|
+
` { "type": "app_callback", "handler": "describe_image", "input": { "image": "{{photo.uri}}" }, "save_as": "description" },\n` +
|
|
481
|
+
` { "type": "speak_text", "text": "{{description.text}}" }\n`,
|
|
482
|
+
keywords: ["action", "block_call", "app_callback", "branch", "retry", "speak", "set_toggle", "set_variable", "delay", "log", "earcon", "prompt", "host-app", "callback"],
|
|
151
483
|
relatedTools: ["updateSpec", "generateConsumer"],
|
|
152
484
|
},
|
|
153
485
|
{
|
|
@@ -160,7 +492,28 @@ export const DOC_INDEX = [
|
|
|
160
492
|
{
|
|
161
493
|
topic: "spec_format",
|
|
162
494
|
title: "Spec Format",
|
|
163
|
-
content: "Top-level: extentos_version ('1.0'), target.vendor ('meta_rayban'), blocks[], streams[], triggers[]. Each block/stream/trigger has a unique id. Triggers declare a type, optional id, and an actions[] array. Spec file lives at app/src/main/assets/extentos.spec.json (Android) or Resources/extentos.spec.json (iOS), byte-identical across platforms
|
|
495
|
+
content: "Top-level: extentos_version ('1.0'), target.vendor ('meta_rayban'), blocks[], streams[], triggers[]. Each block/stream/trigger has a unique id. Triggers declare a type, optional id, and an actions[] array. Spec file lives at app/src/main/assets/extentos.spec.json (Android) or Resources/extentos.spec.json (iOS), byte-identical across platforms.\n\n" +
|
|
496
|
+
"Minimal valid spec — voice phrase that calls back into the host app (the smallest useful shape):\n" +
|
|
497
|
+
` {\n` +
|
|
498
|
+
` "$schema": "extentos://schema/v1",\n` +
|
|
499
|
+
` "extentos_version": "1.0",\n` +
|
|
500
|
+
` "target": { "vendor": "meta_rayban" },\n` +
|
|
501
|
+
` "blocks": [],\n` +
|
|
502
|
+
` "streams": [],\n` +
|
|
503
|
+
` "triggers": [\n` +
|
|
504
|
+
` {\n` +
|
|
505
|
+
` "type": "voice_command",\n` +
|
|
506
|
+
` "id": "t_my_phrase",\n` +
|
|
507
|
+
` "phrase": "do the thing",\n` +
|
|
508
|
+
` "match_mode": "contains",\n` +
|
|
509
|
+
` "actions": [\n` +
|
|
510
|
+
` { "type": "app_callback", "handler": "do_the_thing", "input": {}, "save_as": "result" },\n` +
|
|
511
|
+
` { "type": "speak_text", "text": "Done." }\n` +
|
|
512
|
+
` ]\n` +
|
|
513
|
+
` }\n` +
|
|
514
|
+
` ]\n` +
|
|
515
|
+
` }\n\n` +
|
|
516
|
+
"Add blocks[] entries when capturing photo/video/audio. Add streams[] entries for continuous flows (transcription, video frames). See block_types, stream_types, trigger_types, action_types for inline examples of each.",
|
|
164
517
|
keywords: ["spec", "format", "structure", "extentos_version", "target", "schema", "top-level"],
|
|
165
518
|
relatedTools: ["validateSpec", "initSpec", "updateSpec", "inspectIntegration"],
|
|
166
519
|
},
|
|
@@ -202,15 +555,25 @@ export const DOC_INDEX = [
|
|
|
202
555
|
{
|
|
203
556
|
topic: "library_api",
|
|
204
557
|
title: "Extentos Library API",
|
|
205
|
-
content: "ExtentosGlasses is the top-level object, carrying 8 sub-clients:
|
|
206
|
-
keywords: ["library", "api", "extentosglasses", "config", "subclient", "create", "register"],
|
|
558
|
+
content: "ExtentosGlasses is the top-level object, carrying 8 consumer-facing sub-clients (identical on Android and iOS): connection, camera, audio, runtime, toggles, extensions, debug, telemetry. Spec lifecycle lives on `runtime` (loadSpec returns ExtentosResult — pattern-match Ok/Err, do NOT use Kotlin runCatching, which never catches the Err channel since loadSpec never throws). Register app_callback handlers via glasses.extensions.registerAppCallbackHandler(name, impl). ExtentosConfig controls transport override, debug, telemetryConsent, applicationContext (Android), and metaCredentials. Creation: ExtentosGlasses.create() on Android / Extentos.create() on iOS.",
|
|
559
|
+
keywords: ["library", "api", "extentosglasses", "config", "subclient", "create", "register", "runtime", "loadSpec", "ExtentosResult"],
|
|
207
560
|
relatedTools: ["generateConnectionModule", "generateConsumer"],
|
|
208
561
|
},
|
|
209
562
|
{
|
|
210
563
|
topic: "app_callback_guide",
|
|
211
564
|
title: "App Callback Handlers",
|
|
212
|
-
content: "app_callback routes flow control
|
|
213
|
-
|
|
565
|
+
content: "app_callback routes flow control from the spec into the developer's native code — for AI calls, domain logic (DB writes, file IO, repository ops), or external service access. Register via glasses.extensions.registerAppCallbackHandler(handler). AppCall carries the handler name, the input map declared in the spec's app_callback action, and caller context (triggerId, flowId). Returning AppCallbackResult.Success(value) populates the flow's save_as variable; returning Error short-circuits the flow. Timeouts surface as 'callback.timeout' events.\n\n" +
|
|
566
|
+
"Handler stub generation: call generateConsumer(kind: 'callback', handlers: [...]) → emits ExtentosCallbacks.{kt,swift} with marker-bounded dispatch and a USER-CODE block per handler for your implementation. The bootstrap dispatch region gets a replace_region patch that wires registration.\n\n" +
|
|
567
|
+
"Android handler shape (from generated stub — fill in USER-CODE):\n" +
|
|
568
|
+
" private suspend fun handleDoTheThing(call: AppCall): AppCallbackResult {\n" +
|
|
569
|
+
" // USER-CODE-START:do_the_thing\n" +
|
|
570
|
+
" MyAppRepository.doTheThing()\n" +
|
|
571
|
+
" return AppCallbackResult.Success(buildJsonObject { put(\"ok\", true) })\n" +
|
|
572
|
+
" // USER-CODE-END:do_the_thing\n" +
|
|
573
|
+
" }\n\n" +
|
|
574
|
+
"iOS handler shape: same idea — `private func handleDoTheThing(_ call: AppCall) async -> AppCallbackResult` with USER-CODE markers; return .success(value:) or .error(code:, message:).\n\n" +
|
|
575
|
+
"Generated stubs return an AI-provider TODO comment ONLY when you pass a `suggestedProvider` field to generateConsumer; otherwise the stub gets a generic implementation TODO suitable for non-AI handlers.",
|
|
576
|
+
keywords: ["app_callback", "callback", "handler", "register", "appcall", "timeout", "byok", "user-code"],
|
|
214
577
|
relatedTools: ["generateConsumer", "getCredentialGuide", "updateSpec"],
|
|
215
578
|
},
|
|
216
579
|
{
|
|
@@ -283,12 +646,51 @@ export const DOC_INDEX = [
|
|
|
283
646
|
keywords: ["manifest", "json", "extentos.manifest", "spec.hash", "generatedfiles", "gradle", "spm"],
|
|
284
647
|
relatedTools: ["inspectIntegration", "validateIntegration"],
|
|
285
648
|
},
|
|
649
|
+
{
|
|
650
|
+
topic: "file_actions",
|
|
651
|
+
title: "File Actions in Tool Responses",
|
|
652
|
+
content: "**generateConnectionModule, initSpec, and generateConsumer return a `files[]` array.** Each entry has `{ path, action, content, ... }`. The `action` value tells the agent how to apply the file — and the four values encode genuinely distinct semantics. Apply each correctly or developer code is lost.\n\n" +
|
|
653
|
+
"─── action: \"create\" ───\n" +
|
|
654
|
+
"Fresh write. The file is fully tool-owned — only `EXTENTOS-GENERATED` markers, no `USER-CODE` blocks. If the file already exists and was previously generated by Extentos, it's safe to overwrite. If it exists and is NOT marked as Extentos-generated (no `EXTENTOS-GENERATED` header), do not overwrite — that's developer-authored code.\n" +
|
|
655
|
+
"Examples: `ExtentosBootstrap.kt`, `ExtentosBootstrap.swift`.\n" +
|
|
656
|
+
"Apply: write `content` to `path`.\n\n" +
|
|
657
|
+
"─── action: \"create_or_merge\" ───\n" +
|
|
658
|
+
"The file contains `USER-CODE-START:<name>` / `USER-CODE-END:<name>` blocks where the developer fills in handler bodies, stream-processing code, etc. On regeneration, those blocks MUST be preserved.\n" +
|
|
659
|
+
"Examples: `ExtentosCallbacks.kt`, `ExtentosCallbacks.swift`, `ExtentosStreams.kt`, `ExtentosStreams.swift`.\n" +
|
|
660
|
+
"Apply:\n" +
|
|
661
|
+
" 1. If the file does not exist: write `content` to `path`. Done.\n" +
|
|
662
|
+
" 2. If the file exists: for every `USER-CODE-START:<name>` … `USER-CODE-END:<name>` block in the existing file, replace the matching block in `content` with the existing block's body verbatim (markers stay; only the body inside is preserved). Then write the merged result to `path`.\n" +
|
|
663
|
+
" 3. If a USER-CODE block in the existing file has a `<name>` that is not present in `content` (a removed handler), insert it back near where it lived but prefixed with `// ORPHANED:<name>` — never silently delete developer code.\n" +
|
|
664
|
+
"Skipping the merge step (i.e., always overwriting) silently destroys handler implementations on every regeneration. The smoke test does NOT exercise the merge path; agents are responsible for getting it right.\n\n" +
|
|
665
|
+
"─── action: \"replace_region\" ───\n" +
|
|
666
|
+
"Marker-bounded splice into an existing tool-owned file. Carries an extra `marker` field (e.g., `marker: \"dispatch\"`).\n" +
|
|
667
|
+
"Apply:\n" +
|
|
668
|
+
" 1. Read the existing file at `path`.\n" +
|
|
669
|
+
" 2. Find `// EXTENTOS-GENERATED-START:<marker>` and `// EXTENTOS-GENERATED-END:<marker>` (the `//` works for both Kotlin and Swift).\n" +
|
|
670
|
+
" 3. Replace the body BETWEEN those markers (markers themselves stay) with `content`.\n" +
|
|
671
|
+
" 4. Write the result back to `path`.\n" +
|
|
672
|
+
"Example: `generateConsumer(kind: \"callback\")` returns a `replace_region` patch with `marker: \"dispatch\"` to wire the callback handler registration into the bootstrap's dispatch region.\n" +
|
|
673
|
+
"Apply this programmatically — the content is a code fragment, not English instructions. Never copy `content` to disk verbatim; it must be spliced into the marker block.\n\n" +
|
|
674
|
+
"─── action: \"manual_patch\" ───\n" +
|
|
675
|
+
"English-language instructions for a file the agent does not own (the developer's own app entry point — e.g., iOS `App.swift`). The `content` field is prose with embedded code snippets, not a machine-applyable file body.\n" +
|
|
676
|
+
"Apply: read the instructions, find the location they describe in the developer's file, hand-apply the change. Surface this to the developer when ambiguous; do not guess.\n" +
|
|
677
|
+
"Example: `generateConnectionModule` (iOS) returns a `manual_patch` for `App.swift` adding `.onOpenURL` and `.onChange(of: scenePhase)` modifiers. The agent reads the instructions and applies them to the existing app file.\n\n" +
|
|
678
|
+
"── Why four actions instead of one ──\n" +
|
|
679
|
+
"Each value encodes a different file-ownership and merge contract:\n" +
|
|
680
|
+
"- `create` says 'we own this whole file; safe to overwrite.'\n" +
|
|
681
|
+
"- `create_or_merge` says 'we own the structure but the dev owns the USER-CODE blocks; preserve those.'\n" +
|
|
682
|
+
"- `replace_region` says 'we own one block of an existing file; splice into that block only.'\n" +
|
|
683
|
+
"- `manual_patch` says 'we don't own this file; here are instructions, you decide.'\n" +
|
|
684
|
+
"Conflating them silently destroys developer code (overwriting `create_or_merge` as if it were `create`) or breaks regeneration (treating `replace_region` as a full file write blows away the surrounding code).",
|
|
685
|
+
keywords: ["files", "action", "create", "create_or_merge", "replace_region", "manual_patch", "user-code", "merge", "regeneration", "marker"],
|
|
686
|
+
relatedTools: ["generateConnectionModule", "initSpec", "generateConsumer"],
|
|
687
|
+
},
|
|
286
688
|
{
|
|
287
689
|
topic: "constraints_and_limitations",
|
|
288
690
|
title: "Platform Constraints and Limitations",
|
|
289
691
|
content: "Meta DAT is phone↔glasses — no browser↔glasses. 'Hey Meta' wake word not accessible to third parties. Live video streaming from glasses camera not exposed in current DAT (frames only). Custom gestures beyond tap/double-tap not in preview. Publishing to store is preview-limited; private testing via export is the safe default. iOS SDK: iOS 15.2+, Swift 6 preferred. A2DP/HFP can't run concurrently.",
|
|
290
692
|
keywords: ["limit", "constraint", "dat", "gap", "wake word", "preview", "unsupported"],
|
|
291
|
-
relatedTools: ["getPlatformInfo", "
|
|
693
|
+
relatedTools: ["getPlatformInfo", "searchDocs"],
|
|
292
694
|
},
|
|
293
695
|
{
|
|
294
696
|
topic: "connection_ui",
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSimulatorSession.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA2C5E,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"createSimulatorSession.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/createSimulatorSession.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA2C5E,wBAAsB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAkJpF"}
|