Skip to content

Commit 5ed14d4

Browse files
committed
Bump version: 1.2.16 → 1.2.17
1 parent 50eacfa commit 5ed14d4

File tree

7 files changed

+51
-11
lines changed

7 files changed

+51
-11
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 1.2.16
2+
current_version = 1.2.17
33
commit = True
44
tag = True
55

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ RUN apt-get update \
6161
&& curl -fsSL https://deno.land/install.sh | sh \
6262
&& mkdir -p ${REPOSITORY_MANAGER_WORKSPACE} \
6363
&& curl -LsSf https://astral.sh/uv/install.sh | sh \
64-
&& uv pip install --system --upgrade --verbose --no-cache --break-system-packages --prerelease=allow repository-manager[all]>=1.2.16
64+
&& uv pip install --system --upgrade --verbose --no-cache --break-system-packages --prerelease=allow repository-manager[all]>=1.2.17 mem0-mcp-server
6565

6666
WORKDIR /workspace
6767

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
![PyPI - Wheel](https://img.shields.io/pypi/wheel/repository-manager)
2222
![PyPI - Implementation](https://img.shields.io/pypi/implementation/repository-manager)
2323

24-
*Version: 1.2.16*
24+
*Version: 1.2.17*
2525

2626
## Overview
2727

pyproject.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "repository-manager"
7-
version = "1.2.16"
7+
version = "1.2.17"
88
description = "Manage your git projects"
99
readme = "README.md"
1010
authors = [{ name = "Audel Rouhi", email = "knucklessg1@gmail.com" }]
@@ -29,6 +29,7 @@ mcp = [
2929
"fastapi>=0.128.0",
3030
"beautifulsoup4>=4.14.3",
3131
"httpx>=0.28.1",
32+
"mem0-mcp-server>=0.0.1",
3233
]
3334

3435
a2a = [
@@ -38,6 +39,7 @@ a2a = [
3839
"pre-commit>=4.5.1",
3940
"bump2version>=1.0.1",
4041
"mcp-run-python>=0.0.22",
42+
"mem0-mcp-server>=0.0.1",
4143
]
4244

4345
gitlab = [
@@ -56,6 +58,7 @@ all = [
5658
"beautifulsoup4>=4.14.3",
5759
"httpx>=0.28.1",
5860
"mcp-run-python>=0.0.22",
61+
"mem0-mcp-server>=0.0.1",
5962
]
6063

6164
[project.scripts]

repository_manager/repository_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import argparse
1414
import logging
1515

16-
__version__ = "1.2.16"
16+
__version__ = "1.2.17"
1717
import concurrent.futures
1818
import datetime
1919
from typing import List

repository_manager/repository_manager_agent.py

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
)
3838
from repository_manager.models import Task, PRD, ElicitationRequest
3939

40-
__version__ = "1.2.16"
40+
__version__ = "1.2.17"
4141

4242
logging.basicConfig(
4343
level=logging.INFO,
@@ -112,6 +112,9 @@
112112
"4. Do not stop until the PRD (Product Requirements Document) is fully complete (is_complete=True).\n"
113113
"5. Once the PRD is complete, Call `finalize_prd_and_diagram` to aggregate execution history and generate a diagram.\n"
114114
"6. Then Call `update_documentation` to reflect all changes in the README.md including the diagram.\n"
115+
"Memory Management:\n"
116+
"- Use `add_memory` to save important context like the current active project, workspace path, or user preferences.\n"
117+
"- Use `search_memories` to retrieve this context if it is missing.\n"
115118
)
116119

117120
PLANNER_SYSTEM_PROMPT = (
@@ -120,6 +123,7 @@
120123
"Research Capabilities:\n"
121124
"- Use `list_projects` tool to check if a project already exists. If the project exists, focus on it; if it doesn't, plan to create it.\n"
122125
"- Use `match_pyodide_packages` to find the correct package names for the python-sandbox (e.g. `pygame-ce` for `pygame`). If no package is found, we can assume it will be installed as a native python pip.\n"
126+
"- Use `search_memories` to check for existing PRD requirements, project context, or user preferences to inform your plan.\n"
123127
"Agent Strategy:\n"
124128
"- **Evaluate Team**: Determine if the request requires a specialized team of agents (e.g., SQL related -> SQL Agent) or if the current team (Executor) uses standard capabilities (Python, Files, Git).\n"
125129
"- **Prioritize Standard**: ALWAYS prefer the standard Executor team if they can meet the requirements.\n"
@@ -178,6 +182,7 @@
178182
"- `text_editor`: For writing the final, tested code to the project files.\n"
179183
"- `smart-coding-*`: To semantic search code repositories. There is a different instance of smart-coding-* for each project in the workspace so ensure you are using the correct one when using this tool.\n"
180184
"- `git-*`: To interact with git (via specific repo tools).\n"
185+
"- `add_memory` / `search_memories`: To save or retrieve context about the execution or project state.\n"
181186
"Requirements:\n"
182187
"- Return the updated `Task` object.\n"
183188
"- Update `task.notes` with implementation details.\n"
@@ -259,6 +264,7 @@ def create_agent(
259264
# 3. Prepare Executor Tools (Sandbox + Repo Delegates)
260265
executor_tools_list = []
261266
executor_toolsets_list = []
267+
memory_tools = []
262268

263269
# Dynamic Sandbox Tool
264270
async def run_python_in_sandbox(dependencies: List[str], code: str) -> str:
@@ -328,6 +334,30 @@ async def run_python_in_sandbox(dependencies: List[str], code: str) -> str:
328334
logger.info(
329335
f"Added {len(rm_tools)} Repository Manager tools to Executor."
330336
)
337+
# B. Mem0 Memory Server
338+
elif server_name == "mem0":
339+
with tempfile.NamedTemporaryFile(
340+
mode="w", suffix=".json", delete=False
341+
) as temp_config:
342+
json.dump(
343+
{"mcpServers": {server_name: server_config}}, temp_config
344+
)
345+
temp_config_path = temp_config.name
346+
try:
347+
loaded_mem_tools = load_mcp_servers(temp_config_path)
348+
memory_tools = loaded_mem_tools
349+
available_tools_registry["memory_tools"] = loaded_mem_tools
350+
# Add to executor tools
351+
executor_tools_list.extend(loaded_mem_tools)
352+
logger.info(
353+
f"Loaded {len(loaded_mem_tools)} Mem0 Memory tools."
354+
)
355+
except Exception as e:
356+
logger.error(f"Failed to load mem0 tools: {e}")
357+
finally:
358+
if os.path.exists(temp_config_path):
359+
os.remove(temp_config_path)
360+
331361
# C. Smart Coding Repos
332362
elif server_name.startswith("smart-coding-"):
333363
with tempfile.NamedTemporaryFile(
@@ -346,6 +376,7 @@ async def run_python_in_sandbox(dependencies: List[str], code: str) -> str:
346376
model=model,
347377
system_prompt=f"You are the {server_name} Codebase Agent.\nGoal: Manage the repository '{server_name}'.\nYou have full access to search and modify THIS repository.",
348378
toolsets=codebase_tools,
379+
tool_timeout=32400.0,
349380
model_settings=settings,
350381
name=server_name,
351382
retries=3,
@@ -452,7 +483,7 @@ async def match_pyodide_packages(ctx: RunContext[Any], query_package: str) -> st
452483
system_prompt=PLANNER_SYSTEM_PROMPT,
453484
model_settings=settings,
454485
output_type=PRD,
455-
tools=[pyodide_matcher_tool],
486+
tools=[pyodide_matcher_tool] + memory_tools,
456487
name="Planner",
457488
retries=3,
458489
)
@@ -472,6 +503,7 @@ async def match_pyodide_packages(ctx: RunContext[Any], query_package: str) -> st
472503
model_settings=settings,
473504
tools=executor_tools_list,
474505
toolsets=executor_toolsets_list,
506+
tool_timeout=32400.0,
475507
output_type=Task,
476508
name="Executor",
477509
retries=3,
@@ -483,6 +515,7 @@ async def match_pyodide_packages(ctx: RunContext[Any], query_package: str) -> st
483515
model_settings=settings,
484516
tools=executor_tools_list,
485517
toolsets=executor_toolsets_list,
518+
tool_timeout=32400.0,
486519
output_type=Task,
487520
name="Validator",
488521
retries=3,
@@ -492,6 +525,7 @@ async def match_pyodide_packages(ctx: RunContext[Any], query_package: str) -> st
492525
model=model,
493526
system_prompt=REPOSITORY_MANAGER_SYSTEM_PROMPT,
494527
toolsets=rm_tools + master_skills,
528+
tool_timeout=32400.0,
495529
model_settings=settings,
496530
name="Repository Manager",
497531
retries=3,
@@ -500,8 +534,8 @@ async def match_pyodide_packages(ctx: RunContext[Any], query_package: str) -> st
500534
documentation_agent = Agent(
501535
model=model,
502536
system_prompt=DOCUMENTATION_AGENT_SYSTEM_PROMPT,
503-
toolsets=rm_tools
504-
+ master_skills, # Access to get_project_readme and text_editor (part of repo manager mcp)
537+
toolsets=rm_tools + master_skills,
538+
tool_timeout=32400.0,
505539
model_settings=settings,
506540
name="Documentation Agent",
507541
retries=3,
@@ -514,6 +548,7 @@ async def match_pyodide_packages(ctx: RunContext[Any], query_package: str) -> st
514548
supervisor = Agent(
515549
model=model,
516550
system_prompt=SUPERVISOR_SYSTEM_PROMPT,
551+
tools=memory_tools,
517552
name=AGENT_NAME,
518553
model_settings=settings,
519554
retries=3,
@@ -725,10 +760,12 @@ async def create_specialized_agent(
725760
child_toolsets.append(t)
726761

727762
child_agent = Agent(
728-
model=child_model,
729763
system_prompt=system_prompt,
764+
model=child_model,
765+
model_settings=settings,
730766
tools=child_tools,
731767
toolsets=child_toolsets,
768+
tool_timeout=32400.0,
732769
name=name,
733770
retries=3,
734771
)

repository_manager/repository_manager_mcp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import sys
55
import argparse
66

7-
__version__ = "1.2.16"
7+
__version__ = "1.2.17"
88

99
from typing import Optional, Dict, List, Union, Any
1010
from pydantic import Field

0 commit comments

Comments
 (0)