eling 0.2.0__tar.gz → 0.2.2__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.
- {eling-0.2.0/src/eling.egg-info → eling-0.2.2}/PKG-INFO +50 -3
- {eling-0.2.0 → eling-0.2.2}/README.md +48 -1
- {eling-0.2.0 → eling-0.2.2}/pyproject.toml +2 -2
- {eling-0.2.0 → eling-0.2.2}/src/eling/__init__.py +9 -4
- eling-0.2.2/src/eling/brain.py +813 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/config.py +8 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/hooks.py +55 -8
- {eling-0.2.0 → eling-0.2.2}/src/eling/mcp_server.py +37 -0
- eling-0.2.2/src/eling/verify_on_stop.py +307 -0
- {eling-0.2.0 → eling-0.2.2/src/eling.egg-info}/PKG-INFO +50 -3
- {eling-0.2.0 → eling-0.2.2}/src/eling.egg-info/SOURCES.txt +3 -1
- {eling-0.2.0 → eling-0.2.2}/tests/test_export.py +1 -1
- {eling-0.2.0 → eling-0.2.2}/tests/test_hooks.py +8 -7
- {eling-0.2.0 → eling-0.2.2}/tests/test_think.py +1 -1
- eling-0.2.2/tests/test_verify_on_stop.py +171 -0
- eling-0.2.0/src/eling/brain.py +0 -567
- {eling-0.2.0 → eling-0.2.2}/LICENSE +0 -0
- {eling-0.2.0 → eling-0.2.2}/setup.cfg +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/adapters/__init__.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/cli.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/compress.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/decay.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/export.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/hermes_plugin.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/__init__.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/builtin.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/code.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/code_index.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/facts.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/hrr.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/kb.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/layers/notion.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/permissions.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/privacy.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/scripts/benchmark.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/snapshot.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling/utils/__init__.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling.egg-info/dependency_links.txt +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling.egg-info/requires.txt +0 -0
- {eling-0.2.0 → eling-0.2.2}/src/eling.egg-info/top_level.txt +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_adapters.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_brain.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_builtin.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_cli.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_compress.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_config.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_contradiction.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_decay.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_facts.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_graph.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_hrr.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_kb.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_permissions.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_privacy.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_schema_packs.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_snapshot.py +0 -0
- {eling-0.2.0 → eling-0.2.2}/tests/test_sync.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eling
|
|
3
|
-
Version: 0.2.
|
|
4
|
-
Summary: Unified second brain for AI agents — 5-tier memory, HRR reasoning,
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: Unified second brain for AI agents — 5-tier memory, HRR reasoning, 10 MCP tools, conditional verify-on-stop
|
|
5
5
|
Author: PatrickNoFilter
|
|
6
6
|
License: MIT
|
|
7
7
|
Keywords: memory,mcp,ai-agent,second-brain,hrr
|
|
@@ -28,7 +28,7 @@ Dynamic: license-file
|
|
|
28
28
|
|
|
29
29
|
# 🧠 Eling
|
|
30
30
|
|
|
31
|
-
**Unified second brain for AI agents — 5-tier memory, HRR reasoning,
|
|
31
|
+
**Unified second brain for AI agents — 5-tier memory, HRR reasoning, 10 MCP tools, conditional verify-on-stop**
|
|
32
32
|
|
|
33
33
|
*"Eling" (Javanese): to remember, to be conscious, to be aware*
|
|
34
34
|
|
|
@@ -66,6 +66,7 @@ All accessible via **9 MCP tools** from a single stdio server:
|
|
|
66
66
|
| `eling_stats` | Show per-layer statistics |
|
|
67
67
|
| `eling_think` | Synthesis + gap analysis across layers |
|
|
68
68
|
| `eling_export` | Full brain export as JSON or Markdown |
|
|
69
|
+
| `eling_verify` | Query/record verification status (conditional) |
|
|
69
70
|
|
|
70
71
|
## 🚀 Quick Start
|
|
71
72
|
|
|
@@ -200,6 +201,52 @@ print(result) # {"layer": "notion", "page_id": "...", ...}
|
|
|
200
201
|
|
|
201
202
|
> **Note**: `eling_reflect` and `remember(layer="notion")` check availability at call time and return a clear error if any config is missing — no silent failures.
|
|
202
203
|
|
|
204
|
+
## 🛡️ Verify-on-Stop (Conditional)
|
|
205
|
+
|
|
206
|
+
Eling provides **verify-on-stop** nudges for AI agents that lack built-in
|
|
207
|
+
verification (e.g., OpenCode, OpenClaw, Cursor, Windsurf). When running under
|
|
208
|
+
Hermes, this feature automatically **skips** — because Hermes already has its
|
|
209
|
+
own `agent/verification_stop.py`.
|
|
210
|
+
|
|
211
|
+
### How it works
|
|
212
|
+
|
|
213
|
+
1. **Auto-detection** — Eling detects the host agent from environment variables
|
|
214
|
+
(`HERMES_SESSION_SOURCE` → Hermes, `OPENCODE_HOME` → OpenCode, etc.)
|
|
215
|
+
2. **File edit tracking** — When code files are edited via hooks or MCP tools,
|
|
216
|
+
eling records them in a verification ledger
|
|
217
|
+
3. **Verification nudge** — If code was edited but no passing tests/verification
|
|
218
|
+
was recorded, eling produces a `[System: ...]` nudge message
|
|
219
|
+
4. **Recording** — Agents can call `eling_verify` MCP tool to record verification
|
|
220
|
+
results (`passed`, `failed`, `skipped`)
|
|
221
|
+
|
|
222
|
+
### Usage via MCP
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
// Query current status
|
|
226
|
+
{ "method": "tools/call", "params": { "name": "eling_verify", "arguments": {} } }
|
|
227
|
+
|
|
228
|
+
// Record a passing verification
|
|
229
|
+
{ "method": "tools/call", "params": {
|
|
230
|
+
"name": "eling_verify",
|
|
231
|
+
"arguments": { "status": "passed", "command": "pytest", "output": "364 passed" }
|
|
232
|
+
} }
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Config
|
|
236
|
+
|
|
237
|
+
| Key | Default | Env | Description |
|
|
238
|
+
|-----|---------|-----|-------------|
|
|
239
|
+
| `verify_on_stop` | `true` | `ELING_VERIFY_ON_STOP` | Enable nudges for non-Hermes agents |
|
|
240
|
+
| `verify_on_stop_max_attempts` | `2` | `ELING_VERIFY_MAX_ATTEMPTS` | Max nudges per session |
|
|
241
|
+
| `adapter` | `hermes` | `ELING_ADAPTER` | Force adapter type |
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
plugins:
|
|
245
|
+
eling:
|
|
246
|
+
adapter: auto # auto-detect from env
|
|
247
|
+
verify_on_stop: true
|
|
248
|
+
```
|
|
249
|
+
|
|
203
250
|
## 🏗️ Architecture
|
|
204
251
|
|
|
205
252
|
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# 🧠 Eling
|
|
4
4
|
|
|
5
|
-
**Unified second brain for AI agents — 5-tier memory, HRR reasoning,
|
|
5
|
+
**Unified second brain for AI agents — 5-tier memory, HRR reasoning, 10 MCP tools, conditional verify-on-stop**
|
|
6
6
|
|
|
7
7
|
*"Eling" (Javanese): to remember, to be conscious, to be aware*
|
|
8
8
|
|
|
@@ -40,6 +40,7 @@ All accessible via **9 MCP tools** from a single stdio server:
|
|
|
40
40
|
| `eling_stats` | Show per-layer statistics |
|
|
41
41
|
| `eling_think` | Synthesis + gap analysis across layers |
|
|
42
42
|
| `eling_export` | Full brain export as JSON or Markdown |
|
|
43
|
+
| `eling_verify` | Query/record verification status (conditional) |
|
|
43
44
|
|
|
44
45
|
## 🚀 Quick Start
|
|
45
46
|
|
|
@@ -174,6 +175,52 @@ print(result) # {"layer": "notion", "page_id": "...", ...}
|
|
|
174
175
|
|
|
175
176
|
> **Note**: `eling_reflect` and `remember(layer="notion")` check availability at call time and return a clear error if any config is missing — no silent failures.
|
|
176
177
|
|
|
178
|
+
## 🛡️ Verify-on-Stop (Conditional)
|
|
179
|
+
|
|
180
|
+
Eling provides **verify-on-stop** nudges for AI agents that lack built-in
|
|
181
|
+
verification (e.g., OpenCode, OpenClaw, Cursor, Windsurf). When running under
|
|
182
|
+
Hermes, this feature automatically **skips** — because Hermes already has its
|
|
183
|
+
own `agent/verification_stop.py`.
|
|
184
|
+
|
|
185
|
+
### How it works
|
|
186
|
+
|
|
187
|
+
1. **Auto-detection** — Eling detects the host agent from environment variables
|
|
188
|
+
(`HERMES_SESSION_SOURCE` → Hermes, `OPENCODE_HOME` → OpenCode, etc.)
|
|
189
|
+
2. **File edit tracking** — When code files are edited via hooks or MCP tools,
|
|
190
|
+
eling records them in a verification ledger
|
|
191
|
+
3. **Verification nudge** — If code was edited but no passing tests/verification
|
|
192
|
+
was recorded, eling produces a `[System: ...]` nudge message
|
|
193
|
+
4. **Recording** — Agents can call `eling_verify` MCP tool to record verification
|
|
194
|
+
results (`passed`, `failed`, `skipped`)
|
|
195
|
+
|
|
196
|
+
### Usage via MCP
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
// Query current status
|
|
200
|
+
{ "method": "tools/call", "params": { "name": "eling_verify", "arguments": {} } }
|
|
201
|
+
|
|
202
|
+
// Record a passing verification
|
|
203
|
+
{ "method": "tools/call", "params": {
|
|
204
|
+
"name": "eling_verify",
|
|
205
|
+
"arguments": { "status": "passed", "command": "pytest", "output": "364 passed" }
|
|
206
|
+
} }
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Config
|
|
210
|
+
|
|
211
|
+
| Key | Default | Env | Description |
|
|
212
|
+
|-----|---------|-----|-------------|
|
|
213
|
+
| `verify_on_stop` | `true` | `ELING_VERIFY_ON_STOP` | Enable nudges for non-Hermes agents |
|
|
214
|
+
| `verify_on_stop_max_attempts` | `2` | `ELING_VERIFY_MAX_ATTEMPTS` | Max nudges per session |
|
|
215
|
+
| `adapter` | `hermes` | `ELING_ADAPTER` | Force adapter type |
|
|
216
|
+
|
|
217
|
+
```yaml
|
|
218
|
+
plugins:
|
|
219
|
+
eling:
|
|
220
|
+
adapter: auto # auto-detect from env
|
|
221
|
+
verify_on_stop: true
|
|
222
|
+
```
|
|
223
|
+
|
|
177
224
|
## 🏗️ Architecture
|
|
178
225
|
|
|
179
226
|
```
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "eling"
|
|
7
|
-
version = "0.2.
|
|
8
|
-
description = "Unified second brain for AI agents — 5-tier memory, HRR reasoning,
|
|
7
|
+
version = "0.2.2"
|
|
8
|
+
description = "Unified second brain for AI agents — 5-tier memory, HRR reasoning, 10 MCP tools, conditional verify-on-stop"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
11
11
|
requires-python = ">=3.10"
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
"""Eling — unified second brain for AI agents.
|
|
2
2
|
|
|
3
3
|
5-layer architecture: builtin / facts / kb / code / notion
|
|
4
|
+
Features: HRR reasoning, gap analysis, Notion auto-sync, verify-on-stop.
|
|
4
5
|
"""
|
|
5
6
|
|
|
6
|
-
__version__ = "0.2.
|
|
7
|
-
__all__ = [
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
__version__ = "0.2.2"
|
|
8
|
+
__all__ = [
|
|
9
|
+
"Brain", "HookRegistry", "ALL_HOOKS", "register_default_hooks",
|
|
10
|
+
"remember", "recall", "reason", "resolve_config", "set_config_key",
|
|
11
|
+
"get_config", "describe_config",
|
|
12
|
+
"verify_on_stop", "detect_host_agent", "host_has_verify_on_stop",
|
|
13
|
+
]
|
|
10
14
|
|
|
11
15
|
from .brain import Brain
|
|
12
16
|
from .hooks import HookRegistry, ALL_HOOKS, register_default_hooks
|
|
13
17
|
from .config import resolve_config, set_config_key, get_config, describe_config
|
|
18
|
+
from . import verify_on_stop
|
|
14
19
|
|
|
15
20
|
_default_brain: Brain | None = None
|
|
16
21
|
|