feat: Phase 7 multi-agent state tools with permission model #19
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "phase-7/agent-state-tools"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
AgentRole(Primary/Contributor/Observer/Reader) with role-based tool access control, enforced at MCP dispatch layer via fail-open patternshare_session,list_agents,get_server_healthtool definitions with JSON schemas, registered in ToolRegistry with placeholder handlersAgentSession,AgentRegistry(with prune/eviction),SharedSessionwith owner-authorized grant/revoke,ServerHealthwith optional metricsconfig.rsinto 7 focused modules; typedLogLevel/LogFormatenums; port collision validation scoped toTransportKind::Allanyhow, added session authorization checks, added 28 new testsPhase
Phase 7 — Multi-Agent Coordination
Commits
f59c7ddfeat(mcp): share_session, list_agents, get_server_health tool definitions224fadffeat(server): AgentSession, SharedSession, ServerHealth foundation types6037104feat(mcp): role-based tool dispatch permission enforcement6fcbc67fix: update registration test for 16 tools, format fixesc3374e1docs: mark PR14 phases B, F, G as complete in todoe035217fix(core): config validation, typed log enums, test coveragefaa668efix(core,mcp): use real MCP tool names in permission model, filter tools/list by roleee5aeaefix(server): wire handler match arms, anyhow errors, session auth, health cleanupbf9cc5fchore: update Cargo.lock for thiserror removal from cognix-serverTest Plan
cargo test --workspace— 964 tests pass (28 new, 0 regressions from 936 baseline)cargo clippy --workspace --all-targetswith full deny list — cleancargo fmt --check— clean[permission denied]text, not protocol errors[not yet wired]placeholder (not[error] unknown tool)TransportKind::All; invalid env vars logged and ignoredSelf-Review Checklist
unwrap()in library codeprintln!/dbg!thiserrorin lib crates only,anyhowin binary cratesSensitive<T>used for content fields🤖 Generated with Claude Code