conduct-cli 0.7.24__tar.gz → 0.7.26__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.7.24 → conduct_cli-0.7.26}/PKG-INFO +1 -1
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/pyproject.toml +1 -1
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/guard.py +8 -1
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/main.py +10 -8
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/PKG-INFO +1 -1
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/README.md +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/setup.cfg +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/setup.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/__init__.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/api.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/guardmcp.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/__init__.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/base.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/posttooluse.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/precompact.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/pretooluse.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/session_parser.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/session_report_push.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/session_start.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/stop.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/log_util.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/mcp_server.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/memory.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/paxel.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/tool_groups.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/entry_points.txt +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/requires.txt +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/top_level.txt +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_advisory_and_hook.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_bash_operator_signature.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_blast_radius.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_command_word_matcher.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_drain_daemon_health.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_guard_policy.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_guard_savings.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_hook_dispatch.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_journal_drain.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_log_util.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_proxy_coverage.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_proxy_env.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_signed_policy.py +0 -0
- {conduct_cli-0.7.24 → conduct_cli-0.7.26}/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.7.
|
|
7
|
+
version = "0.7.26"
|
|
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" }
|
|
@@ -335,7 +335,14 @@ def _load_guard_config(workspace_id: str | None = None) -> dict:
|
|
|
335
335
|
|
|
336
336
|
def _save_guard_config(data: dict, workspace_id: str | None = None):
|
|
337
337
|
CONDUCT_HOME.mkdir(parents=True, exist_ok=True)
|
|
338
|
-
|
|
338
|
+
existing = {}
|
|
339
|
+
if CONFIG_PATH.exists():
|
|
340
|
+
try:
|
|
341
|
+
existing = json.loads(CONFIG_PATH.read_text())
|
|
342
|
+
except Exception:
|
|
343
|
+
pass
|
|
344
|
+
existing.update(data)
|
|
345
|
+
CONFIG_PATH.write_text(json.dumps(existing, indent=2))
|
|
339
346
|
CONFIG_PATH.chmod(0o600)
|
|
340
347
|
|
|
341
348
|
|
|
@@ -95,12 +95,7 @@ def _load_config() -> dict:
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def _save_config(data: dict):
|
|
98
|
-
CONFIG_PATH
|
|
99
|
-
CONFIG_PATH.write_text(json.dumps(data, indent=2))
|
|
100
|
-
try:
|
|
101
|
-
import os as _os; _os.chmod(CONFIG_PATH, 0o600)
|
|
102
|
-
except Exception:
|
|
103
|
-
pass
|
|
98
|
+
_atomic_write(CONFIG_PATH, data)
|
|
104
99
|
|
|
105
100
|
|
|
106
101
|
def _resolve(args, key: str, config_key=None):
|
|
@@ -1291,10 +1286,17 @@ def _build_state(issue: dict, repo_full_name: str) -> dict:
|
|
|
1291
1286
|
|
|
1292
1287
|
|
|
1293
1288
|
def _atomic_write(path: Path, data: dict) -> None:
|
|
1294
|
-
"""Write data to path atomically via a .tmp sibling."""
|
|
1289
|
+
"""Write data to path atomically via a .tmp sibling. Merges into existing config."""
|
|
1295
1290
|
path.parent.mkdir(parents=True, exist_ok=True)
|
|
1291
|
+
existing = {}
|
|
1292
|
+
if path.exists():
|
|
1293
|
+
try:
|
|
1294
|
+
existing = json.loads(path.read_text())
|
|
1295
|
+
except Exception:
|
|
1296
|
+
pass
|
|
1297
|
+
existing.update(data)
|
|
1296
1298
|
tmp = path.with_suffix(".tmp")
|
|
1297
|
-
tmp.write_text(json.dumps(
|
|
1299
|
+
tmp.write_text(json.dumps(existing, indent=2))
|
|
1298
1300
|
os.replace(tmp, path)
|
|
1299
1301
|
try:
|
|
1300
1302
|
os.chmod(path, 0o600)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|