claude-mpm 3.4.2__py3-none-any.whl → 3.4.5__py3-none-any.whl

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.
claude_mpm/cli/parser.py CHANGED
@@ -14,7 +14,7 @@ import argparse
14
14
  from pathlib import Path
15
15
  from typing import Optional, List
16
16
 
17
- from ..constants import CLICommands, CLIPrefix, AgentCommands, MemoryCommands, LogLevel
17
+ from ..constants import CLICommands, CLIPrefix, AgentCommands, MemoryCommands, MonitorCommands, LogLevel
18
18
 
19
19
 
20
20
  def add_common_arguments(parser: argparse.ArgumentParser, version: str = None) -> None:
@@ -481,6 +481,74 @@ def create_parser(prog_name: str = "claude-mpm", version: str = "0.0.0") -> argp
481
481
  help="Output raw memory content in JSON format for programmatic processing"
482
482
  )
483
483
 
484
+ # Monitor command with subcommands
485
+ monitor_parser = subparsers.add_parser(
486
+ CLICommands.MONITOR.value,
487
+ help="Manage Socket.IO monitoring server"
488
+ )
489
+ add_common_arguments(monitor_parser)
490
+
491
+ monitor_subparsers = monitor_parser.add_subparsers(
492
+ dest="monitor_command",
493
+ help="Monitor commands",
494
+ metavar="SUBCOMMAND"
495
+ )
496
+
497
+ # Start monitor
498
+ start_monitor_parser = monitor_subparsers.add_parser(
499
+ MonitorCommands.START.value,
500
+ help="Start Socket.IO monitoring server"
501
+ )
502
+ start_monitor_parser.add_argument(
503
+ "--port",
504
+ type=int,
505
+ default=8765,
506
+ help="Port to start server on (default: 8765)"
507
+ )
508
+ start_monitor_parser.add_argument(
509
+ "--host",
510
+ default="localhost",
511
+ help="Host to bind to (default: localhost)"
512
+ )
513
+
514
+ # Stop monitor
515
+ stop_monitor_parser = monitor_subparsers.add_parser(
516
+ MonitorCommands.STOP.value,
517
+ help="Stop Socket.IO monitoring server"
518
+ )
519
+ stop_monitor_parser.add_argument(
520
+ "--port",
521
+ type=int,
522
+ help="Port of server to stop (auto-detect if not specified)"
523
+ )
524
+
525
+ # Restart monitor
526
+ restart_monitor_parser = monitor_subparsers.add_parser(
527
+ MonitorCommands.RESTART.value,
528
+ help="Restart Socket.IO monitoring server"
529
+ )
530
+ restart_monitor_parser.add_argument(
531
+ "--port",
532
+ type=int,
533
+ help="Port of server to restart (auto-detect if not specified)"
534
+ )
535
+
536
+ # Port monitor - start/restart on specific port
537
+ port_monitor_parser = monitor_subparsers.add_parser(
538
+ MonitorCommands.PORT.value,
539
+ help="Start/restart Socket.IO monitoring server on specific port"
540
+ )
541
+ port_monitor_parser.add_argument(
542
+ "port",
543
+ type=int,
544
+ help="Port number to start/restart server on"
545
+ )
546
+ port_monitor_parser.add_argument(
547
+ "--host",
548
+ default="localhost",
549
+ help="Host to bind to (default: localhost)"
550
+ )
551
+
484
552
  return parser
485
553
 
486
554
 
claude_mpm/constants.py CHANGED
@@ -28,6 +28,7 @@ class CLICommands(str, Enum):
28
28
  AGENTS = "agents"
29
29
  UI = "ui"
30
30
  MEMORY = "memory"
31
+ MONITOR = "monitor"
31
32
 
32
33
  def with_prefix(self, prefix: CLIPrefix = CLIPrefix.MPM) -> str:
33
34
  """Get command with prefix."""
@@ -70,6 +71,14 @@ class MemoryCommands(str, Enum):
70
71
  SHOW = "show"
71
72
 
72
73
 
