Files
vdm/contracts/schema/methods/capture.offer.schema.json
T
samiandClaude Opus 5 8bb683b09d scaffold: project structure, wire contract, roadmap and agent briefs
Lays out Velox Download Manager (IDM-class download manager for Ubuntu
26.04) as a monorepo ready for parallel lane development. No implementation
code by design.

- docs/: architecture, roadmap M0-M7, IDM-parity GUI spec, engine design,
  Firefox extension spec, risks/spikes, packaging
- contracts/: wire-contract skeleton (JSON Schema + fixture templates) —
  the single synchronization point between lanes
- docs/agents/: one brief per lane (PROTO, CORE, DAEMON, GUI, EXT, PKG/QA)
  with owned directories, build order and definition of done
- CLAUDE.md: rules of engagement — lane ownership, layering, non-negotiables
- CMake scaffolding with dev/tsan/release/ci presets

Two environment findings shape the design: Firefox here is the Mozilla snap
(native-messaging risk, so the extension carries a loopback-WebSocket
fallback), and Wayland forbids passive clipboard monitoring (so clipboard
capture is explicit-action-first).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 18:21:11 +04:00

63 lines
2.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://velox.dev/schema/methods/capture.offer.schema.json",
"title": "capture.offer",
"description": "Firefox offers an intercepted response to the daemon. The daemon MUST reply within 750 ms; the extension abandons the offer and lets Firefox download normally on timeout. TEMPLATE — lane PROTO owns the final shape.",
"x-privileged": false,
"x-transports": ["uds", "ws"],
"x-deadlineMs": 750,
"type": "object",
"properties": {
"params": {
"type": "object",
"additionalProperties": false,
"required": ["url", "method", "tabUrl"],
"properties": {
"url": { "type": "string", "format": "uri" },
"method": { "type": "string", "enum": ["GET", "POST"] },
"tabUrl": { "type": "string", "format": "uri" },
"headers": {
"type": "object",
"description": "Request headers Firefox was about to send, verbatim. Needed for signed-URL and referrer-gated CDNs.",
"additionalProperties": { "type": "string" }
},
"cookies": {
"type": "array",
"description": "Cookies for the URL, so authenticated downloads work outside the browser.",
"items": {
"type": "object",
"required": ["name", "value"],
"properties": {
"name": { "type": "string" },
"value": { "type": "string" },
"domain": { "type": "string" },
"path": { "type": "string" }
}
}
},
"contentType": { "type": ["string", "null"] },
"contentLength": { "type": ["integer", "null"], "minimum": 0 },
"contentDisposition": { "type": ["string", "null"] },
"filename": { "type": ["string", "null"], "description": "Extension's best guess; the daemon may override" },
"userAgent": { "type": ["string", "null"] },
"referrer": { "type": ["string", "null"] },
"origin": { "type": "string", "description": "moz-extension://… — the daemon verifies this on the WS transport" }
}
},
"result": {
"type": "object",
"additionalProperties": false,
"required": ["action"],
"properties": {
"action": { "type": "string", "enum": ["take", "ignore"] },
"taskId": { "type": ["string", "null"], "format": "uuid" },
"reason": {
"type": ["string", "null"],
"enum": ["excluded_host", "type_not_monitored", "below_min_size", "duplicate",
"capture_disabled", "user_declined", null]
}
}
}
}
}