conduct-cli 0.4.74__tar.gz → 0.4.76__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.
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/PKG-INFO +1 -1
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/pyproject.toml +1 -1
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/guard.py +35 -5
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli.egg-info/PKG-INFO +1 -1
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/README.md +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/setup.cfg +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/setup.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/__init__.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/api.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/guardmcp.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/hook_precompact_template.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/hook_session_start_template.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/hook_template.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/main.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/mcp_server.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli/memory.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli.egg-info/entry_points.txt +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli.egg-info/requires.txt +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/src/conduct_cli.egg-info/top_level.txt +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/tests/test_guard_policy.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/tests/test_guard_savings.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/tests/test_hook_syntax.py +0 -0
- {conduct_cli-0.4.74 → conduct_cli-0.4.76}/tests/test_switch.py +0 -0
|
@@ -768,9 +768,28 @@ def _ensure_booster(root: Path) -> None:
|
|
|
768
768
|
f"(you have {sys.version_info.major}.{sys.version_info.minor}). "
|
|
769
769
|
f"Upgrade Python then: pip install 'conduct-cli[booster]'"
|
|
770
770
|
)
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
771
|
+
return
|
|
772
|
+
print(f" {GRAY}Agent Booster:{RESET} installing…")
|
|
773
|
+
r = subprocess.run(
|
|
774
|
+
[sys.executable, "-m", "pip", "install", "--quiet", "conduct-cli[booster]"],
|
|
775
|
+
capture_output=True, text=True, timeout=120,
|
|
776
|
+
)
|
|
777
|
+
if r.returncode != 0:
|
|
778
|
+
print(f" {RED}Agent Booster:{RESET} install failed — {r.stderr.strip()[:120]}")
|
|
779
|
+
return
|
|
780
|
+
print(f" {GREEN}Agent Booster:{RESET} installed")
|
|
781
|
+
if not shutil.which("booster"):
|
|
782
|
+
print(f" {YELLOW}Agent Booster:{RESET} 'booster' not on PATH yet — restart shell or re-run sync")
|
|
783
|
+
return
|
|
784
|
+
|
|
785
|
+
# Upgrade booster to latest in background (non-blocking)
|
|
786
|
+
try:
|
|
787
|
+
subprocess.Popen(
|
|
788
|
+
[sys.executable, "-m", "pip", "install", "--quiet", "--upgrade", "conduct-cli[booster]"],
|
|
789
|
+
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
|
|
790
|
+
)
|
|
791
|
+
except Exception:
|
|
792
|
+
pass
|
|
774
793
|
|
|
775
794
|
db_path = root / ".booster" / "symbols.db"
|
|
776
795
|
hooks_path = root / ".claude" / "hooks" / "booster-gate.py"
|
|
@@ -778,8 +797,15 @@ def _ensure_booster(root: Path) -> None:
|
|
|
778
797
|
# Init (writes hook scripts + wires settings.json) — fast, idempotent
|
|
779
798
|
if not hooks_path.exists():
|
|
780
799
|
try:
|
|
781
|
-
subprocess.run(
|
|
782
|
-
|
|
800
|
+
r = subprocess.run(
|
|
801
|
+
["booster", "init", "claude", "--yes"],
|
|
802
|
+
capture_output=True, timeout=15, cwd=str(root),
|
|
803
|
+
)
|
|
804
|
+
if r.returncode == 0:
|
|
805
|
+
print(f" {GREEN}Agent Booster:{RESET} hooks installed")
|
|
806
|
+
else:
|
|
807
|
+
print(f" {GRAY}Agent Booster:{RESET} init failed — {r.stderr.strip()[:120]}")
|
|
808
|
+
return
|
|
783
809
|
except Exception:
|
|
784
810
|
return
|
|
785
811
|
|
|
@@ -1170,6 +1196,10 @@ def cmd_guard_booster_status(args):
|
|
|
1170
1196
|
|
|
1171
1197
|
# 5. Live intercept test — try reading a known file and check if smart-read fires
|
|
1172
1198
|
print(f"\n {BOLD}Live intercept test:{RESET}")
|
|
1199
|
+
if not hooks_path.exists():
|
|
1200
|
+
print(f" {YELLOW}~{RESET} Skipped — hook script not present")
|
|
1201
|
+
print()
|
|
1202
|
+
return
|
|
1173
1203
|
try:
|
|
1174
1204
|
import tempfile, json as _json
|
|
1175
1205
|
# Pick the first indexed file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|