obsbot-mcp 0.8.0 → 0.9.0

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 CHANGED
@@ -63,7 +63,7 @@ With the installed binary, use `"command": "obsbot-mcp"` and `"args": ["--debug"
63
63
 
64
64
  35 tools on Windows and macOS, 34 on Linux (`obsbot_gimbal_move_speed` is unavailable there — see
65
65
  [limitations](#linux-gimbal-position-feedback-is-not-live)). `--debug` adds `obsbot_debug_probe` for
66
- one more. Every Tail 2 camera on the network adds the 16 `obsbot_tail2_*` tools in
66
+ one more. Every Tail 2 camera on the network adds the 32 `obsbot_tail2_*` tools in
67
67
  [OBSBOT Tail 2](#obsbot-tail-2-network-cameras) below (all platforms — they are pure TypeScript).
68
68
  All names below are current as of v0.4.0 — **every tool was renamed in this
69
69
  release and there is no backward-compatible alias**; see [CHANGELOG.md](./CHANGELOG.md) for the
@@ -289,6 +289,22 @@ resolves to that one.
289
289
  | `obsbot_tail2_info` | `camera`? | Identity + static config in one call: device_info, range (zoom **1.0–12.0**, focus 1–100, WB 2000–10000 K), networkconfig (NDI/stream settings). |
290
290
  | `obsbot_tail2_zoom` | `ratio` (`1.0`–`12.0`), `speed` (`1`–`10`, default `5`), `camera`? | Absolute zoom on the camera's own ratio scale. `speed` is required by the firmware. Returns `settled` (readback-verified) — see below. |
291
291
  | `obsbot_tail2_recenter` | `camera`? | Gimbal recenter (yaw/pitch/roll 0). Open-loop: returns on ack. Can drop AI tracking to `none`; re-enable with `obsbot_tail2_ai_track`. |
292
+ | `obsbot_tail2_gimbal_position` | `camera`? | Live gimbal pose in degrees (yaw/pitch/roll) + zoom ratio, via save-scratch-preset → read → delete (~2 s). Needs one empty preset slot (probe slots are self-cleaning). |
293
+ | `obsbot_tail2_gimbal_speed` | `yaw`? `pitch`? `roll`? (±150 speed), `durationMs`? (100–5000, default 500), `camera`? | Jog the gimbal (the joystick primitive) with automatic stop. Measured: command 20 ≈ 7.9°/s; positive yaw command DECREASES recorded yaw. Disable AI tracking first. |
294
+ | `obsbot_tail2_gimbal_move` | `yaw`? `pitch`? (±178°), `camera`? | Absolute move via closed loop (jog → pose read → correct, ≤5 rounds, ±1.5° tolerance). Slow by design (~1 s per small move, more for large). Refuses while AI tracking is active. Hardware-verified 2026-09-30: 4° move converged in one iteration. |
295
+ | `obsbot_tail2_gimbal_invert` | `enable`?, `camera`? | Read (bare call) or set (verified) control-direction inversion. |
296
+ | `obsbot_tail2_record` | `enable`?, `camera`? | Read/control the recording switch. Needs storage — check `obsbot_tail2_status`'s sdcard field. |
297
+ | `obsbot_tail2_capture_photo` | `camera`? | Trigger a still photo (to storage). |
298
+ | `obsbot_tail2_focus` | `mode`? (`afc`/`afs`/`mf`), `position`? (0–100), `camera`? | Read or set focus. Position only in `mf` (mode-gated; the tool refuses otherwise). |
299
+ | `obsbot_tail2_exposure` | `mode`?, `face`?, `evbias`?, `iso`?, `shutter`?, `camera`? | Read (mode-appropriate) or set exposure: auto (face-priority AE + EV bias) or manual (ISO 100–6400, shutter `1/N`). Note: the firmware rejects JSON-integer evbias — the client always sends `0.0`-style floats. |
300
+ | `obsbot_tail2_image_adjust` | `control`?, `value`? (0–100), `styleMode`?, `camera`? | Read or set image style (brightness/contrast/hue/saturation/sharpness). Control writes are gated to `styleMode: manual` — the tool applies a given styleMode first and refuses otherwise. |
301
+ | `obsbot_tail2_hdr` | `enabled`?, `camera`? | Read/set HDR. |
302
+ | `obsbot_tail2_wb` | `mode`?, `temperature`? (2000–10000 K), `camera`? | Read/set white balance (6 modes + Kelvin in manual). |
303
+ | `obsbot_tail2_stream` | `output`? (`ndi`/`rtsp`/`srt`/`off`), `camera`? | Read/set the ONE active network output. The programmatic way to arm SRT for `obsbot_tail2_snapshot` — no Center needed. |
304
+ | `obsbot_tail2_only_me` | `enabled`?, `camera`? | Read/set OnlyMe human-tracking (track one person, not everyone). |
305
+ | `obsbot_tail2_audio` | `volume`?, `mute`?, `camera`? | Read/set audio input. |
306
+ | `obsbot_tail2_track_target` | `x`, `y` (0.01–0.99), `camera`? | **Tap-to-track**: engage AI tracking on the subject at a normalized frame coordinate (snapshot pixel ÷ frame size). Undocumented endpoint, hardware-measured. |
307
+ | `obsbot_tail2_focus_point` | `x`?, `y`? (0.01–0.99), `camera`? | **Tap-to-focus**: move the focus window to a normalized frame coordinate and start a point focus (afc/afs only). Bare call reads the window. |
292
308
  | `obsbot_tail2_portrait` | `enable`, `camera`? | Motorized 90° barrel rotation for portrait framing — no Tiny 2 equivalent. Verified on orientation feedback; retry if `settled:false` (writes can be silently dropped *while the motor is in motion* — measured). |
293
309
  | `obsbot_tail2_roll_bias` | `angle` (±90), `camera`? | Roll trim in degrees (horizon correction / deliberate tilt). |
294
310
  | `obsbot_tail2_ai_track` | `enabled`, `mode` (default `"humanTrackingSingleMode"`), `camera`? | Enable/disable AI tracking. Modes are the camera's own enum: human (single/group), animal (normal/close-up), object tracking (`objectTracking`/`objectTrackingNormal`/`objectTrackingCloseUp`). While active, tracking owns the gimbal. |
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.8.0",
3
- "builtAt": 1790747851685,
4
- "digest": "158db82ff832ce8bc6f0761d4d3bc0c5a3871cc5a19729f3c240f171d16ac766"
2
+ "version": "0.9.0",
3
+ "builtAt": 1790798771447,
4
+ "digest": "8b65309d6969d6a37bb4b9c236d7f1e7b32d7970c5872881e31b48e83c238d51"
5
5
  }
@@ -70,6 +70,13 @@ export interface Preset {
70
70
  ratio: number;
71
71
  name: string;
72
72
  }
73
+ /** A live gimbal pose in degrees, plus the zoom ratio the pose read carries. */
74
+ export interface Pose {
75
+ yaw: number;
76
+ pitch: number;
77
+ roll: number;
78
+ ratio: number;
79
+ }
73
80
  export declare class Tail2HttpError extends Error {
74
81
  readonly status: number;
75
82
  readonly path: string;
@@ -98,6 +105,12 @@ export declare class Tail2Api {
98
105
  timeoutMs?: number;
99
106
  });
100
107
  private req;
108
+ /**
109
+ * PUT/POST with ack checking. `body` may be an object (JSON.stringify'd)
110
+ * or a pre-built JSON string — evbias needs a float literal like `0.0`
111
+ * that stringifying a number cannot produce (measured 2026-09-30: JSON
112
+ * integers 0 and -1 get 400 "Invalid value type"; 0.0 and -1.0 apply).
113
+ */
101
114
  private send;
102
115
  /**
103
116
  * Read `read()` until `match()` holds, on a bounded ladder. Returns
@@ -129,6 +142,19 @@ export declare class Tail2Api {
129
142
  }>;
130
143
  /** Gimbal recenter (`POST ptz/reset`). Open-loop: the Tail 2 reports no live pose. */
131
144
  recenter(): Promise<void>;
145
+ gimbalSpeed(yaw: number, pitch: number, roll: number): Promise<void>;
146
+ gimbalStop(): Promise<void>;
147
+ gimbalInvertGet(): Promise<{
148
+ enable: boolean;
149
+ }>;
150
+ /** Reverse (invert) control directions. Readback-verified like every write. */
151
+ gimbalInvertSet(enable: boolean, verify?: VerifyOpts): Promise<{
152
+ settled: boolean;
153
+ enable: boolean;
154
+ }>;
155
+ /** Marker name for pose-probe scratch slots, so crashed probes are reusable. */
156
+ static readonly POSE_PROBE_NAME = "pose-probe";
157
+ readPose(verify?: VerifyOpts): Promise<Pose>;
132
158
  /**
133
159
  * Motorized 90° barrel rotation. Verified against the WS push rather than a
134
160
  * REST readback (none exists) — and the readback MUST be tolerant of the
@@ -170,6 +196,143 @@ export declare class Tail2Api {
170
196
  settled: boolean;
171
197
  speed: string;
172
198
  }>;
199
+ recordGet(): Promise<{
200
+ recording: "on" | "off";
201
+ }>;
202
+ recordSet(on: boolean, verify?: VerifyOpts): Promise<{
203
+ settled: boolean;
204
+ recording: "on" | "off";
205
+ }>;
206
+ /** Still-photo trigger. Needs storage; the ack says the camera accepted it. */
207
+ captureTrigger(): Promise<void>;
208
+ focusModeGet(): Promise<{
209
+ mode: "afc" | "afs" | "mf";
210
+ }>;
211
+ focusModeSet(mode: "afc" | "afs" | "mf", verify?: VerifyOpts): Promise<{
212
+ settled: boolean;
213
+ mode: "afc" | "afs" | "mf";
214
+ }>;
215
+ focusPositionGet(): Promise<{
216
+ position: number;
217
+ }>;
218
+ focusPositionSet(position: number, verify?: VerifyOpts): Promise<{
219
+ settled: boolean;
220
+ position: number;
221
+ }>;
222
+ focusWindowGet(): Promise<{
223
+ x: number;
224
+ y: number;
225
+ }>;
226
+ /** Move the focus window AND start a point focus (per the vendor doc). AFC/AFS only. */
227
+ focusWindowSet(x: number, y: number, verify?: VerifyOpts): Promise<{
228
+ settled: boolean;
229
+ x: number;
230
+ y: number;
231
+ }>;
232
+ /**
233
+ * Tap-to-track (MEASURED 2026-09-30, undocumented in the Tail 2's own doc):
234
+ * POST a normalized coordinate and the camera engages tracking on the
235
+ * subject there — from mode none it armed humanTrackingSingleMode on its
236
+ * own. Fire-and-ack; which mode engages depends on what (if anything) is
237
+ * at the coordinate, so the caller reads ai mode back when it matters.
238
+ */
239
+ targetSelect(x: number, y: number): Promise<void>;
240
+ exposureModeGet(): Promise<{
241
+ mode: "manual" | "auto";
242
+ }>;
243
+ exposureModeSet(mode: "manual" | "auto", verify?: VerifyOpts): Promise<{
244
+ settled: boolean;
245
+ mode: "manual" | "auto";
246
+ }>;
247
+ exposureAutoModeGet(): Promise<{
248
+ mode: "global" | "face";
249
+ }>;
250
+ exposureAutoModeSet(mode: "global" | "face", verify?: VerifyOpts): Promise<{
251
+ settled: boolean;
252
+ mode: "global" | "face";
253
+ }>;
254
+ exposureEvbiasGet(): Promise<{
255
+ evbias: number;
256
+ }>;
257
+ exposureEvbiasSet(evbias: number, verify?: VerifyOpts): Promise<{
258
+ settled: boolean;
259
+ evbias: number;
260
+ }>;
261
+ exposureIsoGet(): Promise<{
262
+ iso: number;
263
+ }>;
264
+ exposureIsoSet(iso: number, verify?: VerifyOpts): Promise<{
265
+ settled: boolean;
266
+ iso: number;
267
+ }>;
268
+ exposureShutterGet(): Promise<{
269
+ shutter: string;
270
+ }>;
271
+ exposureShutterSet(shutter: string, verify?: VerifyOpts): Promise<{
272
+ settled: boolean;
273
+ shutter: string;
274
+ }>;
275
+ styleGet(): Promise<{
276
+ mode: string;
277
+ brightness: number;
278
+ contrast: number;
279
+ hue: number;
280
+ saturation: number;
281
+ sharpness: number;
282
+ }>;
283
+ styleSet(control: "brightness" | "contrast" | "hue" | "saturation" | "sharpness", value: number, verify?: VerifyOpts): Promise<{
284
+ settled: boolean;
285
+ value: number;
286
+ mode: string;
287
+ }>;
288
+ styleModeSet(mode: "standard" | "outdoor" | "pastel" | "manual", verify?: VerifyOpts): Promise<{
289
+ settled: boolean;
290
+ mode: string;
291
+ }>;
292
+ hdrGet(): Promise<{
293
+ control: "on" | "off";
294
+ }>;
295
+ hdrSet(on: boolean, verify?: VerifyOpts): Promise<{
296
+ settled: boolean;
297
+ control: "on" | "off";
298
+ }>;
299
+ wbConfigGet(): Promise<{
300
+ mode: string;
301
+ temperature: number;
302
+ }>;
303
+ wbConfigSet(mode: "auto" | "daylight" | "fluorescent" | "tungsten" | "cloudy" | "manual", temperature: number | undefined, verify?: VerifyOpts): Promise<{
304
+ settled: boolean;
305
+ mode: string;
306
+ temperature: number;
307
+ }>;
308
+ streamControlGet(): Promise<{
309
+ control: "ndi" | "rtsp" | "srt" | "off";
310
+ }>;
311
+ streamControlSet(control: "ndi" | "rtsp" | "srt" | "off", verify?: VerifyOpts): Promise<{
312
+ settled: boolean;
313
+ control: "ndi" | "rtsp" | "srt" | "off";
314
+ }>;
315
+ onlyMeGet(): Promise<{
316
+ enable: boolean;
317
+ }>;
318
+ onlyMeSet(enable: boolean, verify?: VerifyOpts): Promise<{
319
+ settled: boolean;
320
+ enable: boolean;
321
+ }>;
322
+ audioVolumeGet(): Promise<{
323
+ volume: number;
324
+ }>;
325
+ audioVolumeSet(volume: number, verify?: VerifyOpts): Promise<{
326
+ settled: boolean;
327
+ volume: number;
328
+ }>;
329
+ audioMuteGet(): Promise<{
330
+ enable: boolean;
331
+ }>;
332
+ audioMuteSet(enable: boolean, verify?: VerifyOpts): Promise<{
333
+ settled: boolean;
334
+ enable: boolean;
335
+ }>;
173
336
  /**
174
337
  * A saved pose: angles in DEGREES plus zoom ratio — the same units the
175
338
  * tools speak. `name` is base64 on the wire; encode/decode lives here so
package/dist/tail2/api.js CHANGED
@@ -32,7 +32,9 @@ export class Tail2Api {
32
32
  res = await fetch(this.baseUrl + path, {
33
33
  method,
34
34
  headers: body !== undefined ? { "Content-Type": "application/json" } : undefined,
35
- body: body !== undefined ? JSON.stringify(body) : undefined,
35
+ // A string body is used as-is: one endpoint (evbias) needs an exact
36
+ // JSON float literal that JSON.stringify cannot produce from a number.
37
+ body: body === undefined ? undefined : typeof body === "string" ? body : JSON.stringify(body),
36
38
  signal: AbortSignal.timeout(this.timeoutMs),
37
39
  });
38
40
  }
@@ -56,6 +58,12 @@ export class Tail2Api {
56
58
  `device, not a Tail 2. Re-run obsbot_tail2_scan to find the camera.`);
57
59
  }
58
60
  }
61
+ /**
62
+ * PUT/POST with ack checking. `body` may be an object (JSON.stringify'd)
63
+ * or a pre-built JSON string — evbias needs a float literal like `0.0`
64
+ * that stringifying a number cannot produce (measured 2026-09-30: JSON
65
+ * integers 0 and -1 get 400 "Invalid value type"; 0.0 and -1.0 apply).
66
+ */
59
67
  async send(method, path, body) {
60
68
  const ack = await this.req(method, path, body);
61
69
  // Every confirmed endpoint replies {"code":200,"err_idx":0}; a non-200
@@ -154,6 +162,82 @@ export class Tail2Api {
154
162
  async recenter() {
155
163
  await this.send("POST", "/camera/sdk/ptz/reset", {});
156
164
  }
165
+ // ---- gimbal speed control (the joystick primitive) -------------------------
166
+ //
167
+ // POST /camera/sdk/ptz/gimbalcontrol {stop, pitch, roll, yaw} — from the
168
+ // vendor REST doc (SDKs/obsbot_tail_2_res_tful.zip), hardware-verified
169
+ // 2026-09-30: each axis −178..178, sign = direction, magnitude = SPEED.
170
+ // stop:true halts. This is a continuous speed command with no endpoint of
171
+ // its own — the camera keeps moving until stopped.
172
+ gimbalSpeed(yaw, pitch, roll) {
173
+ return this.send("POST", "/camera/sdk/ptz/gimbalcontrol", {
174
+ stop: false,
175
+ pitch,
176
+ roll,
177
+ yaw,
178
+ });
179
+ }
180
+ gimbalStop() {
181
+ return this.send("POST", "/camera/sdk/ptz/gimbalcontrol", {
182
+ stop: true,
183
+ pitch: 0,
184
+ roll: 0,
185
+ yaw: 0,
186
+ });
187
+ }
188
+ gimbalInvertGet() {
189
+ return this.req("GET", "/camera/sdk/ptz/gimbalinvert");
190
+ }
191
+ /** Reverse (invert) control directions. Readback-verified like every write. */
192
+ async gimbalInvertSet(enable, verify = {}) {
193
+ await this.send("PUT", "/camera/sdk/ptz/gimbalinvert", { enable });
194
+ const v = await this.verified(() => this.gimbalInvertGet(), (r) => r.enable === enable, verify);
195
+ return { settled: v.settled, enable: v.value.enable };
196
+ }
197
+ // ---- pose readback via the preset API ----------------------------------------
198
+ //
199
+ // The API reports no live pose directly, but `preset set` captures the LIVE
200
+ // pose into a slot and `GET preset` returns it in degrees. Save-to-scratch
201
+ // → read → delete is therefore a pose sensor (measured 2026-09-30: it
202
+ // caught a 7.9° yaw move exactly). The scratch slot must be EMPTY — save
203
+ // overwrites and there is no pose-by-value write to restore a clobbered
204
+ // preset, so a full preset bank is a hard error, not a guess.
205
+ /** Marker name for pose-probe scratch slots, so crashed probes are reusable. */
206
+ static POSE_PROBE_NAME = "pose-probe";
207
+ async readPose(verify = {}) {
208
+ let scratch;
209
+ const list = await this.presetsGet();
210
+ // A leftover probe slot from a crashed run is ours by name — delete it
211
+ // first and wait for it to be GONE, so the freshness check below (slot
212
+ // APPEARS after our save) cannot match its stale contents.
213
+ const leftover = list.find((p) => p.name === Tail2Api.POSE_PROBE_NAME);
214
+ if (leftover) {
215
+ await this.presetOp("delete", leftover.id);
216
+ await this.verified(() => this.presetsGet(), (l) => !l.some((x) => x.id === leftover.id), { attempts: 6, delayMs: 350, ...verify });
217
+ }
218
+ const fresh = await this.presetsGet();
219
+ const used = new Set(fresh.map((p) => p.id));
220
+ scratch = [0, 1, 2].find((id) => !used.has(id));
221
+ if (scratch === undefined) {
222
+ throw new Error("all three preset slots are occupied — the pose read needs an empty scratch slot. " +
223
+ "Delete one preset (obsbot_tail2_preset_delete) and retry.");
224
+ }
225
+ try {
226
+ await this.presetOp("set", scratch, Tail2Api.POSE_PROBE_NAME);
227
+ const v = await this.verified(() => this.presetsGet(), (l) => {
228
+ const p = l.find((x) => x.id === scratch);
229
+ return p !== undefined && p.name === Tail2Api.POSE_PROBE_NAME;
230
+ }, { attempts: 8, delayMs: 350, ...verify });
231
+ const p = v.value.find((x) => x.id === scratch);
232
+ if (!p)
233
+ throw new Error("pose probe: the scratch slot vanished before it could be read");
234
+ return { yaw: p.yaw, pitch: p.pitch, roll: p.roll, ratio: p.ratio };
235
+ }
236
+ finally {
237
+ // Best-effort cleanup; must not mask the pose result.
238
+ await this.presetOp("delete", scratch).catch(() => { });
239
+ }
240
+ }
157
241
  // ---- rotation (no Tiny 2 equivalent) --------------------------------------
158
242
  /**
159
243
  * Motorized 90° barrel rotation. Verified against the WS push rather than a
@@ -201,6 +285,202 @@ export class Tail2Api {
201
285
  const v = await this.verified(() => this.trackSpeedGet(), (r) => r.speed === speed, verify);
202
286
  return { settled: v.settled, speed: v.value.speed };
203
287
  }
288
+ // ---- record / capture --------------------------------------------------------
289
+ //
290
+ // From the vendor REST doc, hardware-verified 2026-09-30: record is a
291
+ // {"recording":"on"|"off"} switch (GET read back "off" with no SD card —
292
+ // state is readable regardless; starting without media will fail), and
293
+ // capture is a body-less POST trigger.
294
+ recordGet() {
295
+ return this.req("GET", "/camera/sdk/record/control");
296
+ }
297
+ async recordSet(on, verify = {}) {
298
+ const want = on ? "on" : "off";
299
+ await this.send("PUT", "/camera/sdk/record/control", { recording: want });
300
+ const v = await this.verified(() => this.recordGet(), (r) => r.recording === want, verify);
301
+ return { settled: v.settled, recording: v.value.recording };
302
+ }
303
+ /** Still-photo trigger. Needs storage; the ack says the camera accepted it. */
304
+ captureTrigger() {
305
+ return this.send("POST", "/camera/sdk/capture/trigger", {});
306
+ }
307
+ // ---- focus ---------------------------------------------------------------------
308
+ //
309
+ // af/mode is {"mode":"afc"|"afs"|"mf"}; af/motorposition is 0-100 and is
310
+ // MODE-GATED: HTTP 500 while the mode is not mf (measured — the value does
311
+ // not exist outside manual focus).
312
+ focusModeGet() {
313
+ return this.req("GET", "/camera/sdk/image/af/mode");
314
+ }
315
+ async focusModeSet(mode, verify = {}) {
316
+ await this.send("PUT", "/camera/sdk/image/af/mode", { mode });
317
+ const v = await this.verified(() => this.focusModeGet(), (r) => r.mode === mode, verify);
318
+ return { settled: v.settled, mode: v.value.mode };
319
+ }
320
+ focusPositionGet() {
321
+ return this.req("GET", "/camera/sdk/image/af/motorposition");
322
+ }
323
+ async focusPositionSet(position, verify = {}) {
324
+ await this.send("PUT", "/camera/sdk/image/af/motorposition", { position });
325
+ const v = await this.verified(() => this.focusPositionGet(), (r) => Math.abs(r.position - position) <= 1, verify);
326
+ return { settled: v.settled, position: v.value.position };
327
+ }
328
+ // ---- tap-to-focus / tap-to-track ------------------------------------------------
329
+ //
330
+ // Both take NORMALIZED frame coordinates (0.01-0.99, top-left 0.01/0.01),
331
+ // so a pixel from obsbot_tail2_snapshot divides by frameWidth/frameHeight
332
+ // and lands directly — the geometry-free aiming loop.
333
+ focusWindowGet() {
334
+ return this.req("GET", "/camera/sdk/image/af/windowcenter");
335
+ }
336
+ /** Move the focus window AND start a point focus (per the vendor doc). AFC/AFS only. */
337
+ async focusWindowSet(x, y, verify = {}) {
338
+ await this.send("PUT", "/camera/sdk/image/af/windowcenter", { x, y });
339
+ const v = await this.verified(() => this.focusWindowGet(), (r) => Math.abs(r.x - x) <= 0.01 && Math.abs(r.y - y) <= 0.01, verify);
340
+ return { settled: v.settled, x: v.value.x, y: v.value.y };
341
+ }
342
+ /**
343
+ * Tap-to-track (MEASURED 2026-09-30, undocumented in the Tail 2's own doc):
344
+ * POST a normalized coordinate and the camera engages tracking on the
345
+ * subject there — from mode none it armed humanTrackingSingleMode on its
346
+ * own. Fire-and-ack; which mode engages depends on what (if anything) is
347
+ * at the coordinate, so the caller reads ai mode back when it matters.
348
+ */
349
+ async targetSelect(x, y) {
350
+ await this.send("POST", "/camera/sdk/ai/workmode/normaltrack/targetselect", { x, y });
351
+ }
352
+ // ---- exposure --------------------------------------------------------------------
353
+ //
354
+ // mode manual|auto. In AUTO: auto/mode global|face (face-priority AE) and
355
+ // evbias (-3.0..3.0 in 0.3-ish steps). In MANUAL: iso and shutter ("1/N"
356
+ // string). The manual values are MODE-GATED: HTTP 500 while exposure is
357
+ // auto (measured). Manual ISO read back 894 on first switch — a live-AE
358
+ // inherited value, NOT the doc's "increment of 100"; the range is real but
359
+ // the granularity claim is not.
360
+ exposureModeGet() {
361
+ return this.req("GET", "/camera/sdk/image/exposure/mode");
362
+ }
363
+ async exposureModeSet(mode, verify = {}) {
364
+ await this.send("PUT", "/camera/sdk/image/exposure/mode", { mode });
365
+ const v = await this.verified(() => this.exposureModeGet(), (r) => r.mode === mode, verify);
366
+ return { settled: v.settled, mode: v.value.mode };
367
+ }
368
+ exposureAutoModeGet() {
369
+ return this.req("GET", "/camera/sdk/image/exposure/auto/mode");
370
+ }
371
+ async exposureAutoModeSet(mode, verify = {}) {
372
+ await this.send("PUT", "/camera/sdk/image/exposure/auto/mode", { mode });
373
+ const v = await this.verified(() => this.exposureAutoModeGet(), (r) => r.mode === mode, verify);
374
+ return { settled: v.settled, mode: v.value.mode };
375
+ }
376
+ exposureEvbiasGet() {
377
+ return this.req("GET", "/camera/sdk/image/exposure/auto/compensation");
378
+ }
379
+ async exposureEvbiasSet(evbias, verify = {}) {
380
+ // The firmware rejects JSON integers here (400 "Invalid value type" —
381
+ // measured: 0 and -1 rejected, 0.0 and -1.0 applied), and some integer
382
+ // bodies ACK without ever applying. Always send a decimal-point float.
383
+ await this.send("PUT", "/camera/sdk/image/exposure/auto/compensation", `{"evbias":${evbias.toFixed(1)}}`);
384
+ const v = await this.verified(() => this.exposureEvbiasGet(), (r) => Math.abs(r.evbias - evbias) < 0.05, verify);
385
+ return { settled: v.settled, evbias: v.value.evbias };
386
+ }
387
+ exposureIsoGet() {
388
+ return this.req("GET", "/camera/sdk/image/exposure/manual/iso");
389
+ }
390
+ async exposureIsoSet(iso, verify = {}) {
391
+ await this.send("PUT", "/camera/sdk/image/exposure/manual/iso", { iso });
392
+ const v = await this.verified(() => this.exposureIsoGet(), (r) => Math.abs(r.iso - iso) < 1, verify);
393
+ return { settled: v.settled, iso: v.value.iso };
394
+ }
395
+ exposureShutterGet() {
396
+ return this.req("GET", "/camera/sdk/image/exposure/manual/shuttertime");
397
+ }
398
+ async exposureShutterSet(shutter, verify = {}) {
399
+ await this.send("PUT", "/camera/sdk/image/exposure/manual/shuttertime", { shutter });
400
+ const v = await this.verified(() => this.exposureShutterGet(), (r) => r.shutter === shutter, verify);
401
+ return { settled: v.settled, shutter: v.value.shutter };
402
+ }
403
+ // ---- image style / hdr / white balance ---------------------------------------------
404
+ //
405
+ // style/<control> GETs return {mode, <control>} (the mode rides along);
406
+ // style/mode GET returns the whole bundle. Values are absolute 0-100.
407
+ styleGet() {
408
+ return this.req("GET", "/camera/sdk/image/style/mode");
409
+ }
410
+ async styleSet(control, value, verify = {}) {
411
+ await this.send("PUT", `/camera/sdk/image/style/${control}`, { [control]: value });
412
+ const v = await this.verified(() => this.req("GET", `/camera/sdk/image/style/${control}`), (r) => r[control] === value, verify);
413
+ return { settled: v.settled, value: v.value[control], mode: v.value.mode };
414
+ }
415
+ async styleModeSet(mode, verify = {}) {
416
+ // The PUT takes the mode with the full value bundle — send the current
417
+ // values alongside so a mode switch never stomps the adjustments.
418
+ const current = await this.styleGet();
419
+ await this.send("PUT", "/camera/sdk/image/style/mode", { ...current, mode });
420
+ const v = await this.verified(() => this.styleGet(), (r) => r.mode === mode, verify);
421
+ return { settled: v.settled, mode: v.value.mode };
422
+ }
423
+ hdrGet() {
424
+ return this.req("GET", "/camera/sdk/image/hdr/control");
425
+ }
426
+ async hdrSet(on, verify = {}) {
427
+ const want = on ? "on" : "off";
428
+ await this.send("PUT", "/camera/sdk/image/hdr/control", { control: want });
429
+ const v = await this.verified(() => this.hdrGet(), (r) => r.control === want, verify);
430
+ return { settled: v.settled, control: v.value.control };
431
+ }
432
+ wbConfigGet() {
433
+ return this.req("GET", "/camera/sdk/image/whitebalance/config");
434
+ }
435
+ async wbConfigSet(mode, temperature, verify = {}) {
436
+ // Temperature only matters in manual mode (doc), but sending the current
437
+ // one alongside is harmless and keeps the readback honest.
438
+ const current = await this.wbConfigGet();
439
+ await this.send("PUT", "/camera/sdk/image/whitebalance/config", {
440
+ mode,
441
+ temperature: temperature ?? current.temperature,
442
+ });
443
+ const v = await this.verified(() => this.wbConfigGet(), (r) => r.mode === mode && (temperature === undefined || Math.abs(r.temperature - temperature) <= 1), verify);
444
+ return { settled: v.settled, mode: v.value.mode, temperature: v.value.temperature };
445
+ }
446
+ // ---- streaming output select ---------------------------------------------------
447
+ //
448
+ // {"control":"ndi"|"rtsp"|"srt"|"off"} — exactly ONE active output. Setting
449
+ // srt displaces ndi (the exclusivity TAIL2-PROTOCOL §7a/§8 already
450
+ // measured); this is the programmatic way to arm SRT for snapshots.
451
+ streamControlGet() {
452
+ return this.req("GET", "/camera/sdk/ndi-rtsp-srt/control");
453
+ }
454
+ async streamControlSet(control, verify = {}) {
455
+ await this.send("PUT", "/camera/sdk/ndi-rtsp-srt/control", { control });
456
+ const v = await this.verified(() => this.streamControlGet(), (r) => r.control === control, verify);
457
+ return { settled: v.settled, control: v.value.control };
458
+ }
459
+ // ---- tracking extra / audio ------------------------------------------------------
460
+ onlyMeGet() {
461
+ return this.req("GET", "/camera/sdk/ai/human/onlyme");
462
+ }
463
+ async onlyMeSet(enable, verify = {}) {
464
+ await this.send("PUT", "/camera/sdk/ai/human/onlyme", { enable });
465
+ const v = await this.verified(() => this.onlyMeGet(), (r) => r.enable === enable, verify);
466
+ return { settled: v.settled, enable: v.value.enable };
467
+ }
468
+ audioVolumeGet() {
469
+ return this.req("GET", "/camera/sdk/audio/input/volume");
470
+ }
471
+ async audioVolumeSet(volume, verify = {}) {
472
+ await this.send("PUT", "/camera/sdk/audio/input/volume", { volume });
473
+ const v = await this.verified(() => this.audioVolumeGet(), (r) => Math.abs(r.volume - volume) <= 1, verify);
474
+ return { settled: v.settled, volume: v.value.volume };
475
+ }
476
+ audioMuteGet() {
477
+ return this.req("GET", "/camera/sdk/audio/input/mute");
478
+ }
479
+ async audioMuteSet(enable, verify = {}) {
480
+ await this.send("PUT", "/camera/sdk/audio/input/mute", { enable });
481
+ const v = await this.verified(() => this.audioMuteGet(), (r) => r.enable === enable, verify);
482
+ return { settled: v.settled, enable: v.value.enable };
483
+ }
204
484
  // ---- presets ----------------------------------------------------------------
205
485
  /**
206
486
  * A saved pose: angles in DEGREES plus zoom ratio — the same units the
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/tail2/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/tail2/api.ts"],"names":[],"mappings":"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"}