conduct-cli 0.7.30__tar.gz → 0.7.33__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.30 → conduct_cli-0.7.33}/PKG-INFO +1 -1
  2. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/pyproject.toml +1 -1
  3. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/pretooluse.py +1 -1
  4. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/main.py +22 -0
  5. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli.egg-info/PKG-INFO +1 -1
  6. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/README.md +0 -0
  7. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/setup.cfg +0 -0
  8. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/setup.py +0 -0
  9. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/__init__.py +0 -0
  10. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/api.py +0 -0
  11. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/guard.py +0 -0
  12. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/guardmcp.py +0 -0
  13. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/__init__.py +0 -0
  14. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/base.py +0 -0
  15. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/posttooluse.py +0 -0
  16. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/precompact.py +0 -0
  17. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/session_parser.py +0 -0
  18. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/session_report_push.py +0 -0
  19. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/session_start.py +0 -0
  20. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/hooks/stop.py +0 -0
  21. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/log_util.py +0 -0
  22. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/mcp_server.py +0 -0
  23. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/memory.py +0 -0
  24. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/paxel.py +0 -0
  25. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli/tool_groups.py +0 -0
  26. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
  27. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
  28. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli.egg-info/entry_points.txt +0 -0
  29. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli.egg-info/requires.txt +0 -0
  30. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/src/conduct_cli.egg-info/top_level.txt +0 -0
  31. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_advisory_and_hook.py +0 -0
  32. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_bash_operator_signature.py +0 -0
  33. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_blast_radius.py +0 -0
  34. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_command_word_matcher.py +0 -0
  35. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_drain_daemon_health.py +0 -0
  36. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_guard_policy.py +0 -0
  37. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_guard_savings.py +0 -0
  38. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_hook_dispatch.py +0 -0
  39. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_journal_drain.py +0 -0
  40. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_log_util.py +0 -0
  41. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_proxy_coverage.py +0 -0
  42. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_proxy_env.py +0 -0
  43. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/tests/test_signed_policy.py +0 -0
  44. {conduct_cli-0.7.30 → conduct_cli-0.7.33}/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.30
3
+ Version: 0.7.33
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.30"
7
+ version = "0.7.33"
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" }
@@ -156,7 +156,7 @@ def _maybe_sync_policy() -> None:
156
156
  try:
157
157
  cfg = load_config()
158
158
  workspace_id = cfg.get("workspace_id") or cfg.get("workspace")
159
- api_key = cfg.get("api_key", "")
159
+ api_key = cfg.get("agent_token") or cfg.get("api_key", "")
160
160
  api_url = cfg.get("api_url", "https://api.conductai.ai").rstrip("/")
161
161
  if not workspace_id:
162
162
  return
@@ -160,6 +160,11 @@ def _stream_run(server: str, workflow_id: str, run_id: str, workspace_id: str, t
160
160
  elif kind == "brain_tool_call":
161
161
  summary = payload.get("summary", payload.get("tool", ""))
162
162
  print(f" · {summary}{RESET}")
163
+ elif kind == "guard_check":
164
+ for w in payload.get("warnings", []):
165
+ print(f"{YELLOW} ⚠ [guard] {w.get('rule_id', '')}: {w.get('message', '')}{RESET}")
166
+ for a in payload.get("audited", []):
167
+ print(f"{BLUE} ● [guard] {a.get('rule_id', '')}: {a.get('message', '')}{RESET}")
163
168
  elif kind == "run_completed":
164
169
  print(f"{BOLD}{GREEN} ✓ done{RESET}")
165
170
  elif kind == "run_failed":
@@ -2509,6 +2514,23 @@ def cmd_run(args):
2509
2514
  except Exception:
2510
2515
  pass # validate endpoint is best-effort; backend will re-check on /trigger
2511
2516
 
2517
+ # Full preflight validation — credentials, auth chain, proxy, block config.
2518
+ # Blocks on errors so bad runs never start.
2519
+ try:
2520
+ vr = api.req("POST", f"{server}/workflows/{workflow_id}/validate", json_h, {})
2521
+ v_errors = (vr or {}).get("errors") or []
2522
+ if v_errors:
2523
+ print(f"{RED}✗ Cannot start run — preflight validation failed:{RESET}\n")
2524
+ for e in v_errors:
2525
+ lbl = e.get("label") or e.get("block_id") or "?"
2526
+ print(f" {YELLOW}⚠ [{lbl}]{RESET} {e.get('message', '')}")
2527
+ print()
2528
+ sys.exit(2)
2529
+ except SystemExit:
2530
+ raise
2531
+ except Exception:
2532
+ pass # best-effort — don't block run if validate endpoint itself errors
2533
+
2512
2534
  # Fix 3: /trigger returns run_id, not id.
2513
2535
  if getattr(args, "max_turns", None):
2514
2536
  body["__max_turns"] = args.max_turns
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.7.30
3
+ Version: 0.7.33
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