=== Token Expiry & Refresh Demo ===
Agent registered: ag_01HXYZ...
--- Authorizing with 10s TTL ---
Grant token received:
expiresAt: 2026-03-30T12:00:10.000Z
refreshToken: ref_01HXYZ...
--- Using token before expiry ---
Offline verification: PASSED
Online verification: valid = true
--- Waiting 12s for token to expire ---
Token should now be expired.
--- Detecting expiry ---
Offline verification: EXPIRED
Online verification: valid = false (expected: false)
--- Refreshing token ---
Token refreshed successfully!
grantId: grnt_01... (same as original)
--- Using refreshed token ---
Offline verification: PASSED
Online verification: valid = true
--- Refresh token rotation (single-use enforcement) ---
Blocked! Old refresh token rejected.
Reason: Refresh tokens are single-use and rotate on each refresh.
Done! Token expiry and refresh lifecycle complete.