conduct-cli 0.6.35__tar.gz → 0.6.37__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.6.35 → conduct_cli-0.6.37}/PKG-INFO +1 -1
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/pyproject.toml +1 -1
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/guard.py +2 -1
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/main.py +4 -3
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli.egg-info/PKG-INFO +1 -1
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/README.md +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/setup.cfg +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/setup.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/__init__.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/api.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/guardmcp.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/__init__.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/base.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/posttooluse.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/precompact.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/pretooluse.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/session_parser.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/session_start.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/hooks/stop.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/log_util.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/mcp_server.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/memory.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli/paxel.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli.egg-info/entry_points.txt +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli.egg-info/requires.txt +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/src/conduct_cli.egg-info/top_level.txt +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_bash_operator_signature.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_command_word_matcher.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_guard_policy.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_guard_savings.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_hook_syntax.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_journal_drain.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_log_util.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_proxy_env.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/tests/test_signed_policy.py +0 -0
- {conduct_cli-0.6.35 → conduct_cli-0.6.37}/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.6.
|
|
7
|
+
version = "0.6.37"
|
|
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" }
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
1
2
|
"""conduct guard — team policy + MCP registration subcommand."""
|
|
2
3
|
|
|
3
4
|
import json
|
|
@@ -1244,7 +1245,7 @@ def cmd_guard_sync(args):
|
|
|
1244
1245
|
# Print Claude.ai remote MCP URL — requires one-time browser paste
|
|
1245
1246
|
member_token = cfg.get("member_token", "")
|
|
1246
1247
|
if workspace_id and member_token:
|
|
1247
|
-
mcp_url =
|
|
1248
|
+
mcp_url = "https://api.conductai.ai/guard/mcp"
|
|
1248
1249
|
print(f"\n{BOLD}Claude.ai{RESET} (one-time browser setup):")
|
|
1249
1250
|
print(f" Settings → MCP Servers → Add custom server")
|
|
1250
1251
|
print(f" URL: {CYAN}{mcp_url}{RESET}")
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
1
2
|
import argparse
|
|
2
3
|
import importlib.metadata
|
|
3
4
|
import json
|
|
@@ -149,10 +150,10 @@ def _stream_run(server: str, workflow_id: str, run_id: str, workspace_id: str, t
|
|
|
149
150
|
label = payload.get("label") or payload.get("type", "")
|
|
150
151
|
print(f"{BLUE} ▶ {prefix}{label}{RESET}")
|
|
151
152
|
elif kind == "block_completed":
|
|
152
|
-
summary = payload.get("summary") or json.dumps(payload, default=str)[:120]
|
|
153
|
+
summary = payload.get("summary") or json.dumps(payload, default=str, ensure_ascii=False)[:120]
|
|
153
154
|
print(f"{GREEN} ✓ {prefix}{summary}{RESET}")
|
|
154
155
|
elif kind == "block_failed":
|
|
155
|
-
err = payload.get("error", json.dumps(payload, default=str)[:200])
|
|
156
|
+
err = payload.get("error", json.dumps(payload, default=str, ensure_ascii=False)[:200])
|
|
156
157
|
print(f"{RED} ✗ {prefix}{err}{RESET}")
|
|
157
158
|
elif kind == "brain_tool_call":
|
|
158
159
|
summary = payload.get("summary", payload.get("tool", ""))
|
|
@@ -163,7 +164,7 @@ def _stream_run(server: str, workflow_id: str, run_id: str, workspace_id: str, t
|
|
|
163
164
|
err = payload.get("error", "")
|
|
164
165
|
print(f"{BOLD}{RED} ✗ failed: {err}{RESET}")
|
|
165
166
|
else:
|
|
166
|
-
print(f"{GRAY} {kind}: {json.dumps(payload, default=str)[:120]}{RESET}")
|
|
167
|
+
print(f"{GRAY} {kind}: {json.dumps(payload, default=str, ensure_ascii=False)[:120]}{RESET}")
|
|
167
168
|
|
|
168
169
|
if kind in ("run_completed", "run_failed"):
|
|
169
170
|
return kind == "run_completed"
|
|
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
|