fenix-mcp 1.11.0__tar.gz → 1.12.0__tar.gz
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.
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/PKG-INFO +1 -1
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/__init__.py +1 -1
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/initialize.py +19 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/intelligence.py +7 -1
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/infrastructure/fenix_api/client.py +3 -31
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp.egg-info/PKG-INFO +1 -1
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/README.md +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/presenters.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tool_base.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tool_registry.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/__init__.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/health.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/knowledge.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/productivity.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/application/tools/user_config.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/domain/initialization.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/domain/intelligence.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/domain/knowledge.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/domain/productivity.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/domain/user_config.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/infrastructure/config.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/infrastructure/context.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/infrastructure/http_client.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/infrastructure/logging.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/interface/mcp_server.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/interface/transports.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp/main.py +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp.egg-info/SOURCES.txt +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp.egg-info/dependency_links.txt +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp.egg-info/entry_points.txt +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp.egg-info/requires.txt +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/fenix_mcp.egg-info/top_level.txt +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/pyproject.toml +0 -0
- {fenix_mcp-1.11.0 → fenix_mcp-1.12.0}/setup.cfg +0 -0
|
@@ -124,6 +124,25 @@ class InitializeTool(Tool):
|
|
|
124
124
|
]
|
|
125
125
|
)
|
|
126
126
|
|
|
127
|
+
# Add memory usage instructions
|
|
128
|
+
message_lines.extend(
|
|
129
|
+
[
|
|
130
|
+
"",
|
|
131
|
+
"🧠 **Memory Usage Instructions**",
|
|
132
|
+
"",
|
|
133
|
+
"To provide continuity across sessions, use the `intelligence` tool:",
|
|
134
|
+
"",
|
|
135
|
+
'1. **At conversation START**: Call `intelligence(action="memory_query", query="<relevant_topic>")` to retrieve context from previous sessions',
|
|
136
|
+
'2. **When learning important info**: Call `intelligence(action="memory_smart_create", ...)` to save:',
|
|
137
|
+
" - User preferences and decisions",
|
|
138
|
+
" - Project context and architecture choices",
|
|
139
|
+
" - Problems solved and solutions found",
|
|
140
|
+
" - Technical learnings and patterns",
|
|
141
|
+
"",
|
|
142
|
+
"This prevents users from repeating themselves and enables personalized assistance.",
|
|
143
|
+
]
|
|
144
|
+
)
|
|
145
|
+
|
|
127
146
|
return text("\n".join(message_lines))
|
|
128
147
|
|
|
129
148
|
async def _handle_setup(self, payload: InitializeRequest):
|
|
@@ -172,7 +172,13 @@ class IntelligenceRequest(ToolRequest):
|
|
|
172
172
|
|
|
173
173
|
class IntelligenceTool(Tool):
|
|
174
174
|
name = "intelligence"
|
|
175
|
-
description =
|
|
175
|
+
description = (
|
|
176
|
+
"Fenix persistent memory system for cross-session continuity. "
|
|
177
|
+
"RECOMMENDED USAGE: "
|
|
178
|
+
"(1) Call memory_query at the START of conversations to retrieve relevant context from previous sessions. "
|
|
179
|
+
"(2) Call memory_smart_create to save important information, decisions, user preferences, and learnings. "
|
|
180
|
+
"This enables personalized responses and prevents users from repeating themselves."
|
|
181
|
+
)
|
|
176
182
|
request_model = IntelligenceRequest
|
|
177
183
|
|
|
178
184
|
def __init__(self, context: AppContext):
|
|
@@ -33,7 +33,6 @@ class FenixApiClient:
|
|
|
33
33
|
|
|
34
34
|
base_url: str
|
|
35
35
|
personal_access_token: Optional[str]
|
|
36
|
-
core_documents_token: Optional[str] = None
|
|
37
36
|
timeout: float = 30.0
|
|
38
37
|
_http: HttpClient = field(init=False, repr=False)
|
|
39
38
|
|
|
@@ -71,11 +70,6 @@ class FenixApiClient:
|
|
|
71
70
|
headers.pop("Authorization", None)
|
|
72
71
|
self._http.default_headers = headers
|
|
73
72
|
|
|
74
|
-
def update_core_documents_token(self, token: Optional[str]) -> None:
|
|
75
|
-
"""Update the MCP token used to access public core document endpoints."""
|
|
76
|
-
|
|
77
|
-
self.core_documents_token = token
|
|
78
|
-
|
|
79
73
|
def _build_params(
|
|
80
74
|
self,
|
|
81
75
|
*,
|
|
@@ -137,38 +131,16 @@ class FenixApiClient:
|
|
|
137
131
|
return self._request("GET", "/api/auth/profile")
|
|
138
132
|
|
|
139
133
|
# ------------------------------------------------------------------
|
|
140
|
-
# Core documents
|
|
134
|
+
# Core documents (requires PAT authentication)
|
|
141
135
|
# ------------------------------------------------------------------
|
|
142
136
|
|
|
143
137
|
def list_core_documents(self, *, return_content: bool = False) -> Any:
|
|
144
|
-
|
|
145
|
-
headers = (
|
|
146
|
-
{"x-mcp-token": self.core_documents_token}
|
|
147
|
-
if self.core_documents_token
|
|
148
|
-
else None
|
|
149
|
-
)
|
|
150
|
-
return self._request(
|
|
151
|
-
"GET", "/api/core-documents/mcp/all", params=params, headers=headers
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
def get_core_document_by_name(
|
|
155
|
-
self, name: str, *, return_content: bool = False
|
|
156
|
-
) -> Any:
|
|
157
|
-
params = self._build_params(optional={"returnContent": return_content})
|
|
158
|
-
headers = (
|
|
159
|
-
{"x-mcp-token": self.core_documents_token}
|
|
160
|
-
if self.core_documents_token
|
|
161
|
-
else None
|
|
162
|
-
)
|
|
163
|
-
return self._request(
|
|
164
|
-
"GET", f"/api/core-documents/mcp/{name}", params=params, headers=headers
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
def list_core_documents_auth(self, *, return_content: bool = False) -> Any:
|
|
138
|
+
"""List all core documents. Requires valid PAT."""
|
|
168
139
|
params = self._build_params(optional={"returnContent": return_content})
|
|
169
140
|
return self._request("GET", "/api/core-documents", params=params)
|
|
170
141
|
|
|
171
142
|
def get_core_document(self, name: str, *, return_content: bool = False) -> Any:
|
|
143
|
+
"""Get a core document by name. Requires valid PAT."""
|
|
172
144
|
params = self._build_params(optional={"returnContent": return_content})
|
|
173
145
|
return self._request("GET", f"/api/core-documents/{name}", params=params)
|
|
174
146
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|