diff --git a/.letta/settings.json b/.letta/settings.json index 488b3c9..50e4b04 100644 --- a/.letta/settings.json +++ b/.letta/settings.json @@ -40,5 +40,10 @@ ] } ] + }, + "permissions": { + "allow": [ + "Bash(echo:*)" + ] } -} +} \ No newline at end of file diff --git a/data/published_messages.txt b/data/published_messages.txt index 9a7049f..bf99920 100644 --- a/data/published_messages.txt +++ b/data/published_messages.txt @@ -605,3 +605,55 @@ message-6310aacc-12c5-451e-9203-5a8eaa1e8cde message-16a93fcf-e60d-4cf3-80c7-4e346d768ef2 message-72ac3a58-b349-42b3-94c0-889c988b6d59 message-72ac3a58-b349-42b3-94c0-889c988b6d59 +message-afa61302-d083-4fdf-b918-b3cd3975f611 +message-11683e34-e5dc-461f-b643-8d123a364cde +message-6b7cbd5e-e53b-4eba-ae35-0ecf2d6a1dac +message-71d7b807-2f73-45fa-b44b-77fd09ee3c14 +message-09969801-5d94-43f7-a04b-e55bc636d593 +message-bfecbfb0-9d03-4678-9671-3f96408dbc55 +message-bfecbfb0-9d03-4678-9671-3f96408dbc55 +message-d14887c4-77d2-4664-a52e-d4fcd78bebf5 +message-d14887c4-77d2-4664-a52e-d4fcd78bebf5 +message-53a2a9be-d4d1-4a8a-a50a-af3a5e8c03e5 +message-53a2a9be-d4d1-4a8a-a50a-af3a5e8c03e5 +message-6f500d9c-b7de-464b-9dc8-a3b26d0a5313 +message-1848c505-0a0b-4604-badc-8585269be6bc +message-1848c505-0a0b-4604-badc-8585269be6bc +message-aa65b95b-86ff-41f1-b097-26f21c827e66 +message-aa65b95b-86ff-41f1-b097-26f21c827e66 +message-b4a293ff-81e0-4fd2-9990-3d6826535905 +message-7d621011-21b4-4c20-a399-8c453b5e0d91 +message-7d621011-21b4-4c20-a399-8c453b5e0d91 +message-102a6dfb-91bd-4cee-b742-97b8a0a22a55 +message-102a6dfb-91bd-4cee-b742-97b8a0a22a55 +message-115d7844-31b6-417c-abd3-f9a5f663ab2f +message-aec61002-8b75-4378-ac4f-c043c9bc51e9 +message-aec61002-8b75-4378-ac4f-c043c9bc51e9 +message-49f2d06e-fe31-4f84-9c74-9fc4afd66a31 +message-6a454da5-2331-450c-bbbc-5c63629dee4d +message-6a454da5-2331-450c-bbbc-5c63629dee4d +message-ca3371b5-a4b2-43c9-a264-34216e867b03 +message-7804bb71-763a-4f6c-9078-7af1de0acc37 +message-7804bb71-763a-4f6c-9078-7af1de0acc37 +message-a77aac42-14f0-47dd-8114-14bc8a187c76 +message-a154d421-82e0-49d3-9320-aa260a7e1b4f +message-0519b014-99ba-4d5a-a70e-710996ff39e4 +message-0519b014-99ba-4d5a-a70e-710996ff39e4 +message-5e31c38b-5ef9-4a4c-8881-c8672ccb16e8 +message-6681b6e1-daff-4f2e-b1bd-15f9789a95c3 +message-6681b6e1-daff-4f2e-b1bd-15f9789a95c3 +message-034e547c-a3f1-4484-b07f-7779c2a4a198 +message-034e547c-a3f1-4484-b07f-7779c2a4a198 +message-31ab8d3f-a88d-4f3d-90fa-89d4dc1e95de +message-754b77b1-4a90-429a-b167-2fd966349c49 +message-754b77b1-4a90-429a-b167-2fd966349c49 +message-8c65d7b9-8469-43c9-abb9-bb96bf901bb7 +message-8c65d7b9-8469-43c9-abb9-bb96bf901bb7 +message-8240ad2e-dbb7-4573-b496-b71ed2dfe226 +message-87d92430-7fda-4194-98b9-b003eaa4c1c2 +message-87d92430-7fda-4194-98b9-b003eaa4c1c2 +message-63217b37-50b8-4a70-ac78-a4285fe59ba0 +message-63217b37-50b8-4a70-ac78-a4285fe59ba0 +message-0c2b726e-90c9-4331-923c-2baa1dd70bcc +message-1b3a1791-7461-423d-b9a2-962a668c0b4b +message-1b3a1791-7461-423d-b9a2-962a668c0b4b diff --git a/hooks/enforce-comms.py b/hooks/enforce-comms.py index 77e676e..33f7fd0 100644 --- a/hooks/enforce-comms.py +++ b/hooks/enforce-comms.py @@ -34,10 +34,15 @@ POSTING_PATTERNS = [ def main(): """Process PreToolUse hook input.""" + # Debug: log that we were called + print("ENFORCE-COMMS: Hook invoked", file=sys.stderr) + try: input_data = json.load(sys.stdin) - except Exception: + print(f"ENFORCE-COMMS: Got input: {input_data.get('tool_name', 'unknown')}", file=sys.stderr) + except Exception as e: # If we can't parse input, allow the action + print(f"ENFORCE-COMMS: Parse error: {e}", file=sys.stderr) sys.exit(0) event_type = input_data.get("event_type") @@ -52,15 +57,13 @@ def main(): if tool_name != "Bash": sys.exit(0) - # Check current agent - current_agent = os.environ.get("LETTA_AGENT_ID", "") - - # If this is comms or any other agent (not central), allow - if current_agent != CENTRAL_AGENT_ID: - sys.exit(0) + # Note: LETTA_AGENT_ID env var is not set by Letta Code hooks + # This hook is project-specific, so we enforce for all agents in this project + # (which is effectively just central) # Get the command being run command = tool_input.get("command", "") + print(f"ENFORCE-COMMS: Command: {command[:100]}", file=sys.stderr) # Check if command matches any posting pattern for pattern in POSTING_PATTERNS: