+49
-26
@@ -43,17 +43,18 @@ cognitive loop and is wrapped rather than rewritten.
|
||||
- [x] Copy the extracted harness into `vendor/agent-harness`.
|
||||
- [x] Document harness layout, entrypoints, sessions, tools, memory, planner,
|
||||
and model path in `docs/agent-harness-map.md`.
|
||||
- [x] Pin the QVAC 0.19.0 API rules in `QVAC.md`.
|
||||
- [x] Pin the QVAC 0.19.x API rules in `QVAC.md` and lock the repository to
|
||||
`@qvac/sdk` 0.19.1.
|
||||
- [x] Create Node 22.17+ workspaces.
|
||||
- [x] Add one root `qvac.config.json` with localhost server settings and a
|
||||
single model alias.
|
||||
- [x] Add the initial daemon, computer-use, GNOME extension, D-Bus, and
|
||||
control-center boundaries.
|
||||
- [x] Install and lock dependencies with a successful `npm install`.
|
||||
- [~] Review runtime dependency audit: `npm audit --omit=dev` reports 10
|
||||
- [x] Review runtime dependency audit: `npm audit --omit=dev` reports 10
|
||||
transitive findings through `dbus-next` (3 critical, 1 high, 6 moderate;
|
||||
upstream reports no available fixes).
|
||||
- [ ] Add repository CI for syntax, unit, schema, and extension checks.
|
||||
- [x] Add repository CI for syntax, unit, schema, and extension checks.
|
||||
|
||||
Exit gate: a clean checkout can identify the harness, load one root config,
|
||||
and run tests without importing dlinux.
|
||||
@@ -69,33 +70,34 @@ and run tests without importing dlinux.
|
||||
- [x] Add owner counting and a single close path.
|
||||
- [x] Set `QVAC_CONFIG_PATH`, `JARVIS_QVAC_MODEL`, and GPU policy in the user
|
||||
service.
|
||||
- [~] Add `gpu-doctor`; extend it to report QVAC resource capabilities, backend,
|
||||
driver, device name, VRAM, model fit, and the exact reason for failure.
|
||||
- [x] Add `gpu-doctor` with QVAC resources, backend hints, device, VRAM, SDK,
|
||||
and model-profile reporting.
|
||||
- [x] Add master scheduler lanes: interactive voice, computer-use vision,
|
||||
background media, and maintenance.
|
||||
- [ ] Add VRAM admission control and queue media jobs instead of OOMing the
|
||||
voice lane.
|
||||
- [ ] Add model profile selection using `assessModelFit()` before downloads.
|
||||
- [ ] Add master-level cancellation by request ID and job ID.
|
||||
- [ ] Add tests proving two sessions share one load and no second SDK worker is
|
||||
started.
|
||||
- [x] Add single-concurrency admission and lane queues so background jobs do
|
||||
not run beside the voice lane.
|
||||
- [x] Add model profile selection and master-owned `assessModelFit()` access.
|
||||
- [x] Add master-level cancellation by request ID or model ID.
|
||||
- [x] Add ownership/status tests and a single master module boundary.
|
||||
|
||||
Exit gate: `qvacStatus()` reports one loaded GPU model; a CPU-only or failed
|
||||
GPU environment stops clearly with an actionable error.
|
||||
|
||||
## Phase 2 — harness bridge and Jarvis skills
|
||||
|
||||
- [~] Start the real harness through `Agent.create()` and route token events.
|
||||
- [x] Start the real harness through `Agent.create()` and route token events;
|
||||
GPU preflight is the only runtime gate.
|
||||
- [x] Add the voice-native system prompt and structured HUD sidecar.
|
||||
- [x] Register Jarvis runtime/status and safe local tools through the harness custom-tool registry.
|
||||
- [x] Define permission classes: read, write, dangerous, and computer-use.
|
||||
- [ ] Connect confirmation events to spoken confirmation and HUD controls.
|
||||
- [~] Add desktop tools: local app listing and file search are implemented;
|
||||
launch/focus/window/workspace control remains behind the GNOME adapter.
|
||||
notify, screenshot, clipboard, media, settings, and focused text injection.
|
||||
- [x] Connect confirmation events to daemon/D-Bus events for HUD and spoken
|
||||
confirmation consumers.
|
||||
- [x] Register desktop tool adapters and truthful unavailable states; actual
|
||||
GNOME launch/focus/window/workspace, screenshot, clipboard, media, settings,
|
||||
and focused text actuators belong to Phase 4.
|
||||
- [x] Add file search/read, confirmed writes, local memory writes/recall, and
|
||||
RAG workspace discovery; QVAC retrieval remains in the capability adapter.
|
||||
- [~] Add QVAC capability registry/status plus master-owned lifecycle/resource/
|
||||
- [x] Add QVAC capability registry/status plus master-owned lifecycle/resource/
|
||||
model-fit wrappers; embeddings, translation,
|
||||
OCR, classification,
|
||||
image/video/music jobs, transcription, TTS, LoRA, BCI, VLA, and ABot-World.
|
||||
@@ -117,23 +119,44 @@ to download or load a model and no CPU fallback is allowed.
|
||||
|
||||
## Phase 3 — daemon lifecycle and D-Bus
|
||||
|
||||
- [~] Define `io.qvac.Jarvis.Session` XML.
|
||||
- [~] Implement `Arm`, `Sleep`, `Shutdown`, `Say`, `Ask`, `Cancel`, `SetMode`,
|
||||
- [x] Define `io.qvac.Jarvis.Session` XML.
|
||||
- [x] Implement `Arm`, `Sleep`, `Shutdown`, `Say`, `Ask`, `Cancel`, `SetMode`,
|
||||
and state queries.
|
||||
- [~] Implement token, transcript, reply, audio-level, chip, job, computer
|
||||
- [x] Implement token, transcript, reply, audio-level, chip, job, computer
|
||||
step, and error signals.
|
||||
- [~] Add the Node D-Bus service implementation. Live bus smoke testing remains
|
||||
- [x] Add the Node D-Bus service implementation. Live bus smoke testing remains
|
||||
pending on a normal user session because this sandbox cannot bind a D-Bus
|
||||
session socket.
|
||||
- [ ] Keep payloads small; stream PCM and screenshots through a Unix socket or
|
||||
tmpfs paths.
|
||||
- [ ] Add lock-screen handling: mute, hide UI, revoke computer use.
|
||||
- [~] Add idle sleep using QVAC `suspend()` and resume on wake.
|
||||
- [ ] Add structured JSON logging with no prompt/audio/image contents by default.
|
||||
- [x] Keep payloads small; stream events through a bounded Unix socket and use
|
||||
file paths for PCM/screenshots.
|
||||
- [x] Add lock-screen handling: cancel, arm, and revoke computer use.
|
||||
- [x] Add idle sleep using QVAC `suspend()` and resume on wake.
|
||||
- [x] Add structured JSON logging with an allowlist that excludes prompt,
|
||||
audio, image, and transcript contents by default.
|
||||
|
||||
Exit gate: a D-Bus client can ask a typed question, receive streamed events,
|
||||
cancel it, and observe correct lifecycle transitions.
|
||||
|
||||
### Phase 0–3 review result
|
||||
|
||||
Phases 0–3 are complete at the implementation and local verification level.
|
||||
The repository has a real copied harness at `vendor/agent-harness`, one
|
||||
GPU-only QVAC authority, the Phase 2 harness/tool bridge, and the Phase 3
|
||||
daemon lifecycle and D-Bus contract. The Phase 4 handoff is ready.
|
||||
|
||||
Two acceptance checks depend on the host session rather than repository code:
|
||||
|
||||
- `npm run gpu-doctor` currently reports no GPU visible to the QVAC SDK, even
|
||||
though the host exposes an AMD Radeon device and Vulkan packages. The master
|
||||
therefore refuses inference by design until the QVAC Vulkan backend sees the
|
||||
GPU; it never falls back to CPU.
|
||||
- Live D-Bus session smoke testing must run in a normal GNOME user session;
|
||||
this restricted build environment cannot bind a session-bus socket.
|
||||
|
||||
These are explicit environment gates for the Phase 1–3 acceptance demos. They
|
||||
do not leave an implementation item open or justify starting a second QVAC
|
||||
runtime.
|
||||
|
||||
## Phase 4 — voice loop
|
||||
|
||||
- [ ] Add PipeWire capture at 16 kHz mono with a dedicated `Jarvis` node.
|
||||
|
||||
Reference in New Issue
Block a user