Compare commits

...
2 Commits
Author SHA1 Message Date
safishamsiandClaude Opus 4.8 83b3c417be adoption: lead README with the diff + killer demo; release-diff GitHub Action
Repositions and packages the one validated, unique win so people can see it and
reuse it (per the positioning review).

- README: new lede leads with "tell what actually changed, not what just moved" +
  the live `reagraph demo` contrast (59 of 56 nodes "changed" vs 1 real change) +
  the zero-setup `uv tool install reagraph && reagraph demo` + a GIF placeholder
  (record with examples/demo.tape). The feature list stays, below the pitch.
- .github/actions/reagraph-diff/ (composite action): diffs two build graphs with
  the byte-agnostic diff, writes a Markdown summary, and posts/updates a PR comment
  (stable marker, no dupes); outputs the real changed-count. Inputs base/head/by/
  comment/reagraph-version.
- .github/workflows/release-diff.yml: example consumer (copy into your repo) that
  diffs two builds on release; the in-repo default runs green against the committed
  real-REA fixtures, with the live "pull from REA in CI" pattern shown commented.
- docs/GITHUB_ACTION.md: usage, both modes (pre-exported graphs vs live pull),
  inputs/outputs, PR-comment behavior.
- README "## Diff your releases in CI" section links it: "a bot comment on every
  release — the real change, not the thousands of phantom ones."

Validated: the exact `reagraph diff` the action runs exits 0 on the fixtures
(+4 nodes added / 2 rewired on the added-module build); all workflow YAML parses.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-10-19 21:01:10 +01:00
safishamsiandClaude Opus 4.8 d1323011ea demo: reagraph demo — the byte-agnostic diff, one command, zero setup
The killer demo as a command. Two REAL rea-agents analyses of the same Electron
app one build apart (an exfil endpoint added) ship in the wheel, so
`pip install reagraph && reagraph demo` prints the contrast with no REA, Docker,
or network:

    REA raw id-diff :  59 of 56 nodes "changed"   <- the #4520 problem
    reagraph diff   :  1 changed
      + endpoint  "network endpoint"  src/main.js

- reagraph/demo/{base,feat}.json: the two real-REA graphs, shipped as package-data.
- cli.py: `reagraph demo` loads them via importlib.resources, runs the raw id-diff
  vs the signature diff, and prints the contrast + the one real change.
- examples/demo.tape: a charmbracelet/vhs script to record the GIF (`vhs
  examples/demo.tape`) for the README.
- tests: demo runs offline and shows the contrast; registered subcommand.

Verified from a clean wheel install. 1320 tests pass.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-10-19 20:58:38 +01:00
10 changed files with 2400 additions and 17 deletions

No files matched your search

