//! Stable write-capability ids (public contract; never silently reassigned). //! //! Each mutating tool is gated on one of these. A driving session must hold the //! id in its granted set or kberg refuses the call. See the go-mcp design doc. use kberg::WriteCapability; pub const PROJECT_CREATE: &str = "go.project.create"; pub const PROJECT_UPDATE: &str = "go.project.update"; pub const TASK_CREATE: &str = "go.task.create"; pub const TASK_BULK_IMPORT: &str = "go.task.bulk_import"; pub const TASK_UPDATE: &str = "go.task.update"; pub const TASK_COMPLETE: &str = "go.task.complete"; pub fn project_create() -> WriteCapability { WriteCapability::new(PROJECT_CREATE, "create a project") } pub fn project_update() -> WriteCapability { WriteCapability::new(PROJECT_UPDATE, "update an existing project") } pub fn task_create() -> WriteCapability { WriteCapability::new(TASK_CREATE, "create one task") } pub fn task_bulk_import() -> WriteCapability { WriteCapability::new(TASK_BULK_IMPORT, "create many tasks in one call") } pub fn task_update() -> WriteCapability { WriteCapability::new(TASK_UPDATE, "update an existing task") } pub fn task_complete() -> WriteCapability { WriteCapability::new(TASK_COMPLETE, "mark a task complete") }