mirror of
https://github.com/Graphify-Labs/REAgraph.git
synced 2026-11-07 09:35:57 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83b3c417be | ||
|
|
d1323011ea |
No files matched your search
@@ -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 }}
|
||||
@@ -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"
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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
@@ -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"]
|
||||
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
@@ -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.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
Reference in new issue
Block a user