env | grep -i supabase | sort
SUPABASE_ANON_KEY=<redacted:SUPABASE_ANON_KEY> SUPABASE_DB_PASSWORD=<redacted:SUPABASE_DB_PASSWORD> SUPABASE_DB_URL=<redacted:SUPABASE_DB_URL> SUPABASE_PROJECT_REF=<ref> SUPABASE_SERVICE_ROLE_KEY=<redacted:SUPABASE_SERVICE_ROLE_KEY> SUPABASE_URL=https://<ref>.supabase.co
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "SELECT current_database(), current_user;"
current_database | current_user ------------------+-------------- postgres | postgres (1 row)
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "SELECT id, title, embedding_json FROM public.documents ORDER BY id;"
id | title | embedding_json ----+---------+------------------ 1 | alpha | [10, 0.5, 0, 0] 2 | bravo | [0.9, 0.3, 0, 0] 3 | delta | [20, 60, 0, 0] 4 | echo | [0, 1, 0, 0] 5 | foxtrot | [-5, 0.1, 0, 0] 6 | golf | [0.1, 0.1, 3, 4] (6 rows)
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" <<'SQL' CREATE EXTENSION IF NOT EXISTS vector; SQL
CREATE EXTENSION
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" <<'SQL' ALTER TABLE public.documents ADD COLUMN IF NOT EXISTS embedding vector(4); UPDATE public.documents SET embedding = embedding_json::vector(4); SELECT id, title, embedding FROM public.documents ORDER BY id; SQL
ALTER TABLE id | title | embedding ----+---------+----------- 1 | alpha | 2 | bravo | 3 | delta | 4 | echo | 5 | foxtrot | 6 | golf | (6 rows)
ERROR: cannot cast type jsonb to vector
LINE 1: ...TE public.documents SET embedding = embedding_json::vector(4...
^
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" <<'SQL' UPDATE public.documents SET embedding = (embedding_json::text)::vector(4); SELECT id, title, embedding FROM public.documents ORDER BY id; SQL
UPDATE 6 id | title | embedding ----+---------+--------------- 1 | alpha | [10,0.5,0,0] 2 | bravo | [0.9,0.3,0,0] 3 | delta | [20,60,0,0] 4 | echo | [0,1,0,0] 5 | foxtrot | [-5,0.1,0,0] 6 | golf | [0.1,0.1,3,4] (6 rows)
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" <<'SQL' CREATE INDEX IF NOT EXISTS documents_embedding_hnsw ON public.documents USING hnsw (embedding vector_cosine_ops); CREATE OR REPLACE FUNCTION public.match_documents( query_embedding vector(4), match_count int ) RETURNS TABLE (id int, title text, distance float8) LANGUAGE sql STABLE AS $$ SELECT d.id, d.title, (d.embedding <=> query_embedding)::float8 AS distance FROM public.documents d ORDER BY d.embedding <=> query_embedding LIMIT match_count; $$; GRANT EXECUTE ON FUNCTION public.match_documents(vector(4), int) TO anon, authenticated; SQL
CREATE INDEX CREATE FUNCTION GRANT
PGPASSWORD="$SUPABASE_DB_PASSWORD" psql "$SUPABASE_DB_URL" -c "SELECT * FROM public.match_documents('[1,0,0,0]'::vector(4), 3);"id | title | distance ----+-------+--------------------- 1 | alpha | 0.00124766112215546 2 | bravo | 0.0513167145152487 3 | delta | 0.683772233983162 (3 rows)
curl -sS -X POST "$SUPABASE_URL/rest/v1/rpc/match_documents" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"query_embedding":[1,0,0,0],"match_count":4}' ; echo
echo "---"
curl -sS -X POST "$SUPABASE_URL/rest/v1/rpc/match_documents" \
-H "apikey: $SUPABASE_ANON_KEY" \
-H "Authorization: Bearer $SUPABASE_ANON_KEY" \
-H "Content-Type: application/json" \
-d '{"query_embedding":[0.1,0.2,3,4],"match_count":6}' ; echo[{"id":1,"title":"alpha","distance":0.00124766112215546},
{"id":2,"title":"bravo","distance":0.0513167145152487},
{"id":3,"title":"delta","distance":0.683772233983162},
{"id":6,"title":"golf","distance":0.98000799508818}]
---
[{"id":6,"title":"golf","distance":0.000199545486839536},
{"id":3,"title":"delta","distance":0.955772319357811},
{"id":4,"title":"echo","distance":0.960039940417162},
{"id":2,"title":"bravo","distance":0.968408797867532},
{"id":1,"title":"alpha","distance":0.978049388217791},
{"id":5,"title":"foxtrot","distance":1.01917699278236}]
3 earlier narration turn(s) are in the raw transcript.
A shell script executed against the live project and asserted on the state the agent left behind. No model judged another model.
Raw transcript · Task definition and verifier · Every attempt