feat: Add intelligent auto-router and enhanced integrations

- Add intelligent-router.sh hook for automatic agent routing
- Add AUTO-TRIGGER-SUMMARY.md documentation
- Add FINAL-INTEGRATION-SUMMARY.md documentation
- Complete Prometheus integration (6 commands + 4 tools)
- Complete Dexto integration (12 commands + 5 tools)
- Enhanced Ralph with access to all agents
- Fix /clawd command (removed disable-model-invocation)
- Update hooks.json to v5 with intelligent routing
- 291 total skills now available
- All 21 commands with automatic routing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
admin
2026-01-28 00:27:56 +04:00
Unverified
parent 3b128ba3bd
commit b52318eeae
1724 changed files with 351216 additions and 0 deletions

View File

@@ -0,0 +1,105 @@
from prometheus.graph.file_graph_builder import FileGraphBuilder
from prometheus.graph.graph_types import (
ASTNode,
KnowledgeGraphEdgeType,
KnowledgeGraphNode,
TextNode,
)
from tests.test_utils import test_project_paths
def test_supports_file():
file_graph_builder = FileGraphBuilder(0, 0, 0)
assert file_graph_builder.supports_file(test_project_paths.C_FILE)
assert file_graph_builder.supports_file(test_project_paths.JAVA_FILE)
assert file_graph_builder.supports_file(test_project_paths.MD_FILE)
assert file_graph_builder.supports_file(test_project_paths.PYTHON_FILE)
assert file_graph_builder.supports_file(test_project_paths.DUMMY_FILE) is False
def test_build_python_file_graph():
file_graph_builder = FileGraphBuilder(1000, 1000, 100)
parent_kg_node = KnowledgeGraphNode(0, None)
next_node_id, kg_nodes, kg_edges = file_graph_builder.build_file_graph(
parent_kg_node, test_project_paths.PYTHON_FILE, 0
)
assert next_node_id == 11
assert len(kg_nodes) == 11
assert len(kg_edges) == 11
# Test if some of the nodes exists
argument_list_ast_node = ASTNode(
type="argument_list", start_line=1, end_line=1, text='("Hello world!")'
)
string_ast_node = ASTNode(type="string", start_line=1, end_line=1, text='"Hello world!"')
found_argument_list_ast_node = False
for kg_node in kg_nodes:
if kg_node.node == argument_list_ast_node:
found_argument_list_ast_node = True
assert found_argument_list_ast_node
found_string_ast_node = False
for kg_node in kg_nodes:
if kg_node.node == string_ast_node:
found_string_ast_node = True
assert found_string_ast_node
# Test if some of the edges exists
found_edge = False
for kg_edge in kg_edges:
if (
kg_edge.source.node == argument_list_ast_node
and kg_edge.target.node == string_ast_node
and kg_edge.type == KnowledgeGraphEdgeType.parent_of
):
found_edge = True
assert found_edge
def test_build_text_file_graph():
file_graph_builder = FileGraphBuilder(1000, 100, 10)
parent_kg_node = KnowledgeGraphNode(0, None)
next_node_id, kg_nodes, kg_edges = file_graph_builder.build_file_graph(
parent_kg_node, test_project_paths.MD_FILE, 0
)
assert next_node_id == 2
assert len(kg_nodes) == 2
assert len(kg_edges) == 3
# Test if some of the nodes exists
text_node_1 = TextNode(
text="# A\n\nText under header A.\n\n## B\n\nText under header B.\n\n## C\n\nText under header C.\n\n### D",
start_line=1,
end_line=13,
)
text_node_2 = TextNode(text="### D\n\nText under header D.", start_line=13, end_line=15)
found_text_node_1 = False
for kg_node in kg_nodes:
if kg_node.node == text_node_1:
found_text_node_1 = True
assert found_text_node_1
found_text_node_2 = False
for kg_node in kg_nodes:
if kg_node.node == text_node_2:
found_text_node_2 = True
assert found_text_node_2
# Test if some of the edges exists
found_edge = False
for kg_edge in kg_edges:
if (
kg_edge.source.node == text_node_1
and kg_edge.target.node == text_node_2
and kg_edge.type == KnowledgeGraphEdgeType.next_chunk
):
found_edge = True
assert found_edge