The store slot fills itself
createVendo picks the store at composition time. With VENDO_API_KEY set and
no store passed, the slot takes the hosted store.
app/api/vendo/[...vendo]/route.ts
vendo ready
ensureSchema() is a no-op here, because the
service owns its own migrations.
Passing your own store adapter also works, and always wins.
What lands where
Blobs ride the same store unless you pass a
files adapter, so rows and
objects can never drift apart.
What the store refuses
Three writes are refused outright, each with a code rather than a silent no-op.
Secrets never ride the hosted wire. The store has no secrets surface by
construction: values resolve from your process environment first, and Cloud’s
secrets provider answers only for names the environment leaves unset.
Racing writers
Two ticks, two retries, or two agent runs can land on the same record. The collection handle carries compare-and-set primitives for that case.claim returns true for the single caller whose read of expected still
matched. insertIfAbsent and compareAndSwap return null when another caller
won.
Both are optional on the handle, which is why the calls above are guarded. Your
own collections expose them; Vendo’s internal tables vary.