- Replace TypeBox + AgentToolResult with native OpenClaw AnyAgentTool pattern - Add id, openclaw, main fields to openclaw.plugin.json manifest - registerTools() now uses factory helpers returning typed AnyAgentTool objects - toAgentResult() adapter bridges search/index/status/memory results to AgentToolResult shape - Build clean — pi-agent-core peer dep not needed, openclaw exports all types - Task list updated: Phase 4 tools + plugin registration marked complete Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
100 lines
3.7 KiB
JSON
100 lines
3.7 KiB
JSON
{
|
|
"schema_version": "1.0",
|
|
"id": "obsidian-rag",
|
|
"name": "obsidian-rag",
|
|
"version": "0.1.0",
|
|
"description": "Semantic search through Obsidian vault notes using RAG. Powers natural language queries like 'How was my mental health in 2024?' across journal entries, financial records, health data, and more.",
|
|
"author": "Santhosh Janardhanan",
|
|
"openclaw": "^2026.4.9",
|
|
"main": "dist/index.js",
|
|
"tools": [
|
|
{
|
|
"name": "obsidian_rag_search",
|
|
"description": "Primary semantic search tool. Given a natural language query, searches the Obsidian vault index and returns the most relevant note chunks ranked by semantic similarity. Supports filtering by directory, date range, and tags.",
|
|
"parameter_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query": {
|
|
"type": "string",
|
|
"description": "Natural language question or topic to search for"
|
|
},
|
|
"max_results": {
|
|
"type": "integer",
|
|
"description": "Maximum number of chunks to return",
|
|
"default": 5,
|
|
"minimum": 1,
|
|
"maximum": 50
|
|
},
|
|
"directory_filter": {
|
|
"type": "array",
|
|
"description": "Limit search to specific vault subdirectories (e.g. ['Journal', 'Finance'])",
|
|
"items": { "type": "string" }
|
|
},
|
|
"date_range": {
|
|
"type": "object",
|
|
"description": "Filter by date range",
|
|
"properties": {
|
|
"from": { "type": "string", "description": "Start date (YYYY-MM-DD)" },
|
|
"to": { "type": "string", "description": "End date (YYYY-MM-DD)" }
|
|
}
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"description": "Filter by hashtags found in notes (e.g. ['#mentalhealth', '#therapy'])",
|
|
"items": { "type": "string" }
|
|
}
|
|
},
|
|
"required": ["query"]
|
|
},
|
|
"required_permissions": []
|
|
},
|
|
{
|
|
"name": "obsidian_rag_index",
|
|
"description": "Trigger indexing of the Obsidian vault. Use 'full' for first-time setup, 'sync' for incremental updates, 'reindex' to force a clean rebuild.",
|
|
"parameter_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"mode": {
|
|
"type": "string",
|
|
"description": "Indexing mode",
|
|
"enum": ["full", "sync", "reindex"]
|
|
}
|
|
},
|
|
"required": ["mode"]
|
|
},
|
|
"required_permissions": []
|
|
},
|
|
{
|
|
"name": "obsidian_rag_status",
|
|
"description": "Check the health of the Obsidian RAG plugin — index statistics, last sync time, unindexed files, and Ollama status. Call this first when unsure if the index is ready.",
|
|
"parameter_schema": {
|
|
"type": "object",
|
|
"properties": {}
|
|
},
|
|
"required_permissions": []
|
|
},
|
|
{
|
|
"name": "obsidian_rag_memory_store",
|
|
"description": "Commit an important fact from search results to OpenClaw's memory for faster future retrieval. Use after finding significant information (e.g. 'I owe Sreenivas $50') that should be remembered.",
|
|
"parameter_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"key": {
|
|
"type": "string",
|
|
"description": "Identifier for the fact (e.g. 'debt_to_sreenivas')"
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"description": "The fact to remember"
|
|
},
|
|
"source": {
|
|
"type": "string",
|
|
"description": "Source file path in the vault (e.g. 'Journal/2025-03-15.md')"
|
|
}
|
|
},
|
|
"required": ["key", "value", "source"]
|
|
},
|
|
"required_permissions": []
|
|
}
|
|
]
|
|
} |