conduct-cli 0.7.25__tar.gz → 0.7.27__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.25 → conduct_cli-0.7.27}/PKG-INFO +1 -1
  2. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/pyproject.toml +1 -1
  3. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/guard.py +6 -2
  4. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/main.py +10 -8
  5. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli.egg-info/PKG-INFO +1 -1
  6. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/README.md +0 -0
  7. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/setup.cfg +0 -0
  8. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/setup.py +0 -0
  9. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/__init__.py +0 -0
  10. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/api.py +0 -0
  11. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/guardmcp.py +0 -0
  12. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/__init__.py +0 -0
  13. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/base.py +0 -0
  14. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/posttooluse.py +0 -0
  15. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/precompact.py +0 -0
  16. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/pretooluse.py +0 -0
  17. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/session_parser.py +0 -0
  18. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/session_report_push.py +0 -0
  19. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/session_start.py +0 -0
  20. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/hooks/stop.py +0 -0
  21. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/log_util.py +0 -0
  22. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/mcp_server.py +0 -0
  23. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/memory.py +0 -0
  24. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/paxel.py +0 -0
  25. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli/tool_groups.py +0 -0
  26. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
  27. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
  28. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli.egg-info/entry_points.txt +0 -0
  29. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli.egg-info/requires.txt +0 -0
  30. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/src/conduct_cli.egg-info/top_level.txt +0 -0
  31. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_advisory_and_hook.py +0 -0
  32. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_bash_operator_signature.py +0 -0
  33. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_blast_radius.py +0 -0
  34. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_command_word_matcher.py +0 -0
  35. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_drain_daemon_health.py +0 -0
  36. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_guard_policy.py +0 -0
  37. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_guard_savings.py +0 -0
  38. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_hook_dispatch.py +0 -0
  39. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_journal_drain.py +0 -0
  40. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_log_util.py +0 -0
  41. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_proxy_coverage.py +0 -0
  42. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_proxy_env.py +0 -0
  43. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/tests/test_signed_policy.py +0 -0
  44. {conduct_cli-0.7.25 → conduct_cli-0.7.27}/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.25
3
+ Version: 0.7.27
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.25"
7
+ version = "0.7.27"
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" }
@@ -1266,8 +1266,12 @@ def cmd_guard_sync(args):
1266
1266
  fresh_agent_token = installed.get("agent_token") or ""
1267
1267
  if fresh_agent_token:
1268
1268
  cfg["agent_token"] = fresh_agent_token
1269
- _save_guard_config(cfg)
1270
- else:
1269
+ if installed.get("user_email"):
1270
+ cfg["user_email"] = installed["user_email"]
1271
+ if installed.get("clerk_user_id"):
1272
+ cfg["clerk_user_id"] = installed["clerk_user_id"]
1273
+ _save_guard_config(cfg)
1274
+ if not fresh_agent_token:
1271
1275
  print(f" {YELLOW}Warning: server returned no token — proxy env may be stale{RESET}")
1272
1276
  except Exception as e:
1273
1277
  print(f" {YELLOW}Warning: could not refresh token ({e}) — using cached value{RESET}")
@@ -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.25
3
+ Version: 0.7.27
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