feat: Obsidian deep integration with auto-discover, graph viz, and server enhancements#142
Merged
paulbreuler merged 35 commits intomainfrom Feb 17, 2026
Merged
Conversation
…nonical dependencies
…nresolved warnings
…ndalone 3D preview
…integration Move 0039 and 0049 to Completed/, supersede 0028 with 0050, create plan structure and 15 agent stubs for the Obsidian deep integration initiative. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…fo resource Lightweight keepalive via `ping` MCP tool, POST `/mcp/renew` for explicit session extension, and `session://info` resource exposing session metadata. Enables persistent client connections with proactive session management. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…g multi-path scanner Add dual-mode indexing: 'full' for FTS + frontmatter parsing, 'presence' for lightweight file existence tracking (path/size/mtime) at 60GB+ scale. Smart exclusions default to node_modules, .git, vendor, build, binaries. File watcher excludes presence-only paths. AsyncGenerator scanner provides constant memory for 100k+ files with per-path config (extensions, exclusions, maxDepth, priority). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lationship discovery Add DocumentAnalyzer for extracting references (markdown links, wikilinks, code imports, file mentions) with cross-repo awareness. LinkAnalyzer with iterative PageRank for document importance scoring. Concept extraction from headings, code blocks, and technical terms. Jaccard similarity-based relationship discovery. New REFERENCES relation type, concept_conflict and duplicate_content conflict types. CLI: graph suggest hub-documents, graph trace --mode pagerank, graph check concept-conflict. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, and autonomous workflows Add McpClientManager with auto-reconnect, keepalive, and CLI fallback. Type-safe LimpsToolWrapper for all 22+ MCP tools (dual-mode). Document management commands (create/update/delete with context menus). Task management UI with next-task modal and status picker. Search docs modal and proposals UI with apply/skip. Scheduled health checks with vault event automation. Auto-proposal application with whitelist and notification system. Health Hub shows MCP session status, notifications. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lti-path config Update plugin README with full command reference, settings table, and MCP session docs. Update root README Obsidian section. Add architecture doc covering MCP lifecycle, presence-aware indexing, smart exclusions, vault automation, and file watcher behavior. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The watcher and indexer were using hardcoded ignore patterns that didn't include directories from the exclusions config. Now merges exclusions.directories into the watcher's ignorePatterns so gitignored directories like tmp/, target/, BaseState/ are properly excluded. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add discoverConfig() to walk up from vault root looking for .limps/config.json - Add startDaemon() to start daemon via CLI if not running - Add readLimpsConfig() to parse config and derive MCP endpoint from server.port/host - Plugin onload() auto-discovers config when settings.configPath is empty - Plugin onload() auto-starts daemon if not running - Settings default configPath to empty (auto-discover mode) - Settings UI shows resolved config path as read-only helper text - All internal references use resolvedConfigPath instead of raw settings Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces a comprehensive Obsidian plugin for limps with persistent MCP integration, auto-discovery of configuration, daemon auto-start, and enhanced server capabilities including multi-path document scanning, document analysis with PageRank, and session management features.
Changes:
- New Obsidian plugin package with health dashboard, force-directed graph visualization, persistent MCP client, editor diagnostics, and workflow automation
- Server enhancements including multi-path document scanning with presence-aware indexing, document analysis with PageRank/concept extraction, ping tool, and session renewal endpoint
- Auto-discover and auto-start capabilities for seamless daemon integration from Obsidian vault
Reviewed changes
Copilot reviewed 102 out of 203 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| plans/0033-limps-self-updating/agents/000_phase1_staleness.agent.md | Added LIMPS graph links section |
| plans/0033-limps-self-updating/0033-limps-self-updating-plan.md | Added LIMPS graph links section |
| plans/0028-limps-obsidian-plugin/0028-limps-obsidian-plugin-plan.md | Marked as superseded by 0050-obsidian-deep-integration |
| packages/limps/tests/tools/ping.test.ts | Added tests for ping MCP tool |
| packages/limps/tests/server-http-renew.test.ts | Added tests for session renewal endpoint |
| packages/limps/tests/integration/session-robustness.test.ts | Added integration tests for session features |
| packages/limps/tests/integration/presence-indexing.test.ts | Added tests for presence-aware indexing |
| packages/limps/tests/cli/dependency-paths.test.ts | Added tests for dependency path conversion |
| packages/limps/tests/cli/completion.test.ts | Added deps-to-paths command to completion suggestions |
| packages/limps/tests/analysis/link-analysis.test.ts | Added tests for PageRank and hub document detection |
| packages/limps/tests/analysis/document-structure.test.ts | Added tests for markdown reference extraction |
| packages/limps/tests/agent-parser.test.ts | Added test for file-path dependency normalization |
| packages/limps/src/utils/pathfilter.ts | Added exclusion filtering utilities |
| packages/limps/src/utils/dependency-ref.ts | Added dependency reference parsing utility |
| packages/limps/src/tools/ping.ts | Implemented ping tool for keepalive |
| packages/limps/src/tools/index.ts | Registered ping tool |
| packages/limps/src/tools/graph.ts | Extended graph tool with new subtypes and PageRank mode |
| packages/limps/src/server-shared.ts | Added multi-path support and presence-only indexing |
| packages/limps/src/server-http.ts | Added session renewal endpoint and session info resource |
| packages/limps/src/scanner.ts | Implemented streaming file scanner |
| packages/limps/src/graph/types.ts | Added REFERENCES relation type |
| packages/limps/src/graph/storage.ts | Added methods to get all entities and relationships |
| packages/limps/src/graph/extractor.ts | Integrated document analyzer for reference extraction |
| packages/limps/src/graph/conflict-detector.ts | Added concept conflict and duplicate content detection |
| packages/limps/src/core/completion.ts | Added deps-to-paths command to CLI completion |
| packages/limps/src/config.ts | Added multi-path configuration and exclusions support |
| packages/limps/src/commands/plan/index.tsx | Added deps-to-paths command to plan help |
| packages/limps/src/commands/plan/deps-to-paths.tsx | Implemented dependency path conversion command |
| packages/limps/src/commands/graph/trace.tsx | Added PageRank mode to graph trace |
| packages/limps/src/commands/graph/suggest.tsx | Added hub-documents and relationships suggestion types |
| packages/limps/src/cli/graph-trace.ts | Implemented PageRank scoring in trace results |
| packages/limps/src/cli/graph-suggest.ts | Added hub document and relationship discovery |
| packages/limps/src/cli/graph-check.ts | Added concept conflict and duplicate content checks |
| packages/limps/src/cli/dependency-paths.ts | Implemented dependency path conversion logic |
| packages/limps/src/analysis/relationship-discoverer.ts | Implemented relationship discovery using Jaccard similarity |
| packages/limps/src/analysis/link-analysis.ts | Implemented PageRank algorithm and hub document detection |
| packages/limps/src/analysis/document-structure.ts | Implemented document reference extraction |
| packages/limps/src/analysis/concept-extractor.ts | Implemented concept extraction from documents |
| packages/limps/src/agent-parser.ts | Updated to use parseDependencyRef utility |
| packages/limps-obsidian-plugin/* | New plugin package with comprehensive Obsidian integration |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
plans/0033-limps-self-updating/agents/000_phase1_staleness.agent.md
Outdated
Show resolved
Hide resolved
plans/0033-limps-self-updating/0033-limps-self-updating-plan.md
Outdated
Show resolved
Hide resolved
…ing feedback - styles.css: Enable scrolling in health view with overflow-y: auto - healthView.ts: Preserve existing intelligence data during fast refresh to prevent UI flickering/wiping - main.ts: Display reindex command stdout in success notice for better feedback on zero-plan scenarios - build-plugin.mjs: Exclude electron and @codemirror/* from bundle to prevent runtime conflicts - wrapper.ts: Add robust error handling for graph reindex output
Convert the health sidebar from innerHTML string templating to React components, fixing agent count display (was always "0 agents") and section collapse on re-render. Plan status uses plain text badges and agent summaries for reliable rendering in Obsidian's CSS environment. - Fix buildPlanId to use number-only format for reliable plan directory matching - Add parseAgentDetail/parseAgentList to extract per-agent data from CLI - 11 new React components under src/views/health/ - Simple text-based plan status (no progress bars) to avoid Obsidian CSS conflicts - Dev harness HTML for browser-based CSS iteration - esbuild target updated to es2022 - 115/115 plugin tests pass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix obsidian plugin test script for Node 20 (glob patterns unsupported) - Add concurrency guard to WorkflowScheduler.runNow() - Avoid redundant extractTextFromMcpResult call in tool-wrapper - Refine SCREAMING_SNAKE_CASE regex to reject trailing underscores - Add explanatory comment for async generator in scanner - Remove excess blank lines in plan files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
packages/limps-obsidian-plugin): Full plugin with health dashboard, force-directed graph visualization (2D/3D), persistent MCP client with reconnect, editor diagnostics, context menus, protocol handlers, workflow scheduler, and vault event handlingpackages/limps): Multi-path document scanning, document analysis with PageRank/concept extraction, ping tool, session renewal, config exclusion merging.limps/config.jsonfrom vault root, auto-starts daemon if not running, derives MCP endpoint from config's server port/hostKey changes (203 files, ~19.7K lines)
Obsidian Plugin (new package)
.limps/config.jsonobsidian://limps?target=...)Server Enhancements
Plan Maintenance
Test plan
npm run buildnpm test.limps/config.jsonfrom vault root🤖 Generated with Claude Code