From 853db94887650dfb13e6608c4bb966fdacb52c67 Mon Sep 17 00:00:00 2001 From: barlind Date: Sun, 31 May 2026 09:27:28 +0200 Subject: [PATCH] Implement --- CHANGELOG.md | 1 + docs/capability-domains.md | 23 +- docs/capability-recipes.md | 65 + docs/capability-roadmap.md | 13 +- docs/capability-safety-matrix.md | 3 +- plugins/capability_inspector/screen.js | 56 +- specs/009-jobs/tasks.md | 144 +-- static/capabilities.js | 18 +- static/capabilities/jobs.js | 1127 ++++++++++++++++++ static/index.html | 1 + tests/js/capabilities_diagnostics.test.js | 10 +- tests/js/capability_inspector_render.test.js | 38 + tests/js/jobs_compat.test.js | 58 + tests/js/jobs_diagnostics.test.js | 73 ++ tests/js/jobs_domain.test.js | 78 ++ tests/js/jobs_scheduling.test.js | 71 ++ tests/js/jobs_test_harness.js | 159 +++ tests/test_plugin_runtime_idempotence.py | 8 +- 18 files changed, 1853 insertions(+), 93 deletions(-) create mode 100644 static/capabilities/jobs.js create mode 100644 tests/js/jobs_compat.test.js create mode 100644 tests/js/jobs_diagnostics.test.js create mode 100644 tests/js/jobs_domain.test.js create mode 100644 tests/js/jobs_scheduling.test.js create mode 100644 tests/js/jobs_test_harness.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d2eb62..f5d611d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -56,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Audio-input control plane** — makes `audio-input` the redaction-safe source of truth for instrument input discovery and lifecycle. Core now exposes `list-sources`, `select-source`, `open-source`, and `close-source` through the capability runtime, persists selected logical sources, keeps inspect/list/select prompt-free, routes provider `source.open`/`source.close` operations with bounded outcomes, shares compatible open sessions across requesters, suppresses compatibility-backed duplicate sources when a native provider owns the same logical key, and expands audio-session diagnostics/Capability Inspector rendering for selected input, open sessions, bridge hits, storage status, and permission/device failures without exposing raw device labels or live audio handles. - **Audio-monitoring control plane** — makes `audio-monitoring` the shared live-monitoring coordinator. Core now exposes provider registration/list/selection, explicit user-action `start`, requester-counted `stop`, prompt-free `inspect`/`monitoring.status`, and `set-direct-monitor` through the capability runtime. Monitoring starts integrate with selected `audio-input` readiness, background requesters can only attach to active compatible sessions, active sessions survive song/playback stops without auto-resuming after reload, native providers suppress compatibility-backed legacy monitor paths, and diagnostics/Capability Inspector now show providers, sessions, requesters, direct-monitor state, bridge hits, and distinct safe outcomes (`provider-selection-required`, `user-action-required`, `incompatible`, `unavailable`, `stopped`, etc.) without exposing raw audio/device data. - **Playback control plane** — promotes `playback` to an active core capability domain for song transport, timing, loop, route, requester/observer, bridge, and diagnostics state. Core now exposes `inspect`, user-authorized `start`, `pause`, `resume`, `stop`, `seek`, `set-loop`, and `clear-loop` through the capability runtime while `static/app.js` keeps raw `