feat: implement Obsidian MCP Bundle MVP (Phase 1-3)
- Complete project setup with TypeScript, Jest, MCPB manifest - Implement foundational infrastructure (CLI executor, logger, error handler) - Add 9 file operation tools for User Story 1 - Full MCP protocol compliance with stdio transport - Input validation and sanitization for security - Comprehensive error handling with actionable messages - Constitutional compliance: all 6 principles satisfied MVP includes: - obsidian_create_note, read, append, prepend, delete, move, rename, open, file_info - Zod validation schemas for all parameters - 30s timeout configuration with per-command overrides - Stderr-only logging with sanitized output - Graceful shutdown handling Build: ✅ 0 errors, 0 vulnerabilities Tasks: 48/167 complete (MVP milestone) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
37
tests/fixtures/mock-cli-responses.json
vendored
Normal file
37
tests/fixtures/mock-cli-responses.json
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"vault_list": {
|
||||
"stdout": "Vault1\nVault2\nTestVault\n",
|
||||
"stderr": "",
|
||||
"exitCode": 0
|
||||
},
|
||||
"note_read_success": {
|
||||
"stdout": "# Sample Note\n\nContent here",
|
||||
"stderr": "",
|
||||
"exitCode": 0
|
||||
},
|
||||
"note_not_found": {
|
||||
"stdout": "",
|
||||
"stderr": "Error: Note 'nonexistent.md' not found in vault 'TestVault'\n",
|
||||
"exitCode": 1
|
||||
},
|
||||
"obsidian_not_running": {
|
||||
"stdout": "",
|
||||
"stderr": "Error: Obsidian is not running. Please start Obsidian and try again.\n",
|
||||
"exitCode": 1
|
||||
},
|
||||
"ambiguous_note_name": {
|
||||
"stdout": "",
|
||||
"stderr": "Error: Multiple notes found with name 'Meeting':\n- notes/work/Meeting.md\n- notes/personal/Meeting.md\nPlease specify the exact path.\n",
|
||||
"exitCode": 1
|
||||
},
|
||||
"create_note_success": {
|
||||
"stdout": "Created note: MyNote.md\n",
|
||||
"stderr": "",
|
||||
"exitCode": 0
|
||||
},
|
||||
"search_results": {
|
||||
"stdout": "notes/project-plan.md\nnotes/ideas.md\nnotes/meeting-2026-03-22.md\n",
|
||||
"stderr": "",
|
||||
"exitCode": 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user