74
+ class MonitorCommands(str, Enum):
75
+ """Monitor subcommand constants."""
76
+ START = "start"
77
+ STOP = "stop"
78
+ RESTART = "restart"
79
+ PORT = "port"
80
+
81
+
73
82
  class CLIFlags(str, Enum):
74
83
  """CLI flag constants (without prefix)."""
75
84
  # Logging flags
@@ -118,6 +118,68 @@ class MemoryRouter(LoggerMixin):
118
118
  'Project Coordination', 'Team Communication',
119
119
  'Process Improvements', 'Risk Management'
120
120
  ]
121
+ },
122
+ 'data_engineer': {
123
+ 'keywords': [
124
+ 'data', 'database', 'sql', 'pipeline', 'etl', 'elt', 'extract', 'transform',
125
+ 'load', 'analytics', 'warehouse', 'lake', 'schema', 'migration',
126
+ 'replication', 'streaming', 'batch', 'kafka', 'spark', 'hadoop',
127
+ 'mongodb', 'postgres', 'mysql', 'redis', 'elasticsearch', 'index',
128
+ 'query', 'optimization', 'performance', 'partitioning', 'sharding',
129
+ 'normalization', 'denormalization', 'aggregation', 'cleansing',
130
+ 'validation', 'quality', 'lineage', 'governance', 'backup', 'restore',
131
+ 'ai api', 'openai', 'claude', 'llm', 'embedding', 'vector database'
132
+ ],
133
+ 'sections': [
134
+ 'Database Architecture Patterns', 'Pipeline Design Strategies',
135
+ 'Data Quality Standards', 'Performance Optimization Techniques'
136
+ ]
137
+ },
138
+ 'test_integration': {
139
+ 'keywords': [
140
+ 'integration', 'e2e', 'end-to-end', 'system test', 'workflow test',
141
+ 'cross-system', 'api test', 'contract test', 'service test',
142
+ 'boundary test', 'interface test', 'component test', 'smoke test',
143
+ 'acceptance test', 'scenario test', 'user journey', 'flow test',
144
+ 'regression', 'compatibility', 'interoperability', 'validation',
145
+ 'verification', 'mock', 'stub', 'test data', 'test environment',
146
+ 'test setup', 'teardown', 'isolation', 'coordination', 'synchronization',
147
+ 'selenium', 'cypress', 'playwright', 'postman', 'newman'
148
+ ],
149
+ 'sections': [
150
+ 'Integration Test Patterns', 'Cross-System Validation',
151
+ 'Test Environment Management', 'End-to-End Workflow Testing'
152
+ ]
153
+ },
154
+ 'ops': {
155
+ 'keywords': [
156
+ 'deployment', 'infrastructure', 'devops', 'cicd', 'ci/cd', 'docker',
157
+ 'container', 'kubernetes', 'helm', 'terraform', 'ansible', 'jenkins',
158
+ 'pipeline', 'build', 'release', 'staging', 'production', 'environment',
159
+ 'monitoring', 'logging', 'metrics', 'alerts', 'observability',
160
+ 'scaling', 'load balancer', 'proxy', 'nginx', 'apache', 'server',
161
+ 'network', 'firewall', 'vpc', 'aws', 'azure', 'gcp', 'cloud',
162
+ 'backup', 'disaster recovery', 'failover', 'redundancy', 'uptime',
163
+ 'prometheus', 'grafana', 'splunk', 'datadog', 'newrelic'
164
+ ],
165
+ 'sections': [
166
+ 'Deployment Strategies', 'Infrastructure Patterns',
167
+ 'Monitoring and Observability', 'Scaling and Performance'
168
+ ]
169
+ },
170
+ 'version_control': {
171
+ 'keywords': [
172
+ 'git', 'github', 'gitlab', 'bitbucket', 'branch', 'merge', 'commit',
173
+ 'pull request', 'merge request', 'tag', 'release', 'version', 'changelog',
174
+ 'semantic versioning', 'semver', 'workflow', 'gitflow', 'conflict',
175
+ 'resolution', 'rebase', 'cherry-pick', 'stash', 'bisect', 'blame',
176
+ 'diff', 'patch', 'submodule', 'hook', 'pre-commit', 'post-commit',
177
+ 'repository', 'remote', 'origin', 'upstream', 'fork', 'clone'
178
+ ],
179
+ 'sections': [
180
+ 'Branching Strategies', 'Release Management',
181
+ 'Version Control Workflows', 'Collaboration Patterns'
182
+ ]
121
183
  }
