claude-comms 1.0.1 → 1.0.2
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.
- package/CHANGELOG.md +53 -0
- package/README.md +64 -23
- package/bin/claude-setup.js +118 -38
- package/package.json +65 -18
- package/src/cli/index.js +30 -0
- package/src/cli/interfaces.js +386 -0
- package/src/cli/parser.js +158 -0
- package/src/cli/prompts.js +317 -0
- package/src/cli/runner.js +436 -0
- package/src/fetcher/github.js +676 -0
- package/src/index.js +221 -0
- package/src/installer/dependency-check.js +19 -0
- package/src/installer/file-writer.js +648 -0
- package/src/orchestrator/installer.js +849 -0
- package/src/orchestrator/main.js +267 -0
- package/src/orchestrator/mocks/index.js +388 -0
- package/src/utils/config.js +430 -0
- package/src/utils/constants.js +397 -0
- package/src/utils/errors.js +361 -0
- package/src/utils/index.js +46 -0
- package/src/utils/logger.js +177 -0
- package/src/utils/platform.js +362 -0
- package/src/utils/retry.js +358 -0
- package/templates/settings.local.json +1 -0
- package/.claude/hooks/comms/messages_UmaMatrix.json +0 -10
- package/.claude/hooks/comms/messages_VictorSpiral.json +0 -10
- package/.claude/hooks/comms/messages_WendyQuantum.json +0 -10
- package/.claude/hooks/comms/messages_XavierPrism.json +0 -10
- package/templates/get_unread_messages.py +0 -54
- package/templates/send_message.py +0 -75
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"messages": [
|
|
3
|
-
{
|
|
4
|
-
"sender": "TaylorPulse",
|
|
5
|
-
"message": "\ud83d\udce6 PACKAGE PUBLISHED: claude-comms v1.0.0 successfully published to npm\\! Available via 'npx claude-comms'. Package renamed from @claude-code/setup-installer. Ready for team integration.",
|
|
6
|
-
"timestamp": "2025-08-15T19:29:25.723048",
|
|
7
|
-
"read": false
|
|
8
|
-
}
|
|
9
|
-
]
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"messages": [
|
|
3
|
-
{
|
|
4
|
-
"sender": "TaylorPulse",
|
|
5
|
-
"message": "\ud83d\udce6 PACKAGE PUBLISHED: claude-comms v1.0.0 successfully published to npm\\! Available via 'npx claude-comms'. Package renamed from @claude-code/setup-installer. Ready for team integration.",
|
|
6
|
-
"timestamp": "2025-08-15T19:29:25.723048",
|
|
7
|
-
"read": false
|
|
8
|
-
}
|
|
9
|
-
]
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"messages": [
|
|
3
|
-
{
|
|
4
|
-
"sender": "TaylorPulse",
|
|
5
|
-
"message": "\ud83d\udce6 PACKAGE PUBLISHED: claude-comms v1.0.0 successfully published to npm\\! Available via 'npx claude-comms'. Package renamed from @claude-code/setup-installer. Ready for team integration.",
|
|
6
|
-
"timestamp": "2025-08-15T19:29:25.723048",
|
|
7
|
-
"read": false
|
|
8
|
-
}
|
|
9
|
-
]
|
|
10
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"messages": [
|
|
3
|
-
{
|
|
4
|
-
"sender": "TaylorPulse",
|
|
5
|
-
"message": "\ud83d\udce6 PACKAGE PUBLISHED: claude-comms v1.0.0 successfully published to npm\\! Available via 'npx claude-comms'. Package renamed from @claude-code/setup-installer. Ready for team integration.",
|
|
6
|
-
"timestamp": "2025-08-15T19:29:25.723048",
|
|
7
|
-
"read": false
|
|
8
|
-
}
|
|
9
|
-
]
|
|
10
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Get unread messages for an agent
|
|
4
|
-
"""
|
|
5
|
-
import argparse
|
|
6
|
-
import json
|
|
7
|
-
import os
|
|
8
|
-
from datetime import datetime
|
|
9
|
-
|
|
10
|
-
def get_unread_messages(agent_name):
|
|
11
|
-
"""Get unread messages for the specified agent"""
|
|
12
|
-
messages_file = f".claude/hooks/comms/messages_{agent_name}.json"
|
|
13
|
-
|
|
14
|
-
if not os.path.exists(messages_file):
|
|
15
|
-
return []
|
|
16
|
-
|
|
17
|
-
try:
|
|
18
|
-
with open(messages_file, 'r') as f:
|
|
19
|
-
data = json.load(f)
|
|
20
|
-
|
|
21
|
-
unread_messages = [msg for msg in data.get('messages', []) if not msg.get('read', False)]
|
|
22
|
-
|
|
23
|
-
# Mark messages as read
|
|
24
|
-
for msg in data.get('messages', []):
|
|
25
|
-
msg['read'] = True
|
|
26
|
-
|
|
27
|
-
with open(messages_file, 'w') as f:
|
|
28
|
-
json.dump(data, f, indent=2)
|
|
29
|
-
|
|
30
|
-
return unread_messages
|
|
31
|
-
|
|
32
|
-
except json.JSONDecodeError:
|
|
33
|
-
return []
|
|
34
|
-
|
|
35
|
-
def main():
|
|
36
|
-
parser = argparse.ArgumentParser(description='Get unread messages for an agent')
|
|
37
|
-
parser.add_argument('--name', required=True, help='Agent name')
|
|
38
|
-
args = parser.parse_args()
|
|
39
|
-
|
|
40
|
-
messages = get_unread_messages(args.name)
|
|
41
|
-
|
|
42
|
-
if messages:
|
|
43
|
-
print(f"📬 {len(messages)} unread message(s) for {args.name}:")
|
|
44
|
-
for i, msg in enumerate(messages, 1):
|
|
45
|
-
timestamp = msg.get('timestamp', 'Unknown time')
|
|
46
|
-
sender = msg.get('sender', 'Unknown sender')
|
|
47
|
-
content = msg.get('message', 'No content')
|
|
48
|
-
print(f"\n{i}. From {sender} at {timestamp}:")
|
|
49
|
-
print(f" {content}")
|
|
50
|
-
else:
|
|
51
|
-
print(f"📭 No unread messages for {args.name}")
|
|
52
|
-
|
|
53
|
-
if __name__ == '__main__':
|
|
54
|
-
main()
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Send a message to team members
|
|
4
|
-
"""
|
|
5
|
-
import argparse
|
|
6
|
-
import json
|
|
7
|
-
import os
|
|
8
|
-
from datetime import datetime
|
|
9
|
-
import glob
|
|
10
|
-
|
|
11
|
-
def send_message(sender, message, recipient=None):
|
|
12
|
-
"""Send a message to team members"""
|
|
13
|
-
timestamp = datetime.now().isoformat()
|
|
14
|
-
|
|
15
|
-
# Get all agent message files or specific recipient
|
|
16
|
-
if recipient:
|
|
17
|
-
message_files = [f".claude/hooks/comms/messages_{recipient}.json"]
|
|
18
|
-
else:
|
|
19
|
-
message_files = glob.glob(".claude/hooks/comms/messages_*.json")
|
|
20
|
-
# Also create files for known team members if they don't exist
|
|
21
|
-
known_agents = ['UmaMatrix', 'VictorSpiral', 'WendyQuantum', 'XavierPrism', 'TaylorPulse']
|
|
22
|
-
for agent in known_agents:
|
|
23
|
-
if agent != sender: # Don't send to self
|
|
24
|
-
agent_file = f".claude/hooks/comms/messages_{agent}.json"
|
|
25
|
-
if agent_file not in message_files:
|
|
26
|
-
message_files.append(agent_file)
|
|
27
|
-
|
|
28
|
-
message_data = {
|
|
29
|
-
'sender': sender,
|
|
30
|
-
'message': message,
|
|
31
|
-
'timestamp': timestamp,
|
|
32
|
-
'read': False
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
for file_path in message_files:
|
|
36
|
-
# Skip sending to self
|
|
37
|
-
if sender in file_path:
|
|
38
|
-
continue
|
|
39
|
-
|
|
40
|
-
# Load existing messages or create new file
|
|
41
|
-
if os.path.exists(file_path):
|
|
42
|
-
try:
|
|
43
|
-
with open(file_path, 'r') as f:
|
|
44
|
-
data = json.load(f)
|
|
45
|
-
except json.JSONDecodeError:
|
|
46
|
-
data = {'messages': []}
|
|
47
|
-
else:
|
|
48
|
-
data = {'messages': []}
|
|
49
|
-
|
|
50
|
-
# Add new message
|
|
51
|
-
data['messages'].append(message_data)
|
|
52
|
-
|
|
53
|
-
# Ensure directory exists
|
|
54
|
-
os.makedirs(os.path.dirname(file_path), exist_ok=True)
|
|
55
|
-
|
|
56
|
-
# Save updated messages
|
|
57
|
-
with open(file_path, 'w') as f:
|
|
58
|
-
json.dump(data, f, indent=2)
|
|
59
|
-
|
|
60
|
-
def main():
|
|
61
|
-
parser = argparse.ArgumentParser(description='Send a message to team members')
|
|
62
|
-
parser.add_argument('--sender', required=True, help='Sender name')
|
|
63
|
-
parser.add_argument('--message', required=True, help='Message content')
|
|
64
|
-
parser.add_argument('--recipient', help='Specific recipient (optional, broadcasts to all if not specified)')
|
|
65
|
-
args = parser.parse_args()
|
|
66
|
-
|
|
67
|
-
send_message(args.sender, args.message, args.recipient)
|
|
68
|
-
|
|
69
|
-
if args.recipient:
|
|
70
|
-
print(f"📤 Message sent from {args.sender} to {args.recipient}")
|
|
71
|
-
else:
|
|
72
|
-
print(f"📢 Broadcast sent from {args.sender} to team")
|
|
73
|
-
|
|
74
|
-
if __name__ == '__main__':
|
|
75
|
-
main()
|