fenix-mcp 1.2.0__py3-none-any.whl → 1.3.1__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.
- fenix_mcp/__init__.py +1 -1
- fenix_mcp/application/tools/knowledge.py +24 -5
- {fenix_mcp-1.2.0.dist-info → fenix_mcp-1.3.1.dist-info}/METADATA +1 -1
- {fenix_mcp-1.2.0.dist-info → fenix_mcp-1.3.1.dist-info}/RECORD +7 -7
- {fenix_mcp-1.2.0.dist-info → fenix_mcp-1.3.1.dist-info}/WHEEL +0 -0
- {fenix_mcp-1.2.0.dist-info → fenix_mcp-1.3.1.dist-info}/entry_points.txt +0 -0
- {fenix_mcp-1.2.0.dist-info → fenix_mcp-1.3.1.dist-info}/top_level.txt +0 -0
fenix_mcp/__init__.py
CHANGED
|
@@ -679,7 +679,18 @@ class KnowledgeTool(Tool):
|
|
|
679
679
|
return_description=payload.return_description,
|
|
680
680
|
return_metadata=payload.return_metadata,
|
|
681
681
|
)
|
|
682
|
-
|
|
682
|
+
# Buscar rules associadas ao mode
|
|
683
|
+
associations = await self._service.mode_rules(payload.mode_id)
|
|
684
|
+
rules = [assoc.get("rule", assoc) for assoc in associations]
|
|
685
|
+
|
|
686
|
+
# Formatar resposta com rules
|
|
687
|
+
output = _format_mode(mode, header="🎭 Mode details", show_content=True)
|
|
688
|
+
if rules:
|
|
689
|
+
rules_list = "\n".join(
|
|
690
|
+
f"- {r.get('name', 'Unnamed')} (ID: {r.get('id')})" for r in rules
|
|
691
|
+
)
|
|
692
|
+
output += f"\n\n**Rules ({len(rules)}):**\n{rules_list}"
|
|
693
|
+
return text(output)
|
|
683
694
|
|
|
684
695
|
if action is KnowledgeAction.MODE_UPDATE:
|
|
685
696
|
if not payload.mode_id:
|
|
@@ -724,18 +735,22 @@ class KnowledgeTool(Tool):
|
|
|
724
735
|
|
|
725
736
|
if action is KnowledgeAction.MODE_RULES:
|
|
726
737
|
if payload.mode_id:
|
|
727
|
-
|
|
738
|
+
associations = await self._service.mode_rules(payload.mode_id)
|
|
728
739
|
context_label = f"mode {payload.mode_id}"
|
|
740
|
+
# API retorna [{id, mode_id, rule_id, rule: {...}}] - extrair rule
|
|
741
|
+
items = [assoc.get("rule", assoc) for assoc in associations]
|
|
729
742
|
elif payload.rule_id:
|
|
730
|
-
|
|
743
|
+
associations = await self._service.mode_rules_for_rule(payload.rule_id)
|
|
731
744
|
context_label = f"rule {payload.rule_id}"
|
|
745
|
+
# API retorna [{id, mode_id, rule_id, mode: {...}}] - extrair mode
|
|
746
|
+
items = [assoc.get("mode", assoc) for assoc in associations]
|
|
732
747
|
else:
|
|
733
748
|
return text("❌ Provide mode_id or rule_id to list associations.")
|
|
734
|
-
if not
|
|
749
|
+
if not items:
|
|
735
750
|
return text("🔗 No associations found.")
|
|
736
751
|
body = "\n".join(
|
|
737
752
|
f"- {item.get('name', 'Unnamed')} (ID: {item.get('id')})"
|
|
738
|
-
for item in
|
|
753
|
+
for item in items
|
|
739
754
|
)
|
|
740
755
|
return text(f"🔗 **Associations for {context_label}:**\n{body}")
|
|
741
756
|
|
|
@@ -1056,6 +1071,9 @@ def _format_work(
|
|
|
1056
1071
|
# Extract title
|
|
1057
1072
|
title = item.get("title") or item.get("name") or "Untitled"
|
|
1058
1073
|
|
|
1074
|
+
# Extract type
|
|
1075
|
+
item_type = item.get("item_type") or item.get("type") or "unknown"
|
|
1076
|
+
|
|
1059
1077
|
# Extract status
|
|
1060
1078
|
status = item.get("status") or item.get("state") or "unknown"
|
|
1061
1079
|
|
|
@@ -1078,6 +1096,7 @@ def _format_work(
|
|
|
1078
1096
|
[
|
|
1079
1097
|
f"🎯 **{title}**",
|
|
1080
1098
|
f"ID: {item_id}",
|
|
1099
|
+
f"Type: {item_type}",
|
|
1081
1100
|
f"Status: {status}",
|
|
1082
1101
|
f"Priority: {priority}",
|
|
1083
1102
|
f"Assignee: {assignee}",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
fenix_mcp/__init__.py,sha256=
|
|
1
|
+
fenix_mcp/__init__.py,sha256=kAOc-FB8DpEWalLe71J4Ai2UYJFNyjsRMAF8TDSwHfw,180
|
|
2
2
|
fenix_mcp/main.py,sha256=iJV-9btNMDJMObvcn7wBQdbLLKjkYCQ1ANGEwHGHlMU,2857
|
|
3
3
|
fenix_mcp/application/presenters.py,sha256=fGME54PdCDhTBhXO-JUB9yLdBHiE1aeXLTC2fCuxnxM,689
|
|
4
4
|
fenix_mcp/application/tool_base.py,sha256=YJk7aSVGjXEvAkXrOHOuUjCFhYni9NPKFyPKiZqkrCc,4235
|
|
@@ -7,7 +7,7 @@ fenix_mcp/application/tools/__init__.py,sha256=Gi1YvYh-KdL9HD8gLVrknHrxiKKEOhHBE
|
|
|
7
7
|
fenix_mcp/application/tools/health.py,sha256=m5DxhoRbdwl6INzd6PISxv1NAv-ljCrezsr773VB0wE,834
|
|
8
8
|
fenix_mcp/application/tools/initialize.py,sha256=YfsE3fVYiqGEwvaI_jg5-0K7pGURXxpB3WNwETmGBPc,5499
|
|
9
9
|
fenix_mcp/application/tools/intelligence.py,sha256=fXfjBwAQmZCn3Zc8BqFnQFAJkpd9JsfOPa_uXJj-bMU,15778
|
|
10
|
-
fenix_mcp/application/tools/knowledge.py,sha256=
|
|
10
|
+
fenix_mcp/application/tools/knowledge.py,sha256=TMbLIA3ZjftCrdJ50KBi2oQTYzPXr86vZfS2Tsz_gUE,51029
|
|
11
11
|
fenix_mcp/application/tools/productivity.py,sha256=wyJ7-2VqgI2cdrliBD_ejwNvQhN1DecpXSQVrCxcUpQ,11231
|
|
12
12
|
fenix_mcp/application/tools/user_config.py,sha256=O5AVg7IUKL9uIoUoBSFovBDHl9jofhKWzhFK7CnKi4s,6470
|
|
13
13
|
fenix_mcp/domain/initialization.py,sha256=AZhdSNITQ7O3clELBuqGvjJc-c8pFKc7zQz-XR2xXPc,6933
|
|
@@ -22,8 +22,8 @@ fenix_mcp/infrastructure/logging.py,sha256=bHrWlSi_0HshRe3--BK_5nzUszW-gh37q6jsd
|
|
|
22
22
|
fenix_mcp/infrastructure/fenix_api/client.py,sha256=z5S6cwBxerpaDXj4Y4LWZEd7ZuGcVmgcaXQv3tTFPBs,28038
|
|
23
23
|
fenix_mcp/interface/mcp_server.py,sha256=5UM2NJuNbwHkmCEprIFataJ5nFZiO8efTtP_oW3_iX0,2331
|
|
24
24
|
fenix_mcp/interface/transports.py,sha256=PxdhfjH8UMl03f7nuCLc-M6tMx6-Y-btVz_mSqXKrSI,8138
|
|
25
|
-
fenix_mcp-1.
|
|
26
|
-
fenix_mcp-1.
|
|
27
|
-
fenix_mcp-1.
|
|
28
|
-
fenix_mcp-1.
|
|
29
|
-
fenix_mcp-1.
|
|
25
|
+
fenix_mcp-1.3.1.dist-info/METADATA,sha256=01uNBKpZEkXbRYLzPWo72wIoqq5Z5pO9xZn5AHJdCX4,7260
|
|
26
|
+
fenix_mcp-1.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
27
|
+
fenix_mcp-1.3.1.dist-info/entry_points.txt,sha256=o52x_YHBupEd-1Z1GSfUjv3gJrx5_I-EkHhCgt1WBaE,49
|
|
28
|
+
fenix_mcp-1.3.1.dist-info/top_level.txt,sha256=2G1UtKpwjaIGQyE7sRoHecxaGLeuexfjrOUjv9DDKh4,10
|
|
29
|
+
fenix_mcp-1.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|