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]>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"$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]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user