ideagraph-live 0.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ideagraph_live-0.5.0/LICENSE +21 -0
- ideagraph_live-0.5.0/PKG-INFO +176 -0
- ideagraph_live-0.5.0/README.md +152 -0
- ideagraph_live-0.5.0/ideagraph/__init__.py +1 -0
- ideagraph_live-0.5.0/ideagraph/__main__.py +350 -0
- ideagraph_live-0.5.0/ideagraph/brain.py +503 -0
- ideagraph_live-0.5.0/ideagraph/brain_engine.py +351 -0
- ideagraph_live-0.5.0/ideagraph/decay.py +65 -0
- ideagraph_live-0.5.0/ideagraph/demo.py +164 -0
- ideagraph_live-0.5.0/ideagraph/embedder.py +79 -0
- ideagraph_live-0.5.0/ideagraph/engine.py +58 -0
- ideagraph_live-0.5.0/ideagraph/evals.py +556 -0
- ideagraph_live-0.5.0/ideagraph/gaps.py +206 -0
- ideagraph_live-0.5.0/ideagraph/hygiene.py +188 -0
- ideagraph_live-0.5.0/ideagraph/intent.py +202 -0
- ideagraph_live-0.5.0/ideagraph/merge.py +211 -0
- ideagraph_live-0.5.0/ideagraph/model.py +56 -0
- ideagraph_live-0.5.0/ideagraph/reranker.py +67 -0
- ideagraph_live-0.5.0/ideagraph/retrieval.py +153 -0
- ideagraph_live-0.5.0/ideagraph/server.py +211 -0
- ideagraph_live-0.5.0/ideagraph/similarity.py +42 -0
- ideagraph_live-0.5.0/ideagraph/store.py +63 -0
- ideagraph_live-0.5.0/ideagraph/suggester.py +63 -0
- ideagraph_live-0.5.0/ideagraph/web/app.js +574 -0
- ideagraph_live-0.5.0/ideagraph/web/index.html +169 -0
- ideagraph_live-0.5.0/ideagraph/web/review.html +104 -0
- ideagraph_live-0.5.0/ideagraph/web/review.js +210 -0
- ideagraph_live-0.5.0/ideagraph_live.egg-info/PKG-INFO +176 -0
- ideagraph_live-0.5.0/ideagraph_live.egg-info/SOURCES.txt +52 -0
- ideagraph_live-0.5.0/ideagraph_live.egg-info/dependency_links.txt +1 -0
- ideagraph_live-0.5.0/ideagraph_live.egg-info/entry_points.txt +2 -0
- ideagraph_live-0.5.0/ideagraph_live.egg-info/requires.txt +10 -0
- ideagraph_live-0.5.0/ideagraph_live.egg-info/top_level.txt +1 -0
- ideagraph_live-0.5.0/pyproject.toml +40 -0
- ideagraph_live-0.5.0/setup.cfg +4 -0
- ideagraph_live-0.5.0/tests/test_audit_fixes.py +821 -0
- ideagraph_live-0.5.0/tests/test_brain.py +382 -0
- ideagraph_live-0.5.0/tests/test_cli.py +155 -0
- ideagraph_live-0.5.0/tests/test_decay.py +54 -0
- ideagraph_live-0.5.0/tests/test_demo.py +62 -0
- ideagraph_live-0.5.0/tests/test_evals.py +222 -0
- ideagraph_live-0.5.0/tests/test_frontend_xss.py +110 -0
- ideagraph_live-0.5.0/tests/test_gaps.py +99 -0
- ideagraph_live-0.5.0/tests/test_git_mode.py +116 -0
- ideagraph_live-0.5.0/tests/test_graph.py +101 -0
- ideagraph_live-0.5.0/tests/test_hygiene.py +163 -0
- ideagraph_live-0.5.0/tests/test_hygiene_reports.py +100 -0
- ideagraph_live-0.5.0/tests/test_ig_cycle_gate.py +65 -0
- ideagraph_live-0.5.0/tests/test_intent.py +50 -0
- ideagraph_live-0.5.0/tests/test_merge.py +216 -0
- ideagraph_live-0.5.0/tests/test_retrieval.py +43 -0
- ideagraph_live-0.5.0/tests/test_server.py +48 -0
- ideagraph_live-0.5.0/tests/test_server_errors.py +75 -0
- ideagraph_live-0.5.0/tests/test_tools.py +174 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 SaltKing0
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ideagraph-live
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Self-growing idea graph: Ingest β Embed β Suggest β Visualize. A generic engine for a persistent knowledge graph backed by your own private git repo (the 'brain').
|
|
5
|
+
Author: SaltKing0
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: knowledge-graph,memory,agent,embeddings,rag,zettelkasten
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
11
|
+
Classifier: Environment :: Web Environment
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Requires-Dist: fastapi==0.116.0
|
|
16
|
+
Requires-Dist: uvicorn[standard]==0.35.0
|
|
17
|
+
Requires-Dist: httpx==0.28.1
|
|
18
|
+
Requires-Dist: numpy==2.3.1
|
|
19
|
+
Provides-Extra: st
|
|
20
|
+
Requires-Dist: sentence-transformers==5.0.0; extra == "st"
|
|
21
|
+
Provides-Extra: dev
|
|
22
|
+
Requires-Dist: pytest==8.4.0; extra == "dev"
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
# IdeaGraph Live Engine πΈοΈ
|
|
26
|
+
|
|
27
|
+
**A self-maintaining, self-improving knowledge graph engine.**
|
|
28
|
+
|
|
29
|
+
Ingest ideas as Markdown nodes into your own private git repo (the "brain"),
|
|
30
|
+
let the engine embed, link, and consolidate them β then steer research with
|
|
31
|
+
coverage gaps and grow the engine itself through an eval-gated feedback loop.
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
## Quickstart
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# 1) set up the engine (Python 3.10+) β lightweight core, HashEmbedder works
|
|
39
|
+
# out of the box; add the real embedder with: pip install -e ".[st]"
|
|
40
|
+
python3 -m venv .venv
|
|
41
|
+
.venv/bin/pip install -e ".[dev]"
|
|
42
|
+
|
|
43
|
+
# 2) create a brain β `--demo` seeds it with an example graph
|
|
44
|
+
ig init --demo # 13 nodes, 19 edges, 2 pending suggestions,
|
|
45
|
+
# 1 island (ig status), 1 near-dup pair (ig near-dup)
|
|
46
|
+
|
|
47
|
+
# 3) see it in the web UI
|
|
48
|
+
uvicorn ideagraph.server:app --port 8000 # β http://localhost:8000
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or install straight from the repository:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pip install git+https://github.com/SaltKing0/ideagraph-live.git
|
|
55
|
+
# with the real (semantic) embedder β pulls PyTorch:
|
|
56
|
+
pip install "ideagraph-live[st] @ git+https://github.com/SaltKing0/ideagraph-live.git"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The web UI ships inside the package, so a pip install serves it out of the
|
|
60
|
+
box. Without the `[st]` extra the engine falls back to the deterministic
|
|
61
|
+
HashEmbedder (lower quality, zero model download) with a notice on first use.
|
|
62
|
+
|
|
63
|
+
Start from scratch instead with `ig init` (empty brain), connect a private
|
|
64
|
+
remote with `ig init --remote <url>`, or auto-clone an existing brain on
|
|
65
|
+
first use via `IG_BRAIN_REMOTE=<url>`. Every ingest is a git commit β the
|
|
66
|
+
graph grows as visible history.
|
|
67
|
+
|
|
68
|
+
## How it works
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
ββββββββββββββββ git commit+push ββββββββββββββββββββββ git pull βββββββββββββββββββ
|
|
72
|
+
β your agent β βββββββββββββββββββΆ β your brain repo β ββββββββββββΆ β Live Engine β
|
|
73
|
+
β (CLI/API) β (knowledge) β (private, Markdown)β (sync) β IngestβEmbedβ β
|
|
74
|
+
ββββββββββββββββ ββββββββββββββββββββββ SuggestβViz+HITL β
|
|
75
|
+
βββββββββββββββββββ
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
- **Nodes** β one Markdown file per idea (`nodes/<id>.md`, YAML frontmatter:
|
|
79
|
+
`type: semantic|episodic|procedural`, `status: probation|active|tombstone`)
|
|
80
|
+
- **Edges** β `edges.jsonl`, typed (`similar`, `extends`,
|
|
81
|
+
`contradicts`, `supersedes`, `continues`, `same_as`),
|
|
82
|
+
bi-temporal (`valid_from`/`valid_to`) with confidence + provenance
|
|
83
|
+
- **vectors.jsonl** β embedding cache Β· **INDEX.md** β generated TOC
|
|
84
|
+
- **Human in the loop** β similarity edges β₯ 0.95 auto-accept, the rest go
|
|
85
|
+
pending for review (CLI `ig pending`/`ig accept` or the web UI)
|
|
86
|
+
|
|
87
|
+
## Connect your agent
|
|
88
|
+
|
|
89
|
+
The engine is built for agents β the web UI is the human side, the CLI/API is
|
|
90
|
+
the agent side. Any agent that can run shell commands can own a brain:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# the agent ingests what it learns (source is logged per node)
|
|
94
|
+
ig ingest "User prefers short answers over long essays" --source agent
|
|
95
|
+
cat research-note.md | ig ingest - --source research # from stdin
|
|
96
|
+
|
|
97
|
+
# suggestions pile up in pending; the human reviews when they feel like it
|
|
98
|
+
ig pending # what needs a decision
|
|
99
|
+
ig accept <edge_id> # or in the web UI, with one click
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Because the brain is a git repo, the agent and the human can work from
|
|
103
|
+
different machines: point the brain at a private remote (`ig init --remote`)
|
|
104
|
+
and every ingest pulls, commits, and pushes β the graph syncs itself, and the
|
|
105
|
+
git history shows exactly what the agent learned and when.
|
|
106
|
+
|
|
107
|
+
Prefer HTTP? Run the server and `POST /api/ingest` with
|
|
108
|
+
`{"text": "...", "source": "agent"}` β same dedupe, same pending flow,
|
|
109
|
+
live updates in the web UI over WebSocket.
|
|
110
|
+
|
|
111
|
+
A realistic loop: the agent ingests findings as it works, `ig gaps` tells it
|
|
112
|
+
which topics are thin, `ig status`/`ig near-dup` flag hygiene work β the
|
|
113
|
+
self-evolving pipeline below automates exactly that cycle.
|
|
114
|
+
|
|
115
|
+
## The self-evolving loop (`tools/`)
|
|
116
|
+
|
|
117
|
+
The engine doesn't just store knowledge β it improves itself, in three tiers:
|
|
118
|
+
|
|
119
|
+
1. **Measure** (`ig_cycle`) β safe mechanical ingest runs (marker-scan β
|
|
120
|
+
dry-run β real ingest) record per-run metrics: nodes added, islands,
|
|
121
|
+
duration, acceptance.
|
|
122
|
+
2. **Adapt** (`ig_adapt`) β an adaptive controller reads the metrics and
|
|
123
|
+
steers the next runs: research topics with the thinnest coverage get
|
|
124
|
+
higher weight, batch size adapts to timeout history.
|
|
125
|
+
3. **Extend** (`ig_evolve`) β brain research becomes engine features via
|
|
126
|
+
red-spec eval cases in the roadmap harness, flipped to the golden set
|
|
127
|
+
only after implementation (first self-extension: `IG_EDGE_CONF_FLOOR`).
|
|
128
|
+
|
|
129
|
+
## CLI
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
ig init [--remote <url>] [--demo] # create a brain (empty / connected / demo)
|
|
133
|
+
ig ingest "New idea ..." # ingest (duplicates are merged)
|
|
134
|
+
ig search "attention" # hybrid search (dense + BM25 via RRF)
|
|
135
|
+
ig pending / accept / reject # review edge suggestions
|
|
136
|
+
ig gaps [--min 10] [--json] # coverage report + under-covered areas
|
|
137
|
+
ig status / near-dup # hygiene: islands, orphans, near-dup pairs
|
|
138
|
+
ig merge <survivor> <deletee> # consolidate a near-duplicate pair
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Configuration
|
|
142
|
+
|
|
143
|
+
| Variable | Default | Meaning |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| `IG_BRAIN_PATH` | `~/ideagraph-brain` | path to the brain clone |
|
|
146
|
+
| `IG_BRAIN_REMOTE` | *(none)* | remote brain URL β auto-clones on first use |
|
|
147
|
+
| `IG_BRAIN_MODE` | `git` | `local` = filesystem only (tests) |
|
|
148
|
+
| `IDEAGRAPH_EMBEDDER` | `st` | `hash` = deterministic test embedder |
|
|
149
|
+
| `IDEAGRAPH_AUTO_ACCEPT` | off | `1` = auto-accept all suggested edges |
|
|
150
|
+
| `IDEAGRAPH_INTENT_PENDING` | off | `1` = intent edges become pending (HITL) |
|
|
151
|
+
| `IDEAGRAPH_RERANKER` | none | optional cross-encoder rerank pass |
|
|
152
|
+
| `IG_BOT_NAME` / `IG_BOT_EMAIL` | ideagraph-bot | git commit author |
|
|
153
|
+
|
|
154
|
+
Dedupe: near-duplicate ingests (cosine β₯ 0.92) merge into the existing node
|
|
155
|
+
(`sources:` provenance); opt out with `allow_duplicates: true`.
|
|
156
|
+
|
|
157
|
+
## Tests
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
.venv/bin/python -m pytest tests/ -q # 233 tests
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Status
|
|
164
|
+
|
|
165
|
+
Core features, the hygiene loop, and the self-evolving pipeline are
|
|
166
|
+
implemented; release `v0.5.0` is published β see
|
|
167
|
+
[CHANGELOG.md](CHANGELOG.md).
|
|
168
|
+
|
|
169
|
+
## Open source / privacy
|
|
170
|
+
|
|
171
|
+
The **engine is generic** (this public repo) β the **brain is your private
|
|
172
|
+
repo** with your data. The engine contains no brain data.
|
|
173
|
+
|
|
174
|
+
## License
|
|
175
|
+
|
|
176
|
+
MIT β see `LICENSE`.
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# IdeaGraph Live Engine πΈοΈ
|
|
2
|
+
|
|
3
|
+
**A self-maintaining, self-improving knowledge graph engine.**
|
|
4
|
+
|
|
5
|
+
Ingest ideas as Markdown nodes into your own private git repo (the "brain"),
|
|
6
|
+
let the engine embed, link, and consolidate them β then steer research with
|
|
7
|
+
coverage gaps and grow the engine itself through an eval-gated feedback loop.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
## Quickstart
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# 1) set up the engine (Python 3.10+) β lightweight core, HashEmbedder works
|
|
15
|
+
# out of the box; add the real embedder with: pip install -e ".[st]"
|
|
16
|
+
python3 -m venv .venv
|
|
17
|
+
.venv/bin/pip install -e ".[dev]"
|
|
18
|
+
|
|
19
|
+
# 2) create a brain β `--demo` seeds it with an example graph
|
|
20
|
+
ig init --demo # 13 nodes, 19 edges, 2 pending suggestions,
|
|
21
|
+
# 1 island (ig status), 1 near-dup pair (ig near-dup)
|
|
22
|
+
|
|
23
|
+
# 3) see it in the web UI
|
|
24
|
+
uvicorn ideagraph.server:app --port 8000 # β http://localhost:8000
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Or install straight from the repository:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install git+https://github.com/SaltKing0/ideagraph-live.git
|
|
31
|
+
# with the real (semantic) embedder β pulls PyTorch:
|
|
32
|
+
pip install "ideagraph-live[st] @ git+https://github.com/SaltKing0/ideagraph-live.git"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The web UI ships inside the package, so a pip install serves it out of the
|
|
36
|
+
box. Without the `[st]` extra the engine falls back to the deterministic
|
|
37
|
+
HashEmbedder (lower quality, zero model download) with a notice on first use.
|
|
38
|
+
|
|
39
|
+
Start from scratch instead with `ig init` (empty brain), connect a private
|
|
40
|
+
remote with `ig init --remote <url>`, or auto-clone an existing brain on
|
|
41
|
+
first use via `IG_BRAIN_REMOTE=<url>`. Every ingest is a git commit β the
|
|
42
|
+
graph grows as visible history.
|
|
43
|
+
|
|
44
|
+
## How it works
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
ββββββββββββββββ git commit+push ββββββββββββββββββββββ git pull βββββββββββββββββββ
|
|
48
|
+
β your agent β βββββββββββββββββββΆ β your brain repo β ββββββββββββΆ β Live Engine β
|
|
49
|
+
β (CLI/API) β (knowledge) β (private, Markdown)β (sync) β IngestβEmbedβ β
|
|
50
|
+
ββββββββββββββββ ββββββββββββββββββββββ SuggestβViz+HITL β
|
|
51
|
+
βββββββββββββββββββ
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- **Nodes** β one Markdown file per idea (`nodes/<id>.md`, YAML frontmatter:
|
|
55
|
+
`type: semantic|episodic|procedural`, `status: probation|active|tombstone`)
|
|
56
|
+
- **Edges** β `edges.jsonl`, typed (`similar`, `extends`,
|
|
57
|
+
`contradicts`, `supersedes`, `continues`, `same_as`),
|
|
58
|
+
bi-temporal (`valid_from`/`valid_to`) with confidence + provenance
|
|
59
|
+
- **vectors.jsonl** β embedding cache Β· **INDEX.md** β generated TOC
|
|
60
|
+
- **Human in the loop** β similarity edges β₯ 0.95 auto-accept, the rest go
|
|
61
|
+
pending for review (CLI `ig pending`/`ig accept` or the web UI)
|
|
62
|
+
|
|
63
|
+
## Connect your agent
|
|
64
|
+
|
|
65
|
+
The engine is built for agents β the web UI is the human side, the CLI/API is
|
|
66
|
+
the agent side. Any agent that can run shell commands can own a brain:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# the agent ingests what it learns (source is logged per node)
|
|
70
|
+
ig ingest "User prefers short answers over long essays" --source agent
|
|
71
|
+
cat research-note.md | ig ingest - --source research # from stdin
|
|
72
|
+
|
|
73
|
+
# suggestions pile up in pending; the human reviews when they feel like it
|
|
74
|
+
ig pending # what needs a decision
|
|
75
|
+
ig accept <edge_id> # or in the web UI, with one click
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Because the brain is a git repo, the agent and the human can work from
|
|
79
|
+
different machines: point the brain at a private remote (`ig init --remote`)
|
|
80
|
+
and every ingest pulls, commits, and pushes β the graph syncs itself, and the
|
|
81
|
+
git history shows exactly what the agent learned and when.
|
|
82
|
+
|
|
83
|
+
Prefer HTTP? Run the server and `POST /api/ingest` with
|
|
84
|
+
`{"text": "...", "source": "agent"}` β same dedupe, same pending flow,
|
|
85
|
+
live updates in the web UI over WebSocket.
|
|
86
|
+
|
|
87
|
+
A realistic loop: the agent ingests findings as it works, `ig gaps` tells it
|
|
88
|
+
which topics are thin, `ig status`/`ig near-dup` flag hygiene work β the
|
|
89
|
+
self-evolving pipeline below automates exactly that cycle.
|
|
90
|
+
|
|
91
|
+
## The self-evolving loop (`tools/`)
|
|
92
|
+
|
|
93
|
+
The engine doesn't just store knowledge β it improves itself, in three tiers:
|
|
94
|
+
|
|
95
|
+
1. **Measure** (`ig_cycle`) β safe mechanical ingest runs (marker-scan β
|
|
96
|
+
dry-run β real ingest) record per-run metrics: nodes added, islands,
|
|
97
|
+
duration, acceptance.
|
|
98
|
+
2. **Adapt** (`ig_adapt`) β an adaptive controller reads the metrics and
|
|
99
|
+
steers the next runs: research topics with the thinnest coverage get
|
|
100
|
+
higher weight, batch size adapts to timeout history.
|
|
101
|
+
3. **Extend** (`ig_evolve`) β brain research becomes engine features via
|
|
102
|
+
red-spec eval cases in the roadmap harness, flipped to the golden set
|
|
103
|
+
only after implementation (first self-extension: `IG_EDGE_CONF_FLOOR`).
|
|
104
|
+
|
|
105
|
+
## CLI
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
ig init [--remote <url>] [--demo] # create a brain (empty / connected / demo)
|
|
109
|
+
ig ingest "New idea ..." # ingest (duplicates are merged)
|
|
110
|
+
ig search "attention" # hybrid search (dense + BM25 via RRF)
|
|
111
|
+
ig pending / accept / reject # review edge suggestions
|
|
112
|
+
ig gaps [--min 10] [--json] # coverage report + under-covered areas
|
|
113
|
+
ig status / near-dup # hygiene: islands, orphans, near-dup pairs
|
|
114
|
+
ig merge <survivor> <deletee> # consolidate a near-duplicate pair
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Configuration
|
|
118
|
+
|
|
119
|
+
| Variable | Default | Meaning |
|
|
120
|
+
|---|---|---|
|
|
121
|
+
| `IG_BRAIN_PATH` | `~/ideagraph-brain` | path to the brain clone |
|
|
122
|
+
| `IG_BRAIN_REMOTE` | *(none)* | remote brain URL β auto-clones on first use |
|
|
123
|
+
| `IG_BRAIN_MODE` | `git` | `local` = filesystem only (tests) |
|
|
124
|
+
| `IDEAGRAPH_EMBEDDER` | `st` | `hash` = deterministic test embedder |
|
|
125
|
+
| `IDEAGRAPH_AUTO_ACCEPT` | off | `1` = auto-accept all suggested edges |
|
|
126
|
+
| `IDEAGRAPH_INTENT_PENDING` | off | `1` = intent edges become pending (HITL) |
|
|
127
|
+
| `IDEAGRAPH_RERANKER` | none | optional cross-encoder rerank pass |
|
|
128
|
+
| `IG_BOT_NAME` / `IG_BOT_EMAIL` | ideagraph-bot | git commit author |
|
|
129
|
+
|
|
130
|
+
Dedupe: near-duplicate ingests (cosine β₯ 0.92) merge into the existing node
|
|
131
|
+
(`sources:` provenance); opt out with `allow_duplicates: true`.
|
|
132
|
+
|
|
133
|
+
## Tests
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
.venv/bin/python -m pytest tests/ -q # 233 tests
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Status
|
|
140
|
+
|
|
141
|
+
Core features, the hygiene loop, and the self-evolving pipeline are
|
|
142
|
+
implemented; release `v0.5.0` is published β see
|
|
143
|
+
[CHANGELOG.md](CHANGELOG.md).
|
|
144
|
+
|
|
145
|
+
## Open source / privacy
|
|
146
|
+
|
|
147
|
+
The **engine is generic** (this public repo) β the **brain is your private
|
|
148
|
+
repo** with your data. The engine contains no brain data.
|
|
149
|
+
|
|
150
|
+
## License
|
|
151
|
+
|
|
152
|
+
MIT β see `LICENSE`.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""IdeaGraph Live Engine."""
|