conduct-cli 0.7.8__tar.gz → 0.7.9__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.7.8 → conduct_cli-0.7.9}/PKG-INFO +1 -1
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/pyproject.toml +1 -1
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/base.py +1 -1
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli.egg-info/PKG-INFO +1 -1
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_hook_dispatch.py +21 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/README.md +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/setup.cfg +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/setup.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/__init__.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/api.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/guard.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/guardmcp.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/__init__.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/posttooluse.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/precompact.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/pretooluse.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/session_parser.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/session_report_push.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/session_start.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/hooks/stop.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/log_util.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/main.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/mcp_server.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/memory.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli/paxel.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli.egg-info/SOURCES.txt +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli.egg-info/dependency_links.txt +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli.egg-info/entry_points.txt +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli.egg-info/requires.txt +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/src/conduct_cli.egg-info/top_level.txt +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_advisory_and_hook.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_bash_operator_signature.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_command_word_matcher.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_guard_policy.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_guard_savings.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_hook_syntax.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_journal_drain.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_log_util.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_proxy_env.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/tests/test_signed_policy.py +0 -0
- {conduct_cli-0.7.8 → conduct_cli-0.7.9}/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.7.
|
|
7
|
+
version = "0.7.9"
|
|
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" }
|
|
@@ -227,7 +227,7 @@ def post_event(
|
|
|
227
227
|
"clerk_user_id": cfg.get("user_email"),
|
|
228
228
|
"user_email": cfg.get("user_email"),
|
|
229
229
|
"ai_tool": detect_ai_tool(),
|
|
230
|
-
"tool_call": tool_name,
|
|
230
|
+
"tool_call": tool_name[:255],
|
|
231
231
|
"input_summary": _safe_summary(tool_input),
|
|
232
232
|
"decision": decision,
|
|
233
233
|
"rule_id": rule_id,
|
|
@@ -166,6 +166,27 @@ def test_read_tokens_extracts_from_valid_transcript(tmp_path):
|
|
|
166
166
|
|
|
167
167
|
# ── 5. Journal payload structure ─────────────────────────────────────────────
|
|
168
168
|
|
|
169
|
+
def test_post_event_tool_call_fits_db_column(tmp_path):
|
|
170
|
+
"""tool_call in journal payload must not exceed 255 chars (DB column limit)."""
|
|
171
|
+
from conduct_cli.hooks import base
|
|
172
|
+
|
|
173
|
+
journal_dir = tmp_path / "journal"
|
|
174
|
+
cfg = {"workspace_id": "test-ws", "user_email": "x@x.com", "api_url": "https://api.conductai.ai"}
|
|
175
|
+
long_name = "mcp__" + "x" * 260 # deliberately over 255
|
|
176
|
+
|
|
177
|
+
with (
|
|
178
|
+
patch.object(base, "JOURNAL_DIR", journal_dir),
|
|
179
|
+
patch.object(base, "JOURNAL_PID_PATH", journal_dir / "drain.pid"),
|
|
180
|
+
patch.object(base, "load_config", return_value=cfg),
|
|
181
|
+
patch.object(base, "ensure_drain_daemon"),
|
|
182
|
+
):
|
|
183
|
+
base.post_event(long_name, {}, "allowed", session_id="s")
|
|
184
|
+
|
|
185
|
+
files = list(journal_dir.glob("*.json"))
|
|
186
|
+
payload = json.loads(json.loads(files[0].read_text())["payload"])
|
|
187
|
+
assert len(payload["tool_call"]) <= 255, "tool_call must be truncated to 255 chars"
|
|
188
|
+
|
|
189
|
+
|
|
169
190
|
def test_post_event_journal_payload_has_required_fields(tmp_path):
|
|
170
191
|
"""post_event must journal a payload with workspace_id and hook_session_id."""
|
|
171
192
|
from conduct_cli.hooks import base
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|