В обычном AppleScript, когда вы открываете диалоговое окно, сценарий будет ждать, пока диалоговое окно не будет закрыто, прежде чем продолжить. Я не могу получить симптомы, которые вы описываете, хотя ваш пример фрагмента неполон и немного глючит - вы находитесь в цикле повторения (навсегда) без возможности выхода, так как вы также перехватываете все ошибки.
Обработчик idle на самом деле не подходит для таких вещей - этот обработчик вызывается, когда ваше приложение, ну, в общем, бездействует, поэтому любой код в нем будет запускаться каждый раз, когда сценарий не выполняется. ничего не делаю.
если вы просто хотите, чтобы диалоговое окно повторялось до тех пор, пока не будет возвращен правильный ответ, вы можете использовать что-то вроде следующего в вашем основном обработчике запуска
repeat -- forever
display dialog "this is a test, so enter something with \"test\"" default answer "test"
set theAnswer to text returned of the result
if theAnswer contains "test" then exit repeat -- success
end repeat
log theAnswer
Обратите внимание, что, хотя кнопка отмены диалогового окна генерирует ошибку «пользователь отменил», в скрипте оставайтесь открытым, сценарий не завершится с ошибкой, поэтому вам нужно будет выполнить свою собственную обработку ошибок.