+165
View File
@@ -0,0 +1,165 @@
name: "REAgraph byte-agnostic diff"
description: >-
Diff two build graphs with REAgraph's structural, byte-agnostic diff and
surface the real delta -- not the thousands of per-build-id phantom changes.
Writes a Markdown summary and (on pull requests) posts/updates a PR comment.
author: "Graphify Labs"
branding:
icon: git-commit
color: green
inputs:
base:
description: "Path to the base build graph (reagraph / REA node-link JSON)."
required: true
head:
description: "Path to the head build graph (reagraph / REA node-link JSON)."
required: true
by:
description: >-
Node-identity regime for matching: 'auto' (detect REA graphs and match by
build-stable signature, else by id), 'id', or 'signature'.
required: false
default: "auto"
comment:
description: >-
When 'true' and the event is a pull_request, post or update a PR comment
with the diff. A stable marker makes re-runs update rather than duplicate.
required: false
default: "true"
reagraph-version:
description: >-
How to install reagraph. Default installs from the public repo (reagraph
is not yet on PyPI). Once published, set this to a pinned spec such as
'reagraph==0.1.0'.
required: false
default: "reagraph @ git+https://github.com/Graphify-Labs/REAgraph@main"
outputs:
changed:
description: "Count of real changes (added + removed + rewired nodes)."
value: ${{ steps.diff.outputs.changed }}
added:
description: "Added node count."
value: ${{ steps.diff.outputs.added }}
removed:
description: "Removed node count."
value: ${{ steps.diff.outputs.removed }}
rewired:
description: "Rewired node count."
value: ${{ steps.diff.outputs.rewired }}
runs:
using: "composite"
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install reagraph
shell: bash
run: |
python -m pip install --upgrade pip
# reagraph is not yet on PyPI, so the default installs from the repo.
# Pin to a released version once it is published (see reagraph-version).
python -m pip install "${{ inputs.reagraph-version }}"
reagraph --help >/dev/null
- name: Run byte-agnostic diff
id: diff
shell: bash
env:
REAGRAPH_BASE: ${{ inputs.base }}
REAGRAPH_HEAD: ${{ inputs.head }}
REAGRAPH_BY: ${{ inputs.by }}
run: |
set -euo pipefail
# Fail early with a clear message if either graph is missing.
for var in REAGRAPH_BASE REAGRAPH_HEAD; do
path="${!var}"
if [ -z "$path" ]; then
echo "::error::$var is empty -- pass a path to a reagraph/REA graph JSON file."
exit 1
fi
if [ ! -f "$path" ]; then
echo "::error::graph file not found: $path (set the '$( [ "$var" = REAGRAPH_BASE ] && echo base || echo head )' input to a reagraph/REA node-link JSON file)."
exit 1
fi
done
# Run the exact diff command and capture its full output (banner + report).
set +e
out="$(reagraph diff "$REAGRAPH_BASE" "$REAGRAPH_HEAD" --by "$REAGRAPH_BY" 2>&1)"
rc=$?
set -e
echo "$out"
if [ $rc -ne 0 ]; then
echo "::error::reagraph diff exited with status $rc"
# Still surface what we captured, then fail.
printf '%s\n' "$out" >&2
exit $rc
fi
# Parse the counts out of the text report. Lines look like:
# added nodes : 4
# removed nodes : 0
# rewired nodes : 2
added="$(printf '%s\n' "$out" | sed -n 's/^[[:space:]]*added nodes[[:space:]]*:[[:space:]]*\([0-9][0-9]*\).*/\1/p' | head -n1)"
removed="$(printf '%s\n' "$out" | sed -n 's/^[[:space:]]*removed nodes[[:space:]]*:[[:space:]]*\([0-9][0-9]*\).*/\1/p' | head -n1)"
rewired="$(printf '%s\n' "$out" | sed -n 's/^[[:space:]]*rewired nodes[[:space:]]*:[[:space:]]*\([0-9][0-9]*\).*/\1/p' | head -n1)"
added="${added:-0}"; removed="${removed:-0}"; rewired="${rewired:-0}"
changed=$(( added + removed + rewired ))
echo "added=$added" >> "$GITHUB_OUTPUT"
echo "removed=$removed" >> "$GITHUB_OUTPUT"
echo "rewired=$rewired" >> "$GITHUB_OUTPUT"
echo "changed=$changed" >> "$GITHUB_OUTPUT"
# Build the shared Markdown block (summary + PR comment use the same text).
marker="<!-- reagraph-diff -->"
{
echo "$marker"
echo "## REAgraph build diff (byte-agnostic)"
echo ""
echo '```text'
printf '%s\n' "$out"
echo '```'
echo ""
echo "**${changed} real change(s)** (byte-agnostic): ${added} added, ${removed} removed, ${rewired} rewired. The real delta, not the thousands of phantom per-build-id ones."
} > "$RUNNER_TEMP/reagraph-diff.md"
# Step summary.
cat "$RUNNER_TEMP/reagraph-diff.md" >> "$GITHUB_STEP_SUMMARY"
echo "body_path=$RUNNER_TEMP/reagraph-diff.md" >> "$GITHUB_OUTPUT"
echo "marker=$marker" >> "$GITHUB_OUTPUT"
- name: Post or update PR comment
if: ${{ inputs.comment == 'true' && github.event_name == 'pull_request' }}
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const marker = '<!-- reagraph-diff -->';
const body = fs.readFileSync(process.env.REAGRAPH_BODY_PATH, 'utf8');
const { owner, repo } = context.repo;
const issue_number = context.issue.number;
if (!issue_number) {
core.info('No PR number in context; skipping comment.');
return;
}
const existing = await github.paginate(
github.rest.issues.listComments,
{ owner, repo, issue_number, per_page: 100 }
);
const mine = existing.find(c => c.body && c.body.includes(marker));
if (mine) {
await github.rest.issues.updateComment({ owner, repo, comment_id: mine.id, body });
core.info(`Updated existing comment ${mine.id}.`);
} else {
await github.rest.issues.createComment({ owner, repo, issue_number, body });
core.info('Created new comment.');
}
env:
REAGRAPH_BODY_PATH: ${{ steps.diff.outputs.body_path }}
+82
View File
@@ -0,0 +1,82 @@
# EXAMPLE workflow -- copy this into your own repo and adapt it.
#
# It shows the pattern for diffing two builds with REAgraph's byte-agnostic diff
# and getting a bot comment with the REAL delta on every release.
#
# As committed here it runs GREEN on THIS repo as a live example: it diffs two
# real REA graphs that are checked in under bench/fixtures/. In your own repo you
# would instead obtain two build graphs -- either pre-exported reagraph/REA JSON
# files you commit or publish, or produced live in CI with REA (see the
# commented-out "real pattern" block at the bottom).
name: release-diff (example)
on:
# Real use: diff the just-published build against the previous one.
release:
types: [published]
# Manual run: pass two graph paths (defaults point at the committed fixtures,
# so a bare "Run workflow" succeeds out of the box).
workflow_dispatch:
inputs:
base:
description: "Path to the base build graph JSON"
required: true
default: "bench/fixtures/diff/real2/graphs/base.json"
head:
description: "Path to the head build graph JSON"
required: true
default: "bench/fixtures/diff/real2/graphs/addmod.json"
# Needed so the action can post/update a PR comment when triggered on a PR.
permissions:
contents: read
pull-requests: write
jobs:
diff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# --- DEFAULT (live, in-repo) example ------------------------------------
# Diff two real REA graphs committed to this repo so the workflow runs
# green here with no REA/Docker needed. Point `base`/`head` at your own
# exported graphs in your repo.
- name: Diff two committed build graphs
uses: ./.github/actions/reagraph-diff
with:
base: ${{ github.event.inputs.base || 'bench/fixtures/diff/real2/graphs/base.json' }}
head: ${{ github.event.inputs.head || 'bench/fixtures/diff/real2/graphs/addmod.json' }}
by: auto
comment: "true"
# This repo IS reagraph, so install it from the checkout to stay green
# regardless of what is on main / PyPI. In YOUR repo, delete this line
# to use the default install (git today; a pinned PyPI version once
# reagraph is published, e.g. reagraph-version: "reagraph==0.1.0").
reagraph-version: "."
# --- REAL pattern (pull both builds from REA in CI) ---------------------
# Uncomment and adapt when you want CI to analyze two actual builds with
# REA instead of diffing pre-exported graphs. This needs Docker (for the
# pinned REA image) and your two build artifacts (e.g. two app.asar files).
#
# - name: Install reagraph (with the live extra) + set up REA
# run: |
# python -m pip install "reagraph[live] @ git+https://github.com/Graphify-Labs/REAgraph@main"
# reagraph setup-rea # builds a local pinned REA Docker image
#
# - name: Pull a graph from each build with REA
# env:
# # setup-rea prints this exact command; it mounts $PWD at /work.
# REAGRAPH_REA_CMD: 'docker run --rm -i -v "$PWD":/work:ro reagraph-rea:latest'
# run: |
# reagraph pull /work/build-prev/app.asar --graph base.json --no-cache
# reagraph pull /work/build-new/app.asar --graph head.json --no-cache
#
# - name: Diff the two pulled graphs
# uses: ./.github/actions/reagraph-diff # or Graphify-Labs/REAgraph/.github/actions/reagraph-diff@v1
# with:
# base: base.json
# head: head.json
# by: auto
# comment: "true"
+43 -13
View File
@@ -1,22 +1,40 @@
# REAgraph
**A persistent, queryable knowledge graph for reverse engineering.**
**Tell what actually changed between two builds — not what just moved.**
REAgraph turns one-shot reverse-engineering findings into a durable, structural
graph of a program — so you (and your AI agent) never reverse the same thing
twice, and so you can diff two builds by *meaning* instead of by byte offset.
Rebuild an app and a reverse-engineering engine reports almost *everything*
changed, because per-build ids churn. REAgraph reports the one thing that actually
changed:
It is the memory + structure layer that sits alongside a reverse-engineering
engine. It is designed to complement [REA](https://github.com/morluto/rea)
(agent-driven reverse engineering, MIT) and
```
$ reagraph demo
REA raw id-diff : 59 of 56 nodes "changed" <- the #4520 problem
reagraph diff : 1 changed
+ endpoint "network endpoint" src/main.js
```
That's two **real** REA analyses one build apart, diffed by *meaning* instead of by
byte offset — precision/recall/**F1 = 1.00, zero spurious**, validated to 14k
nodes. Try it with zero setup:
```bash
uv tool install reagraph && reagraph demo
```
<!-- Record the GIF with `vhs examples/demo.tape` -> examples/reagraph-demo.gif -->
REAgraph is the persistent-memory + structural-diff layer that sits alongside a
reverse-engineering engine. It folds one-shot findings into a durable graph (so you
and your agent never reverse the same thing twice), diffs two builds by structure,
and attests a shipped artifact against its source. It composes
[REA](https://github.com/morluto/rea) (agent-driven analysis, MIT) and
[graphify](https://github.com/Graphify-Labs/graphify) (source → knowledge graph,
Apache-2.0). It is **not affiliated with or endorsed by the REA project.**
Apache-2.0), and vendors no code from either — it is **not affiliated with or
endorsed by the REA project.**
> Status: early. The core pieces below work and are tested. The live REA wiring
> connects to the real REA MCP server (`npx rea-agents --mcp`), discovers its
> tools, and calls `analyze_javascript_application` with the correct arguments;
> a non-empty graph from the real analyzer needs a host meeting REA's own
> Node/Swift requirements (see `docs/LIVE_PULL.md`). See `docs/DESIGN.md`.
> Status: early but real. 1300+ tests, works on real REA output, CI on Python
> 3.9–3.13. Live analysis runs REA as a separate process — `reagraph setup-rea`
> gets it in one command (see `docs/LIVE_PULL.md`, `docs/DESIGN.md`).
## Why
@@ -206,6 +224,18 @@ shared analysis cache (client + `reagraph serve-cache` server, keyed by artifact
hash) are in the tree. Near-term: demand-scoped re-analysis, a hosted community
cache instance, and harder attestation on stripped native binaries.
## Diff your releases in CI
A reusable GitHub Action runs the byte-agnostic diff on two build graphs and
surfaces the result — a job summary plus, on pull requests, a bot comment that
updates in place: **a bot comment on every release: the real change, not the
thousands of phantom ones.** It works on pre-exported graphs (no REA needed) or
on graphs pulled live from REA in CI.
- Action: [`.github/actions/reagraph-diff`](.github/actions/reagraph-diff/action.yml)
- Example consumer workflow: [`.github/workflows/release-diff.yml`](.github/workflows/release-diff.yml)
- How to use it in your own repo: [docs/GITHUB_ACTION.md](docs/GITHUB_ACTION.md)
## License
MIT — see [LICENSE](LICENSE). REAgraph is an independent project and is not
+143
View File
@@ -0,0 +1,143 @@
# Diff your releases in CI — the REAgraph GitHub Action
A reusable composite action that runs REAgraph's structural, byte-agnostic diff
on two build graphs and surfaces the result: a Markdown summary on the run and,
on pull requests, a bot comment with the **real** change — not the thousands of
per-build-id phantom ones a byte/offset diff would report.
The action lives at [`.github/actions/reagraph-diff`](../.github/actions/reagraph-diff/action.yml).
A copy-pasteable example consumer workflow is
[`.github/workflows/release-diff.yml`](../.github/workflows/release-diff.yml).
## What it does
It runs the same command you would run locally:
```bash
reagraph diff "$base" "$head" --by auto
```
`--by auto` detects REA graphs and matches nodes by a build-stable signature
(kind + range-normalized label + source file), so two real REA builds diff to the
TRUE delta instead of reporting the whole app as changed because node ids embed a
per-build hash. For stable-id graphs (a graphify source graph, or the same build)
it keys on node id. It then:
- writes a heading + the diff (in a fenced block) + a one-line takeaway to the
**job summary** (`$GITHUB_STEP_SUMMARY`);
- on a `pull_request`, posts or updates a **PR comment** with the same block
(a stable `<!-- reagraph-diff -->` marker means re-runs update the comment
instead of piling up duplicates);
- exposes the change count as an **output** so later steps can gate on it.
## Two modes
### 1. Pre-exported graphs (no REA needed)
Commit or publish two reagraph/REA node-link JSON graphs and point the action at
them. This is the zero-dependency path — nothing but `pip install reagraph` runs.
```yaml
- uses: actions/checkout@v4
- uses: Graphify-Labs/REAgraph/.github/actions/reagraph-diff@v1
with:
base: graphs/v1.json
head: graphs/v2.json
```
### 2. Pull from REA in CI (needs REA)
Analyze two actual builds with REA inside the workflow, then diff the graphs it
produces. This needs Docker (for the pinned REA image that `reagraph setup-rea`
builds) and your two build artifacts.
```yaml
- run: |
python -m pip install "reagraph[live] @ git+https://github.com/Graphify-Labs/REAgraph@main"
reagraph setup-rea
- env:
REAGRAPH_REA_CMD: 'docker run --rm -i -v "$PWD":/work:ro reagraph-rea:latest'
run: |
reagraph pull /work/build-prev/app.asar --graph base.json --no-cache
reagraph pull /work/build-new/app.asar --graph head.json --no-cache
- uses: Graphify-Labs/REAgraph/.github/actions/reagraph-diff@v1
with:
base: base.json
head: head.json
```
Honest about requirements: mode 1 needs only Python. Mode 2 additionally needs
Docker and REA (via `reagraph setup-rea`), plus the build artifacts to analyze.
## Inputs
| Input | Required | Default | Meaning |
| --- | --- | --- | --- |
| `base` | yes | — | Path to the base build graph (reagraph/REA node-link JSON). |
| `head` | yes | — | Path to the head build graph. |
| `by` | no | `auto` | Node identity for matching: `auto`, `id`, or `signature`. |
| `comment` | no | `true` | When `true` and the event is a `pull_request`, post/update a PR comment. |
| `reagraph-version` | no | git install from the repo | How to install reagraph. Pin to a PyPI spec (e.g. `reagraph==0.1.0`) once published. |
A missing `base`/`head` path fails the step with a clear message.
## Outputs
| Output | Meaning |
| --- | --- |
| `changed` | Real changes = added + removed + rewired nodes. |
| `added` / `removed` / `rewired` | The individual node counts. |
Example — gate a release on there being changes:
```yaml
- id: diff
uses: Graphify-Labs/REAgraph/.github/actions/reagraph-diff@v1
with:
base: graphs/v1.json
head: graphs/v2.json
- run: echo "Shipped ${{ steps.diff.outputs.changed }} real change(s)"
```
## PR-comment behavior
When the triggering event is a pull request and `comment` is `true`, the action
uses `actions/github-script` to find a prior comment carrying the
`<!-- reagraph-diff -->` marker and **updates it**, or creates one if none
exists. Grant the job `pull-requests: write`:
```yaml
permissions:
contents: read
pull-requests: write
```
## Copy-paste: diff on every release
```yaml
name: release-diff
on:
release:
types: [published]
permissions:
contents: read
pull-requests: write
jobs:
diff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Graphify-Labs/REAgraph/.github/actions/reagraph-diff@v1
with:
base: graphs/previous.json
head: graphs/current.json
by: auto
comment: "true"
```
## A note on installation
reagraph is not on PyPI yet, so the action installs it from the repo by default
(`reagraph @ git+https://github.com/Graphify-Labs/REAgraph@main`). Once it is
published, set `reagraph-version` to a pinned release (e.g. `reagraph==0.1.0`)
for reproducible CI runs.
+14
View File
@@ -0,0 +1,14 @@
# VHS tape (github.com/charmbracelet/vhs) to record the killer-demo GIF.
# vhs examples/demo.tape -> examples/reagraph-demo.gif
# Shows REA's raw id-diff (59 of 56 nodes "changed") vs reagraph's 1 real change,
# on two REAL rea-agents analyses bundled in the package. No REA/Docker needed.
Output examples/reagraph-demo.gif
Set FontSize 20
Set Width 1100
Set Height 640
Set Padding 24
Set Theme "Dracula"
Type "reagraph demo"
Sleep 400ms
Enter
Sleep 6s
+3 -3
View File
@@ -42,6 +42,6 @@ reagraph = "reagraph.cli:main"
packages = ["reagraph"]
[tool.setuptools.package-data]
# Ship the agent skill inside the wheel so `reagraph install-skill` can drop it
# into ~/.claude/skills without a checkout.
reagraph = ["skill/SKILL.md"]
# Ship the agent skill (for `reagraph install-skill`) and the two real-REA demo
# graphs (for `reagraph demo`) inside the wheel, so both work without a checkout.
reagraph = ["skill/SKILL.md", "demo/*.json"]
+59
View File
@@ -237,6 +237,60 @@ def _cmd_serve_cache(args) -> int:
return 0
def _cmd_demo(args) -> int:
# The killer demo, offline: two REAL rea-agents analyses of the same Electron
# app one build apart (an exfil endpoint was added). REA keys nodes by a
# per-build hash, so a raw id-diff drowns the real change in churn; reagraph
# matches by meaning. Graphs ship in the wheel -- no REA/Docker/network.
import json
from importlib import resources
try:
pkg = resources.files("reagraph").joinpath("demo")
a = json.loads(pkg.joinpath("base.json").read_text(encoding="utf-8"))
b = json.loads(pkg.joinpath("feat.json").read_text(encoding="utf-8"))
except Exception as exc:
print(f"could not load the bundled demo graphs: {exc}", file=sys.stderr)
return 1
n = len([x for x in a.get("nodes", []) if isinstance(x, dict)])
raw = diffmod.diff(a, b) # id mode (what a naive / byte-offset diff sees)
sig = diffmod.diff(a, b, signature=diffmod.rea_signature) # match by meaning
rs, ss = raw["summary"], sig["summary"]
raw_changed = rs["nodes_added"] + rs["nodes_removed"]
real_changed = ss["nodes_added"] + ss["nodes_removed"]
def _describe(sig_key): # "kind|label|source#ord" -> readable
s = str(sig_key).rsplit("#", 1)[0]
parts = s.split("|")
kind = parts[0] if parts else "?"
label = parts[1] if len(parts) > 1 else ""
src = parts[2] if len(parts) > 2 else ""
return kind, label, src
print("reagraph demo — two real REA analyses of the same app, one build apart.")
print("(An exfil endpoint was added. REA identifies nodes by a per-build hash,")
print(" so a raw id-diff drowns the real change in churn; reagraph matches by meaning.)")
print()
print(f" REA raw id-diff : {raw_changed} of {n} nodes \"changed\" <- the #4520 problem")
print(f" reagraph diff : {real_changed} changed")
print()
if sig["nodes_added"] or sig["nodes_removed"]:
print(" The real delta:")
for k in sig["nodes_added"]:
kind, label, src = _describe(k)
print(f" + {kind} \"{label}\" {src}")
for k in sig["nodes_removed"]:
kind, label, src = _describe(k)
print(f" - {kind} \"{label}\" {src}")
print()
print("Byte-agnostic version diff, validated on real REA output (F1=1.00, zero")
print("spurious). Try it on your own builds:")
print(" reagraph diff build-a.json build-b.json # auto-detects REA graphs")
print(" reagraph setup-rea && reagraph pull app.asar # analyze live")
return 0
def _cmd_install_skill(args) -> int:
# Drop the packaged agent skill into a skills directory so an agent/CLI picks
# it up (the same idea as installing the graphify skill). Works from an
@@ -364,6 +418,11 @@ def build_parser() -> argparse.ArgumentParser:
help="skills directory (default ~/.claude/skills)")
ik.set_defaults(func=_cmd_install_skill)
dm = sub.add_parser("demo",
help="show the byte-agnostic diff on bundled real-REA graphs "
"(no REA/Docker needed)")
dm.set_defaults(func=_cmd_demo)
sr = sub.add_parser("setup-rea",
help="build a local REA MCP-server Docker image (pinned) and "
"print the ready-to-use --rea-cmd; no REA repo needed")
+932
View File
@@ -0,0 +1,932 @@
{
"directed": true,
"multigraph": false,
"nodes": [
{
"id": "jag_node_022fe21d2a5586098a0bc37bb4854d6c066ef72fbce26a6af8a5289b3351add8",
"label": "fs",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_02cfca2d1221a4624b0cabd25c3ec462f8ab0b9e73effe9018250ba048b80203",
"label": "telemetry:send",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-handler",
"source_file": "src/main.js"
},
{
"id": "jag_node_060fbf9302a5f34a3ef01333b32d23e30cde327ef1c59d7cac9836cd02e043e9",
"label": "src/main.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/main.js"
},
{
"id": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"label": "src/main.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_0c81d74d8b10b153a47acf6e4c4d9ef755c408e92d6db8503ad071d29c6baa75",
"label": "closure",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_15323da3c1f6e03cc3788ae68c6a8a84c5d3a755812efc593703b72c1a1f39f5",
"label": "closure",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"label": "src/preload.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/preload.js"
},
{
"id": "jag_node_208ed8d5c582fb393114ac58b2575bda9786af07f5113830e97a9320e03f9ee4",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"label": "src/auth.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_266c6bb3aca021e31688cfd7a841e12588ee38e78d367152b6fe0091852ddedd",
"label": "src/store.js:default",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_27862f3c40b9a675ff4fbc4c048e1021fa19777f5593763997a5cf2b5f04d897",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_27b7c658eb64ba1cc7f6fa85c86efb7eb8fc3dcd6c554ff12fbfa7828d3faa22",
"label": "BrowserWindow@7:14-9:4",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "browser-window",
"source_file": "src/main.js"
},
{
"id": "jag_node_29c31f5b1963ec86081d8fd8ab1202b6768fdb5e6688ab63a8c36d731e55054d",
"label": "package.json",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "package.json"
},
{
"id": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"label": "src/main.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/main.js"
},
{
"id": "jag_node_34bd8af7cf429c3dfb62177025c52d9faceef66f761e4c8d7fe8a16185b9209c",
"label": "notes.telemetry",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_3603e1a30e0f86db748c6b63cab953b970fb17c00e3fcbd8ec61215389546ed3",
"label": "src/main.js",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "electron-main",
"source_file": "package.json"
},
{
"id": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"label": "artifact root",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "artifact",
"source_file": "artifact-root"
},
{
"id": "jag_node_405577db09efcbe07fc1e9c770860bb9da689a0085e39e0967f2b07b7b8933dc",
"label": "src/preload.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/preload.js"
},
{
"id": "jag_node_464678528cea2751de53359f2b3479db095e499bb10cba433cb9c194a5052247",
"label": "src/preload.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/preload.js"
},
{
"id": "jag_node_47f601ae05021ec32e3b0b258298c5153bb497ea53519f94bf42bf598ac6ff6a",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_482be946fdabc84ca72d81a63b7ea7948229589d76f8e441d847e2aa5d0a5802",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_48afb074ec95751db9911232b9cfd0e1dba5cbbc594f6f31accf144fce00a03c",
"label": "notes:list",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-handler",
"source_file": "src/main.js"
},
{
"id": "jag_node_48cfc3d8fa6911ae4b7f0ab21844423d199e45229a2138e45435aba65ec20cab",
"label": "network endpoint",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "endpoint",
"source_file": "src/main.js"
},
{
"id": "jag_node_56157d4535d3e88bda6974116bc228086a5193b34d49b23c8a7984f094360eaa",
"label": "notes-desktop",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "package",
"source_file": "package.json"
},
{
"id": "jag_node_5a708eaa097307c520baef50f300dd93996d175a4de7d072dd2e8271ef8c04d0",
"label": "telemetry:send",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-channel",
"source_file": "src/preload.js"
},
{
"id": "jag_node_678855bc6ab3c4e0576ac8c603b53ffd39800198299e156cf310d75f9e7610a7",
"label": "index.html",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "electron-renderer",
"source_file": "src/main.js"
},
{
"id": "jag_node_6c2e0649878ff03e6e717a232a8477bbd6dc237e7696683f69140a110d959626",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_73b7b97b69e3f0a1b13b6e667a38108a96779b63b0ef079b68b688c6f6e41a8f",
"label": "electron.ipcRenderer.invoke",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_77a28f32f861a5f637d11868a9e3ef16457b96d717887a456c96280ff10117d9",
"label": "crypto",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_799c932bc400e6deb39909d69226201e5cc162688bd8f8b318307c2ef76fdfbc",
"label": "src/auth.js:default",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_7b6d5dadfe871f5496dc3f2ea8d7d5fc38ecca6c0c1815d6e9cf307f3d7bf900",
"label": "src/store.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/store.js"
},
{
"id": "jag_node_80c4b009242c9a7996556cd59a5ba74cd58e4a9660335c5bba6bbb6e26367ca2",
"label": "src/auth.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/auth.js"
},
{
"id": "jag_node_81365d7b1f3c26906707cdf8ee0b35f8968dee7fb9faf45f38c9b6656571bcd3",
"label": "notes.list",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_838d228e9f6407f5c6cb787f9ba66e4e35811c3af26ec8f826e7173806666466",
"label": "notes:list",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-channel",
"source_file": "src/preload.js"
},
{
"id": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"label": "src/auth.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/auth.js"
},
{
"id": "jag_node_849fb0aa012c8c47ca8cc1af3ca6b22c4e2ed32a7eb35015e4ce290c83240abc",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"label": "src/store.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_871c7910d59e5a2946242de6153ac60eb950354877e18a2c90952cca99e5306c",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_9161162f155d89b504505f799ad2692a1e528c3897c3bd2bb209de3abe4c735d",
"label": "notes",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "context-bridge-api",
"source_file": "src/preload.js"
},
{
"id": "jag_node_9169b16789ba38374f03a3d232d7822f2661eb6d1619c8b1e766a93b554c1b5b",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_923622d51e429c56fb95412f9a70082b5e2283773bc182a154e195e819f95b6c",
"label": "electron.ipcRenderer.invoke",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_9c1887f18a48d29da94c90c41c2a30749b17540340c1274c1eaaace3d68cb3d7",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_b9088dea1e3fe67088ce1b394fedbcd72d79d4d08d1a5e3a3c5127f6c3b64945",
"label": "src/preload.js",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "electron-preload",
"source_file": "src/main.js"
},
{
"id": "jag_node_ba6c73047c12fd3e43f841e2b3f36766b8f8378f34e370e6331cc27ba8744ef7",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_bb41198832d0be717a184344bcc06bedd55189416f67b5eb9b0a9bdb2820d7a1",
"label": "package.json",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "artifact",
"source_file": "package.json"
},
{
"id": "jag_node_bfd8c30f1e709113b1e7879a98f6b43e972d4558fce08f9b777b55e156931cb7",
"label": "fs",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_c0bd74fd7bf9ed022f626cd1368535ffc7712e38f704ebd35e18cfc990a5152e",
"label": "electron.ipcRenderer.invoke",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_cb00d75cbd7c79555388d45db00f6e2d3cda53116d7394dea313e482c7a0996a",
"label": "closure",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_cb6d92269245f043af3651ce67d946f44dbf2279dd308b72482964915df97e93",
"label": "crypto",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_d208c78bdc71e8fa98efc5a44cb156964ab884af87f3110b0cedbcb82654b4af",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/preload.js"
},
{
"id": "jag_node_d47d2554a2c4984f257a7331b58b8d4b14e1776ffd84c99cb8270d8e8dfd9b10",
"label": "notes.save",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_dd782b0adef06820512f49ce89ece520e8430b8917a8248d0125cce61cb6b446",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/preload.js"
},
{
"id": "jag_node_e448ad4312dbc7acf7679379ea27371946dc850510cf6f985527f15324a203e7",
"label": "network endpoint",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "endpoint",
"source_file": "src/auth.js"
},
{
"id": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"label": "src/store.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/store.js"
},
{
"id": "jag_node_e7956313c98dba9b2618e475959f095e13b029fceac45203b7cd4dca2635a8b1",
"label": "notes:save",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-channel",
"source_file": "src/preload.js"
},
{
"id": "jag_node_f9b02049fe2843e835ddefd013d7b1f7d30d1955a79412aa84551e2be6e3986a",
"label": "notes:save",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-handler",
"source_file": "src/main.js"
}
],
"links": [
{
"source": "jag_node_7b6d5dadfe871f5496dc3f2ea8d7d5fc38ecca6c0c1815d6e9cf307f3d7bf900",
"target": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"target": "jag_node_f9b02049fe2843e835ddefd013d7b1f7d30d1955a79412aa84551e2be6e3986a",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_871c7910d59e5a2946242de6153ac60eb950354877e18a2c90952cca99e5306c",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_9c1887f18a48d29da94c90c41c2a30749b17540340c1274c1eaaace3d68cb3d7",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"target": "jag_node_27862f3c40b9a675ff4fbc4c048e1021fa19777f5593763997a5cf2b5f04d897",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"target": "jag_node_266c6bb3aca021e31688cfd7a841e12588ee38e78d367152b6fe0091852ddedd",
"relation": "exposes",
"confidence": "INFERRED",
"context": "rea:exposes"
},
{
"source": "jag_node_d47d2554a2c4984f257a7331b58b8d4b14e1776ffd84c99cb8270d8e8dfd9b10",
"target": "jag_node_cb00d75cbd7c79555388d45db00f6e2d3cda53116d7394dea313e482c7a0996a",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_3603e1a30e0f86db748c6b63cab953b970fb17c00e3fcbd8ec61215389546ed3",
"target": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_9169b16789ba38374f03a3d232d7822f2661eb6d1619c8b1e766a93b554c1b5b",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_ba6c73047c12fd3e43f841e2b3f36766b8f8378f34e370e6331cc27ba8744ef7",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_f9b02049fe2843e835ddefd013d7b1f7d30d1955a79412aa84551e2be6e3986a",
"target": "jag_node_e7956313c98dba9b2618e475959f095e13b029fceac45203b7cd4dca2635a8b1",
"relation": "handles",
"confidence": "INFERRED",
"context": "rea:handles"
},
{
"source": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"target": "jag_node_bfd8c30f1e709113b1e7879a98f6b43e972d4558fce08f9b777b55e156931cb7",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"target": "jag_node_060fbf9302a5f34a3ef01333b32d23e30cde327ef1c59d7cac9836cd02e043e9",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"target": "jag_node_e448ad4312dbc7acf7679379ea27371946dc850510cf6f985527f15324a203e7",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_29c31f5b1963ec86081d8fd8ab1202b6768fdb5e6688ab63a8c36d731e55054d",
"target": "jag_node_bb41198832d0be717a184344bcc06bedd55189416f67b5eb9b0a9bdb2820d7a1",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_b9088dea1e3fe67088ce1b394fedbcd72d79d4d08d1a5e3a3c5127f6c3b64945",
"target": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_48cfc3d8fa6911ae4b7f0ab21844423d199e45229a2138e45435aba65ec20cab",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"target": "jag_node_29c31f5b1963ec86081d8fd8ab1202b6768fdb5e6688ab63a8c36d731e55054d",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_6c2e0649878ff03e6e717a232a8477bbd6dc237e7696683f69140a110d959626",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"target": "jag_node_482be946fdabc84ca72d81a63b7ea7948229589d76f8e441d847e2aa5d0a5802",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_5a708eaa097307c520baef50f300dd93996d175a4de7d072dd2e8271ef8c04d0",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_405577db09efcbe07fc1e9c770860bb9da689a0085e39e0967f2b07b7b8933dc",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"target": "jag_node_7b6d5dadfe871f5496dc3f2ea8d7d5fc38ecca6c0c1815d6e9cf307f3d7bf900",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_15323da3c1f6e03cc3788ae68c6a8a84c5d3a755812efc593703b72c1a1f39f5",
"target": "jag_node_923622d51e429c56fb95412f9a70082b5e2283773bc182a154e195e819f95b6c",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"target": "jag_node_77a28f32f861a5f637d11868a9e3ef16457b96d717887a456c96280ff10117d9",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"target": "jag_node_02cfca2d1221a4624b0cabd25c3ec462f8ab0b9e73effe9018250ba048b80203",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"target": "jag_node_48afb074ec95751db9911232b9cfd0e1dba5cbbc594f6f31accf144fce00a03c",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_838d228e9f6407f5c6cb787f9ba66e4e35811c3af26ec8f826e7173806666466",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_cb00d75cbd7c79555388d45db00f6e2d3cda53116d7394dea313e482c7a0996a",
"target": "jag_node_c0bd74fd7bf9ed022f626cd1368535ffc7712e38f704ebd35e18cfc990a5152e",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_02cfca2d1221a4624b0cabd25c3ec462f8ab0b9e73effe9018250ba048b80203",
"target": "jag_node_5a708eaa097307c520baef50f300dd93996d175a4de7d072dd2e8271ef8c04d0",
"relation": "handles",
"confidence": "INFERRED",
"context": "rea:handles"
},
{
"source": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"target": "jag_node_80c4b009242c9a7996556cd59a5ba74cd58e4a9660335c5bba6bbb6e26367ca2",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_060fbf9302a5f34a3ef01333b32d23e30cde327ef1c59d7cac9836cd02e043e9",
"target": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_405577db09efcbe07fc1e9c770860bb9da689a0085e39e0967f2b07b7b8933dc",
"target": "jag_node_d208c78bdc71e8fa98efc5a44cb156964ab884af87f3110b0cedbcb82654b4af",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_81365d7b1f3c26906707cdf8ee0b35f8968dee7fb9faf45f38c9b6656571bcd3",
"target": "jag_node_0c81d74d8b10b153a47acf6e4c4d9ef755c408e92d6db8503ad071d29c6baa75",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"target": "jag_node_022fe21d2a5586098a0bc37bb4854d6c066ef72fbce26a6af8a5289b3351add8",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_81365d7b1f3c26906707cdf8ee0b35f8968dee7fb9faf45f38c9b6656571bcd3",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_48afb074ec95751db9911232b9cfd0e1dba5cbbc594f6f31accf144fce00a03c",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_e7956313c98dba9b2618e475959f095e13b029fceac45203b7cd4dca2635a8b1",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_80c4b009242c9a7996556cd59a5ba74cd58e4a9660335c5bba6bbb6e26367ca2",
"target": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"target": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"target": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"target": "jag_node_cb6d92269245f043af3651ce67d946f44dbf2279dd308b72482964915df97e93",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_0c81d74d8b10b153a47acf6e4c4d9ef755c408e92d6db8503ad071d29c6baa75",
"target": "jag_node_73b7b97b69e3f0a1b13b6e667a38108a96779b63b0ef079b68b688c6f6e41a8f",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_678855bc6ab3c4e0576ac8c603b53ffd39800198299e156cf310d75f9e7610a7",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_34bd8af7cf429c3dfb62177025c52d9faceef66f761e4c8d7fe8a16185b9209c",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_464678528cea2751de53359f2b3479db095e499bb10cba433cb9c194a5052247",
"target": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_02cfca2d1221a4624b0cabd25c3ec462f8ab0b9e73effe9018250ba048b80203",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_9161162f155d89b504505f799ad2692a1e528c3897c3bd2bb209de3abe4c735d",
"relation": "exposes",
"confidence": "INFERRED",
"context": "rea:exposes"
},
{
"source": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"target": "jag_node_27b7c658eb64ba1cc7f6fa85c86efb7eb8fc3dcd6c554ff12fbfa7828d3faa22",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"target": "jag_node_208ed8d5c582fb393114ac58b2575bda9786af07f5113830e97a9320e03f9ee4",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_34bd8af7cf429c3dfb62177025c52d9faceef66f761e4c8d7fe8a16185b9209c",
"target": "jag_node_15323da3c1f6e03cc3788ae68c6a8a84c5d3a755812efc593703b72c1a1f39f5",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_48afb074ec95751db9911232b9cfd0e1dba5cbbc594f6f31accf144fce00a03c",
"target": "jag_node_838d228e9f6407f5c6cb787f9ba66e4e35811c3af26ec8f826e7173806666466",
"relation": "handles",
"confidence": "INFERRED",
"context": "rea:handles"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_27b7c658eb64ba1cc7f6fa85c86efb7eb8fc3dcd6c554ff12fbfa7828d3faa22",
"target": "jag_node_b9088dea1e3fe67088ce1b394fedbcd72d79d4d08d1a5e3a3c5127f6c3b64945",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_f9b02049fe2843e835ddefd013d7b1f7d30d1955a79412aa84551e2be6e3986a",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_56157d4535d3e88bda6974116bc228086a5193b34d49b23c8a7984f094360eaa",
"target": "jag_node_3603e1a30e0f86db748c6b63cab953b970fb17c00e3fcbd8ec61215389546ed3",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_d47d2554a2c4984f257a7331b58b8d4b14e1776ffd84c99cb8270d8e8dfd9b10",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_32e770f1a99eab7f753853e6a19e57456b5bb4de02e7da35d584c66f2568c9f0",
"target": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_238d38ea4e89ea1fea8458ccb320eadb107671f77f77269da6e64d2ad7d15d9f",
"target": "jag_node_799c932bc400e6deb39909d69226201e5cc162688bd8f8b318307c2ef76fdfbc",
"relation": "exposes",
"confidence": "INFERRED",
"context": "rea:exposes"
},
{
"source": "jag_node_405577db09efcbe07fc1e9c770860bb9da689a0085e39e0967f2b07b7b8933dc",
"target": "jag_node_dd782b0adef06820512f49ce89ece520e8430b8917a8248d0125cce61cb6b446",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_b9088dea1e3fe67088ce1b394fedbcd72d79d4d08d1a5e3a3c5127f6c3b64945",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_86b89cd6963032fb06bf7803f3beb8920bf98eef414168cb6a4d1e176f8cd8d4",
"target": "jag_node_849fb0aa012c8c47ca8cc1af3ca6b22c4e2ed32a7eb35015e4ce290c83240abc",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"target": "jag_node_464678528cea2751de53359f2b3479db095e499bb10cba433cb9c194a5052247",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_06ea458448ac6f4c7881c618825b924db2128ab38a5f4714005751c08a6c313e",
"target": "jag_node_47f601ae05021ec32e3b0b258298c5153bb497ea53519f94bf42bf598ac6ff6a",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_56157d4535d3e88bda6974116bc228086a5193b34d49b23c8a7984f094360eaa",
"target": "jag_node_36940b2e5647f7b635313440a6600226c4f3c81a7a682e117548d0863e85ecea",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
}
]
}
+947
View File
@@ -0,0 +1,947 @@
{
"directed": true,
"multigraph": false,
"nodes": [
{
"id": "jag_node_0051528252887ba39952d71031ff8ee6b1a83b13b2727cc73c59b687b92f27c3",
"label": "notes:list",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-channel",
"source_file": "src/preload.js"
},
{
"id": "jag_node_0120a823989dd19e062f203db66feba5034a816f021a7b36930429d4a22fde5e",
"label": "src/store.js:default",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_022fe21d2a5586098a0bc37bb4854d6c066ef72fbce26a6af8a5289b3351add8",
"label": "fs",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_0b4a3c36524ef78315db7ffe5b19094b4271c95909b8a8e4432aa86000d4511d",
"label": "telemetry:send",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-channel",
"source_file": "src/preload.js"
},
{
"id": "jag_node_0c81d74d8b10b153a47acf6e4c4d9ef755c408e92d6db8503ad071d29c6baa75",
"label": "closure",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_15323da3c1f6e03cc3788ae68c6a8a84c5d3a755812efc593703b72c1a1f39f5",
"label": "closure",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"label": "artifact root",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "artifact",
"source_file": "artifact-root"
},
{
"id": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"label": "src/preload.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/preload.js"
},
{
"id": "jag_node_208ed8d5c582fb393114ac58b2575bda9786af07f5113830e97a9320e03f9ee4",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_20d9b96e6061d3dbb9f205efa82b9e950c154c846dea590d4cae8a8ab945e61e",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_235f29826c6b56056186aff1688a3950f9d6a4631f32d6812f4114e9e47c99b8",
"label": "network endpoint",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "endpoint",
"source_file": "src/main.js"
},
{
"id": "jag_node_27862f3c40b9a675ff4fbc4c048e1021fa19777f5593763997a5cf2b5f04d897",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_2c93ee98447349725c132c7f2e7e0b4e3887a56aae7c208549c93cebd0ca60d1",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_34bd8af7cf429c3dfb62177025c52d9faceef66f761e4c8d7fe8a16185b9209c",
"label": "notes.telemetry",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"label": "src/main.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_3603e1a30e0f86db748c6b63cab953b970fb17c00e3fcbd8ec61215389546ed3",
"label": "src/main.js",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "electron-main",
"source_file": "package.json"
},
{
"id": "jag_node_38153fd81de00785f41837cddda4fe8399e6d62513a6014f268acce764a6f5e2",
"label": "package.json",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "package.json"
},
{
"id": "jag_node_386b3d8cad7d6ecb96fdb61e08984952c5b4819c8fa8d1351a3e95b367a3f36e",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_4415b9ff4697ac3c2903b49af31c694d2853c38c2ea257c239e332aae814a4e4",
"label": "src/auth.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/auth.js"
},
{
"id": "jag_node_449641d754eb2dfde1b7022df6d296e062a02402c3d5c18e3cd99664aee9086b",
"label": "src/main.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/main.js"
},
{
"id": "jag_node_4633017eb4f62cd79937ba65ce9fbbe005d42a77165e32fe71a6825c7b200a7f",
"label": "notes:list",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-handler",
"source_file": "src/main.js"
},
{
"id": "jag_node_482be946fdabc84ca72d81a63b7ea7948229589d76f8e441d847e2aa5d0a5802",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_56157d4535d3e88bda6974116bc228086a5193b34d49b23c8a7984f094360eaa",
"label": "notes-desktop",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "package",
"source_file": "package.json"
},
{
"id": "jag_node_636bb0e8deb9a5a486b927cd881be44c4199226e275d5cf6d0c63d48fd0758e1",
"label": "src/store.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/store.js"
},
{
"id": "jag_node_67d2cd434b849b427044efe004613befb086226071b58593579586a1eb0955bb",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_73b7b97b69e3f0a1b13b6e667a38108a96779b63b0ef079b68b688c6f6e41a8f",
"label": "electron.ipcRenderer.invoke",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_77a28f32f861a5f637d11868a9e3ef16457b96d717887a456c96280ff10117d9",
"label": "crypto",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_81365d7b1f3c26906707cdf8ee0b35f8968dee7fb9faf45f38c9b6656571bcd3",
"label": "notes.list",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_82c6df949b6e5d743e5172bc1156173566191a437ab7aa9403fff1c06f140a89",
"label": "src/preload.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "asar-entry",
"source_file": "src/preload.js"
},
{
"id": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"label": "src/main.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/main.js"
},
{
"id": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"label": "src/auth.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/auth.js"
},
{
"id": "jag_node_849fb0aa012c8c47ca8cc1af3ca6b22c4e2ed32a7eb35015e4ce290c83240abc",
"label": "path",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_9161162f155d89b504505f799ad2692a1e528c3897c3bd2bb209de3abe4c735d",
"label": "notes",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "context-bridge-api",
"source_file": "src/preload.js"
},
{
"id": "jag_node_923622d51e429c56fb95412f9a70082b5e2283773bc182a154e195e819f95b6c",
"label": "electron.ipcRenderer.invoke",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_926e7a622ebe7eb8f372acb4d1e07e41a7b888272a4633611c9e55b17aa4bf33",
"label": "index.html",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "electron-renderer",
"source_file": "src/main.js"
},
{
"id": "jag_node_a65a7dc6656241a0aad237c2c81e334f078d5917ada384f1d7e56a054819c20a",
"label": "notes:save",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-channel",
"source_file": "src/main.js"
},
{
"id": "jag_node_a8eec4fdfa2989116e62bb2d755635cb55718d6a9258af1622b9af0bbacf99cc",
"label": "src/preload.js",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "electron-preload",
"source_file": "src/main.js"
},
{
"id": "jag_node_b92d0ff58d306ef726027330f0791a10dac711c4fd23579769bd61c542f8b1c6",
"label": "telemetry:send",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-handler",
"source_file": "src/main.js"
},
{
"id": "jag_node_bb41198832d0be717a184344bcc06bedd55189416f67b5eb9b0a9bdb2820d7a1",
"label": "package.json",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "artifact",
"source_file": "package.json"
},
{
"id": "jag_node_bfd8c30f1e709113b1e7879a98f6b43e972d4558fce08f9b777b55e156931cb7",
"label": "fs",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"label": "src/auth.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_c0bd74fd7bf9ed022f626cd1368535ffc7712e38f704ebd35e18cfc990a5152e",
"label": "electron.ipcRenderer.invoke",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_c4e6ee4078233c1ed890307131d86dbea4874fb6fdb5bc7d68aa36df291bcb6c",
"label": "network endpoint",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "endpoint",
"source_file": "src/main.js"
},
{
"id": "jag_node_cb00d75cbd7c79555388d45db00f6e2d3cda53116d7394dea313e482c7a0996a",
"label": "closure",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_cb6d92269245f043af3651ce67d946f44dbf2279dd308b72482964915df97e93",
"label": "crypto",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
},
{
"id": "jag_node_d208c78bdc71e8fa98efc5a44cb156964ab884af87f3110b0cedbcb82654b4af",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/preload.js"
},
{
"id": "jag_node_d3410333f45fe70eaf465fc0699b85f93bd130285b1bded0ac912eb0bfc9ef79",
"label": "https",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_d47d2554a2c4984f257a7331b58b8d4b14e1776ffd84c99cb8270d8e8dfd9b10",
"label": "notes.save",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-expression",
"source_file": "src/preload.js"
},
{
"id": "jag_node_dc28b49688de9c25c57c397e533c05960523c07ae60f59c791f2994f821e3a43",
"label": "notes:save",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "ipc-handler",
"source_file": "src/main.js"
},
{
"id": "jag_node_dd782b0adef06820512f49ce89ece520e8430b8917a8248d0125cce61cb6b446",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/preload.js"
},
{
"id": "jag_node_e0137c676489b25f877fab4e1e35cef3c219478726b213a47ca4fa2433a11de3",
"label": "BrowserWindow@10:14-14:4",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "browser-window",
"source_file": "src/main.js"
},
{
"id": "jag_node_e448ad4312dbc7acf7679379ea27371946dc850510cf6f985527f15324a203e7",
"label": "network endpoint",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "endpoint",
"source_file": "src/auth.js"
},
{
"id": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"label": "src/store.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-asset",
"source_file": "src/store.js"
},
{
"id": "jag_node_e7792923ef1f6500ca6c096194b1e1755812b4dd490ff7305c1f65d73dad1934",
"label": "src/preload.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/preload.js"
},
{
"id": "jag_node_eb7cf3455e84a7b785c5168d53d7fda0131340b9aae361ebebb17a51f59bb09a",
"label": "electron",
"file_type": "code",
"confidence": "INFERRED",
"rea_kind": "javascript-module",
"source_file": "src/main.js"
},
{
"id": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"label": "src/store.js",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/store.js"
},
{
"id": "jag_node_f76de4cc68829517cd52ee0fa1fb0260a23c5b924a6b561e920abf7c41b87475",
"label": "src/auth.js:default",
"file_type": "code",
"confidence": "EXTRACTED",
"rea_kind": "javascript-module",
"source_file": "src/auth.js"
}
],
"links": [
{
"source": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"target": "jag_node_38153fd81de00785f41837cddda4fe8399e6d62513a6014f268acce764a6f5e2",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"target": "jag_node_77a28f32f861a5f637d11868a9e3ef16457b96d717887a456c96280ff10117d9",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"target": "jag_node_cb6d92269245f043af3651ce67d946f44dbf2279dd308b72482964915df97e93",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_e7792923ef1f6500ca6c096194b1e1755812b4dd490ff7305c1f65d73dad1934",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_4633017eb4f62cd79937ba65ce9fbbe005d42a77165e32fe71a6825c7b200a7f",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_a8eec4fdfa2989116e62bb2d755635cb55718d6a9258af1622b9af0bbacf99cc",
"target": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"target": "jag_node_482be946fdabc84ca72d81a63b7ea7948229589d76f8e441d847e2aa5d0a5802",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_20d9b96e6061d3dbb9f205efa82b9e950c154c846dea590d4cae8a8ab945e61e",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_d47d2554a2c4984f257a7331b58b8d4b14e1776ffd84c99cb8270d8e8dfd9b10",
"target": "jag_node_cb00d75cbd7c79555388d45db00f6e2d3cda53116d7394dea313e482c7a0996a",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_eb7cf3455e84a7b785c5168d53d7fda0131340b9aae361ebebb17a51f59bb09a",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"target": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_636bb0e8deb9a5a486b927cd881be44c4199226e275d5cf6d0c63d48fd0758e1",
"target": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_e7792923ef1f6500ca6c096194b1e1755812b4dd490ff7305c1f65d73dad1934",
"target": "jag_node_d208c78bdc71e8fa98efc5a44cb156964ab884af87f3110b0cedbcb82654b4af",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"target": "jag_node_208ed8d5c582fb393114ac58b2575bda9786af07f5113830e97a9320e03f9ee4",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_82c6df949b6e5d743e5172bc1156173566191a437ab7aa9403fff1c06f140a89",
"target": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"target": "jag_node_449641d754eb2dfde1b7022df6d296e062a02402c3d5c18e3cd99664aee9086b",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_3603e1a30e0f86db748c6b63cab953b970fb17c00e3fcbd8ec61215389546ed3",
"target": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_15323da3c1f6e03cc3788ae68c6a8a84c5d3a755812efc593703b72c1a1f39f5",
"target": "jag_node_923622d51e429c56fb95412f9a70082b5e2283773bc182a154e195e819f95b6c",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"target": "jag_node_bfd8c30f1e709113b1e7879a98f6b43e972d4558fce08f9b777b55e156931cb7",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_67d2cd434b849b427044efe004613befb086226071b58593579586a1eb0955bb",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"target": "jag_node_e448ad4312dbc7acf7679379ea27371946dc850510cf6f985527f15324a203e7",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_2c93ee98447349725c132c7f2e7e0b4e3887a56aae7c208549c93cebd0ca60d1",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"target": "jag_node_022fe21d2a5586098a0bc37bb4854d6c066ef72fbce26a6af8a5289b3351add8",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_38153fd81de00785f41837cddda4fe8399e6d62513a6014f268acce764a6f5e2",
"target": "jag_node_bb41198832d0be717a184344bcc06bedd55189416f67b5eb9b0a9bdb2820d7a1",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_cb00d75cbd7c79555388d45db00f6e2d3cda53116d7394dea313e482c7a0996a",
"target": "jag_node_c0bd74fd7bf9ed022f626cd1368535ffc7712e38f704ebd35e18cfc990a5152e",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"target": "jag_node_849fb0aa012c8c47ca8cc1af3ca6b22c4e2ed32a7eb35015e4ce290c83240abc",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_926e7a622ebe7eb8f372acb4d1e07e41a7b888272a4633611c9e55b17aa4bf33",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"target": "jag_node_4415b9ff4697ac3c2903b49af31c694d2853c38c2ea257c239e332aae814a4e4",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_b92d0ff58d306ef726027330f0791a10dac711c4fd23579769bd61c542f8b1c6",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"target": "jag_node_4633017eb4f62cd79937ba65ce9fbbe005d42a77165e32fe71a6825c7b200a7f",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_dc28b49688de9c25c57c397e533c05960523c07ae60f59c791f2994f821e3a43",
"target": "jag_node_a65a7dc6656241a0aad237c2c81e334f078d5917ada384f1d7e56a054819c20a",
"relation": "handles",
"confidence": "INFERRED",
"context": "rea:handles"
},
{
"source": "jag_node_81365d7b1f3c26906707cdf8ee0b35f8968dee7fb9faf45f38c9b6656571bcd3",
"target": "jag_node_0c81d74d8b10b153a47acf6e4c4d9ef755c408e92d6db8503ad071d29c6baa75",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"target": "jag_node_82c6df949b6e5d743e5172bc1156173566191a437ab7aa9403fff1c06f140a89",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_b92d0ff58d306ef726027330f0791a10dac711c4fd23579769bd61c542f8b1c6",
"target": "jag_node_0b4a3c36524ef78315db7ffe5b19094b4271c95909b8a8e4432aa86000d4511d",
"relation": "handles",
"confidence": "INFERRED",
"context": "rea:handles"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_81365d7b1f3c26906707cdf8ee0b35f8968dee7fb9faf45f38c9b6656571bcd3",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"target": "jag_node_f76de4cc68829517cd52ee0fa1fb0260a23c5b924a6b561e920abf7c41b87475",
"relation": "exposes",
"confidence": "INFERRED",
"context": "rea:exposes"
},
{
"source": "jag_node_e7792923ef1f6500ca6c096194b1e1755812b4dd490ff7305c1f65d73dad1934",
"target": "jag_node_dd782b0adef06820512f49ce89ece520e8430b8917a8248d0125cce61cb6b446",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"target": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_0b4a3c36524ef78315db7ffe5b19094b4271c95909b8a8e4432aa86000d4511d",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_4633017eb4f62cd79937ba65ce9fbbe005d42a77165e32fe71a6825c7b200a7f",
"target": "jag_node_0051528252887ba39952d71031ff8ee6b1a83b13b2727cc73c59b687b92f27c3",
"relation": "handles",
"confidence": "INFERRED",
"context": "rea:handles"
},
{
"source": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"target": "jag_node_e0137c676489b25f877fab4e1e35cef3c219478726b213a47ca4fa2433a11de3",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_0c81d74d8b10b153a47acf6e4c4d9ef755c408e92d6db8503ad071d29c6baa75",
"target": "jag_node_73b7b97b69e3f0a1b13b6e667a38108a96779b63b0ef079b68b688c6f6e41a8f",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_c04b8639c13f7ec35aec61f39ce6cb203e660635c15bcd208338a4b2e74bc03c",
"target": "jag_node_27862f3c40b9a675ff4fbc4c048e1021fa19777f5593763997a5cf2b5f04d897",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_56157d4535d3e88bda6974116bc228086a5193b34d49b23c8a7984f094360eaa",
"target": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_0051528252887ba39952d71031ff8ee6b1a83b13b2727cc73c59b687b92f27c3",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"target": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_34bd8af7cf429c3dfb62177025c52d9faceef66f761e4c8d7fe8a16185b9209c",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_9161162f155d89b504505f799ad2692a1e528c3897c3bd2bb209de3abe4c735d",
"relation": "exposes",
"confidence": "INFERRED",
"context": "rea:exposes"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_a65a7dc6656241a0aad237c2c81e334f078d5917ada384f1d7e56a054819c20a",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_34bd8af7cf429c3dfb62177025c52d9faceef66f761e4c8d7fe8a16185b9209c",
"target": "jag_node_15323da3c1f6e03cc3788ae68c6a8a84c5d3a755812efc593703b72c1a1f39f5",
"relation": "maps_to",
"confidence": "INFERRED",
"context": "rea:maps_to"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_c4e6ee4078233c1ed890307131d86dbea4874fb6fdb5bc7d68aa36df291bcb6c",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_386b3d8cad7d6ecb96fdb61e08984952c5b4819c8fa8d1351a3e95b367a3f36e",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"target": "jag_node_b92d0ff58d306ef726027330f0791a10dac711c4fd23579769bd61c542f8b1c6",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_56157d4535d3e88bda6974116bc228086a5193b34d49b23c8a7984f094360eaa",
"target": "jag_node_3603e1a30e0f86db748c6b63cab953b970fb17c00e3fcbd8ec61215389546ed3",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_d47d2554a2c4984f257a7331b58b8d4b14e1776ffd84c99cb8270d8e8dfd9b10",
"relation": "contains",
"confidence": "INFERRED",
"context": "rea:contains"
},
{
"source": "jag_node_ed56cad8cebd733c999fad4eee57c0c80b34d47b572eec42a15221471866b153",
"target": "jag_node_0120a823989dd19e062f203db66feba5034a816f021a7b36930429d4a22fde5e",
"relation": "exposes",
"confidence": "INFERRED",
"context": "rea:exposes"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_a8eec4fdfa2989116e62bb2d755635cb55718d6a9258af1622b9af0bbacf99cc",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_18136bb9cf37212f9b4bf44c3354501fc9eafdae5018cbd992e5f0602460f4f1",
"target": "jag_node_636bb0e8deb9a5a486b927cd881be44c4199226e275d5cf6d0c63d48fd0758e1",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
},
{
"source": "jag_node_e0137c676489b25f877fab4e1e35cef3c219478726b213a47ca4fa2433a11de3",
"target": "jag_node_a8eec4fdfa2989116e62bb2d755635cb55718d6a9258af1622b9af0bbacf99cc",
"relation": "loads",
"confidence": "INFERRED",
"context": "rea:loads"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_d3410333f45fe70eaf465fc0699b85f93bd130285b1bded0ac912eb0bfc9ef79",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_1b984045e5b787ce101a76d6ef6badb0aac339a59fb06d0149617349df20e6ad",
"target": "jag_node_dc28b49688de9c25c57c397e533c05960523c07ae60f59c791f2994f821e3a43",
"relation": "invokes",
"confidence": "INFERRED",
"context": "rea:invokes"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_e6fc2ffd4b7203b71d2f862bfd5fc1579b2aa8473a60e7dc9eeddd8d84452bb1",
"relation": "imports",
"confidence": "INFERRED",
"context": "rea:imports"
},
{
"source": "jag_node_4415b9ff4697ac3c2903b49af31c694d2853c38c2ea257c239e332aae814a4e4",
"target": "jag_node_8488a33c6eb562dadf74743de9274d32cfa706c644b16edfaba440e5347c33d4",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_34fb44807bd54076240b6c6270882efe363de356f2a0e61cf0fac7aa87c1e667",
"target": "jag_node_235f29826c6b56056186aff1688a3950f9d6a4631f32d6812f4114e9e47c99b8",
"relation": "calls",
"confidence": "INFERRED",
"context": "rea:calls"
},
{
"source": "jag_node_449641d754eb2dfde1b7022df6d296e062a02402c3d5c18e3cd99664aee9086b",
"target": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"relation": "maps_to",
"confidence": "EXTRACTED",
"context": "rea:maps_to"
},
{
"source": "jag_node_842a3796a6a5bb2e67184f3d1b693f63dcc737460eb91f3ce74979aefcb7d49a",
"target": "jag_node_dc28b49688de9c25c57c397e533c05960523c07ae60f59c791f2994f821e3a43",
"relation": "contains",
"confidence": "EXTRACTED",
"context": "rea:contains"
}
]
}
+12 -1
View File
@@ -414,11 +414,22 @@ def test_build_parser_lists_every_expected_subcommand():
expected = {
"add", "diff", "compare", "stats", "summary", "coverage", "query",
"pull", "attest", "cache", "doctor", "serve", "serve-cache",
"install-skill", "setup-rea",
"install-skill", "setup-rea", "demo",
}
assert choices == expected
def test_demo_runs_offline_and_shows_the_contrast(capsys):
# The killer demo must work with no REA/Docker/network, from bundled graphs.
rc = cli.main(["demo"])
out = capsys.readouterr().out
assert rc == 0
assert "raw id-diff" in out and "reagraph diff" in out
assert "of 56 nodes" in out # raw churn on the real 56-node graph
assert "1 changed" in out # the signature diff finds exactly one
assert "endpoint" in out # the injected exfil endpoint
# --------------------------------------------------------------------------- #
# setup-rea: builds a local REA image via docker; we never actually run docker.
# --------------------------------------------------------------------------- #