mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 56c875f137 | |||
| 5049de7e2d | |||
| 49011768f7 |
@@ -1,5 +1,18 @@
|
||||
# CHANGELOG
|
||||
|
||||
## v0.13.5 (2025-06-11)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **MCP Tools**: Renamed `create_project` tool to `create_memory_project` for namespace isolation
|
||||
- **Namespace**: Continued namespace isolation effort to prevent conflicts with other MCP servers
|
||||
|
||||
### Changes
|
||||
|
||||
- Tool functionality remains identical - only the name changed from `create_project` to `create_memory_project`
|
||||
- All integration tests updated to use the new tool name
|
||||
- Completes namespace isolation for project management tools alongside `list_memory_projects`
|
||||
|
||||
## v0.13.4 (2025-06-11)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""basic-memory - Local-first knowledge management combining Zettelkasten with knowledge graphs"""
|
||||
|
||||
# Package version - updated by release automation
|
||||
__version__ = "0.13.4"
|
||||
__version__ = "0.13.5"
|
||||
|
||||
# API version for FastAPI - independent of package version
|
||||
__api_version__ = "v0"
|
||||
|
||||
@@ -275,7 +275,7 @@ def get_project_config(project_name: Optional[str] = None) -> ProjectConfig:
|
||||
return ProjectConfig(name=name, home=Path(path))
|
||||
|
||||
# otherwise raise error
|
||||
raise ValueError(f"Project '{actual_project_name}' not found") # pragma: no cover
|
||||
raise ValueError(f"Project '{actual_project_name}' not found") # pragma: no cover
|
||||
|
||||
|
||||
# Create config manager
|
||||
|
||||
@@ -48,4 +48,4 @@ __all__ = [
|
||||
"sync_status",
|
||||
"view_note",
|
||||
"write_note",
|
||||
]
|
||||
]
|
||||
|
||||
@@ -230,7 +230,7 @@ async def set_default_project(project_name: str, ctx: Context | None = None) ->
|
||||
return add_project_metadata(result, session.get_current_project())
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
@mcp.tool("create_memory_project")
|
||||
async def create_project(
|
||||
project_name: str, project_path: str, set_default: bool = False, ctx: Context | None = None
|
||||
) -> str:
|
||||
@@ -341,4 +341,4 @@ async def delete_project(project_name: str, ctx: Context | None = None) -> str:
|
||||
result += "Files remain on disk but project is no longer tracked by Basic Memory.\n"
|
||||
result += "Re-add the project to access its content again.\n"
|
||||
|
||||
return add_project_metadata(result, session.get_current_project())
|
||||
return add_project_metadata(result, session.get_current_project())
|
||||
|
||||
@@ -350,7 +350,7 @@ async def test_create_project_basic_operation(mcp_server, app):
|
||||
async with Client(mcp_server) as client:
|
||||
# Create a new project
|
||||
create_result = await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": "test-new-project",
|
||||
"project_path": "/tmp/test-new-project",
|
||||
@@ -382,7 +382,7 @@ async def test_create_project_with_default_flag(mcp_server, app):
|
||||
async with Client(mcp_server) as client:
|
||||
# Create a new project and set as default
|
||||
create_result = await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": "test-default-project",
|
||||
"project_path": "/tmp/test-default-project",
|
||||
@@ -412,7 +412,7 @@ async def test_create_project_duplicate_name(mcp_server, app):
|
||||
async with Client(mcp_server) as client:
|
||||
# First create a project
|
||||
await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": "duplicate-test",
|
||||
"project_path": "/tmp/duplicate-test-1",
|
||||
@@ -422,7 +422,7 @@ async def test_create_project_duplicate_name(mcp_server, app):
|
||||
# Try to create another project with same name
|
||||
with pytest.raises(Exception) as exc_info:
|
||||
await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": "duplicate-test",
|
||||
"project_path": "/tmp/duplicate-test-2",
|
||||
@@ -431,7 +431,7 @@ async def test_create_project_duplicate_name(mcp_server, app):
|
||||
|
||||
# Should show error about duplicate name
|
||||
error_message = str(exc_info.value)
|
||||
assert "create_project" in error_message
|
||||
assert "create_memory_project" in error_message
|
||||
assert (
|
||||
"duplicate-test" in error_message
|
||||
or "already exists" in error_message
|
||||
@@ -446,7 +446,7 @@ async def test_delete_project_basic_operation(mcp_server, app):
|
||||
async with Client(mcp_server) as client:
|
||||
# First create a project to delete
|
||||
await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": "to-be-deleted",
|
||||
"project_path": "/tmp/to-be-deleted",
|
||||
@@ -540,7 +540,7 @@ async def test_project_lifecycle_workflow(mcp_server, app):
|
||||
|
||||
# 1. Create new project
|
||||
create_result = await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": project_name,
|
||||
"project_path": project_path,
|
||||
@@ -609,7 +609,7 @@ async def test_create_delete_project_edge_cases(mcp_server, app):
|
||||
|
||||
# Create project with special characters
|
||||
create_result = await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": special_name,
|
||||
"project_path": f"/tmp/{special_name}",
|
||||
@@ -645,7 +645,7 @@ async def test_case_insensitive_project_switching(mcp_server, app):
|
||||
# Create a project with mixed case name
|
||||
project_name = "Personal-Project"
|
||||
create_result = await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": project_name,
|
||||
"project_path": f"/tmp/{project_name}",
|
||||
@@ -709,7 +709,7 @@ async def test_case_insensitive_project_operations(mcp_server, app):
|
||||
# Create a project with capital letters
|
||||
project_name = "CamelCase-Project"
|
||||
create_result = await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": project_name,
|
||||
"project_path": f"/tmp/{project_name}",
|
||||
@@ -809,7 +809,7 @@ async def test_case_preservation_in_project_list(mcp_server, app):
|
||||
# Create all test projects
|
||||
for project_name in test_projects:
|
||||
await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": project_name,
|
||||
"project_path": f"/tmp/{project_name}",
|
||||
@@ -854,7 +854,7 @@ async def test_session_state_consistency_after_case_switch(mcp_server, app):
|
||||
# Create a project with specific case
|
||||
project_name = "Session-Test-Project"
|
||||
await client.call_tool(
|
||||
"create_project",
|
||||
"create_memory_project",
|
||||
{
|
||||
"project_name": project_name,
|
||||
"project_path": f"/tmp/{project_name}",
|
||||
@@ -899,4 +899,4 @@ async def test_session_state_consistency_after_case_switch(mcp_server, app):
|
||||
|
||||
# Clean up
|
||||
await client.call_tool("switch_project", {"project_name": "test-project"})
|
||||
await client.call_tool("delete_project", {"project_name": project_name})
|
||||
await client.call_tool("delete_project", {"project_name": project_name})
|
||||
|
||||
Reference in New Issue
Block a user