@extentos/mcp-server 0.5.2 → 0.5.3
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityPatterns.d.ts","sourceRoot":"","sources":["../../../src/tools/data/capabilityPatterns.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"capabilityPatterns.d.ts","sourceRoot":"","sources":["../../../src/tools/data/capabilityPatterns.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAw4CD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA0B7D,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAAwC,CAAC"}
|
|
@@ -1070,15 +1070,18 @@ let provider: AssistantProvider = .openAI(
|
|
|
1070
1070
|
const ASSISTANT_VISION = {
|
|
1071
1071
|
feature: "assistant_vision",
|
|
1072
1072
|
summary: "Phase 4 v1.4 addition — `session.includeImage(uri, prompt = null)`. Add an image to the assistant's conversation context and auto-trigger a response: the model sees the image, speaks about it in its configured voice, and remembers it for follow-up questions in the same session. Canonical 'glasses analyze what I'm looking at' surface — pair with `glasses.camera.capturePhoto()` inside a tool body. URI accepts `data:` (sim's capturePhoto default), `http(s)://` (provider fetches), or `file://` / `content://` / bare absolute path (library reads + base64-encodes). Active-only — throws `AssistantException(NotReady)` otherwise. Mock provider stubs with a deterministic AssistantSpoke event for the agent-test loop. v1 ships against OpenAI Realtime's `conversation.item.create` with `input_image` content block.",
|
|
1073
|
-
kotlin: `// Canonical pattern — capturePhoto + includeImage inside a tool body.
|
|
1074
|
-
//
|
|
1075
|
-
//
|
|
1073
|
+
kotlin: `// Canonical pattern — capturePhoto + includeImage inside a tool body. A tool
|
|
1074
|
+
// lambda has NO session receiver, so reach the running session via
|
|
1075
|
+
// glasses.assistant.activeSession — non-null while a tool runs (the model only
|
|
1076
|
+
// dispatches a tool while Active, so the NotReady throw can't fire). If your
|
|
1077
|
+
// handler already holds the session (captured from glasses.assistant.start(...)
|
|
1078
|
+
// to wire wake), call includeImage on that field instead — it's the same object.
|
|
1076
1079
|
tool("describe_scene", "Describe what the user is currently looking at — call when the user asks 'what do you see' or 'describe this'.") {
|
|
1077
1080
|
val photo = glasses.camera.capturePhoto().valueOrNull()
|
|
1078
1081
|
?: return@tool ToolResult.Err("camera failed")
|
|
1079
1082
|
val uri = photo.uri
|
|
1080
1083
|
?: return@tool ToolResult.Err("photo had no uri")
|
|
1081
|
-
|
|
1084
|
+
glasses.assistant.activeSession?.includeImage(uri)
|
|
1082
1085
|
ToolResult.Ok("looking")
|
|
1083
1086
|
}
|
|
1084
1087
|
|
|
@@ -1089,7 +1092,7 @@ tool("read_sign", "Read what's written on a sign in front of the user.") {
|
|
|
1089
1092
|
?: return@tool ToolResult.Err("camera failed")
|
|
1090
1093
|
val uri = photo.uri
|
|
1091
1094
|
?: return@tool ToolResult.Err("photo had no uri")
|
|
1092
|
-
|
|
1095
|
+
glasses.assistant.activeSession?.includeImage(uri, prompt = "What does this sign say? Read it back verbatim.")
|
|
1093
1096
|
ToolResult.Ok("reading")
|
|
1094
1097
|
}
|
|
1095
1098
|
|
|
@@ -1122,7 +1125,7 @@ tool("save_photo", "Save a photo to the user's library WITHOUT describing it. Ca
|
|
|
1122
1125
|
// From a file path (real hardware case — content:// / file:// URI from
|
|
1123
1126
|
// the platform camera intent). Same call shape — library handles the
|
|
1124
1127
|
// read + base64 encode internally.
|
|
1125
|
-
|
|
1128
|
+
glasses.assistant.activeSession?.includeImage("content://media/external/images/media/12345")`,
|
|
1126
1129
|
swift: `// iOS port lands after Android stabilizes (see real-hardware-validation-backlog.md).
|
|
1127
1130
|
// The Swift surface will mirror Kotlin's includeImage(uri:prompt:) signature.
|
|
1128
1131
|
config.tool("describe_scene", description: "Describe what the user is currently looking at.") {
|
|
@@ -1134,6 +1137,7 @@ config.tool("describe_scene", description: "Describe what the user is currently
|
|
|
1134
1137
|
return .ok("looking")
|
|
1135
1138
|
}`,
|
|
1136
1139
|
gotchas: [
|
|
1140
|
+
"**Reaching the session from a tool body.** A `tool { }` lambda has NO `session` receiver — call `glasses.assistant.activeSession?.includeImage(uri)`. `activeSession` is the session the model is currently running in, non-null inside any tool dispatch (the model only dispatches a tool while Active). The bare `session.…` you'll see in handler-based examples (e.g. assistant_agent_loop) assumes a field captured from `glasses.assistant.start(...)` to wire wake — equivalent, use whichever your handler has. (`onWake { }` / `onSleep { }` are different — there the session IS the lambda receiver, so you call `clearHistory()` etc. on it directly.)",
|
|
1137
1141
|
"**Auto-triggers a response — that's the point.** `includeImage` is a one-call API: image goes in, the model speaks. If you want to stage an image without an immediate response (rare — e.g. accumulating multiple images then asking one question), drop down to the raw OpenAI provider primitive (not exposed in v1; file a request if you need it).",
|
|
1138
1142
|
"**URI types map to wire format:** `data:image/...;base64,...` passes through verbatim (sim's capturePhoto returns this shape). `http(s)://...` passes through verbatim — OpenAI Realtime fetches the URL server-side; provider may reject for size / auth reasons, so prefer data: or base64 in production. `file://` / `content://` / bare path → library reads bytes via `Photos.loadBase64` + wraps with `mediaTypeFromUri` inferred MIME. Permission-gated like any other on-device read.",
|
|
1139
1143
|
"**Active-only.** Same precondition as `session.say()` — throws `AssistantException(NotReady)` outside Active. Inside a tool body the state IS Active (the model only dispatches a tool while Active), so the typical usage is always safe. Don't call from `onWake { }` either — onWake fires fire-and-forget on a separate coroutine that may race with the Active transition; use a brief `delay` or call from the FIRST tool dispatch instead.",
|
|
@@ -1269,6 +1273,7 @@ glasses.runtime.events
|
|
|
1269
1273
|
swift: `// iOS port for these four primitives lands with the next Mac VPS handoff.
|
|
1270
1274
|
// Track in shared-context/real-hardware-validation-backlog.md.`,
|
|
1271
1275
|
gotchas: [
|
|
1276
|
+
"**Reaching the session inside a tool body vs. onWake.** A `tool { }` lambda has NO `session` receiver — call these on `glasses.assistant.activeSession?` (the running session, non-null while a tool dispatches) or on a field you captured from `glasses.assistant.start(...)`; the bare `session.…` in these snippets is that captured field. Asymmetry to know: `onWake { }` / `onSleep { }` DO receive the session as `this`, so inside them you call `clearHistory()` / `setReasoningEffort(...)` directly, no `session.` prefix.",
|
|
1272
1277
|
"**All four are Active-only except `conversationHistory`.** `setReasoningEffort` / `updateInstructions` / `cancelSpeak` throw `AssistantException(NotReady)` outside Active state — but tool bodies always run while Active (the model only dispatches a tool when the session is up), so the typical inside-a-tool-body usage is always safe. `conversationHistory` is safe in any state and returns an empty list pre-start or post-stop.",
|
|
1273
1278
|
"**`setReasoningEffort` and `updateInstructions` mutate session state.** The new value persists until changed again OR the session ends. On a reconnect (transparent ~50-min cadence), the LATEST value gets sent — not the original config — so customer-driven changes survive reconnects naturally. No special handling needed.",
|
|
1274
1279
|
"**`cancelSpeak` complements VAD-driven barge-in; it doesn't replace it.** The model already handles user-driven interruption when the VAD detects speech onset. This primitive is for the tool-driven / app-driven case where the developer wants to stop the model programmatically (e.g. after a tool completes and wants to deliver its result immediately, cutting off any filler the model was speaking).",
|
|
@@ -1327,8 +1332,9 @@ glasses.display.show(onBack = { scope.launch { glasses.display.clear() } }) {
|
|
|
1327
1332
|
// without one they fall back to positional auto-ids ("box-0", "box-1", ...).
|
|
1328
1333
|
// Enums: TextStyle HEADING/BODY/CAPTION; TextColor PRIMARY/SECONDARY;
|
|
1329
1334
|
// ButtonStyle PRIMARY/SECONDARY/OUTLINE; Background NONE/CARD; Alignment
|
|
1330
|
-
// START/CENTER/END/STRETCH. image(url) renders
|
|
1331
|
-
//
|
|
1335
|
+
// START/CENTER/END/STRETCH. image(url) renders a remote URL; image(photo)
|
|
1336
|
+
// hosts a locally-captured photo and renders that (DSP-29, the same shape as
|
|
1337
|
+
// video(clip)). There is no vector/canvas drawing path to the display.
|
|
1332
1338
|
|
|
1333
1339
|
// video(url) is FULL-SURFACE ONLY: it must be the sole top-level node of a
|
|
1334
1340
|
// show {} (the hardware renders video only as the entire display surface —
|
|
@@ -1361,6 +1367,7 @@ glasses.display.show { video("https://cdn.example.com/clip.mp4") }`,
|
|
|
1361
1367
|
"**To display a clip you just RECORDED, use `video(clip)` — never hand-roll hosting.** The glasses can only play an http(s) URL they fetch themselves (a local `data:`/`file:` clip from `captureVideo` is rejected on hardware), so `show { video(clip) }` (the VideoClip overload, alongside `video(url)`) makes the SDK upload the recorded clip to a hosted URL at show() time and play that — `val clip = glasses.camera.captureVideo(...).valueOrNull(); glasses.display.show { video(clip) }`. Use `video(url)` only for a clip already hosted at a remote URL. Hosting happens at display time (not record time — recording never uploads); a few seconds of upload latency for a multi-MB clip happens inside `show` — during which the SDK puts a 'Preparing video…' card on the lens (DSP-25) so the wait isn't a silent dead pause; on hosting failure it clears that card and emits a `display.video_delivery_failed` WARN. (Rationale + lifecycle: RDQ #37.)",
|
|
1362
1368
|
"**A hosted `video(clip)` copy outlives the on-screen display — release it with `forgetHostedVideo(clip)` when you delete the recording.** The first `show { video(clip) }` uploads the clip and the SDK REMEMBERS the hosted copy (keyed by the clip, persisted across app restarts), so re-showing the same clip — this session or a later one — REUSES it instead of re-uploading (no second upload latency, no orphaned copies). The copy is tied to the RECORDING's lifetime, not the display's, so clearing or replacing the display KEEPS it. When the user deletes the recording, call `glasses.display.forgetHostedVideo(clip)` (idempotent — a no-op if the clip was never shown) so the SDK tears the hosted copy down; skip it and the copy lingers server-side. Build the clip the same way for show and for forget (one `Recording -> VideoClip` helper) so both resolve to the same hosted copy. (DSP-23/24; rationale RDQ #38.)",
|
|
1363
1369
|
"**Make the FIRST play feel instant with `prepareVideo(clip)`.** The first display of a recorded clip is gated by an upload — the glasses fetch only a hosted URL, and that round-trip is irreducible on the public API (the direct phone→glasses byte-stream is internal/unexposed). Re-displays are already instant (the hosted copy is reused), and on a cold display the SDK shows a 'Preparing video…' card so the wait isn't silent. To make the first play instant TOO, call `glasses.display.prepareVideo(clip)` speculatively when a display is likely — e.g. when you put a list of recordings on screen — to move the upload OFF the critical path. Best-effort + idempotent (uploads at most once; single-flight-safe with a concurrent show), returns true when ready, and a pre-warmed clip then shows with no 'Preparing…' card. Prepare clips you expect to play — a prepared-but-never-shown clip keeps a hosted copy until `forgetHostedVideo`. (DSP-25; rationale RDQ #39.)",
|
|
1370
|
+
"**To display a photo you just CAPTURED, use `image(photo)` — the photo mirror of `video(clip)`.** `glasses.display.show { image(photo) }` (the Photo overload of `image`, alongside `image(url)`) hosts the local capture at show() time and renders it FULL-SURFACE — `val photo = glasses.camera.capturePhoto(...).valueOrNull(); glasses.display.show { image(photo) }`. Same hosting model as video: the glasses fetch only an http(s) URL (a local `data:`/`file:` photo from `capturePhoto` is rejected on hardware), the hosted copy is REMEMBERED (keyed by the photo, persisted across restarts, reused on re-display — the SAME shared media registry as clips), and you release it with `glasses.display.forgetHostedImage(photo)` when the user deletes the photo (idempotent — a no-op if it was never shown; skip it and the copy lingers server-side). UNLIKE video there is NO 'Preparing…' card and NO `prepareImage` — a photo hosts in well under a second, so the first `show { image(photo) }` is effectively instant; on hosting failure it emits a `display.image_delivery_failed` WARN and shows nothing (a dead image, like a dead video, is just blank under additive optics). Use `image(url)` for an already-hosted remote image. Build the photo the same way for show and for forget (one `Photo` handle) so both resolve to the same hosted copy. (DSP-29; rationale RDQ #40.)",
|
|
1364
1371
|
"**A dead video URL shows NOTHING — design for the failure, and use the observability built for it.** A video that can't load emits no light, and under additive optics 'no light' is indistinguishable from 'no content' — the panel just stays blank while everything else reports success. The platform surfaces the failure three ways: the simulator renders a visible 'video failed to load' placeholder in the viewport; a `display_error` event (source + media error code + url) lands in getEventLog(filter: 'errors') — check that chip FIRST when a display flow looks green but shows nothing; and a `display.video_error` WARN runtime event fires on `glasses.runtime.events` on BOTH transports (sim media error / Meta `VideoPlayer.error`), so app code can react — e.g. fall back to a text view. URLs must be PUBLICLY fetchable (the browser/glasses fetch them directly, no auth headers, MP4). For verification use the platform-hosted known-good clips — `https://extentos.com/sample-videos/mountain-bike.mp4` / `https://extentos.com/sample-videos/run-in-city.mp4` — and note that MP4s uploaded on the project simulator page get stable PUBLIC URLs too, a quick way to host a real clip without standing up a CDN.",
|
|
1365
1372
|
"**Agent verification loop:** a fresh sim session defaults to rayban_meta (NO display) — `setSimDevice(device: 'rayban_display')` FIRST, then drive the flow and read `getDisplayState` (the exact rendered tree + `interactiveIds`, headless — no pixels), then `injectInput(action: 'select', targetId: ...)` to fire onClicks the way a pinch would. injectInput needs the sim browser tab attached (ensureSimulatorBrowser); getDisplayState itself works headless.",
|
|
1366
1373
|
"**Two verification surfaces, use both:** getDisplayState (the live hub snapshot — the exact current tree + interactiveIds) and getEventLog(filter: 'display') (the durable trace: `display_show` with node counts, `display_select <id>`, `display_navigate` with the focused id, `display_back`). The event ordering proves causality — a select followed by a re-render shows as display_select → display_show, and a back-driven transition as display_back → display_show (the gesture routing to the current show's onBack).",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilityPatterns.js","sourceRoot":"","sources":["../../../src/tools/data/capabilityPatterns.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"capabilityPatterns.js","sourceRoot":"","sources":["../../../src/tools/data/capabilityPatterns.ts"],"names":[],"mappings":"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"}
|