feat: finding associations via wiki-link graph for AI engagement analysis#7
Merged
feat: finding associations via wiki-link graph for AI engagement analysis#7
Conversation
Edges where at least one endpoint is type 'finding' are now classified into findingEdges, enabling downstream code to derive which hosts, users, and other findings each finding is connected to via wiki-links. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pure function that walks Foam wiki-link graph findingEdges to derive per-finding associations (hosts, users, services, chained findings). Groups findings by host and user. Identifies orphan findings with no wiki-link connections. No changes to Finding interface — associations are a graph property, not a document property. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AI can now call get_engagement_summary to get the full engagement state in one call: hosts, credentials, findings with graph-derived associations (which hosts/users/findings each finding connects to via wiki-links), per-host and per-user breakdowns, attack chains, and computed stats. The analyze-engagement prompt asks AI to identify finding chains, coverage gaps, and recommend next steps. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…roject base for clis
…ice/severity tests - Severity counting is now case-insensitive (.toLowerCase()) so "High", "CRITICAL" etc. are counted correctly - Extract private buildSummary() in httpServer to DRY the 3 identical fetch-and-build blocks - Add tests: case-insensitive severity stats, finding-to-service associations Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add logger.debug to all MCP tool handlers, resource handlers, and prompt handlers so that every request is traceable in the output channel. Show an information message when the MCP config is auto-updated on activation so users know the server is ready. 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
findingEdgestoRelationshipGraphinterface andgraphBuilder, classifying edges where at least one endpoint is a finding-type node (mirrors existing hostEdges/userEdges pattern)EngagementSummarydomain module — pure functionbuildEngagementSummary()that walks graph edges to derive per-finding host/user/service/finding associations, host/user breakdowns, unassociated findings, and severity statsget_engagement_summarytool,engagement://summaryresource, andanalyze-engagementprompt — AI can now understand what was found, where, and how findings chain togetherTest Plan
get_engagement_summaryvia MCP client🤖 Generated with Claude Code