cluxion-Agentplugin-AutoClearMemory 0.3.2__tar.gz → 0.3.4__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.
Files changed (60) hide show
  1. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/PKG-INFO +26 -1
  2. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/README.md +25 -0
  3. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/pyproject.toml +3 -2
  4. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/__init__.py +1 -1
  5. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/adapters/hermes.py +40 -0
  6. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/cli.py +32 -1
  7. cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/__init__.py +5 -0
  8. cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/catalog.json +469 -0
  9. cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/framework.py +177 -0
  10. cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/probes.py +114 -0
  11. cluxion_agentplugin_autoclearmemory-0.3.4/tests/test_doctor.py +81 -0
  12. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_hermes_adapter.py +2 -1
  13. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/.gitignore +0 -0
  14. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/README.md +0 -0
  15. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/agent-surfaces.md +0 -0
  16. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/architecture.md +0 -0
  17. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/design.md +0 -0
  18. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/installation.md +0 -0
  19. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/rust-architecture.md +0 -0
  20. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/LICENSE +0 -0
  21. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/claude/.claude-plugin/plugin.json +0 -0
  22. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/claude/skills/forgetforge/SKILL.md +0 -0
  23. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/codex/mcp-snippet.toml +0 -0
  24. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/cron/forgetforge-prune.cron +0 -0
  25. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/hermes/README.md +0 -0
  26. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/systemd/forgetforge-pruner.service +0 -0
  27. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/config.yaml.example +0 -0
  28. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/Cargo.lock +0 -0
  29. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/Cargo.toml +0 -0
  30. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/pyproject.toml +0 -0
  31. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/lib.rs +0 -0
  32. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/main.rs +0 -0
  33. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/scoring.rs +0 -0
  34. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/tier.rs +0 -0
  35. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/adapters/__init__.py +0 -0
  36. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/archive.py +0 -0
  37. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/config.py +0 -0
  38. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/contradiction.py +0 -0
  39. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/db.py +0 -0
  40. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/hot_inject.py +0 -0
  41. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/import_brief.py +0 -0
  42. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/init_assets.py +0 -0
  43. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/pruner.py +0 -0
  44. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/recall.py +0 -0
  45. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/rust_bridge.py +0 -0
  46. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/schemas.py +0 -0
  47. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/store.py +0 -0
  48. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_cli.py +0 -0
  49. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_config.py +0 -0
  50. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_contradiction.py +0 -0
  51. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_db_recall.py +0 -0
  52. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_fts.py +0 -0
  53. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_hot_inject.py +0 -0
  54. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_import_brief.py +0 -0
  55. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_pruner_archive.py +0 -0
  56. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_recall_batching.py +0 -0
  57. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_recall_stats.py +0 -0
  58. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_rust_bridge.py +0 -0
  59. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_scoring.py +0 -0
  60. {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_store.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cluxion-Agentplugin-AutoClearMemory
3
- Version: 0.3.2
3
+ Version: 0.3.4
4
4
  Summary: Universal agent memory plugin (ForgetForge): recall-centric retention, tiered forgetting, Rust scoring engine for Hermes, Claude Code, and Codex.
5
5
  Project-URL: Homepage, https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory
6
6
  Project-URL: Repository, https://github.com/cluxion/cluxion-Agentplugin-AutoClearMemory
@@ -70,6 +70,18 @@ forgetforge status # 무엇이 기억되어 있는지 확인합니
70
70
  Hermes에서는 동일한 동작이 `forgetforge_*` 도구로 제공되며, 가장 관련 있는("hot") 기억이 매 모델
71
71
  호출 전에 컨텍스트에 추가됩니다.
72
72
 
73
+ ## 점검
74
+
75
+ 설치·Hermes 계약·DB·네이티브 백엔드 상태를 결정론적으로 자가 진단합니다. 같은 상태면 항상 같은 결과를
76
+ 출력하고, 문제가 있으면 증상과 해결 단계를 그대로 알려줍니다.
77
+
78
+ ```bash
79
+ forgetforge doctor # 사람용 요약
80
+ forgetforge doctor --json # 구조화 출력
81
+ ```
82
+
83
+ Hermes 안에서는 `forgetforge_doctor` 도구로도 노출됩니다.
84
+
73
85
  ## 라이선스
74
86
 
75
87
  Apache-2.0
@@ -115,6 +127,19 @@ forgetforge status # see what's remembered
115
127
  In Hermes the same actions are available as `forgetforge_*` tools, and your most relevant
116
128
  ("hot") memories are added to the context before each model call.
117
129
 
130
+ ## Diagnostics
131
+
132
+ A deterministic self-check of install, the Hermes contract, the database, and the native
133
+ backend. The same state always prints the same result, and on any problem it shows the symptom
134
+ and the exact fix steps.
135
+
136
+ ```bash
137
+ forgetforge doctor # human summary
138
+ forgetforge doctor --json # structured output
139
+ ```
140
+
141
+ Also exposed inside Hermes as the `forgetforge_doctor` tool.
142
+
118
143
  ## License
119
144
 
120
145
  Apache-2.0
@@ -40,6 +40,18 @@ forgetforge status # 무엇이 기억되어 있는지 확인합니
40
40
  Hermes에서는 동일한 동작이 `forgetforge_*` 도구로 제공되며, 가장 관련 있는("hot") 기억이 매 모델
41
41
  호출 전에 컨텍스트에 추가됩니다.
42
42
 
43
+ ## 점검
44
+
45
+ 설치·Hermes 계약·DB·네이티브 백엔드 상태를 결정론적으로 자가 진단합니다. 같은 상태면 항상 같은 결과를
46
+ 출력하고, 문제가 있으면 증상과 해결 단계를 그대로 알려줍니다.
47
+
48
+ ```bash
49
+ forgetforge doctor # 사람용 요약
50
+ forgetforge doctor --json # 구조화 출력
51
+ ```
52
+
53
+ Hermes 안에서는 `forgetforge_doctor` 도구로도 노출됩니다.
54
+
43
55
  ## 라이선스
44
56
 
45
57
  Apache-2.0
@@ -85,6 +97,19 @@ forgetforge status # see what's remembered
85
97
  In Hermes the same actions are available as `forgetforge_*` tools, and your most relevant
86
98
  ("hot") memories are added to the context before each model call.
87
99
 
100
+ ## Diagnostics
101
+
102
+ A deterministic self-check of install, the Hermes contract, the database, and the native
103
+ backend. The same state always prints the same result, and on any problem it shows the symptom
104
+ and the exact fix steps.
105
+
106
+ ```bash
107
+ forgetforge doctor # human summary
108
+ forgetforge doctor --json # structured output
109
+ ```
110
+
111
+ Also exposed inside Hermes as the `forgetforge_doctor` tool.
112
+
88
113
  ## License
89
114
 
90
115
  Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "cluxion-Agentplugin-AutoClearMemory"
7
- version = "0.3.2"
7
+ version = "0.3.4"
8
8
  description = "Universal agent memory plugin (ForgetForge): recall-centric retention, tiered forgetting, Rust scoring engine for Hermes, Claude Code, and Codex."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -65,6 +65,7 @@ packages = ["src/forgetforge"]
65
65
  [tool.hatch.build.targets.wheel.force-include]
66
66
  "adapters" = "forgetforge/data/adapters"
67
67
  "config.yaml.example" = "forgetforge/data/config.yaml.example"
68
+ "src/forgetforge/doctor/catalog.json" = "forgetforge/doctor/catalog.json"
68
69
 
69
70
  [tool.hatch.build.targets.sdist]
70
71
  include = [
@@ -89,4 +90,4 @@ line-length = 120
89
90
  src = ["src", "tests"]
90
91
 
91
92
  [tool.ruff.lint]
92
- select = ["F", "I", "UP", "B", "SIM", "RUF"]
93
+ select = ["F", "I", "UP", "B", "SIM", "RUF"]
@@ -1,5 +1,5 @@
1
1
  """ForgetForge — recall-centric memory plugin for universal agent environments."""
2
2
 
3
- __version__ = "0.3.2"
3
+ __version__ = "0.3.4"
4
4
 
5
5
  __all__ = ["__version__"]
@@ -2,10 +2,13 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  from collections.abc import Callable
5
+ from pathlib import Path
5
6
 
6
7
  from forgetforge import db, hot_inject, import_brief
7
8
  from forgetforge import store as store_api
8
9
  from forgetforge.config import load_config
10
+ from forgetforge.doctor import render_json, run_doctor
11
+ from forgetforge.doctor.probes import PROBES
9
12
  from forgetforge.schemas import (
10
13
  FORGET_SCHEMA,
11
14
  HOT_CONTEXT_SCHEMA,
@@ -67,6 +70,25 @@ def register(ctx: object) -> None:
67
70
  handler=_wrap(_handle_hot_context),
68
71
  emoji="🔥",
69
72
  )
73
+ # doctor tool
74
+ DOCTOR_SCHEMA = {
75
+ "name": "forgetforge_doctor",
76
+ "description": "Run the embedded forgetforge doctor checks for installation, Hermes contract, DB health, and runtime integrity.",
77
+ "parameters": {
78
+ "type": "object",
79
+ "properties": {
80
+ "verbose": {"type": "boolean", "description": "Include verbose details in output"}
81
+ },
82
+ "additionalProperties": False,
83
+ },
84
+ }
85
+ ctx.register_tool(
86
+ name="forgetforge_doctor",
87
+ toolset="forgetforge",
88
+ schema=DOCTOR_SCHEMA,
89
+ handler=_wrap(_handle_doctor),
90
+ emoji="🩺",
91
+ )
70
92
  register_hook = getattr(ctx, "register_hook", None)
71
93
  if callable(register_hook):
72
94
  register_hook("pre_llm_call", _pre_llm_hot_inject)
@@ -94,6 +116,24 @@ def _conn():
94
116
  return db.connect(cfg.db_path)
95
117
 
96
118
 
119
+ def _handle_doctor(args: dict[str, object]) -> dict[str, object]:
120
+ try:
121
+ pkg = "forgetforge.doctor"
122
+ import importlib.resources
123
+ cat_path = Path(str(importlib.resources.files(pkg).joinpath("catalog.json")))
124
+ except Exception:
125
+ cat_path = Path(__file__).parent.parent.parent / "doctor" / "catalog.json"
126
+ result = run_doctor(
127
+ cwd=Path.cwd(),
128
+ catalog_path=cat_path,
129
+ probes=PROBES,
130
+ plugin="autoclearmemory",
131
+ version=__import__("forgetforge").__version__,
132
+ )
133
+ # return dict so _wrap json.dumps it; include the rendered json too
134
+ return {"ok": result.ok, "doctor_json": render_json(result), "checks_count": len(result.checks)}
135
+
136
+
97
137
  def _handle_store(args: dict[str, object]) -> dict[str, object]:
98
138
  conn = _conn()
99
139
  try:
@@ -1,12 +1,17 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import argparse
4
+ import importlib.resources
4
5
  import json
5
6
  import sys
7
+ from pathlib import Path
6
8
  from typing import TYPE_CHECKING
7
9
 
8
10
  from forgetforge import __version__, db, hot_inject, import_brief, init_assets, pruner, rust_bridge, store
9
11
  from forgetforge.config import default_home, load_config
12
+ from forgetforge.doctor import render_json, render_text, run_doctor
13
+ from forgetforge.doctor.framework import load_catalog
14
+ from forgetforge.doctor.probes import PROBES
10
15
 
11
16
  if TYPE_CHECKING:
12
17
  from collections.abc import Sequence
@@ -37,6 +42,8 @@ def main(argv: Sequence[str] | None = None) -> int:
37
42
  return _import_brief(args)
38
43
  if args.command == "hot-context":
39
44
  return _hot_context(args)
45
+ if args.command == "doctor":
46
+ return _doctor(args)
40
47
  parser.print_help(sys.stderr)
41
48
  return 2
42
49
 
@@ -72,6 +79,9 @@ def _parser() -> argparse.ArgumentParser:
72
79
  brief.add_argument("--importance", type=float, default=0.65)
73
80
  hot = sub.add_parser("hot-context", help="Print hot-tier context block")
74
81
  hot.add_argument("--limit", type=int, default=8)
82
+ doctor = sub.add_parser("doctor", help="Run embedded doctor checks")
83
+ doctor.add_argument("--json", action="store_true")
84
+ doctor.add_argument("--verbose", action="store_true")
75
85
  return parser
76
86
 
77
87
 
@@ -117,7 +127,6 @@ def _init(args: argparse.Namespace) -> int:
117
127
 
118
128
  def _status() -> int:
119
129
  from forgetforge import recall
120
-
121
130
  cfg = load_config()
122
131
  conn = db.connect(cfg.db_path)
123
132
  stats = db.memory_stats(conn)
@@ -221,6 +230,28 @@ def _prune() -> int:
221
230
  return 0
222
231
 
223
232
 
233
+ def _doctor(args: argparse.Namespace) -> int:
234
+ try:
235
+ pkg = "forgetforge.doctor"
236
+ cat_path = Path(str(importlib.resources.files(pkg).joinpath("catalog.json")))
237
+ except Exception:
238
+ cat_path = Path(__file__).parent.parent / "doctor" / "catalog.json"
239
+ result = run_doctor(
240
+ cwd=Path.cwd(),
241
+ catalog_path=cat_path,
242
+ probes=PROBES,
243
+ plugin="autoclearmemory",
244
+ version=__version__,
245
+ )
246
+ if getattr(args, "json", False):
247
+ print(render_json(result))
248
+ else:
249
+ cat_entries = load_catalog(cat_path)
250
+ text = render_text(result, cat_entries, verbose=getattr(args, "verbose", False))
251
+ print(text, file=sys.stderr)
252
+ return 0 if result.ok else 1
253
+
254
+
224
255
  def _parse_agents(raw: str) -> list[str]:
225
256
  if raw.strip().lower() == "all":
226
257
  return list(init_assets.known_agents())
@@ -0,0 +1,5 @@
1
+ """Embedded doctor for forgetforge (autoclearmemory) plugin."""
2
+
3
+ from .framework import DoctorResult, render_json, render_text, run_doctor
4
+
5
+ __all__ = ["DoctorResult", "render_json", "render_text", "run_doctor"]