* vector: S3 Vectors API gateway over VectorService
weed/s3api/s3vectors serves the AWS S3 Vectors JSON API: bucket CRUD
maps to S3 Tables table buckets, index CRUD to Lance table records plus
the VectorService CreateIndex/DropIndex RPCs, and the data plane
(Put/Get/List/Delete/QueryVectors) calls the shared service. The AWS
filter document translates to a Lance SQL predicate over the metadata
JSON column; unsupported operators fail loudly rather than overmatch.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* vector: -port.vectors and -vectors.grpc on weed s3
Mirror the Lance server startup: the S3 Vectors API binds its own port
and dials the weed-vector-server gRPC address; both disabled by default.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* vector: resolve index ARNs, authorize index ops, fix catalog fields
- vector buckets declare FormatLance so a new bucket accepts index
tables instead of defaulting to ICEBERG.
- ListIndexes decodes the `tables` response field; `tableSummaries`
hid every index.
- resolveIndexARNs honors indexArn alone; handlers no longer treat
indexName as the only carrier.
- data-plane RPCs fetch the index record first, so callers authorize
against the index resource and a missing index 404s before touching
the engine; QueryVectors reports the index's configured metric.
- IndexArn added to the index-level request types.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* vector: serve the vectors port over TLS when configured
When -key.file/-cert.file are set, the vectors listener mirrors the
main API and serves TLS rather than a second plaintext endpoint.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* vector: harden the s3vectors gateway handlers
- $ne no longer shadows the operator: exclusion filters emit <>
instead of equality.
- a null element in a PutVectors list fails the request instead of
panicking.
- requests are capped at 32 MiB; distances return via *float32 so an
exact match still reports 0 when returnDistance is set.
- CreateIndex declares the `vector` namespace first and validates
dimension (1..=4096) before the catalog write; a failed
VectorService.CreateIndex rolls the table record back.
- non-filterable metadata keys persist as JSON rather than a
comma-joined string, and index records carry their createdAt.
- ListVectors honors segmentIndex/segmentCount by slicing the full
listing in the gateway.
- catalog errors map to AccessDeniedException/ConflictException instead
of a blanket ValidationException, and malformed ARNs 400 instead of
slicing.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* vector: /{Operation} routes and vectors-port TLS, conn cleanup
Path-dispatched clients (POST /QueryVectors) reach the same handlers as
X-Amz-Target calls. A failed listener bind now closes the vector gRPC
connection instead of leaving it open with the endpoint disabled.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
---------
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
see https://blog.aqwari.net/xml-schema-go/
1. go get aqwari.net/xml/cmd/xsdgen
2. Add EncodingType element for ListBucketResult in AmazonS3.xsd
3. xsdgen -o s3api_xsd_generated.go -pkg s3api AmazonS3.xsd
4. Remove empty Grantee struct in s3api_xsd_generated.go
5. Remove xmlns: sed s'/http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\ //' s3api_xsd_generated.go