I think I found a solution after some digging on this page. Apologies for not finding it before posting a duplicate question. The answer was supplied by user mbjoseph, thanks!
generated quantities{
vector[nind] log_lik;
for (i in 1:nind) {
log_lik[i] = 0;
if (first[i] > 0) {
for (t in (first[i] + 1):last[i]) {
log_lik[i] = log_lik[i] + bernoulli_lpmf(1|phi[i, t - 1]);
log_lik[i] = log_lik[i] + bernoulli_lpmf(y[i, t]|p[i, t - 1]);
}
log_lik[i] = log_lik[i] + bernoulli_lpmf(1|chi[i, last[i]]);
}
}
}
Thanks,
Jason