Files
obsidian-rag/openclaw.plugin.json
Santhosh Janardhanan e15e4ff856 fix: add configSchema to openclaw.plugin.json, add search CLI command, fix total_docs stat
- Add required configSchema to openclaw.plugin.json for OpenClaw plugin discovery
- Add search command to CLI with --limit, --dir, --from-date, --to-date, --tags filters
- Fix get_stats() to properly count unique docs (was returning 0 for non-null values)
- Remove hardcoded max_results default of 5; search now returns all results by default
- Update INSTALL.md and design docs with correct OpenClaw extension path instructions
2026-04-11 20:01:09 -04:00

218 lines
6.3 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",
"configSchema": {
"type": "object",
"additionalProperties": false,
"properties": {
"vault_path": {
"type": "string",
"description": "Path to Obsidian vault"
},
"embedding": {
"type": "object",
"additionalProperties": false,
"properties": {
"provider": {
"type": "string",
"enum": ["ollama"]
},
"model": {
"type": "string"
},
"base_url": {
"type": "string",
"format": "uri"
},
"dimensions": {
"type": "integer",
"minimum": 1
},
"batch_size": {
"type": "integer",
"minimum": 1
}
}
},
"vector_store": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"enum": ["lancedb"]
},
"path": {
"type": "string"
}
}
},
"indexing": {
"type": "object",
"additionalProperties": false,
"properties": {
"chunk_size": {
"type": "integer",
"minimum": 1
},
"chunk_overlap": {
"type": "integer",
"minimum": 0
},
"file_patterns": {
"type": "array",
"items": {
"type": "string"
}
},
"deny_dirs": {
"type": "array",
"items": {
"type": "string"
}
},
"allow_dirs": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"security": {
"type": "object",
"additionalProperties": false,
"properties": {
"require_confirmation_for": {
"type": "array",
"items": {
"type": "string"
}
},
"sensitive_sections": {
"type": "array",
"items": {
"type": "string"
}
},
"local_only": {
"type": "boolean"
}
}
},
"memory": {
"type": "object",
"additionalProperties": false,
"properties": {
"auto_suggest": {
"type": "boolean"
},
"patterns": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
},
"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: unlimited)",
"minimum": 1,
"maximum": 10000
},
"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": []
}
]
}