Files
Zecheng Zhang 88698fa08b feat(ops): optional byte-range reads across backends, and drop github_ci
Adds an optional read_range slot to the op table. Backends that can fetch a
window do; the generic read op falls back to read-and-slice for the rest, so
no backend has to implement one. Wired in both languages for box, databricks,
dify, discord, disk, dropbox, gdrive, gridfs, hf, nextcloud, onedrive, opfs,
ram, redis, s3, sharepoint, slack and ssh.

Shared helpers live in utils/ranges (range_header for a raw push-down,
slice_window for rendered content, is_unsatisfiable_range to normalise a 416).
Backends that render their bytes take the window right after building them,
which is why dify and ram are on the native list too: a windowed read is
answered the same way everywhere, whatever is behind the mount.

Fixes a crash on hf and nextcloud: OpenDAL's reader seeks rather than sending
a header, so a window past EOF raised from the seek instead of surfacing a
416. Both now read as empty. Caught by the integ battery, not by unit tests.

Removes the github_ci resource, its commands, ops, docs and examples.

Integ: a shared ranges/read.json across 21 targets, plus per-backend cases for
slack, discord and dify, reached through ws.dispatch since no shell command
asks for a window.
2026-08-15 04:20:57 -07:00

296 lines
6.1 KiB
JSON

{
"_meta": {
"by_resource": {
"box": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"chroma": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"databricks_volume": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"dify": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"discord": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"disk": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"dropbox": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"email": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gcal": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gdocs": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gdrive": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"github": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gmail": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gridfs": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gsheets": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"gslides": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"hf_buckets": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"jaeger": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"lancedb": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"langfuse": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"linear": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"mem0": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"mongodb": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"nextcloud": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"notion": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"onedrive": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"postgres": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"qdrant": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"ram": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"redis": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"s3": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"sharepoint": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"slack": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"ssh": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
},
"trello": {
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false
}
},
"filetypes": [],
"has_aggregate": false,
"has_provision": true,
"has_write": false,
"resources": [
"box",
"chroma",
"databricks_volume",
"dify",
"discord",
"disk",
"dropbox",
"email",
"gcal",
"gdocs",
"gdrive",
"github",
"gmail",
"gridfs",
"gsheets",
"gslides",
"hf_buckets",
"jaeger",
"lancedb",
"langfuse",
"linear",
"mem0",
"mongodb",
"nextcloud",
"notion",
"onedrive",
"postgres",
"qdrant",
"ram",
"redis",
"s3",
"sharepoint",
"slack",
"ssh",
"trello"
]
},
"options": [
{
"short": "-i",
"type": "bool"
},
{
"short": "-w",
"type": "bool"
},
{
"short": "-b",
"type": "bool"
},
{
"short": "-e",
"type": "bool"
},
{
"short": "-u",
"type": "bool"
},
{
"short": "-q",
"type": "bool"
},
{
"short": "-r",
"type": "bool"
}
],
"positional": [
{
"type": "path"
},
{
"type": "path"
}
]
}