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.
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/PKG-INFO +26 -1
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/README.md +25 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/pyproject.toml +3 -2
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/__init__.py +1 -1
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/adapters/hermes.py +40 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/cli.py +32 -1
- cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/__init__.py +5 -0
- cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/catalog.json +469 -0
- cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/framework.py +177 -0
- cluxion_agentplugin_autoclearmemory-0.3.4/src/forgetforge/doctor/probes.py +114 -0
- cluxion_agentplugin_autoclearmemory-0.3.4/tests/test_doctor.py +81 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_hermes_adapter.py +2 -1
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/.gitignore +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/README.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/agent-surfaces.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/architecture.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/design.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/installation.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/Docs/rust-architecture.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/LICENSE +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/claude/.claude-plugin/plugin.json +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/claude/skills/forgetforge/SKILL.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/codex/mcp-snippet.toml +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/cron/forgetforge-prune.cron +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/hermes/README.md +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/adapters/systemd/forgetforge-pruner.service +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/config.yaml.example +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/Cargo.lock +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/Cargo.toml +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/pyproject.toml +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/lib.rs +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/main.rs +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/scoring.rs +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/rust/forgetforge_engine/src/tier.rs +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/adapters/__init__.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/archive.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/config.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/contradiction.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/db.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/hot_inject.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/import_brief.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/init_assets.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/pruner.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/recall.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/rust_bridge.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/schemas.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/src/forgetforge/store.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_cli.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_config.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_contradiction.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_db_recall.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_fts.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_hot_inject.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_import_brief.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_pruner_archive.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_recall_batching.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_recall_stats.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_rust_bridge.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_scoring.py +0 -0
- {cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/tests/test_store.py +0 -0
{cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cluxion-Agentplugin-AutoClearMemory
|
|
3
|
-
Version: 0.3.
|
|
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
|
{cluxion_agentplugin_autoclearmemory-0.3.2 → cluxion_agentplugin_autoclearmemory-0.3.4}/README.md
RENAMED
|
@@ -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.
|
|
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"]
|
|
@@ -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())
|