magi-code 0.62.0

Repository-aware CLI coding agent for terminal work
Documentation
use super::*;

#[test]
fn tool_contract_constants_preserve_provider_names_and_runtime_aliases() {
    assert_eq!(
        MVP_TOOL_CAPABILITIES
            .iter()
            .map(|tool| tool.canonical_name())
            .collect::<Vec<_>>(),
        vec![
            contract::tool_name::READ,
            contract::tool_name::VIEW_IMAGE,
            contract::tool_name::BASH,
            contract::tool_name::BROWSER,
            contract::tool_name::HASH_EDIT,
            contract::tool_name::WRITE,
            contract::tool_name::GREP,
            contract::tool_name::FIND,
            contract::tool_name::LIST_FILES,
            contract::tool_name::REPO_MAP,
            contract::tool_name::SUBAGENTS,
            contract::tool_name::WEB_SEARCH,
            contract::tool_name::CODE_SEARCH,
            contract::tool_name::AST_GREP,
        ]
    );
    assert_eq!(
        ToolCapability::Bash.aliases(),
        contract::BASH_DISPATCH_ALIASES
    );
    assert_eq!(
        contract::BASH_COMMAND_ARG_KEYS,
        [contract::arg_key::COMMAND, contract::arg_key::CMD]
    );

    let definitions = mvp_tool_definitions_json();
    let bash = definitions
        .as_array()
        .unwrap()
        .iter()
        .find(|definition| definition["name"] == contract::tool_name::BASH)
        .unwrap();
    assert!(
        bash["parameters"]["properties"]
            .get(contract::arg_key::COMMAND)
            .is_some()
    );
    assert!(
        bash["parameters"]["properties"]
            .get(contract::arg_key::CMD)
            .is_none()
    );
    assert_eq!(
        ToolCapability::from_dispatch_name(contract::BASH_DISPATCH_ALIASES[0]),
        Some(ToolCapability::Bash)
    );
}

#[test]
fn cloned_runtimes_share_path_search_service() {
    let (temp, runtime) = runtime();
    fs::write(temp.path().join("lib.rs"), "").unwrap();
    let cloned = runtime
        .clone_for_cwd_with_subagent_depth(temp.path(), 1)
        .unwrap();

    let first = runtime.dispatch("find", json!({"query":"lib"}));
    let second = cloned.dispatch("find", json!({"query":"lib"}));

    assert!(first.success, "{}", first.content);
    assert!(second.success, "{}", second.content);
    assert!(Arc::ptr_eq(&runtime.path_search, &cloned.path_search));
}