저장소

저장소 - 만들고, 보고, 지우기.

저장소는 저장·회수의 단위인 user_id - 최종 사용자·에이전트·주제마다 격리된 기억 공간 하나입니다. 저장소는 명시적이라 저장·회수 전에 먼저 만들어야 하고, 아니면 404가 돌아옵니다. 모든 계정엔 default 저장소가 기본으로 있어 만들지 않고도 바로 시작할 수 있습니다.

격리 구조. 계정이 워크스페이스를 갖고, 워크스페이스마다 기억·API 키·사용량이 격리됩니다(결제는 계정 공유). 저장소는 워크스페이스 안에 있어, 같은 워크스페이스의 키는 저장소를 공유하고 다른 워크스페이스끼리는 서로의 기억을 못 봅니다. 계정 → 워크스페이스 → 저장소(user_id) → 기억.
mem.create_store("alice")        # create (idempotent)
mem.list_stores()              # [{"user_id","created_at"}, ...]
mem.delete_store("alice")        # delete the store + all its memories
await mem.createStore("alice");
await mem.listStores();          // [{ user_id, created_at }, ...]
await mem.deleteStore("alice");     // store + all its memories
mem.create_store("alice").await?;
let stores = mem.list_stores().await?;
mem.delete_store("alice").await?;
# create
curl -X POST https://api.wontopos.com/api/v1/memory/collection \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" -d '{"user_id":"alice"}'
# list
curl https://api.wontopos.com/api/v1/memory/collections -H "X-API-Key: $WOS_API_KEY"
# delete (store + all its memories)
curl -X DELETE https://api.wontopos.com/api/v1/memory/collection \
  -H "X-API-Key: $WOS_API_KEY" -H "Content-Type: application/json" -d '{"user_id":"alice"}'
실제 응답 - create
{ "user_id": "alice", "status": "created" }   // "exists" if it already did
실제 응답 - list
{ "collections": [
  { "user_id": "default", "created_at": "2026-06-26T02:23:14Z" },
  { "user_id": "alice",   "created_at": "2026-06-26T02:24:01Z" }
], "count": 2 }
없는 저장소 회수 시
{ "error": { "type": "not_found_error",
  "message": "Store 'ghost' does not exist. Create it first with
              POST /api/v1/memory/collection {\"user_id\":\"ghost\"}, then store or recall." } }
사람별로 기억을 나누려면 최종 사용자마다 저장소 하나("alice", "user_42"), 개인 비서라면 default 하나면 됩니다. 코드 없이 콘솔에서도 저장소를 만들고 둘러볼 수 있습니다(Memory ids → Issue). 저장소 삭제는 영구적 - 그 안의 모든 기억이 사라집니다. 저장소 id는 저장 전에 접힙니다. 소문자로 낮추고 [a-z0-9_] 밖의 문자는 _가 되므로 Alice.Smithalice-smith는 같은 저장소입니다. 기존 id와 같은 형태로 접히는 두 번째 id는 조용히 공유되지 않고 409로 거절됩니다. id 자체도 [A-Za-z0-9][A-Za-z0-9._-]{0,63}를 만족해야 하므로 이메일 주소나 비라틴 이름은 저장소 id가 될 수 없습니다. 내부 식별자를 사용하십시오.

저장소 목록과 삭제

mem.list_stores()                # [{"user_id","created_at"}, …]
mem.delete_store("alice")      # the store and every memory in it
await mem.listStores();
await mem.deleteStore("alice");
let stores = mem.list_stores().await?;
mem.delete_store("alice").await?;
curl -X POST   .../api/v1/memory/collections -d '{}'
curl -X DELETE .../api/v1/memory/collection  -d '{"user_id":"alice"}'