feat(mcp): expand resources with pinned_files/milestones and handoff_routine prompt
This commit is contained in:
1 parent
f970e1219d
commit
d2b4f69f97
1 file changed
+54
@@ -133,6 +133,60 @@ impl MemoryHandler {
|
|||||||
register_resource!(TasksActiveResource);
|
register_resource!(TasksActiveResource);
|
||||||
|
|
||||||
register_prompt!(AnalyzeTechDebtPrompt);
|
register_prompt!(AnalyzeTechDebtPrompt);
|
||||||
|
struct PinnedFilesResource;
|
||||||
|
#[async_trait]
|
||||||
|
impl McpResource for PinnedFilesResource {
|
||||||
|
fn uri(&self) -> &'static str { "memory://pinned_files" }
|
||||||
|
fn name(&self) -> &'static str { "Pinned Files" }
|
||||||
|
fn description(&self) -> Option<&'static str> { Some("Currently pinned files in the workspace") }
|
||||||
|
async fn read(&self, state: Arc<MemoryState>) -> Result<String, String> {
|
||||||
|
let state_clone = Arc::clone(&state);
|
||||||
|
tokio::task::spawn_blocking(move || {
|
||||||
|
let items = state_clone.pinned_files.cache.read().unwrap();
|
||||||
|
Ok(serde_json::to_string_pretty(&*items).unwrap_or_default())
|
||||||
|
}).await.unwrap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct MilestonesResource;
|
||||||
|
#[async_trait]
|
||||||
|
impl McpResource for MilestonesResource {
|
||||||
|
fn uri(&self) -> &'static str { "memory://milestones" }
|
||||||
|
fn name(&self) -> &'static str { "Milestones" }
|
||||||
|
fn description(&self) -> Option<&'static str> { Some("Project milestones and their status") }
|
||||||
|
async fn read(&self, state: Arc<MemoryState>) -> Result<String, String> {
|
||||||
|
let state_clone = Arc::clone(&state);
|
||||||
|
tokio::task::spawn_blocking(move || {
|
||||||
|
let items = state_clone.milestones.cache.read().unwrap();
|
||||||
|
Ok(serde_json::to_string_pretty(&*items).unwrap_or_default())
|
||||||
|
}).await.unwrap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct HandoffRoutinePrompt;
|
||||||
|
#[async_trait]
|
||||||
|
impl McpPrompt for HandoffRoutinePrompt {
|
||||||
|
fn name(&self) -> &'static str { "handoff_routine" }
|
||||||
|
fn description(&self) -> Option<&'static str> { Some("Initiate the end-of-session handoff and standup report generation") }
|
||||||
|
async fn get(&self, _args: Value, _state: Arc<MemoryState>) -> Result<serde_json::Value, String> {
|
||||||
|
Ok(serde_json::json!({
|
||||||
|
"messages": [
|
||||||
|
{
|
||||||
|
"role": "user",
|
||||||
|
"content": {
|
||||||
|
"type": "text",
|
||||||
|
"text": "I am logging off. Please invoke the DevOpsSRE subagent to generate a standup report and leave a handoff memo for the next session. Make sure to check active tasks and recent code changes."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
register_resource!(PinnedFilesResource);
|
||||||
|
register_resource!(MilestonesResource);
|
||||||
|
register_prompt!(HandoffRoutinePrompt);
|
||||||
|
|
||||||
|
|
||||||
macro_rules! register {
|
macro_rules! register {
|
||||||
($module:ident::$handler:ident) => {
|
($module:ident::$handler:ident) => {
|
||||||
|
|||||||
Reference in new issue
Block a user