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.
Files changed (44) hide show
  1. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/PKG-INFO +1 -1
  2. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/pyproject.toml +1 -1
  3. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/guard.py +8 -1
  4. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/main.py +10 -8
  5. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/PKG-INFO +1 -1
  6. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/README.md +0 -0
  7. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/setup.cfg +0 -0
  8. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/setup.py +0 -0
  9. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/__init__.py +0 -0
  10. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/api.py +0 -0
  11. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/guardmcp.py +0 -0
  12. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/__init__.py +0 -0
  13. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/base.py +0 -0
  14. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/posttooluse.py +0 -0
  15. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/precompact.py +0 -0
  16. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/pretooluse.py +0 -0
  17. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/session_parser.py +0 -0
  18. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/session_report_push.py +0 -0
  19. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/session_start.py +0 -0
  20. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/hooks/stop.py +0 -0
  21. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/log_util.py +0 -0
  22. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/mcp_server.py +0 -0
  23. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/memory.py +0 -0
  24. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/paxel.py +0 -0
  25. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli/tool_groups.py +0 -0
  26. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
  27. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
  28. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/entry_points.txt +0 -0
  29. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/requires.txt +0 -0
  30. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/src/conduct_cli.egg-info/top_level.txt +0 -0
  31. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_advisory_and_hook.py +0 -0
  32. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_bash_operator_signature.py +0 -0
  33. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_blast_radius.py +0 -0
  34. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_command_word_matcher.py +0 -0
  35. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_drain_daemon_health.py +0 -0
  36. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_guard_policy.py +0 -0
  37. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_guard_savings.py +0 -0
  38. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_hook_dispatch.py +0 -0
  39. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_journal_drain.py +0 -0
  40. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_log_util.py +0 -0
  41. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_proxy_coverage.py +0 -0
  42. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_proxy_env.py +0 -0
  43. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_signed_policy.py +0 -0
  44. {conduct_cli-0.7.24 → conduct_cli-0.7.26}/tests/test_switch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.7.24
3
+ Version: 0.7.26
4
4
  Summary: CLI for Conduct AI — secure, govern, install agents, manage projects, run tests
5
5
  Author-email: Conduct AI <hello@conductai.ai>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "conduct-cli"
7
- version = "0.7.24"
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
- CONFIG_PATH.write_text(json.dumps(data, indent=2))
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.parent.mkdir(parents=True, exist_ok=True)
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(data, indent=2))
1299
+ tmp.write_text(json.dumps(existing, indent=2))
1298
1300
  os.replace(tmp, path)
1299
1301
  try:
1300
1302
  os.chmod(path, 0o600)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.7.24
3
+ Version: 0.7.26
4
4
  Summary: CLI for Conduct AI — secure, govern, install agents, manage projects, run tests
5
5
  Author-email: Conduct AI <hello@conductai.ai>
6
6
  License: MIT
File without changes
File without changes
File without changes