···
export const handler = define.handlers({
+
console.log("Status check: Starting");
const url = new URL(ctx.req.url);
const params = new URLSearchParams(url.search);
const step = params.get("step");
+
console.log("Status check: Step", step);
+
console.log("Status check: Getting agents");
const oldAgent = await getSessionAgent(ctx.req);
const newAgent = await getSessionAgent(ctx.req, new Response(), true);
+
if (!oldAgent || !newAgent) {
+
console.log("Status check: Unauthorized - missing agents", {
+
hasOldAgent: !!oldAgent,
+
hasNewAgent: !!newAgent
+
return new Response("Unauthorized", { status: 401 });
+
console.log("Status check: Fetching account statuses");
const oldStatus = await oldAgent.com.atproto.server.checkAccountStatus();
const newStatus = await newAgent.com.atproto.server.checkAccountStatus();
+
if (!oldStatus.data || !newStatus.data) {
+
console.error("Status check: Failed to verify status", {
+
hasOldStatus: !!oldStatus.data,
+
hasNewStatus: !!newStatus.data
+
return new Response("Could not verify status", { status: 500 });
+
console.log("Status check: Account statuses", {
const readyToContinue = () => {
+
console.log("Status check: Evaluating step", step);
+
console.log("Status check: Step 1 ready");
+
console.log("Status check: Step 1 not ready - new account status not available");
return { ready: false, reason: "New account status not available" };
+
const isReady = newStatus.data.repoCommit &&
newStatus.data.indexedRecords === oldStatus.data.indexedRecords &&
newStatus.data.privateStateValues === oldStatus.data.privateStateValues &&
newStatus.data.expectedBlobs === newStatus.data.importedBlobs &&
+
newStatus.data.importedBlobs === oldStatus.data.importedBlobs;
+
console.log("Status check: Step 2 ready");
if (!newStatus.data.repoCommit) reasons.push("Repository not imported.");
if (newStatus.data.indexedRecords < oldStatus.data.indexedRecords)
···
reasons.push("Expected blobs not fully imported.");
if (newStatus.data.importedBlobs < oldStatus.data.importedBlobs)
reasons.push("Not all blobs imported.");
+
console.log("Status check: Step 2 not ready", { reasons });
return { ready: false, reason: reasons.join(", ") };
if (newStatus.data.validDid) {
+
console.log("Status check: Step 3 ready");
+
console.log("Status check: Step 3 not ready - DID not valid");
return { ready: false, reason: "DID not valid" };
if (newStatus.data.activated === true && oldStatus.data.activated === false) {
+
console.log("Status check: Step 4 ready");
+
console.log("Status check: Step 4 not ready - Account not activated");
return { ready: false, reason: "Account not activated" };
+
console.log("Status check: No step specified, returning ready");
···
+
console.log("Status check: Complete", status);
return Response.json(status);