conduct-cli 0.4.73__tar.gz → 0.4.75__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 (25) hide show
  1. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/PKG-INFO +3 -2
  2. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/pyproject.toml +5 -2
  3. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/guard.py +23 -3
  4. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/hook_session_start_template.py +22 -0
  5. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli.egg-info/PKG-INFO +3 -2
  6. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli.egg-info/requires.txt +2 -0
  7. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/README.md +0 -0
  8. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/setup.cfg +0 -0
  9. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/setup.py +0 -0
  10. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/__init__.py +0 -0
  11. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/api.py +0 -0
  12. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/guardmcp.py +0 -0
  13. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/hook_precompact_template.py +0 -0
  14. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/hook_template.py +0 -0
  15. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/main.py +0 -0
  16. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/mcp_server.py +0 -0
  17. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli/memory.py +0 -0
  18. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
  19. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
  20. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli.egg-info/entry_points.txt +0 -0
  21. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/src/conduct_cli.egg-info/top_level.txt +0 -0
  22. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/tests/test_guard_policy.py +0 -0
  23. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/tests/test_guard_savings.py +0 -0
  24. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/tests/test_hook_syntax.py +0 -0
  25. {conduct_cli-0.4.73 → conduct_cli-0.4.75}/tests/test_switch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.4.73
3
+ Version: 0.4.75
4
4
  Summary: CLI for Conduct AI — install agents, manage projects, run tests
5
5
  Author-email: Conduct AI <hello@conductai.ai>
6
6
  License: MIT
@@ -22,7 +22,8 @@ Requires-Python: >=3.9
22
22
  Description-Content-Type: text/markdown
23
23
  Requires-Dist: pyyaml>=6.0
24
24
  Requires-Dist: rich>=13.0
25
- Requires-Dist: agent-booster[watch]>=0.2.23
25
+ Provides-Extra: booster
26
+ Requires-Dist: agent-booster[watch]>=0.2.23; extra == "booster"
26
27
 
27
28
  # conduct-cli
28
29
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "conduct-cli"
7
- version = "0.4.73"
7
+ version = "0.4.75"
8
8
  description = "CLI for Conduct AI — install agents, manage projects, run tests"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -23,7 +23,10 @@ classifiers = [
23
23
  "Programming Language :: Python :: 3.12",
24
24
  "Topic :: Software Development :: Libraries :: Application Frameworks",
25
25
  ]
26
- dependencies = ["pyyaml>=6.0", "rich>=13.0", "agent-booster[watch]>=0.2.23"]
26
+ dependencies = ["pyyaml>=6.0", "rich>=13.0"]
27
+
28
+ [project.optional-dependencies]
29
+ booster = ["agent-booster[watch]>=0.2.23"]
27
30
 
28
31
  [project.urls]
29
32
  Homepage = "https://conductai.ai"
@@ -759,9 +759,18 @@ def _ensure_booster(root: Path) -> None:
759
759
  """Auto-init and background-index booster if installed but not yet set up."""
760
760
  import shutil
761
761
  import subprocess
762
+ import sys
762
763
 
763
764
  if not shutil.which("booster"):
764
- return # not installed — conduct-cli 0.4.71+ installs it, but may not be on PATH yet
765
+ if sys.version_info < (3, 10):
766
+ print(
767
+ f" {GRAY}Agent Booster:{RESET} requires Python 3.10+ "
768
+ f"(you have {sys.version_info.major}.{sys.version_info.minor}). "
769
+ f"Upgrade Python then: pip install 'conduct-cli[booster]'"
770
+ )
771
+ else:
772
+ print(f" {GRAY}Agent Booster:{RESET} not installed — run: pip install 'conduct-cli[booster]'")
773
+ return
765
774
 
766
775
  db_path = root / ".booster" / "symbols.db"
767
776
  hooks_path = root / ".claude" / "hooks" / "booster-gate.py"
@@ -769,8 +778,15 @@ def _ensure_booster(root: Path) -> None:
769
778
  # Init (writes hook scripts + wires settings.json) — fast, idempotent
770
779
  if not hooks_path.exists():
771
780
  try:
772
- subprocess.run(["booster", "init", "--yes"], capture_output=True, timeout=15, cwd=str(root))
773
- print(f" {GREEN}Agent Booster:{RESET} hooks installed")
781
+ r = subprocess.run(
782
+ ["booster", "init", "claude", "--yes"],
783
+ capture_output=True, timeout=15, cwd=str(root),
784
+ )
785
+ if r.returncode == 0:
786
+ print(f" {GREEN}Agent Booster:{RESET} hooks installed")
787
+ else:
788
+ print(f" {GRAY}Agent Booster:{RESET} init failed — {r.stderr.strip()[:120]}")
789
+ return
774
790
  except Exception:
775
791
  return
776
792
 
@@ -1161,6 +1177,10 @@ def cmd_guard_booster_status(args):
1161
1177
 
1162
1178
  # 5. Live intercept test — try reading a known file and check if smart-read fires
1163
1179
  print(f"\n {BOLD}Live intercept test:{RESET}")
1180
+ if not hooks_path.exists():
1181
+ print(f" {YELLOW}~{RESET} Skipped — hook script not present")
1182
+ print()
1183
+ return
1164
1184
  try:
1165
1185
  import tempfile, json as _json
1166
1186
  # Pick the first indexed file
@@ -46,6 +46,28 @@ def main():
46
46
  else:
47
47
  lines.append("- Memory index:\n (none)")
48
48
 
49
+ # Booster intercept status
50
+ try:
51
+ import shutil, sqlite3
52
+ root = Path.cwd()
53
+ if shutil.which("booster"):
54
+ db_path = root / ".booster" / "symbols.db"
55
+ hooks_path = root / ".claude" / "hooks" / "booster-gate.py"
56
+ if hooks_path.exists() and db_path.exists():
57
+ try:
58
+ conn = sqlite3.connect(str(db_path))
59
+ n = conn.execute("SELECT COUNT(*) FROM symbols").fetchone()[0]
60
+ conn.close()
61
+ lines.append(f"- Agent Booster: ACTIVE — {n} symbols indexed, Read/Grep intercept ON")
62
+ except Exception:
63
+ lines.append("- Agent Booster: installed (index unavailable)")
64
+ elif shutil.which("booster"):
65
+ lines.append("- Agent Booster: installed but NOT wired — run: conduct guard sync")
66
+ else:
67
+ lines.append("- Agent Booster: not installed (pip install 'conduct-cli[booster]')")
68
+ except Exception:
69
+ pass
70
+
49
71
  # Inject relevant team memories for the current repo
50
72
  try:
51
73
  repo = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.4.73
3
+ Version: 0.4.75
4
4
  Summary: CLI for Conduct AI — install agents, manage projects, run tests
5
5
  Author-email: Conduct AI <hello@conductai.ai>
6
6
  License: MIT
@@ -22,7 +22,8 @@ Requires-Python: >=3.9
22
22
  Description-Content-Type: text/markdown
23
23
  Requires-Dist: pyyaml>=6.0
24
24
  Requires-Dist: rich>=13.0
25
- Requires-Dist: agent-booster[watch]>=0.2.23
25
+ Provides-Extra: booster
26
+ Requires-Dist: agent-booster[watch]>=0.2.23; extra == "booster"
26
27
 
27
28
  # conduct-cli
28
29
 
@@ -1,3 +1,5 @@
1
1
  pyyaml>=6.0
2
2
  rich>=13.0
3
+
4
+ [booster]
3
5
  agent-booster[watch]>=0.2.23
File without changes
File without changes
File without changes