122
184
  }
123
185
 
@@ -133,6 +195,31 @@ class MemoryRouter(LoggerMixin):
133
195
  super().__init__()
134
196
  self.config = config or Config()
135
197
 
198
+ def get_supported_agents(self) -> List[str]:
199
+ """Get list of supported agent types.
200
+
201
+ WHY: Other components need to know which agent types are supported
202
+ for validation and UI display purposes.
203
+
204
+ Returns:
205
+ List of supported agent type names
206
+ """
207
+ return list(self.AGENT_PATTERNS.keys())
208
+
209
+ def is_agent_supported(self, agent_type: str) -> bool:
210
+ """Check if an agent type is supported by the memory router.
211
+
212
+ WHY: Provides validation for agent types before attempting routing.
213
+ This prevents errors and provides clear feedback about unsupported types.
214
+
215
+ Args:
216
+ agent_type: Agent type to check
217
+
218
+ Returns:
219
+ True if agent type is supported, False otherwise
220
+ """
221
+ return agent_type in self.AGENT_PATTERNS
222
+
136
223
  def analyze_and_route(self, content: str, context: Optional[Dict] = None) -> Dict[str, Any]:
137
224
  """Analyze content and determine target agent for memory storage.
138
225
 
@@ -187,7 +274,9 @@ class MemoryRouter(LoggerMixin):
187
274
  "section": "Recent Learnings",
188
275
  "confidence": 0.1,
189
276
  "reasoning": f"Error during analysis, defaulting to {self.DEFAULT_AGENT}",
190
- "error": str(e)
277
+ "error": str(e),
278
+ "timestamp": datetime.now().isoformat(),
279
+ "content_length": len(content) if content else 0
191
280
  }
192
281
 
193
282
  def test_routing_patterns(self, test_cases: List[Dict[str, str]]) -> List[Dict[str, Any]]:
@@ -283,17 +372,20 @@ class MemoryRouter(LoggerMixin):
283
372
  matched_keywords = []
284
373
 
285
374
  for keyword in patterns['keywords']:
286
- # Exact keyword match
375
+ # Exact keyword match gets higher score
287
376
  if keyword in content:
288
- score += 1.0
377
+ # Multi-word keywords get bonus score
378
+ bonus = 1.5 if ' ' in keyword else 1.0
379
+ score += bonus
289
380
  matched_keywords.append(keyword)
290
381
  # Partial match (word contains keyword)
291
382
  elif any(keyword in word for word in content.split()):
292
383
  score += 0.5
293
384
 
294
- # Normalize score by number of keywords for this agent
385
+ # Normalize score by square root to avoid penalizing agents with many keywords
295
386
  if patterns['keywords']:
296
- score = score / len(patterns['keywords'])
387
+ import math
388
+ score = score / math.sqrt(len(patterns['keywords']))
297
389
 
298
390
  scores[agent] = {
299
391
  'score': score,
@@ -361,7 +453,8 @@ class MemoryRouter(LoggerMixin):
361
453
  best_agent = agent
362
454
 
363
455
  # If no clear winner, use default
364
- if best_score < 0.1:
456
+ # Lowered threshold to handle diverse agent patterns better
457
+ if best_score < 0.05:
365
458
  return self.DEFAULT_AGENT, 0.1
366
459
 
367
460
  # Convert score to confidence (0.0 to 1.0)
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Ticket module wrapper for backward compatibility.
4
+
5
+ This module provides backward compatibility for the ticket functionality
6
+ that was moved to the scripts directory.
7
+ """
8
+
9
+ import sys
10
+ import os
11
+ from pathlib import Path
12
+
13
+ # Add scripts directory to path so we can import the ticket module
14
+ scripts_dir = Path(__file__).parent.parent.parent / "scripts"
15
+ sys.path.insert(0, str(scripts_dir))
16
+
17
+ # Import and re-export the main function
18
+ try:
19
+ from ticket import main
20
+ except ImportError:
21
+ # Fallback if direct import fails
22
+ import importlib.util
23
+ ticket_path = scripts_dir / "ticket.py"
24
+ spec = importlib.util.spec_from_file_location("ticket", ticket_path)
25
+ ticket_module = importlib.util.module_from_spec(spec)
26
+ spec.loader.exec_module(ticket_module)
27
+ main = ticket_module.main
28
+
29
+ __all__ = ["main"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.4.2
3
+ Version: 3.4.5
4
4
  Summary: Claude Multi-agent Project Manager - Clean orchestration with ticket management
5
5
  Home-page: https://github.com/bobmatnyc/claude-mpm
6
6
  Author: Claude MPM Team
@@ -1,10 +1,11 @@
1
1
  claude_mpm/__init__.py,sha256=uDX48EOBrmJbY8Xv3bBpd8kibulIlmZv5jmczAjHNb8,648
2
2
  claude_mpm/__main__.py,sha256=8IcM9tEbTqSN_er04eKTPX3AGo6qzRiTnPI7KfIf7rw,641
3
- claude_mpm/constants.py,sha256=Fh8shwtbNnmCchaN-mNbjbvkRkV1EuCqxSkiK5rmduo,4346
3
+ claude_mpm/constants.py,sha256=yOf-82f1HH6pL19dB3dWPUqU09dnXuAx3kDh3xWpc1U,4526
4
4
  claude_mpm/deployment_paths.py,sha256=JO7-fhhp_AkVB7ZssggHDBbee-r2sokpkqjoqnQLTmM,9073
5
5
  claude_mpm/init.py,sha256=gOreOf7BLXkT0_HrQk_As4Kz1OT_NJG_RG0i0hbY0z0,8088
6
+ claude_mpm/ticket_wrapper.py,sha256=bWjLReYyuHSBguuiRm1d52rHYNHqrPJAOLUbMt4CnuM,836
6
7
  claude_mpm/agents/BASE_AGENT_TEMPLATE.md,sha256=TYgSd9jNBMWp4mAOBUl9dconX4RcGbvmMEScRy5uyko,3343
7
- claude_mpm/agents/INSTRUCTIONS.md,sha256=7CzaIBCf85rYCufZuOo4KjJGyWRrMd1AkN-Zzun93pE,13245
8
+ claude_mpm/agents/INSTRUCTIONS.md,sha256=tdekngpZ5RjECYZosOaDSBmXPZsVvZcwDQEmmlw7fOQ,14268
8
9
  claude_mpm/agents/__init__.py,sha256=r-p7ervzjLPD7_8dm2tXX_fwvdTZy6KwKA03ofxN3sA,3275
9
10
  claude_mpm/agents/agent_loader.py,sha256=P4h3qupJHvZL9dfb6ntB582xenYv9JbkMOVav_kNkAo,44030
10
11
  claude_mpm/agents/agent_loader_integration.py,sha256=z_DXxAIeuUD71HBYdxxvcFKoQYQxITLo8oAdN_M4LTA,7610
@@ -12,7 +13,7 @@ claude_mpm/agents/agents_metadata.py,sha256=Xju9Yim6XSv2u1J_Swre5VJySbdxxC-9TzpO
12
13
  claude_mpm/agents/base_agent.json,sha256=UDf5YgTwJWmHgBwdN0xIS11nZD16wa-j-9Vx44shNsg,5397
13
14
  claude_mpm/agents/base_agent_loader.py,sha256=0cVD__2y-kPHr3G2YxqRazMGYUZvqKWp0O-VCFN6cxg,18993
14
15
  claude_mpm/agents/system_agent_config.py,sha256=Lke4FFjU0Vq3LLo4O7KvtHxadP7agAwC-ljCXK40h_A,23526
15
- claude_mpm/agents/backups/INSTRUCTIONS.md,sha256=3iMs6KyLJ5HzCmzqze1FasWKLKevhqpqwb8PlYiJ7Gw,9155
16
+ claude_mpm/agents/backups/INSTRUCTIONS.md,sha256=tdekngpZ5RjECYZosOaDSBmXPZsVvZcwDQEmmlw7fOQ,14268
16
17
  claude_mpm/agents/schema/agent_schema.json,sha256=7zuSk4VfBNTlQN33AkfJp0Y1GltlviwengIM0mb7dGg,8741
17
18
  claude_mpm/agents/templates/__init__.py,sha256=7UyIChghCnkrDctvmCRYr0Wrnn8Oj-eCdgL0KpFy1Mo,2668
18
19
  claude_mpm/agents/templates/data_engineer.json,sha256=Z63nwhO3Bo3sUjSc4O0yGVFbJVdCmMLAgcBjKJmfc8Y,8793
@@ -25,6 +26,7 @@ claude_mpm/agents/templates/research.json,sha256=10XO-W7cV_SGP16SHboagjbNUlKUoGf
25
26
  claude_mpm/agents/templates/security.json,sha256=DkiB98uJf5mo5nP7EIhu8hhsvwGhOnR_FA60EJGuNBk,6741
26
27
  claude_mpm/agents/templates/test_integration.json,sha256=QqJtUABq23MlkldAaomTviopOvM7hqxNWbaYbUVCJpk,7620
27
28
  claude_mpm/agents/templates/version_control.json,sha256=H9GzDk8Ys8KmOEgfTWGr1GakKFscbd_907ObmAqzlzc,6535
29
+ claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
28
30
  claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json,sha256=lLso4RHXVTQmX4A1XwF84kT59zZDblPO1xCgBj4S4x8,5060
29
31
  claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json,sha256=snfJW2yW9aMv9ldCSIWW7zwnyoQRx5u7xLMkNlfus9I,2258
30
32
  claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json,sha256=21o8TGCM9TO6eocSV9Ev5MmCq-xYwwCqMU7KQESaY2Q,8479
@@ -33,14 +35,15 @@ claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json,sha256=_FHWnUeh
33
35
  claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4n_sqSbjnsFRELB2q501vgwm-o2tQNLJLYvnVP9LWU,5629
34
36
  claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
35
37
  claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
36
- claude_mpm/cli/__init__.py,sha256=OBcyg1xLPddsPURZPCvVhUfHkeak7Ph2qTvhOGYL7rQ,5506
37
- claude_mpm/cli/parser.py,sha256=Z6AOBnTi5QwB5MMDuxuWEbHB0HL5RVwLxSfXSPIQnX0,16232
38
+ claude_mpm/cli/__init__.py,sha256=hJ5y5HzRqx6EkCaPYnH0h9amv7hzKXlEUdLVYbaKTPA,5577
39
+ claude_mpm/cli/parser.py,sha256=ajdlusfbfcY44756pdrkfROEVlTaVJyEBDJup78Q-yE,18270
38
40
  claude_mpm/cli/utils.py,sha256=k_EHLcjDAzYhDeVeWvE-vqvHsEoG6Cc6Yk7fs3YoRVA,6022
39
- claude_mpm/cli/commands/__init__.py,sha256=6Oh31iPNWcAehZWIIkX2hoSUBTcvFU733P7Q8Ssf56g,509
41
+ claude_mpm/cli/commands/__init__.py,sha256=kUtBjfTYZnfAL_4QEPCBtFg2nWgJ2cxCPzIIsiFURXM,567
40
42
  claude_mpm/cli/commands/agents.py,sha256=FqqEQcfAfCxjz_E7fGQUtLznloJLz8fWQtnjQhkbalQ,6795
41
43
  claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
42
44
  claude_mpm/cli/commands/memory.py,sha256=6jYD1bgfnWA0DvBpLJnZCPYMRoGAPBopAED8Qr-iIos,37357
43
- claude_mpm/cli/commands/run.py,sha256=ArHaNBr2_jnZL5FuQdyOU1zySL27u6zdFOBGxkz3xcQ,28761
45
+ claude_mpm/cli/commands/monitor.py,sha256=80_tmSdfn_2cYpzxxPu9GnvFW0eixlSJ4wCqbn8VSCM,12407
46
+ claude_mpm/cli/commands/run.py,sha256=j8kFTdx4fwCR400NH-I0ORMc76J62IxUeVDaaq_DG7E,28312
44
47
  claude_mpm/cli/commands/tickets.py,sha256=SXyGtHSyGJwTeJwDAHf7kRbdiG1DlZkXkod5UoNy7Ik,2150
45
48
  claude_mpm/cli/commands/ui.py,sha256=FhBQiOKW61cNduyryRu0UhC366d6o1eEkBgbPd7Au1w,1900
46
49
  claude_mpm/cli_module/__init__.py,sha256=CkMp4gzWKoZZF_qKyBDi2sQaZw_GLWZYLtKouv-4f8s,390
@@ -110,16 +113,6 @@ claude_mpm/orchestration/archive/subprocess_orchestrator.py,sha256=TYTAHX6p4OpgB
110
113
  claude_mpm/orchestration/archive/system_prompt_orchestrator.py,sha256=R16sc-94kQVeGjJzTYmvKn0aYgj_9qxyzShDy1E5zpE,12853
111
114
  claude_mpm/orchestration/archive/wrapper_orchestrator.py,sha256=cvL0NJf9kCWf3QJl67ySwvtR1Hd9Rym28Ii8Rtsdi6Q,6806
112
115
  claude_mpm/schemas/workflow_validator.py,sha256=qRgGodJoIZQaLfZ8OzWz3Y9eVNz3ckrQwkJ2RvccxAs,17175
113
- claude_mpm/scripts/__init__.py,sha256=M2n9fQeyfILC8gogXvJv6ixnu7hwpqLEqLWJRaUN0MU,37
114
- claude_mpm/scripts/claude-mpm-socketio,sha256=usdZgOQs0vjAKBhUcGJoRPnzJt3wYZDQM88t71TTVeY,1029
115
- claude_mpm/scripts/claude_mpm_monitor.html,sha256=24g1YWNB8PZ2S_q2xLQycK0Z06e2C7yOTsEm6qQRVUI,17634
116
- claude_mpm/scripts/install_socketio_server.py,sha256=Bx3BL48EF1peH111k_HU7tQdcUU6QVthAemGQcPsano,15522
117
- claude_mpm/scripts/launch_monitor.py,sha256=fAgRFJknrYq31SEWD9oEAEH2xvR3Lh_bzRPGDKEAFGg,4437
118
- claude_mpm/scripts/launch_socketio_dashboard.py,sha256=BaZv_nuNY8rIFu76YhKswnrJAdM1pA3xNpb5-hQfsiA,9274
119
- claude_mpm/scripts/manage_version.py,sha256=5c86LD-_m0AlWqfgjRF6BH3Jc7n_nm5Z7hFVqB3iExQ,17524
120
- claude_mpm/scripts/socketio_daemon.py,sha256=__6AQytLHclOmUpZ88-OTJUYuzmn1tyJPPxuBJkDL0c,7037
121
- claude_mpm/scripts/socketio_server_manager.py,sha256=yTciMx45roXTN-j28hYiP1j0QCj4YliYC11387oWODY,30837
122
- claude_mpm/scripts/ticket.py,sha256=GmFimtTJxc927cCzJvvJH3gvoxXQtAB-W-xnuclcvNs,9350
123
116
  claude_mpm/services/__init__.py,sha256=dcZ5U4xQlk-zpAy8CLTuEcXzKDfHT0KdJf3bYSmZ1BM,1904
124
117
  claude_mpm/services/agent_capabilities_generator.py,sha256=hWG0zV2InmzrDMxSbQzjVBBTzEaxg0bFxl8tmTMJ8qA,6565
125
118
  claude_mpm/services/agent_deployment.py,sha256=DtK1BX2yCrutUkQdVPD01mYHm-ya36l3EPOnEcaDfog,67961
@@ -140,7 +133,7 @@ claude_mpm/services/health_monitor.py,sha256=utZf8RsiUWXRYIszAC9nHdMy3YSqzedIDBL
140
133
  claude_mpm/services/hook_service.py,sha256=hkpN8mXXYCwzdLVJwsoVg_fw5seEmei-q0ZzQyNoCXA,14200
141
134
  claude_mpm/services/memory_builder.py,sha256=Y_Gx0IIJhGjUx1NAjslC1MFPbRaXuoRdkQX69_zjrFg,34075
142
135
  claude_mpm/services/memory_optimizer.py,sha256=uydUqx0Nd3ib7KNfKnlR9tPW5MLSUC5OAJg0GH2Jj4E,23638
143
- claude_mpm/services/memory_router.py,sha256=opUFx2xJs1vZN6FyGo8yubqLRwQ6apIm1htZ_6yyoBc,17693
136
+ claude_mpm/services/memory_router.py,sha256=oki6D2ma1KWdgP6uSfu8xvLzRpk-k3PGw6CO5XDMGPY,22504
144
137
  claude_mpm/services/project_analyzer.py,sha256=3Ub_Tpcxm0LnYgcAipebvWr6TfofVqZNMkANejA2C44,33564
145
138
  claude_mpm/services/recovery_manager.py,sha256=K46vXbEWbxFUoS42s34OxN1rkddpisGG7E_ZdRyAZ-A,25792
146
139
  claude_mpm/services/shared_prompt_cache.py,sha256=D04lrRWyg0lHyqGcAHy7IYvRHRKSg6EOpAJwBUPa2wk,29890
@@ -199,9 +192,9 @@ claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E
199
192
  claude_mpm/utils/paths.py,sha256=Xv0SZWdZRkRjN9e6clBcA165ya00GNQxt7SwMz51tfA,10153
200
193
  claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
201
194
  claude_mpm/validation/agent_validator.py,sha256=GCA2b2rKhKDeaNyUqWxTiWIs3sDdWjD9cgOFRp9K6ic,18227
202
- claude_mpm-3.4.2.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
203
- claude_mpm-3.4.2.dist-info/METADATA,sha256=H6UpgRiXB8YzbdQyocYpFep9Gk8lZe4CjgznGJFywBk,6523
204
- claude_mpm-3.4.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
205
- claude_mpm-3.4.2.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
206
- claude_mpm-3.4.2.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
207
- claude_mpm-3.4.2.dist-info/RECORD,,
195
+ claude_mpm-3.4.5.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
196
+ claude_mpm-3.4.5.dist-info/METADATA,sha256=sCgjFZJw2ZU2PBxey_7EAhX23lisP9OGfL3yhcQM6rs,6523
197
+ claude_mpm-3.4.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
198
+ claude_mpm-3.4.5.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
199
+ claude_mpm-3.4.5.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
200
+ claude_mpm-3.4.5.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- """Scripts package for claude-mpm."""
@@ -1,32 +0,0 @@
1
- #!/bin/bash
2
- # Wrapper script for Socket.IO server daemon management.
3
- #
4
- # This script provides a simple command-line interface for managing
5
- # the Socket.IO server daemon that powers the monitoring dashboard.
6
- #
7
- # Usage:
8
- # claude-mpm-socketio start - Start the server daemon
9
- # claude-mpm-socketio stop - Stop the server daemon
10
- # claude-mpm-socketio restart - Restart the server daemon
11
- # claude-mpm-socketio status - Check server status
12
-
13
- # Get the directory where this script is located
14
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
15
-
16
- # Path to the Python daemon script
17
- DAEMON_SCRIPT="${SCRIPT_DIR}/socketio_daemon.py"
18
-
19
- # Check if the daemon script exists
20
- if [ ! -f "$DAEMON_SCRIPT" ]; then
21
- echo "Error: Socket.IO daemon script not found at $DAEMON_SCRIPT"
22
- exit 1
23
- fi
24
-
25
- # Check if Python is available
26
- if ! command -v python3 &> /dev/null; then
27
- echo "Error: Python 3 is required but not found"
28
- exit 1
29
- fi
30
-
31
- # Execute the Python daemon with all arguments
32
- exec python3 "$DAEMON_SCRIPT" "$@"