fenix-mcp 0.5.10__tar.gz → 0.5.12__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-0.5.10 → fenix_mcp-0.5.12}/PKG-INFO +1 -1
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/__init__.py +1 -1
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/knowledge.py +21 -6
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/domain/knowledge.py +1 -1
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp.egg-info/PKG-INFO +1 -1
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/README.md +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/presenters.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tool_base.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tool_registry.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/__init__.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/health.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/initialize.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/intelligence.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/productivity.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/application/tools/user_config.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/domain/initialization.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/domain/intelligence.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/domain/productivity.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/domain/user_config.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/infrastructure/config.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/infrastructure/context.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/infrastructure/fenix_api/client.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/infrastructure/http_client.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/infrastructure/logging.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/interface/mcp_server.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/interface/transports.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp/main.py +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp.egg-info/SOURCES.txt +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp.egg-info/dependency_links.txt +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp.egg-info/entry_points.txt +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp.egg-info/requires.txt +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/fenix_mcp.egg-info/top_level.txt +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/pyproject.toml +0 -0
- {fenix_mcp-0.5.10 → fenix_mcp-0.5.12}/setup.cfg +0 -0
|
@@ -160,7 +160,6 @@ class KnowledgeRequest(ToolRequest):
|
|
|
160
160
|
default=None, description="Descrição do work item."
|
|
161
161
|
)
|
|
162
162
|
work_type: Optional[str] = Field(default="task", description="Tipo do work item.")
|
|
163
|
-
work_status: Optional[str] = Field(default=None, description="Status do work item.")
|
|
164
163
|
work_priority: Optional[str] = Field(
|
|
165
164
|
default=None, description="Prioridade do work item."
|
|
166
165
|
)
|
|
@@ -266,7 +265,6 @@ class KnowledgeTool(Tool):
|
|
|
266
265
|
"title": payload.work_title,
|
|
267
266
|
"description": payload.work_description,
|
|
268
267
|
"item_type": payload.work_type,
|
|
269
|
-
"status": payload.work_status,
|
|
270
268
|
"priority": payload.work_priority,
|
|
271
269
|
"story_points": payload.story_points,
|
|
272
270
|
"assignee_id": payload.assignee_id,
|
|
@@ -281,7 +279,6 @@ class KnowledgeTool(Tool):
|
|
|
281
279
|
items = await self._service.work_list(
|
|
282
280
|
limit=payload.limit,
|
|
283
281
|
offset=payload.offset,
|
|
284
|
-
status=payload.work_status,
|
|
285
282
|
priority=payload.work_priority,
|
|
286
283
|
type=payload.work_type,
|
|
287
284
|
assignee=payload.assignee_id,
|
|
@@ -308,7 +305,6 @@ class KnowledgeTool(Tool):
|
|
|
308
305
|
"title": payload.work_title,
|
|
309
306
|
"description": payload.work_description,
|
|
310
307
|
"item_type": payload.work_type,
|
|
311
|
-
"status": payload.work_status,
|
|
312
308
|
"priority": payload.work_priority,
|
|
313
309
|
"story_points": payload.story_points,
|
|
314
310
|
"assignee_id": payload.assignee_id,
|
|
@@ -901,16 +897,35 @@ def _format_work(item: Dict[str, Any], *, header: Optional[str] = None) -> str:
|
|
|
901
897
|
if header:
|
|
902
898
|
lines.append(header)
|
|
903
899
|
lines.append("")
|
|
900
|
+
|
|
901
|
+
# Extract title
|
|
904
902
|
title = item.get("title") or item.get("name") or "Sem título"
|
|
903
|
+
|
|
904
|
+
# Extract status
|
|
905
905
|
status = item.get("status") or item.get("state") or "desconhecido"
|
|
906
|
+
|
|
907
|
+
# Extract priority
|
|
906
908
|
priority = item.get("priority") or item.get("priority_level") or "indefinido"
|
|
909
|
+
|
|
910
|
+
# Extract ID
|
|
911
|
+
item_id = item.get("id", "N/A")
|
|
912
|
+
|
|
913
|
+
# Extract assignee - check both assignee_id and assignee object
|
|
914
|
+
assignee = item.get("assignee_id")
|
|
915
|
+
if not assignee and item.get("assignee"):
|
|
916
|
+
assignee = item.get("assignee", {}).get("name") or item.get("assignee", {}).get(
|
|
917
|
+
"id"
|
|
918
|
+
)
|
|
919
|
+
if not assignee:
|
|
920
|
+
assignee = "N/A"
|
|
921
|
+
|
|
907
922
|
lines.extend(
|
|
908
923
|
[
|
|
909
924
|
f"🎯 **{title}**",
|
|
910
|
-
f"ID: {
|
|
925
|
+
f"ID: {item_id}",
|
|
911
926
|
f"Status: {status}",
|
|
912
927
|
f"Prioridade: {priority}",
|
|
913
|
-
f"Responsável: {
|
|
928
|
+
f"Responsável: {assignee}",
|
|
914
929
|
]
|
|
915
930
|
)
|
|
916
931
|
if item.get("due_date") or item.get("dueDate"):
|
|
@@ -64,7 +64,7 @@ class KnowledgeService:
|
|
|
64
64
|
# Work items
|
|
65
65
|
# ------------------------------------------------------------------
|
|
66
66
|
async def work_create(self, payload: Dict[str, Any]) -> Dict[str, Any]:
|
|
67
|
-
return await self.
|
|
67
|
+
return await self._call_dict(self.api.create_work_item, _strip_none(payload))
|
|
68
68
|
|
|
69
69
|
async def work_list(self, **filters: Any) -> List[Dict[str, Any]]:
|
|
70
70
|
return await self._call_list(self.api.list_work_items, **_strip_none(filters))
|
|
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
|
|
File without changes
|