claude-mpm 3.9.7__py3-none-any.whl → 3.9.9__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.
Files changed (54) hide show
  1. claude_mpm/VERSION +1 -1
  2. claude_mpm/agents/base_agent.json +1 -1
  3. claude_mpm/agents/templates/ticketing.json +1 -1
  4. claude_mpm/cli/__init__.py +3 -1
  5. claude_mpm/cli/commands/__init__.py +3 -1
  6. claude_mpm/cli/commands/cleanup.py +21 -1
  7. claude_mpm/cli/commands/mcp.py +821 -0
  8. claude_mpm/cli/parser.py +148 -1
  9. claude_mpm/config/memory_guardian_config.py +325 -0
  10. claude_mpm/constants.py +13 -0
  11. claude_mpm/hooks/claude_hooks/hook_handler.py +76 -19
  12. claude_mpm/models/state_models.py +433 -0
  13. claude_mpm/services/__init__.py +28 -0
  14. claude_mpm/services/communication/__init__.py +2 -2
  15. claude_mpm/services/communication/socketio.py +18 -16
  16. claude_mpm/services/infrastructure/__init__.py +4 -1
  17. claude_mpm/services/infrastructure/logging.py +3 -3
  18. claude_mpm/services/infrastructure/memory_guardian.py +770 -0
  19. claude_mpm/services/mcp_gateway/__init__.py +138 -0
  20. claude_mpm/services/mcp_gateway/config/__init__.py +17 -0
  21. claude_mpm/services/mcp_gateway/config/config_loader.py +232 -0
  22. claude_mpm/services/mcp_gateway/config/config_schema.py +234 -0
  23. claude_mpm/services/mcp_gateway/config/configuration.py +371 -0
  24. claude_mpm/services/mcp_gateway/core/__init__.py +51 -0
  25. claude_mpm/services/mcp_gateway/core/base.py +315 -0
  26. claude_mpm/services/mcp_gateway/core/exceptions.py +239 -0
  27. claude_mpm/services/mcp_gateway/core/interfaces.py +476 -0
  28. claude_mpm/services/mcp_gateway/main.py +326 -0
  29. claude_mpm/services/mcp_gateway/registry/__init__.py +12 -0
  30. claude_mpm/services/mcp_gateway/registry/service_registry.py +397 -0
  31. claude_mpm/services/mcp_gateway/registry/tool_registry.py +477 -0
  32. claude_mpm/services/mcp_gateway/server/__init__.py +15 -0
  33. claude_mpm/services/mcp_gateway/server/mcp_server.py +430 -0
  34. claude_mpm/services/mcp_gateway/server/mcp_server_simple.py +444 -0
  35. claude_mpm/services/mcp_gateway/server/stdio_handler.py +373 -0
  36. claude_mpm/services/mcp_gateway/tools/__init__.py +22 -0
  37. claude_mpm/services/mcp_gateway/tools/base_adapter.py +497 -0
  38. claude_mpm/services/mcp_gateway/tools/document_summarizer.py +729 -0
  39. claude_mpm/services/mcp_gateway/tools/hello_world.py +551 -0
  40. claude_mpm/utils/file_utils.py +293 -0
  41. claude_mpm/utils/platform_memory.py +524 -0
  42. claude_mpm/utils/subprocess_utils.py +305 -0
  43. {claude_mpm-3.9.7.dist-info → claude_mpm-3.9.9.dist-info}/METADATA +4 -1
  44. {claude_mpm-3.9.7.dist-info → claude_mpm-3.9.9.dist-info}/RECORD +49 -26
  45. claude_mpm/agents/templates/.claude-mpm/memories/README.md +0 -36
  46. claude_mpm/agents/templates/.claude-mpm/memories/engineer_agent.md +0 -39
  47. claude_mpm/agents/templates/.claude-mpm/memories/qa_agent.md +0 -38
  48. claude_mpm/agents/templates/.claude-mpm/memories/research_agent.md +0 -39
  49. claude_mpm/agents/templates/.claude-mpm/memories/version_control_agent.md +0 -38
  50. /claude_mpm/agents/templates/{research_memory_efficient.json → backup/research_memory_efficient.json} +0 -0
  51. {claude_mpm-3.9.7.dist-info → claude_mpm-3.9.9.dist-info}/WHEEL +0 -0
  52. {claude_mpm-3.9.7.dist-info → claude_mpm-3.9.9.dist-info}/entry_points.txt +0 -0
  53. {claude_mpm-3.9.7.dist-info → claude_mpm-3.9.9.dist-info}/licenses/LICENSE +0 -0
  54. {claude_mpm-3.9.7.dist-info → claude_mpm-3.9.9.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,305 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Subprocess utilities for Claude MPM.
4
+
5
+ This module provides enhanced subprocess execution and management utilities
6
+ with proper error handling, timeouts, and process cleanup.
7
+ """
8
+
9
+ import asyncio
10
+ import os
11
+ import signal
12
+ import subprocess
13
+ import sys
14
+ import time
15
+ from typing import Dict, List, Optional, Union, Any
16
+ import psutil
17
+
18
+
19
+ class SubprocessError(Exception):
20
+ """Unified exception for subprocess errors."""
21
+
22
+ def __init__(self, message: str, returncode: Optional[int] = None,
23
+ stdout: Optional[str] = None, stderr: Optional[str] = None):
24
+ super().__init__(message)
25
+ self.returncode = returncode
26
+ self.stdout = stdout
27
+ self.stderr = stderr
28
+
29
+
30
+ class SubprocessResult:
31
+ """Result object for subprocess execution."""
32
+
33
+ def __init__(self, returncode: int, stdout: str = "", stderr: str = ""):
34
+ self.returncode = returncode
35
+ self.stdout = stdout
36
+ self.stderr = stderr
37
+
38
+ @property
39
+ def success(self) -> bool:
40
+ """True if the subprocess completed successfully."""
41
+ return self.returncode == 0
42
+
43
+
44
+ def run_subprocess(
45
+ cmd: List[str],
46
+ timeout: Optional[float] = None,
47
+ capture_output: bool = True,
48
+ text: bool = True,
49
+ cwd: Optional[str] = None,
50
+ env: Optional[Dict[str, str]] = None,
51
+ **kwargs
52
+ ) -> SubprocessResult:
53
+ """
54
+ Run a subprocess with enhanced error handling and timeout support.
55
+
56
+ Args:
57
+ cmd: Command and arguments to execute
58
+ timeout: Maximum time to wait for completion (seconds)
59
+ capture_output: Whether to capture stdout/stderr
60
+ text: Whether to return text (True) or bytes (False)
61
+ cwd: Working directory for the subprocess
62
+ env: Environment variables for the subprocess
63
+ **kwargs: Additional arguments passed to subprocess.run
64
+
65
+ Returns:
66
+ SubprocessResult object with returncode, stdout, stderr
67
+
68
+ Raises:
69
+ SubprocessError: If the subprocess fails or times out
70
+ """
71
+ try:
72
+ result = subprocess.run(
73
+ cmd,
74
+ timeout=timeout,
75
+ capture_output=capture_output,
76
+ text=text,
77
+ cwd=cwd,
78
+ env=env,
79
+ **kwargs
80
+ )
81
+
82
+ return SubprocessResult(
83
+ returncode=result.returncode,
84
+ stdout=result.stdout if capture_output else "",
85
+ stderr=result.stderr if capture_output else ""
86
+ )
87
+
88
+ except subprocess.TimeoutExpired as e:
89
+ raise SubprocessError(
90
+ f"Command timed out after {timeout}s: {' '.join(cmd)}",
91
+ returncode=None,
92
+ stdout=e.stdout.decode() if e.stdout else "",
93
+ stderr=e.stderr.decode() if e.stderr else ""
94
+ )
95
+ except subprocess.CalledProcessError as e:
96
+ raise SubprocessError(
97
+ f"Command failed with return code {e.returncode}: {' '.join(cmd)}",
98
+ returncode=e.returncode,
99
+ stdout=e.stdout if e.stdout else "",
100
+ stderr=e.stderr if e.stderr else ""
101
+ )
102
+ except Exception as e:
103
+ raise SubprocessError(f"Subprocess execution failed: {e}")
104
+
105
+
106
+ async def run_subprocess_async(
107
+ cmd: List[str],
108
+ timeout: Optional[float] = None,
109
+ capture_output: bool = True,
110
+ cwd: Optional[str] = None,
111
+ env: Optional[Dict[str, str]] = None,
112
+ **kwargs
113
+ ) -> SubprocessResult:
114
+ """
115
+ Run a subprocess asynchronously with timeout support.
116
+
117
+ Args:
118
+ cmd: Command and arguments to execute
119
+ timeout: Maximum time to wait for completion (seconds)
120
+ capture_output: Whether to capture stdout/stderr
121
+ cwd: Working directory for the subprocess
122
+ env: Environment variables for the subprocess
123
+ **kwargs: Additional arguments passed to asyncio.create_subprocess_exec
124
+
125
+ Returns:
126
+ SubprocessResult object with returncode, stdout, stderr
127
+
128
+ Raises:
129
+ SubprocessError: If the subprocess fails or times out
130
+ """
131
+ try:
132
+ if capture_output:
133
+ stdout = asyncio.subprocess.PIPE
134
+ stderr = asyncio.subprocess.PIPE
135
+ else:
136
+ stdout = None
137
+ stderr = None
138
+
139
+ process = await asyncio.create_subprocess_exec(
140
+ *cmd,
141
+ stdout=stdout,
142
+ stderr=stderr,
143
+ cwd=cwd,
144
+ env=env,
145
+ **kwargs
146
+ )
147
+
148
+ try:
149
+ stdout_data, stderr_data = await asyncio.wait_for(
150
+ process.communicate(),
151
+ timeout=timeout
152
+ )
153
+ except asyncio.TimeoutError:
154
+ process.kill()
155
+ await process.wait()
156
+ raise SubprocessError(
157
+ f"Command timed out after {timeout}s: {' '.join(cmd)}",
158
+ returncode=None
159
+ )
160
+
161
+ return SubprocessResult(
162
+ returncode=process.returncode,
163
+ stdout=stdout_data.decode() if stdout_data else "",
164
+ stderr=stderr_data.decode() if stderr_data else ""
165
+ )
166
+
167
+ except Exception as e:
168
+ if not isinstance(e, SubprocessError):
169
+ raise SubprocessError(f"Async subprocess execution failed: {e}")
170
+ raise
171
+
172
+
173
+ def terminate_process_tree(pid: int, timeout: float = 5.0) -> int:
174
+ """
175
+ Terminate a process and all its children.
176
+
177
+ Args:
178
+ pid: Process ID to terminate
179
+ timeout: Time to wait for graceful termination before force killing
180
+
181
+ Returns:
182
+ Number of processes terminated
183
+
184
+ Raises:
185
+ SubprocessError: If the process cannot be terminated
186
+ """
187
+ try:
188
+ parent = psutil.Process(pid)
189
+ except psutil.NoSuchProcess:
190
+ return 0
191
+
192
+ # Get all child processes recursively
193
+ children = parent.children(recursive=True)
194
+ processes = [parent] + children
195
+
196
+ terminated_count = 0
197
+
198
+ # First, try graceful termination
199
+ for process in processes:
200
+ try:
201
+ process.terminate()
202
+ except psutil.NoSuchProcess:
203
+ pass
204
+
205
+ # Wait for processes to terminate gracefully
206
+ gone, alive = psutil.wait_procs(processes, timeout=timeout)
207
+ terminated_count += len(gone)
208
+
209
+ # Force kill any remaining processes
210
+ for process in alive:
211
+ try:
212
+ process.kill()
213
+ terminated_count += 1
214
+ except psutil.NoSuchProcess:
215
+ pass
216
+
217
+ return terminated_count
218
+
219
+
220
+ def get_process_info(pid: Optional[int] = None) -> Dict[str, Any]:
221
+ """
222
+ Get information about a process.
223
+
224
+ Args:
225
+ pid: Process ID (defaults to current process)
226
+
227
+ Returns:
228
+ Dictionary with process information
229
+ """
230
+ try:
231
+ process = psutil.Process(pid)
232
+ return {
233
+ "pid": process.pid,
234
+ "name": process.name(),
235
+ "status": process.status(),
236
+ "create_time": process.create_time(),
237
+ "cpu_percent": process.cpu_percent(),
238
+ "memory_info": process.memory_info()._asdict(),
239
+ "cmdline": process.cmdline(),
240
+ "cwd": process.cwd() if hasattr(process, 'cwd') else None,
241
+ "num_threads": process.num_threads(),
242
+ "children": [child.pid for child in process.children()]
243
+ }
244
+ except psutil.NoSuchProcess:
245
+ return {"error": f"Process {pid} not found"}
246
+ except Exception as e:
247
+ return {"error": str(e)}
248
+
249
+
250
+ def monitor_process_resources(pid: int) -> Optional[Dict[str, Any]]:
251
+ """
252
+ Monitor resource usage of a process.
253
+
254
+ Args:
255
+ pid: Process ID to monitor
256
+
257
+ Returns:
258
+ Dictionary with resource information or None if process not found
259
+ """
260
+ try:
261
+ process = psutil.Process(pid)
262
+ memory_info = process.memory_info()
263
+
264
+ return {
265
+ "pid": pid,
266
+ "cpu_percent": process.cpu_percent(),
267
+ "memory_mb": memory_info.rss / 1024 / 1024, # Convert to MB
268
+ "memory_percent": process.memory_percent(),
269
+ "num_threads": process.num_threads(),
270
+ "status": process.status(),
271
+ "create_time": process.create_time()
272
+ }
273
+ except psutil.NoSuchProcess:
274
+ return None
275
+ except Exception:
276
+ return None
277
+
278
+
279
+ def cleanup_orphaned_processes(pattern: str, max_age_hours: float = 1.0) -> int:
280
+ """
281
+ Clean up orphaned processes matching a pattern.
282
+
283
+ Args:
284
+ pattern: String pattern to match in process command line
285
+ max_age_hours: Maximum age in hours before considering a process orphaned
286
+
287
+ Returns:
288
+ Number of processes cleaned up
289
+ """
290
+ current_time = time.time()
291
+ cleanup_count = 0
292
+
293
+ for process in psutil.process_iter(['pid', 'name', 'cmdline', 'create_time']):
294
+ try:
295
+ cmdline = ' '.join(process.info['cmdline'] or [])
296
+ if pattern in cmdline:
297
+ # Check if process is old enough to be considered orphaned
298
+ age_hours = (current_time - process.info['create_time']) / 3600
299
+ if age_hours > max_age_hours:
300
+ process.terminate()
301
+ cleanup_count += 1
302
+ except (psutil.NoSuchProcess, psutil.AccessDenied):
303
+ continue
304
+
305
+ return cleanup_count
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-mpm
3
- Version: 3.9.7
3
+ Version: 3.9.9
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
@@ -37,6 +37,7 @@ Requires-Dist: python-engineio>=4.8.0
37
37
  Requires-Dist: python-frontmatter>=1.0.0
38
38
  Requires-Dist: mistune>=3.0.0
39
39
  Requires-Dist: aiofiles>=23.0.0
40
+ Requires-Dist: mcp>=0.1.0
40
41
  Provides-Extra: dev
41
42
  Requires-Dist: pytest>=7.0; extra == "dev"
42
43
  Requires-Dist: pytest-asyncio; extra == "dev"
@@ -180,6 +181,8 @@ Comprehensive API documentation is available at [docs/api/](docs/api/) - build w
180
181
 
181
182
  **Major Architecture Refactoring (TSK-0053)**: Complete service-oriented redesign with 50-80% performance improvements, enhanced security, and interface-based design.
182
183
 
184
+ **Process Management Improvements**: Enhanced hook system reliability with automatic process cleanup, timeout protection, and orphan process monitoring to prevent resource leaks.
185
+
183
186
  See [CHANGELOG.md](CHANGELOG.md) for full history and [docs/MIGRATION.md](docs/MIGRATION.md) for upgrade instructions.
184
187
 
185
188
  ## Development
@@ -1,7 +1,7 @@
1
- claude_mpm/VERSION,sha256=d3i7x6wOmm1dHxwqFEvbXR3fz1QAv2OUzhc_G3o9AHk,5
1
+ claude_mpm/VERSION,sha256=AZyavayorqiuMCFTau7LwYJ4R-VH84F2LR8vijsz9DM,6
2
2
  claude_mpm/__init__.py,sha256=_adJRYaqKpyQFHGdsXrUgODkLmAXt4NRTj8khx4miAY,1512
3
3
  claude_mpm/__main__.py,sha256=8IcM9tEbTqSN_er04eKTPX3AGo6qzRiTnPI7KfIf7rw,641
4
- claude_mpm/constants.py,sha256=2r2YXHgILU9Vf_HW3alxx7Ma6rk72C0-arsyDqLMZrY,5248
4
+ claude_mpm/constants.py,sha256=OL5pmvmOeJHnORsWBNWk-dCAmG8-Stk7ntfURL5HXfo,5510
5
5
  claude_mpm/deployment_paths.py,sha256=JO7-fhhp_AkVB7ZssggHDBbee-r2sokpkqjoqnQLTmM,9073
6
6
  claude_mpm/init.py,sha256=hK_ROp6FsgTjpi-VJ_Z4FJICNEXwchh6F2KOqms-kfI,14938
7
7
  claude_mpm/ticket_wrapper.py,sha256=bWjLReYyuHSBguuiRm1d52rHYNHqrPJAOLUbMt4CnuM,836
@@ -15,7 +15,7 @@ claude_mpm/agents/agent_loader.py,sha256=DgY0CMShaxdANV5GYT1Bd-lYizRKz89KpuR89VR
15
15
  claude_mpm/agents/agent_loader_integration.py,sha256=h07Kmk4D75jmHxz5BucP6oQ5VhqVgQ35Sn5w3hcZNYI,7474
16
16
  claude_mpm/agents/agents_metadata.py,sha256=C8GzqXB-AdWUzz2gpR-Dz3V2phUTbi1TRg1Xmxtdgxc,5853
17
17
  claude_mpm/agents/async_agent_loader.py,sha256=jHW3N13au-TlFSyo1_NhI8aExCt8QNumoWlrdtLp6V4,15145
18
- claude_mpm/agents/base_agent.json,sha256=Te1_Xi8zGoPKY_i4aYekyOqu-AVKqOcwVq-a41as9bA,5406
18
+ claude_mpm/agents/base_agent.json,sha256=uzNGCmojfh8Xr5MnahvpaIdX1rx94UOzgiN9Au5o5u4,5406
19
19
  claude_mpm/agents/base_agent_loader.py,sha256=Ur2pcYQXInS_z8MAD3154rvPn-zEpD2fx66iTSRDtY4,19015
20
20
  claude_mpm/agents/frontmatter_validator.py,sha256=OR6DWgGxV7b6A6WPAM9ikkDqCJitmp3UgYC45TkB5ZU,22630
21
21
  claude_mpm/agents/system_agent_config.py,sha256=Lke4FFjU0Vq3LLo4O7KvtHxadP7agAwC-ljCXK40h_A,23526
@@ -30,17 +30,11 @@ claude_mpm/agents/templates/ops.json,sha256=pXDc2RUQVv5qqDtZ9LGHXYFoccNkH5mBYIYH
30
30
  claude_mpm/agents/templates/project_organizer.json,sha256=d1VKgiT0t7GjUBp88kgqbW6A4txgHrFRYPNvrDYkJ80,17161
31
31
  claude_mpm/agents/templates/qa.json,sha256=ObztCsMr9haahOaHvaLDRHYj1TZwRxECuzluKscUb_M,10807
32
32
  claude_mpm/agents/templates/research.json,sha256=WlPnKlojeiCBZ4H75nWexLl_dHU5cSORIqLCDp4tCMM,8419
33
- claude_mpm/agents/templates/research_memory_efficient.json,sha256=WlPnKlojeiCBZ4H75nWexLl_dHU5cSORIqLCDp4tCMM,8419
34
33
  claude_mpm/agents/templates/security.json,sha256=KAJOIZeYUPbnC83S2q7ufwdmpS1xrEwWW6H9bvSNVdo,12349
35
- claude_mpm/agents/templates/ticketing.json,sha256=Kt9lyIXP5R_XTFrTH9ePkkPDnj9y4s-CQv7y4Hy2QVc,30054
34
+ claude_mpm/agents/templates/ticketing.json,sha256=H4-RJHATbDPv07iK_Heff8GdYZRf3d6uIL9_L_KDKwM,33920
36
35
  claude_mpm/agents/templates/version_control.json,sha256=yaRwaFA2JjMzCfGki2RIylKytjiVcn-lJKJ3jzTbuyY,11692
37
36
  claude_mpm/agents/templates/web_qa.json,sha256=4enHHY0KonWE7c2zS_P7JPoOG1foarMtI4CzUpZp49k,17634
38
37
  claude_mpm/agents/templates/web_ui.json,sha256=M4ILRYG_EhIilUcu93XVlO51BiVh72M4p7XvUbTqkcs,22752
39
- claude_mpm/agents/templates/.claude-mpm/memories/README.md,sha256=gDuLkzgcELaaoEB5Po70F0qabTu11vBi1PnUrYCK3fw,1098
40
- claude_mpm/agents/templates/.claude-mpm/memories/engineer_agent.md,sha256=oX-L8D2oyS-NAoe5UNVTbfmLWYTpp1gYq6dKAm6KxLI,1150
41
- claude_mpm/agents/templates/.claude-mpm/memories/qa_agent.md,sha256=3GOmBq3t3y1-mvWC7_lJ4ltsujJ14wCZCSzEVWCIrz8,1065
42
- claude_mpm/agents/templates/.claude-mpm/memories/research_agent.md,sha256=dPeQQlV0Rb0-hw4hjca71rzT78PkL3I6YHUHF0aw-XQ,1150
43
- claude_mpm/agents/templates/.claude-mpm/memories/version_control_agent.md,sha256=ghepeG5Wneo2Q5kWI0mu2oWxnVVzoYr0YEBFzqOiCd0,1091
44
38
  claude_mpm/agents/templates/backup/data_engineer_agent_20250726_234551.json,sha256=lLso4RHXVTQmX4A1XwF84kT59zZDblPO1xCgBj4S4x8,5060
45
39
  claude_mpm/agents/templates/backup/documentation_agent_20250726_234551.json,sha256=snfJW2yW9aMv9ldCSIWW7zwnyoQRx5u7xLMkNlfus9I,2258
46
40
  claude_mpm/agents/templates/backup/engineer_agent_20250726_234551.json,sha256=21o8TGCM9TO6eocSV9Ev5MmCq-xYwwCqMU7KQESaY2Q,8479
@@ -48,19 +42,21 @@ claude_mpm/agents/templates/backup/ops_agent_20250726_234551.json,sha256=y-unQij
48
42
  claude_mpm/agents/templates/backup/qa_agent_20250726_234551.json,sha256=_FHWnUeh151rgWX_xUgXsfGrJz7Bs3wno2lXU0nTwAo,2157
49
43
  claude_mpm/agents/templates/backup/research_agent_2025011_234551.json,sha256=pk2Tg0GVSPEkPEnMw5Iax5QUFY8XY7uF1uPG6eHBe14,12336
50
44
  claude_mpm/agents/templates/backup/research_agent_20250726_234551.json,sha256=o4n_sqSbjnsFRELB2q501vgwm-o2tQNLJLYvnVP9LWU,5629
45
+ claude_mpm/agents/templates/backup/research_memory_efficient.json,sha256=WlPnKlojeiCBZ4H75nWexLl_dHU5cSORIqLCDp4tCMM,8419
51
46
  claude_mpm/agents/templates/backup/security_agent_20250726_234551.json,sha256=l5YuD-27CxKSOsRLv0bDY_tCZyds0yGbeizLb8paeFY,2322
52
47
  claude_mpm/agents/templates/backup/version_control_agent_20250726_234551.json,sha256=too38RPTLJ9HutCMn0nfmEdCj2me241dx5tUYDFtu94,2143
53
- claude_mpm/cli/__init__.py,sha256=0qY86ZM7_C6xHUTQAGyG7D6kQuRJ_aNU0sqkDujqsYk,7060
48
+ claude_mpm/cli/__init__.py,sha256=N6VLSwB8ogCbv4gDGcX2XbVLKo2usdp1C4Tm3hGEaSI,7119
54
49
  claude_mpm/cli/__main__.py,sha256=vShalycGU13i1-OOixEb_bjl8da4_FolrKdvoiZB-64,769
55
- claude_mpm/cli/parser.py,sha256=ocmgSLo8Wucgw14Q9oBj4F3bfL3f3vwDW6ng_sXzM9E,31010
50
+ claude_mpm/cli/parser.py,sha256=Z1LG3-RvnHiEvlIWC-9fLz_Q7JU5R88lrPStIiRMJxA,35081
56
51
  claude_mpm/cli/ticket_cli.py,sha256=Jftgan7t7ZGNWo9zuZoPcw5zItCrVpBjPSOWz3FuIXE,919
57
52
  claude_mpm/cli/utils.py,sha256=qNIbQcA6iE46lsve-GyoIw6eyd9ksHZz3tQA4bSmtt8,6325
58
- claude_mpm/cli/commands/__init__.py,sha256=ebHYAmkAlbAv8Y19rrNQF6ZkFOWOnvAU0XYHl-l3oEE,729
53
+ claude_mpm/cli/commands/__init__.py,sha256=XzHpYgA2RIVmDeYJ2Rx3YWzSc-sbyYTzO8QKbNjbGv4,775
59
54
  claude_mpm/cli/commands/agents.py,sha256=E8Nyn2NyZqpHmQiK9t7-r1AfcCZFKLFMsKuo6Ed5T08,33831
60
55
  claude_mpm/cli/commands/aggregate.py,sha256=rFFIYlOosGnw_DvTuWKw_6sxJeYag3RdACPSz0RHZyE,14869
61
- claude_mpm/cli/commands/cleanup.py,sha256=9N-oMZgHXKf4nAyiMlSG9DbSbjUndac5SxmQEItMZrU,14324
56
+ claude_mpm/cli/commands/cleanup.py,sha256=wdaL6Mtv3030QQbwAMm3hYv10koyw7hsNlj48GjYOHs,15076
62
57
  claude_mpm/cli/commands/config.py,sha256=50LzTVlvR1LbeW25i-oSx4D6BZGa48DXuLLGXKhejyk,9919
63
58
  claude_mpm/cli/commands/info.py,sha256=ETL6jC08OTQVTPjs219Y0m3FzfKOUlI0-yI81AI8FXY,2990
59
+ claude_mpm/cli/commands/mcp.py,sha256=C96QiWt4r3CX_9cnBavJl0CeaNDuqQXX9CKwSL8LUgg,27291
64
60
  claude_mpm/cli/commands/memory.py,sha256=ymw4EatEKHfvvMHSy6dr4-x9OB7e1nZdJS0EP0f5paI,37350
65
61
  claude_mpm/cli/commands/monitor.py,sha256=80_tmSdfn_2cYpzxxPu9GnvFW0eixlSJ4wCqbn8VSCM,12407
66
62
  claude_mpm/cli/commands/run.py,sha256=cn-IcH2S4ss0-NRmyu7R2n0qzk7KIUoRhJXd3h5G7g4,43550
@@ -71,6 +67,7 @@ claude_mpm/cli_module/commands.py,sha256=CBNfO-bXrZ0spjeW_7-swprEq5V4PQSc0qhl9SL
71
67
  claude_mpm/cli_module/migration_example.py,sha256=C-_GbsW8dGzutnNeRLLld74ibDLyAOQx0stdpYZS0hs,6137
72
68
  claude_mpm/config/__init__.py,sha256=KTJkOHVtC1t6goMkj2xaQWZKZfokEHNw0wxPE48bl1g,828
73
69
  claude_mpm/config/agent_config.py,sha256=QS-25LSiNz4uOocjIM_FX_SGoRQHJOfkBZCKlz09K5k,13830
70
+ claude_mpm/config/memory_guardian_config.py,sha256=j4b73FJUEcKXARZnpF0Wn18N8T8KEQZSka9KprgrdM4,13243
74
71
  claude_mpm/config/paths.py,sha256=MznUhL7kvpOhwqtNdOavEE1JvUauvfIN_8PUXl8MytU,12553
75
72
  claude_mpm/config/socketio_config.py,sha256=rf5XKtdAKeypwZZPF8r6uSHnJHVXeMmX1YiYQmzUOZo,9727
76
73
  claude_mpm/core/__init__.py,sha256=5Hdb4fLdMEqXdOeBJB0zFGJx8CxtaSRYIiD-foiz3yQ,874
@@ -137,16 +134,17 @@ claude_mpm/hooks/memory_integration_hook.py,sha256=z0I5R4rsmLx3mzYf7QLeMTYbRShag
137
134
  claude_mpm/hooks/tool_call_interceptor.py,sha256=08_Odgm6Sg1zBJhGjwzVa03AReeBPZHTjndyjEO99cY,7629
138
135
  claude_mpm/hooks/validation_hooks.py,sha256=7TU2N4SzCm2nwpsR0xiNKsHQNsWODnOVAmK9jHq1QqM,6582
139
136
  claude_mpm/hooks/claude_hooks/__init__.py,sha256=bMUwt2RzDGAcEbtDMA7vWS1uJsauOY0OixIe4pHwgQ0,129
140
- claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=hMJRlFIpYtl3SGDMseS1_kiXMrzm_w1mFG-oqU5hJ8Q,79765
137
+ claude_mpm/hooks/claude_hooks/hook_handler.py,sha256=LrAe0fcrfWYac3a6lm22SfwDHQeMG3-M50fC-1lWgvY,81736
141
138
  claude_mpm/hooks/claude_hooks/hook_handler_fixed.py,sha256=hYE5Tc4RaaK0kLmFNLVXvDhiuTLA40Gt3hmhCQUO5UA,15626
142
139
  claude_mpm/hooks/claude_hooks/hook_wrapper.sh,sha256=JBbedWNs1EHaUsAkmqfPv_tWxV_DcRP707hma74oHU0,2370
143
140
  claude_mpm/models/__init__.py,sha256=vy2NLX2KT9QeH76SjCYh9dOYKPLRgxGrnwkQFAg08gc,465
144
141
  claude_mpm/models/agent_definition.py,sha256=y9XQOED_maOyiYKhNB8H8MfJJMBN0vIYPS_wCXnRJmA,6647
145
142
  claude_mpm/models/agent_session.py,sha256=cBl71q33TIBX8S6U1w2UnKOjEWyypFB04s0BCyKv0iQ,20174
143
+ claude_mpm/models/state_models.py,sha256=3osnbGKTUe0gX6ogMUGwF6jNzlZyIYfZT8xbcRKk21E,14787
146
144
  claude_mpm/scripts/__init__.py,sha256=zKYLZfT0P5z7C7r1YrhsTDnnyFXY-2awxhLVPYx68ek,552
147
145
  claude_mpm/scripts/socketio_daemon.py,sha256=93jzq-h5GQRK-xYpLaovaqNAXtwR_ZqYjmEMmFn0xE8,9741
148
146
  claude_mpm/scripts/start_activity_logging.py,sha256=9xTu6Kd9lmCx17vMmoAGRXegoaZIVqLzLJoXQDeZ9Yw,2917
149
- claude_mpm/services/__init__.py,sha256=4sQ3HgvZnZQuEXBiEYR1u34lDql7upAQUgfd5msBF70,7106
147
+ claude_mpm/services/__init__.py,sha256=cO6w9pl5LWGZ955ZyzNzNe6-qvDnMxkLyVJ7Xys3hS8,8188
150
148
  claude_mpm/services/async_session_logger.py,sha256=bCQ-7dlkZlbffTcG2b-CO5Y9UZoBvHwwyu1Ueaqo2Os,21829
151
149
  claude_mpm/services/claude_session_logger.py,sha256=VgXOo45k2hCqxLGyHzuOmdQZRk0-S8KVzVUNHas7Bbk,10535
152
150
  claude_mpm/services/event_aggregator.py,sha256=Ty2hwDS3IbH9PD1u7NPbPAJM-UFcuOTNeCJ0Tns84LA,20478
@@ -189,8 +187,8 @@ claude_mpm/services/agents/registry/__init__.py,sha256=_NsxGhhykoj0NecfA4o8Xscrv
189
187
  claude_mpm/services/agents/registry/agent_registry.py,sha256=jb-hIDGAoLWqBauS49N5Iin-nSozspGgUtb-gAROCfc,31570
190
188
  claude_mpm/services/agents/registry/deployed_agent_discovery.py,sha256=EFsrutLB3Kxa5TXoQC2aVNx5cMIAaDcTqCBnF1FfrPc,9762
191
189
  claude_mpm/services/agents/registry/modification_tracker.py,sha256=efkl652bAHhxUc6keoE2dOxlaQXtDnC3lkmR_jat4u4,34565
192
- claude_mpm/services/communication/__init__.py,sha256=7sa76Pvv0-gAE7wrWW6J3oVg8yM3SFZ86utUiLR8GT0,526
193
- claude_mpm/services/communication/socketio.py,sha256=C4uvt7BgtX8n_xE77CDPEdztygkZUEPqkLix0kcBB8k,90265
190
+ claude_mpm/services/communication/__init__.py,sha256=B4q9qUsRpjWglmZ57wO0ynIg02xTmgo7n3cuW73rUMY,558
191
+ claude_mpm/services/communication/socketio.py,sha256=sbNCo7wi7exjyWzakmUQohhjGapJv2rCdH49mZU1dfo,90551
194
192
  claude_mpm/services/communication/websocket.py,sha256=WAfCm5AzWo2sNjzJGWOhyvJv3ah-KiGAk7-rgl9V7FU,18344
195
193
  claude_mpm/services/core/__init__.py,sha256=mWqf6wfzspDgrue_ktLkK12LyxNrJJCfMJP72TpQVoc,2420
196
194
  claude_mpm/services/core/base.py,sha256=mgv9p-hyIh6_3PIYvNBzEvOoKPd-9E04JlzKP2L1khc,7570
@@ -214,9 +212,31 @@ claude_mpm/services/framework_claude_md_generator/section_generators/role_design
214
212
  claude_mpm/services/framework_claude_md_generator/section_generators/subprocess_validation.py,sha256=eqj2nNXtOZ8KkMyINpkU-JLDfXHY81MpKhf_qmnZdUc,4117
215
213
  claude_mpm/services/framework_claude_md_generator/section_generators/todo_task_tools.py,sha256=xTm2_K1iSizg2E7NnP7vXS3r3oiMmv5cdGPt9C5XE8E,5767
216
214
  claude_mpm/services/framework_claude_md_generator/section_generators/troubleshooting.py,sha256=_wYqXRj6z48bJjX7zb_7Zacx5G9LXNDZpsUxvBe27DE,1888
217
- claude_mpm/services/infrastructure/__init__.py,sha256=rZir3Ktwc0Dyrc0Sl2rAn7h6uc8VBp7QWcnRRK3kQ5Y,504
218
- claude_mpm/services/infrastructure/logging.py,sha256=LuujazzNebzfOCB921wSAUpGDrIxkMrlsvLxI4e1RRo,6693
215
+ claude_mpm/services/infrastructure/__init__.py,sha256=1e900yFJ6MSjbmc7XH3d_Dn8aHdn2g5cvEcSFyupHLQ,662
216
+ claude_mpm/services/infrastructure/logging.py,sha256=7gzjWZI8-GFXAjnRimx06gDqhaWy90l3DhixZs3jP9Q,6696
217
+ claude_mpm/services/infrastructure/memory_guardian.py,sha256=9NZgSE7F46epkFcp0Z6ql17Yw8gRbXTqmjxoRood8mI,27724
219
218
  claude_mpm/services/infrastructure/monitoring.py,sha256=OPyT976wENCMFzid88ovG5HLqCo71evYqTVn5lsJ4SU,33882
219
+ claude_mpm/services/mcp_gateway/__init__.py,sha256=PxLMTsjJt6KvWyUDhZG4G_hPbT4-bk_ZgvzODnJAYoA,4522
220
+ claude_mpm/services/mcp_gateway/main.py,sha256=z9tatWvsbjH2EWVMgaAv1TMkh_lgPlN-ElL6Ma5ao1A,10512
221
+ claude_mpm/services/mcp_gateway/config/__init__.py,sha256=nBj4JSBi2A9TFNXw_nM6tdoLMrServ-yqzMBvFruGlg,385
222
+ claude_mpm/services/mcp_gateway/config/config_loader.py,sha256=dIajqrDboSY7ArAoAOzlXqQarqix6i9ZEjpcVpofygo,7611
223
+ claude_mpm/services/mcp_gateway/config/config_schema.py,sha256=cP1FZoLd_RSuFnP51aLN36f2ifzDWQalBAEeisHUj_Y,9452
224
+ claude_mpm/services/mcp_gateway/config/configuration.py,sha256=Zp8FhPQ_Xp5cfEfa3ktblX1En2neHXb-vGbEqdfyJJY,12658
225
+ claude_mpm/services/mcp_gateway/core/__init__.py,sha256=5alHHmyb6SKrF-HX00fALk8L-XecBgC0WWULvQ1_HK4,919
226
+ claude_mpm/services/mcp_gateway/core/base.py,sha256=zZ36EYvjLEhm75E4q7sB5SZltYCGp4N3SrP3Tu9DHOE,10639
227
+ claude_mpm/services/mcp_gateway/core/exceptions.py,sha256=aygJk4qLI4dJXvpBhvxXz9GS7WlBxtHvaXMIUWhmx6M,6924
228
+ claude_mpm/services/mcp_gateway/core/interfaces.py,sha256=Z1b71vA444yExicMZr9PCzlY7Y9iRS-E6kdkcvKcmt0,11075
229
+ claude_mpm/services/mcp_gateway/registry/__init__.py,sha256=j7wwnvIhbZrhL1aZdvefvT4pLKAsrAk8uC4Cpjgrdo0,194
230
+ claude_mpm/services/mcp_gateway/registry/service_registry.py,sha256=1AZD0U1kVQV9yrv374zWLYP3JG3kcptGp28CKFUb7I0,13895
231
+ claude_mpm/services/mcp_gateway/registry/tool_registry.py,sha256=sGb5vEaGKXcZgce2wzDIFEZaNQkC6sJWhnjtcWanewk,16754
232
+ claude_mpm/services/mcp_gateway/server/__init__.py,sha256=L7RSyO6hxvs-kR335udll_a0UUzr45msR7E0rzFK3Ck,290
233
+ claude_mpm/services/mcp_gateway/server/mcp_server.py,sha256=IbpR3S25cHSCb2BZeVaJxEZu2j9soj6fYbqNz_C7qwk,14318
234
+ claude_mpm/services/mcp_gateway/server/mcp_server_simple.py,sha256=952GDCHVzMtmTAmJhZ4YxQWU0c8zqNdiAb7w2gVv21o,15045
235
+ claude_mpm/services/mcp_gateway/server/stdio_handler.py,sha256=g64TmOBNKlaSHf6YrBQiIUzKrqUjD6mjAoCAjqwemfU,12106
236
+ claude_mpm/services/mcp_gateway/tools/__init__.py,sha256=_p0VKMum_dmbfLqKMPAHCr7fDAsgyHBInhOGYti-e6E,453
237
+ claude_mpm/services/mcp_gateway/tools/base_adapter.py,sha256=YW6CBRoB6ev8bWIDxX4BykNgxbpczSv1cogHUXqC7ug,16736
238
+ claude_mpm/services/mcp_gateway/tools/document_summarizer.py,sha256=X48-lTOedfuQQL_ezpi3dRfSsrPbg64h7x5biEs5qVQ,28153
239
+ claude_mpm/services/mcp_gateway/tools/hello_world.py,sha256=x0Pm97VTvSqkSXvBeTxh07JLXOFbJyQEWneQoC-udjU,20866
220
240
  claude_mpm/services/memory/__init__.py,sha256=XkRcNRalLYPClYc8CX9PNhmSqSI5FNHatMfiGHCuW4o,394
221
241
  claude_mpm/services/memory/builder.py,sha256=a3X3mZsd3YxmhwOYsAmbpmCACkoKxcuKuyHXPa26gqs,34075
222
242
  claude_mpm/services/memory/indexed_memory.py,sha256=nb2bVxFelNyJ9GINw5mPABj8wNJJ23XyTNZ9NgywB1w,20098
@@ -252,19 +272,22 @@ claude_mpm/utils/dependency_manager.py,sha256=2Gs881HkzwMEm7X2z7Lx8l2Lws4PvS-rPB
252
272
  claude_mpm/utils/dependency_strategies.py,sha256=83YZ45ZAwgFN_hhCSUaDv__QR0AWTqBGWMwnBxmiF1Q,11473
253
273
  claude_mpm/utils/environment_context.py,sha256=ZbtarJ3gUPF9cLKYIG_vtpZYowetyDxKpz0FPW0Wpu8,10527
254
274
  claude_mpm/utils/error_handler.py,sha256=7fVcmQIoj-mmdmibEts7aJit-XMbuCOrxbJmLuUBaZQ,8174
275
+ claude_mpm/utils/file_utils.py,sha256=SGU6056Z_cFF1cmnfI1xiVlS0s8pGaSoP99YCkmXDE8,7402
255
276
  claude_mpm/utils/framework_detection.py,sha256=nzs1qRZK9K-zT0382z1FpGDvgzUNrUg8rBL-O_WLq-Q,1217
256
277
  claude_mpm/utils/import_migration_example.py,sha256=W4a4XH3FY_VBB00BB8Lae2aRPM021PxLHzdUfEs0B5w,2463
257
278
  claude_mpm/utils/imports.py,sha256=wX-SOXUHbemx01MHRGQpVwajzXH6qYdQkYNFCIbb2mw,6851
258
279
  claude_mpm/utils/path_operations.py,sha256=6pLMnAWBVzHkgp6JyQHmHbGD-dWn-nX21yV4E_eT-kM,11614
259
280
  claude_mpm/utils/paths.py,sha256=_4d2uV7QDLMeybSNch6B5H3s0cQ6Ii-idI8rFC-OCn4,14653
281
+ claude_mpm/utils/platform_memory.py,sha256=pEufP7UWB59k_7ID2sxN3MRtEDjNhW9Cn8rZIRkGbf8,16757
260
282
  claude_mpm/utils/robust_installer.py,sha256=5-iW4Qpba4DBitx5Ie3uoUJgXBpbvuLUJ_uNGgOxwi4,19855
261
283
  claude_mpm/utils/session_logging.py,sha256=9G0AzB7V0WkhLQlN0ocqbyDv0ifooEsJ5UPXIhA-wt0,3022
284
+ claude_mpm/utils/subprocess_utils.py,sha256=MLXIOUZ-Wk3j0lv_nOHTcppjR8_NNj_vCCZ5dTJ0Mig,9317
262
285
  claude_mpm/validation/__init__.py,sha256=bJ19g9lnk7yIjtxzN8XPegp87HTFBzCrGQOpFgRTf3g,155
263
286
  claude_mpm/validation/agent_validator.py,sha256=OEYhmy0K99pkoCCoVea2Q-d1JMiDyhEpzEJikuF8T-U,20910
264
287
  claude_mpm/validation/frontmatter_validator.py,sha256=vSinu0XD9-31h0-ePYiYivBbxTZEanhymLinTCODr7k,7206
265
- claude_mpm-3.9.7.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
266
- claude_mpm-3.9.7.dist-info/METADATA,sha256=HYbNV-C8c4Elozu8w91XNz6Tx4wiad_2Ap9WjD5p3aI,8680
267
- claude_mpm-3.9.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
268
- claude_mpm-3.9.7.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
269
- claude_mpm-3.9.7.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
270
- claude_mpm-3.9.7.dist-info/RECORD,,
288
+ claude_mpm-3.9.9.dist-info/licenses/LICENSE,sha256=cSdDfXjoTVhstrERrqme4zgxAu4GubU22zVEHsiXGxs,1071
289
+ claude_mpm-3.9.9.dist-info/METADATA,sha256=d1RGEytLoAibDyKIYVpG8gJiu5E0ACH7Jg8waLW9kV8,8886
290
+ claude_mpm-3.9.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
291
+ claude_mpm-3.9.9.dist-info/entry_points.txt,sha256=3_d7wLrg9sRmQ1SfrFGWoTNL8Wrd6lQb2XVSYbTwRIg,324
292
+ claude_mpm-3.9.9.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
293
+ claude_mpm-3.9.9.dist-info/RECORD,,
@@ -1,36 +0,0 @@
1
- # Agent Memory System
2
-
3
- ## Purpose
4
- Each agent maintains project-specific knowledge in these files. Agents read their memory file before tasks and update it when they learn something new.
5
-
6
- ## Manual Editing
7
- Feel free to edit these files to:
8
- - Add project-specific guidelines
9
- - Remove outdated information
10
- - Reorganize for better clarity
11
- - Add domain-specific knowledge
12
-
13
- ## Memory Limits
14
- - Max file size: 8KB (~2000 tokens)
15
- - Max sections: 10
16
- - Max items per section: 15
17
- - Files auto-truncate when limits exceeded
18
-
19
- ## File Format
20
- Standard markdown with structured sections. Agents expect:
21
- - Project Architecture
22
- - Implementation Guidelines
23
- - Common Mistakes to Avoid
24
- - Current Technical Context
25
-
26
- ## How It Works
27
- 1. Agents read their memory file before starting tasks
28
- 2. Agents add learnings during or after task completion
29
- 3. Files automatically enforce size limits
30
- 4. Developers can manually edit for accuracy
31
-
32
- ## Memory File Lifecycle
33
- - Created automatically when agent first runs
34
- - Updated through hook system after delegations
35
- - Manually editable by developers
36
- - Version controlled with project
@@ -1,39 +0,0 @@
1
- # Engineer Agent Memory - templates
2
-
3
- <!-- MEMORY LIMITS: 8KB max | 10 sections max | 15 items per section -->
4
- <!-- Last Updated: 2025-08-13 14:34:34 | Auto-updated by: engineer -->
5
-
6
- ## Project Context
7
- templates: mixed standard application
8
-
9
- ## Project Architecture
10
- - Standard Application with mixed implementation
11
-
12
- ## Coding Patterns Learned
13
- <!-- Items will be added as knowledge accumulates -->
14
-
15
- ## Implementation Guidelines
16
- <!-- Items will be added as knowledge accumulates -->
17
-
18
- ## Domain-Specific Knowledge
19
- <!-- Agent-specific knowledge for templates domain -->
20
- - Key project terms: templates
21
- - Focus on implementation patterns, coding standards, and best practices
22
-
23
- ## Effective Strategies
24
- <!-- Successful approaches discovered through experience -->
25
-
26
- ## Common Mistakes to Avoid
27
- <!-- Items will be added as knowledge accumulates -->
28
-
29
- ## Integration Points
30
- <!-- Items will be added as knowledge accumulates -->
31
-
32
- ## Performance Considerations
33
- <!-- Items will be added as knowledge accumulates -->
34
-
35
- ## Current Technical Context
36
- <!-- Items will be added as knowledge accumulates -->
37
-
38
- ## Recent Learnings
39
- <!-- Most recent discoveries and insights -->
@@ -1,38 +0,0 @@
1
- # Qa Agent Memory - templates
2
-
3
- <!-- MEMORY LIMITS: 8KB max | 10 sections max | 15 items per section -->
4
- <!-- Last Updated: 2025-08-13 14:37:34 | Auto-updated by: qa -->
5
-
6
- ## Project Context
7
- templates: mixed standard application
8
-
9
- ## Project Architecture
10
- - Standard Application with mixed implementation
11
-
12
- ## Coding Patterns Learned
13
- <!-- Items will be added as knowledge accumulates -->
14
-
15
- ## Implementation Guidelines
16
- <!-- Items will be added as knowledge accumulates -->
17
-
18
- ## Domain-Specific Knowledge
19
- <!-- Agent-specific knowledge for templates domain -->
20
- - Key project terms: templates
21
-
22
- ## Effective Strategies
23
- <!-- Successful approaches discovered through experience -->
24
-
25
- ## Common Mistakes to Avoid
26
- <!-- Items will be added as knowledge accumulates -->
27
-
28
- ## Integration Points
29
- <!-- Items will be added as knowledge accumulates -->
30
-
31
- ## Performance Considerations
32
- <!-- Items will be added as knowledge accumulates -->
33
-
34
- ## Current Technical Context
35
- <!-- Items will be added as knowledge accumulates -->
36
-
37
- ## Recent Learnings
38
- <!-- Most recent discoveries and insights -->
@@ -1,39 +0,0 @@
1
- # Research Agent Memory - templates
2
-
3
- <!-- MEMORY LIMITS: 16KB max | 10 sections max | 15 items per section -->
4
- <!-- Last Updated: 2025-08-13 14:29:28 | Auto-updated by: research -->
5
-
6
- ## Project Context
7
- templates: mixed standard application
8
-
9
- ## Project Architecture
10
- - Standard Application with mixed implementation
11
-
12
- ## Coding Patterns Learned
13
- <!-- Items will be added as knowledge accumulates -->
14
-
15
- ## Implementation Guidelines
16
- <!-- Items will be added as knowledge accumulates -->
17
-
18
- ## Domain-Specific Knowledge
19
- <!-- Agent-specific knowledge for templates domain -->
20
- - Key project terms: templates
21
- - Focus on code analysis, pattern discovery, and architectural insights
22
-
23
- ## Effective Strategies
24
- <!-- Successful approaches discovered through experience -->
25
-
26
- ## Common Mistakes to Avoid
27
- <!-- Items will be added as knowledge accumulates -->
28
-
29
- ## Integration Points
30
- <!-- Items will be added as knowledge accumulates -->
31
-
32
- ## Performance Considerations
33
- <!-- Items will be added as knowledge accumulates -->
34
-
35
- ## Current Technical Context
36
- <!-- Items will be added as knowledge accumulates -->
37
-
38
- ## Recent Learnings
39
- <!-- Most recent discoveries and insights -->