Repository navigation
feat(graph): sources, sensors, people and agents as Source nodes linked to what they brought in - #627
Merged
Merged
Conversation
…ed to what they brought in Whoever brought an asset in (the actor of its asset.added activity: a storage source, a sensor, a person, an automation, a routine, an import hook, or Lens) is a Source node in the property graph with an ADDED relationship to the asset, part of the hierarchy, so the explorer, Cypher and the MCP graph tools answer where Lens learns about each entity. The canvas draws sources linked to what their assets mention (Brought in), and the Timeline page's Graph button opens it on the sources alone (/graph?show=actors). events_content.added_by is the one place that says who added an asset; the timeline's activities use it too. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ln25ykE6uBDqx21WBU94SX
This was referenced Oct 18, 2026
feat(timeline): mute a source, a person or a kind, for good or until a time, for yourself alone
#635
Merged
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.
Requested by Adeel · project thread
Description
Before: the timeline said who brought each asset in (its activity's actor: Work Gmail, a sensor, a person, an automation), but the graph knew nothing of it. Nothing answered "where does Lens learn about St Mary's School?"
After: whoever brought an asset in is a Source node in the graph with an ADDED relationship to the asset, part of the hierarchy, so
(Source)-[:ADDED]->(Recording)-[:MENTIONS]->(Entity)works in Cypher, the explorer lists an asset's source among its parents, andGET /graph/schemadescribes the label. On the canvas, sources are cloud-shaped nodes linked to what their assets mention (a Brought in edge per source and entity, weighted by mentions), in the Sources group of the filters; a source with nothing visible to link to is hidden, as an entity is. The Timeline page gets a Graph button that opens the canvas on the sources alone (/graph?show=actors). Ids area:<actor>:a:source/12,a:account/1,a:app; properties name, actor, type (Service, Person, Application), kind (source, sensor, person, hook, agent), recordings, namespaces.How:
events_content.added_by(db, rows)is now the one place that says who added an asset (the timeline'sasset.addedactivities use it too);graph_model.buildadds a Source node per actor over the recordings in scope and ADDED links, andgraph.build(the canvas) folds the same through the mentions into source–entity edges. Nothing is stored: the nodes come from each asset's own record, so there is no migration.Motivation and Context
Step 5 of the activity stream design (thread above): actors in the graph, and a Graph tab on the feed. Follows #570 and #622.
Types of changes
!in the title)Checklist:
make hookschecks it on commit).docs/accordingly.changelog.d/(graph-actors.md).Done questions (AGENTS.md)
GET /api/v1/graph/related(a Source among an asset's parents),POST /api/v1/graph/query(the Source label and ADDED type, listed by/graph/schema) and the MCP graph tools, unchanged.show=actors).test_graph.py::test_sources_are_actors_in_the_graph(schema, explorer parents, Cypher, canvas), jestgraph-explorer.test.ts(API node to canvas node, hidden until linked); docs graph.md, timeline.md, requirements.md, changelog.d;make openapiregenerated the client.events_content.actorsand the asset.added actor rules,graph_model.Graph, the canvas's node groups, shapes and edge kinds; no new machinery.Local CI (
ci/local-ci.sh) on this head: FastAPI embedded and server, Next.js, pre-commit, PR title and upgrade all pass.Generated by Claude Code