a3s 0.9.6

a3s — A3S coding agent CLI; `a3s code` launches the interactive TUI
Documentation
use super::*;

pub(super) fn replace_ide_intelligence_request(ide: &mut Ide) -> (u64, CancellationToken) {
    ide.intelligence_cancellation.cancel();
    ide.intelligence_jump_cancellation.cancel();
    let cancellation = CancellationToken::new();
    ide.intelligence_cancellation = cancellation.clone();
    ide.intelligence_request_id = ide.intelligence_request_id.wrapping_add(1);
    (ide.intelligence_request_id, cancellation)
}

pub(super) fn ide_intelligence_request_is_current(ide: &Ide, request_id: u64) -> bool {
    ide.intelligence_request_id == request_id
        && ide
            .intelligence
            .as_ref()
            .is_some_and(|view| view.request_id == request_id)
}

pub(super) fn replace_ide_intelligence_jump_request(ide: &mut Ide) -> (u64, CancellationToken) {
    ide.intelligence_jump_cancellation.cancel();
    let cancellation = CancellationToken::new();
    ide.intelligence_jump_cancellation = cancellation.clone();
    ide.intelligence_jump_request_id = ide.intelligence_jump_request_id.wrapping_add(1);
    (ide.intelligence_jump_request_id, cancellation)
}

pub(super) fn ide_intelligence_jump_request_is_current(
    ide: &Ide,
    request_id: u64,
    jump_request_id: u64,
) -> bool {
    ide_intelligence_request_is_current(ide, request_id)
        && ide.intelligence_jump_request_id == jump_request_id
}