conduct-cli 0.4.91__tar.gz → 0.4.93__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 (27) hide show
  1. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/PKG-INFO +1 -1
  2. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/pyproject.toml +1 -1
  3. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/guard.py +1 -0
  4. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/main.py +24 -2
  5. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli.egg-info/PKG-INFO +1 -1
  6. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/README.md +0 -0
  7. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/setup.cfg +0 -0
  8. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/setup.py +0 -0
  9. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/__init__.py +0 -0
  10. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/api.py +0 -0
  11. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/guardmcp.py +0 -0
  12. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/hook_precompact_template.py +0 -0
  13. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/hook_session_start_template.py +0 -0
  14. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/hook_stop_template.py +0 -0
  15. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/hook_template.py +0 -0
  16. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/mcp_server.py +0 -0
  17. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/memory.py +0 -0
  18. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli/paxel.py +0 -0
  19. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
  20. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
  21. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli.egg-info/entry_points.txt +0 -0
  22. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli.egg-info/requires.txt +0 -0
  23. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/src/conduct_cli.egg-info/top_level.txt +0 -0
  24. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/tests/test_guard_policy.py +0 -0
  25. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/tests/test_guard_savings.py +0 -0
  26. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/tests/test_hook_syntax.py +0 -0
  27. {conduct_cli-0.4.91 → conduct_cli-0.4.93}/tests/test_switch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.4.91
3
+ Version: 0.4.93
4
4
  Summary: CLI for Conduct AI — 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.4.91"
7
+ version = "0.4.93"
8
8
  description = "CLI for Conduct AI — install agents, manage projects, run tests"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -168,6 +168,7 @@ def _load_guard_config() -> dict:
168
168
  def _save_guard_config(data: dict):
169
169
  GUARD_DIR.mkdir(parents=True, exist_ok=True)
170
170
  CONFIG_PATH.write_text(json.dumps(data, indent=2))
171
+ CONFIG_PATH.chmod(0o600)
171
172
 
172
173
 
173
174
  def _require_guard_config() -> dict:
@@ -2286,8 +2286,12 @@ def cmd_session_report(args):
2286
2286
  )
2287
2287
  __import__("urllib.request", fromlist=["urlopen"]).urlopen(req, timeout=10)
2288
2288
  print("✓ Report saved to Guard dashboard.")
2289
- except Exception:
2290
- print(" (Could not push to dashboard — run 'conduct login' to enable)")
2289
+ except Exception as _push_err:
2290
+ msg = str(_push_err)
2291
+ if "conduct login" in msg or "No server" in msg or "No workspace" in msg or "No credentials" in msg:
2292
+ print(" (Could not push to dashboard — run 'conduct login' to enable)")
2293
+ else:
2294
+ print(f" (Dashboard push failed: {_push_err})")
2291
2295
 
2292
2296
 
2293
2297
  def cmd_emit_finding(args):
@@ -2368,12 +2372,30 @@ def cmd_run(args):
2368
2372
  print(f" {GRAY}{k}={v}{RESET}")
2369
2373
  print()
2370
2374
 
2375
+ # Preflight: estimate turns + show files likely to be modified
2376
+ try:
2377
+ pf = api.req("POST", f"{server}/workflows/{workflow_id}/preflight", json_h, {
2378
+ "issue_title": initial_state.get("title", ""),
2379
+ "issue_body": initial_state.get("body", ""),
2380
+ })
2381
+ suggested = pf.get("suggested_max_turns", 20)
2382
+ files = pf.get("total_files", [])
2383
+ print(f" {BOLD}Estimated turns:{RESET} {suggested}")
2384
+ if files:
2385
+ print(f" {BOLD}Files likely to be modified:{RESET} {', '.join(files)}")
2386
+ print()
2387
+ except Exception:
2388
+ suggested = 20
2389
+
2371
2390
  # Call the test-trigger endpoint so the YAML's built-in test_trigger.payload
2372
2391
  # (PR fixture, issue fixture, etc.) is loaded and the configured repo is
2373
2392
  # injected — instead of running with an empty trigger context.
2374
2393
  body: dict = {**initial_state}
2394
+ # Use preflight suggestion unless user explicitly passed --max-turns
2375
2395
  if getattr(args, "max_turns", None):
2376
2396
  body["__max_turns"] = args.max_turns
2397
+ elif suggested > 20:
2398
+ body["__max_turns"] = suggested
2377
2399
  run = api.req("POST", f"{server}/workflows/{workflow_id}/trigger", json_h, body)
2378
2400
  _stream_run(server, workflow_id, run["id"], workspace_id, token, api_key)
2379
2401
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: conduct-cli
3
- Version: 0.4.91
3
+ Version: 0.4.93
4
4
  Summary: CLI for Conduct AI — 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