(nsmonostate)(def^:privatesession-state(atom{:user-idnil:permissions#{}:last-accessnil}))(defnstart-session"Starts a new user session with ID and permissions."[user-idpermissions](reset!session-state{:user-iduser-id:permissionspermissions:last-access(java.time.Instant/now)}))(defnend-session"Ends the session, resetting the state to default values."[](reset!session-state{:user-idnil:permissions#{}:last-accessnil}))(defnupdate-last-access"Updates the last access timestamp to the current time."[](swap!session-stateassoc:last-access(java.time.Instant/now)))(defnget-session"Retrieves the complete state of the current session."[]@session-state)(defnhas-permission?"Checks if the user has a specific permission."[permission](contains?(:permissions@session-state)permission))(comment(start-session"user-123"#{"read""write"});; => {:user-id "user-123", :permissions #{"read" "write"}, :last-access <timestamp>}(has-permission?"read");; => true(has-permission?"delete");; => false(update-last-access)(get-session);; => {:user-id "user-123", :permissions #{"read" "write"}, :last-access <new-timestamp>}(end-session);; => {:user-id nil, :permissions #{}, :last-access nil})