conduct-cli 0.6.30__tar.gz → 0.6.32__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.6.30 → conduct_cli-0.6.32}/PKG-INFO +1 -1
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/pyproject.toml +1 -1
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/guard.py +20 -7
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli.egg-info/PKG-INFO +1 -1
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/README.md +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/setup.cfg +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/setup.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/__init__.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/api.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/guardmcp.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/__init__.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/base.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/posttooluse.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/precompact.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/pretooluse.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/session_parser.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/session_start.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/hooks/stop.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/log_util.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/main.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/mcp_server.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/memory.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli/paxel.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli.egg-info/entry_points.txt +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli.egg-info/requires.txt +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/src/conduct_cli.egg-info/top_level.txt +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_bash_operator_signature.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_command_word_matcher.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_guard_policy.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_guard_savings.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_hook_syntax.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_journal_drain.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_log_util.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_proxy_env.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_signed_policy.py +0 -0
- {conduct_cli-0.6.30 → conduct_cli-0.6.32}/tests/test_switch.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "conduct-cli"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.32"
|
|
8
8
|
description = "CLI for Conduct AI — secure, govern, install agents, manage projects, run tests"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -1936,7 +1936,20 @@ def _discover_config_agents() -> list[tuple]:
|
|
|
1936
1936
|
for base in search_paths:
|
|
1937
1937
|
if not base.exists():
|
|
1938
1938
|
continue
|
|
1939
|
-
|
|
1939
|
+
try:
|
|
1940
|
+
candidates = list(base.glob(".env"))
|
|
1941
|
+
# ponytail: shallow glob only — deep ** hits system dirs (WhatsApp containers etc.)
|
|
1942
|
+
for sub in base.iterdir() if base.exists() else []:
|
|
1943
|
+
try:
|
|
1944
|
+
if sub.is_dir() and not sub.name.startswith("."):
|
|
1945
|
+
env = sub / ".env"
|
|
1946
|
+
if env.exists():
|
|
1947
|
+
candidates.append(env)
|
|
1948
|
+
except OSError:
|
|
1949
|
+
pass
|
|
1950
|
+
except OSError:
|
|
1951
|
+
continue
|
|
1952
|
+
for env_file in candidates:
|
|
1940
1953
|
if str(env_file) in seen_envs or ".git" in str(env_file):
|
|
1941
1954
|
continue
|
|
1942
1955
|
seen_envs.add(str(env_file))
|
|
@@ -1945,7 +1958,7 @@ def _discover_config_agents() -> list[tuple]:
|
|
|
1945
1958
|
found_keys = [k for k in LLM_KEYS if k in content]
|
|
1946
1959
|
if found_keys:
|
|
1947
1960
|
results.append(("env-agent", env_file, False)) # .env with LLM key = unregistered
|
|
1948
|
-
except
|
|
1961
|
+
except OSError:
|
|
1949
1962
|
pass
|
|
1950
1963
|
|
|
1951
1964
|
return results
|
|
@@ -2097,8 +2110,8 @@ def cmd_guard_discover(args):
|
|
|
2097
2110
|
|
|
2098
2111
|
cfg = _load_guard_config()
|
|
2099
2112
|
api_url = _api_url(cfg)
|
|
2100
|
-
|
|
2101
|
-
hdrs = {"
|
|
2113
|
+
api_key = cfg.get("api_key", "")
|
|
2114
|
+
hdrs = {"X-Api-Key": api_key, "Content-Type": "application/json"}
|
|
2102
2115
|
|
|
2103
2116
|
# Config file scan — detect AI tools from known config dirs
|
|
2104
2117
|
config_agents = []
|
|
@@ -2148,9 +2161,9 @@ def cmd_guard_discover(args):
|
|
|
2148
2161
|
# POST to API
|
|
2149
2162
|
try:
|
|
2150
2163
|
payload = {"triggered_by": "cli", "agents": all_agents}
|
|
2151
|
-
|
|
2152
|
-
except
|
|
2153
|
-
pass # local output still useful
|
|
2164
|
+
_req("POST", f"{api_url}/guard/discover/scan", body=payload, api_key=api_key)
|
|
2165
|
+
except SystemExit:
|
|
2166
|
+
pass # 401/network errors — local output still useful
|
|
2154
2167
|
|
|
2155
2168
|
# Write report if requested
|
|
2156
2169
|
report_path = getattr(args, "report", None)
|
|
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
|
|
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
|