rho-coding-agent 1.16.0

A lightweight agent harness inspired by Pi
Documentation
use pretty_assertions::assert_eq;
use rho_sdk::{CapabilityRequest, CapabilitySource, PathScope, PolicyDecision, WorkspacePolicy};

use super::AppPolicy;
use crate::permission::PermissionMode;

fn write_request() -> CapabilityRequest {
    CapabilityRequest::write_path(
        "/workspace/file",
        PathScope::PrimaryWorkspace,
        CapabilitySource::built_in_tool("write_file"),
    )
}

#[test]
fn allow_policy_allows_requests() {
    assert_eq!(
        AppPolicy::for_mode(PermissionMode::Auto).evaluate(&write_request()),
        PolicyDecision::Allow
    );
}

#[test]
fn mode_policy_dispatches_to_permission_mode() {
    let request = write_request();
    for mode in [PermissionMode::Plan, PermissionMode::Supervised] {
        assert_eq!(
            AppPolicy::for_mode(mode).evaluate(&request),
            mode.decision_for(request.kind())
        );
    }
}