wifi-densepose/tools
ruv 579e0ce72e feat(adr-124/phase4): presence.now + vitals.get_* tool family (ADR-124 §4.1)
Advances SPARC Phase 4 (Refinement) iter 5: implements ruview.presence.now
and all three ruview.vitals.* tools sharing a single fetchVitals() helper.

src/types.ts:
  - Added EdgeVitalsMessage interface (mirrors Python ws.py:74-88 per ADR-124 §6):
    node_id, timestamp_ms, presence, n_persons, confidence, breathing_rate_bpm,
    heartrate_bpm, motion, zone_id

src/tools/vitals-fetch.ts (new):
  - fetchVitals(nodeId, baseUrl, token): GET /api/v1/vitals/<node_id>/latest
  - Returns VitalsFetchOk | VitalsFetchErr — all four tools project from one fetch
  - resolveNodeId(): "default" fallback for optional node_id

src/tools/presence-now.ts (new):
  - presenceNow(): projects {present, n_persons, confidence, timestamp_ms}

src/tools/vitals-get-breathing.ts (new):
  - vitalsGetBreathing(): projects {breathing_rate_bpm|null, confidence, timestamp_ms}

src/tools/vitals-get-heart-rate.ts (new):
  - vitalsGetHeartRate(): projects {heartrate_bpm|null, confidence, timestamp_ms}

src/tools/vitals-get-all.ts (new):
  - vitalsGetAll(): spreads full EdgeVitalsMessage (raw never present server-side)

src/index.ts:
  - 4 new TOOLS entries; all route through Phase 3 schema-validation gate

tests/vitals-tools.test.ts (new, 18 assertions):
  - resolveNodeId ×2; fetchVitals soft-fail ×1
  - presence.now: soft-fail, field projection, schema accept/reject ×4
  - vitals.get_breathing: soft-fail, bpm projection, null bpm, window_s ×4
  - vitals.get_heart_rate: soft-fail, bpm projection, schema ×3
  - vitals.get_all: soft-fail, full spread + no raw field, schema ×3

Test results: 93/93 PASS (+18). Build: tsc clean.

ACs touched: ADR-124 §4.1 ruview.presence.now, ruview.vitals.get_breathing,
  ruview.vitals.get_heart_rate, ruview.vitals.get_all. Phase 4 gate: all
  acceptance criteria have passing tests; coverage expanding toward threshold.

Next iter target: Phase 5 (Completion) — CHANGELOG entry, package metadata
  review, witness-bundle extension for npm tarball sha256, then open the PR.
  (Remaining §4.1 tools — pose, primitives, node, vector — can land as post-
  merge follow-up iters given Phase 5 gate criteria are otherwise met.)

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-24 22:25:37 -04:00
..
ruview-cli feat(tools/ruview-mcp): M2 — wire real inference via cog health (#706) 2026-05-21 23:43:32 -04:00
ruview-mcp feat(adr-124/phase4): presence.now + vitals.get_* tool family (ADR-124 §4.1) 2026-05-24 22:25:37 -04:00