Skip to content
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
158df93
Draft | First imp | Agentic AI Templates
Nirsisr Jan 27, 2026
1d25518
ADD template service
odaiodeh Jan 28, 2026
ca44c04
FIX json schema requiered and fix the ref in plan to not be included โ€ฆ
odaiodeh Jan 29, 2026
5e6e80d
Templates | Followed BE APIs calls | Stage 2
Nirsisr Jan 29, 2026
a774730
FieldValidation | Inject dep
Nirsisr Jan 29, 2026
e2d4838
ADD bearer token to mcp provider
odaiodeh Jan 29, 2026
4fc9fbd
Merge remote-tracking branch 'origin/GENIE-1167/EPIC/Agentic-AI-Templโ€ฆ
odaiodeh Jan 29, 2026
f14ea61
Refactor the template code to be cleaner and SOLID, ADD README
odaiodeh Jan 31, 2026
4e467c8
Apply suggestion from @coderabbitai[bot]
Nirsisr Feb 1, 2026
657e9b2
CodeRaabit | Config mistake | Typo
Nirsisr Feb 1, 2026
0121bbe
ADD template id in user session chat metadata
odaiodeh Feb 1, 2026
555ad42
Merge remote-tracking branch 'origin/GENIE-1167/EPIC/Agentic-AI-Templโ€ฆ
odaiodeh Feb 1, 2026
696c9cc
remove comments out
odaiodeh Feb 1, 2026
6c3b039
- Sidebar | Agentic AI | Change Order
Nirsisr Feb 1, 2026
299fa3a
Apply suggestion from @coderabbitai[bot]
Nirsisr Feb 1, 2026
bad4e45
Merge remote-tracking branch 'origin/GENIE-1167/EPIC/Agentic-AI-Templโ€ฆ
odaiodeh Feb 1, 2026
255fd0b
Error Logic | Check by `severity`
Nirsisr Feb 1, 2026
504c66a
FIX return of blueprint validation error list
odaiodeh Feb 1, 2026
50c62aa
FIX missing usage of tags in list templates api endpoint
odaiodeh Feb 1, 2026
436c496
FIX Materialize should preserve instantiation error contract and resoโ€ฆ
odaiodeh Feb 1, 2026
4b9fd2a
ADD TODO for authorization checks on all delete endpoints (templates,โ€ฆ
odaiodeh Feb 1, 2026
c129e08
- Simplify delete_template endpoint to use TemplateNotFoundError
odaiodeh Feb 1, 2026
83874ff
Apply suggestion from @coderabbitai[bot]
Nirsisr Feb 1, 2026
6f34afd
CodeRaabit | Suggestion fixes
Nirsisr Feb 1, 2026
8435a51
Merge branch 'GENIE-1167/EPIC/Agentic-AI-Templates' of github.com:redโ€ฆ
Nirsisr Feb 1, 2026
f853468
FIX the max worker to be min 1
odaiodeh Feb 1, 2026
5097673
Merge remote-tracking branch 'origin/GENIE-1167/EPIC/Agentic-AI-Templโ€ฆ
odaiodeh Feb 1, 2026
1cf0227
CHANGE init of mcp provider to be by factory in validator and actions
odaiodeh Feb 2, 2026
7d1d32e
FieldValidation | Re-trigger Validaiton Action when dependency being โ€ฆ
Nirsisr Feb 4, 2026
fdbeeb0
Merge remote-tracking branch 'origin/GENIE-1167/EPIC/Agentic-AI-Templโ€ฆ
odaiodeh Feb 4, 2026
97b42fa
Template User Fill | Flip onClick logic
Nirsisr Feb 4, 2026
f060a2e
Merge remote-tracking branch 'origin/GENIE-1167/EPIC/Agentic-AI-Templโ€ฆ
odaiodeh Feb 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ reviews:
high_level_summary: true

path_filters:
- "multi-agents/**"
- "multi-agent/**"
- "backend/**"
- "ui/**"

instructions: |
This repository represents an agentic AI system with a modular, layered architecture.

Each of the main directories (multi-agents/, backend/, ui/) contains README.md and ARCHITECTURE.md files
Each of the main directories (multi-agent/, backend/, ui/) contains README.md and ARCHITECTURE.md files
that define architectural intent, responsibilities, and boundaries.

These documents should be treated as the source of truth.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import List, Optional, Dict, Any
from pydantic import BaseModel, HttpUrl
from pydantic import BaseModel, HttpUrl, Field
from actions.common.base_action import BaseAction
from actions.common.action_models import BaseActionInput, BaseActionOutput, ActionType
from elements.providers.mcp_server_client.mcp_server_client import McpServerClient
Expand All @@ -11,6 +11,10 @@
class GetToolsNamesInput(BaseActionInput):
"""Input for MCP tools discovery"""
sse_endpoint: HttpUrl
bearer_token: Optional[str] = Field(
default=None,
description="Bearer token for MCP server authentication"
)


class GetToolsNamesOutput(BaseActionOutput):
Expand Down Expand Up @@ -50,8 +54,13 @@ async def execute(self, input_data: GetToolsNamesInput,
Discovery result with tool names and count
"""
try:
# Create client and discover tools
client = McpServerClient(input_data.sse_endpoint)
# Build headers from bearer_token if provided
headers = None
if input_data.bearer_token:
headers = {"Authorization": f"Bearer {input_data.bearer_token}"}

# Create client and discover tools with auth headers
client = McpServerClient(input_data.sse_endpoint, headers=headers)

async with client:
tools = await client.tools.get_tools()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,24 @@
import time
from typing import Optional, Dict, Any

from pydantic import HttpUrl
from pydantic import HttpUrl, Field

from actions.common.base_action import BaseAction
from actions.common.action_models import BaseActionInput, BaseActionOutput, ActionType
from elements.providers.mcp_server_client.mcp_server_client import McpServerClient
from elements.providers.mcp_server_client.identifiers import Identifier
from core.enums import ResourceCategory
from core.field_hints import SecretHint


# Input/Output models for this action
class ValidateConnectionInput(BaseActionInput):
"""Input for MCP connection validation"""
sse_endpoint: HttpUrl
bearer_token: Optional[str] = Field(
default=None,
description="Bearer token for MCP server authentication"
)
Comment on lines +7 to +29
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

โš ๏ธ Potential issue | ๐ŸŸ  Major

Mask bearer_token in the action schema (SecretHint).

The token is sensitive; without SecretHint the UI may render plaintext and risk exposure. Align this with McpProviderConfig by adding SecretHint hints.

๐Ÿ”’ Proposed fix
 class ValidateConnectionInput(BaseActionInput):
     """Input for MCP connection validation"""
     sse_endpoint: HttpUrl
     bearer_token: Optional[str] = Field(
         default=None,
-        description="Bearer token for MCP server authentication"
+        description="Bearer token for MCP server authentication",
+        json_schema_extra=SecretHint(reason="API credentials should be masked").to_hints()
     )
๐Ÿค– Prompt for AI Agents
In `@multi-agent/actions/providers/mcp/validate_connection/validate_connection.py`
around lines 7 - 29, The ValidateConnectionInput model exposes bearer_token
without SecretHint; update the pydantic field for
ValidateConnectionInput.bearer_token to include hint=SecretHint (matching
McpProviderConfig) so the UI treats it as sensitiveโ€”locate the
ValidateConnectionInput class and modify the bearer_token Field to pass the
SecretHint hint from core.field_hints.



class ValidateConnectionOutput(BaseActionOutput):
Expand Down Expand Up @@ -96,8 +101,13 @@ async def execute(
start_time = time.time()

try:
# Create client and test connection
client = McpServerClient(input_data.sse_endpoint)
# Build headers from bearer_token if provided
headers = None
if input_data.bearer_token:
headers = {"Authorization": f"Bearer {input_data.bearer_token}"}

# Create client and test connection with auth headers
client = McpServerClient(input_data.sse_endpoint, headers=headers)

async with client:
# Test connection by listing tools with timeout
Expand Down
2 changes: 2 additions & 0 deletions multi-agent/api/flask/endpoints/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from api.flask.endpoints.health import health_bp
from api.flask.endpoints.shares import shares_bp
from api.flask.endpoints.statistics import statistics_bp
from api.flask.endpoints.templates import templates_bp


def register_all_endpoints(app):
Expand All @@ -22,6 +23,7 @@ def register_all_endpoints(app):
{"bp": actions_bp, "parent": 'actions', "route": ''},
{"bp": shares_bp, "parent": 'shares', "route": ''},
{"bp": statistics_bp, "parent": 'statistics', "route": ''},
{"bp": templates_bp, "parent": 'templates', "route": ''},
]

# register all other blueprints in the app
Expand Down
1 change: 1 addition & 0 deletions multi-agent/api/flask/endpoints/blueprints.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ def remove_blueprint(blueprint_id):
"""
Delete a blueprint by its ID.
"""
# TODO: Add authorization check - verify user has permission to delete this blueprint
try:
svc = current_app.container.blueprint_service

Expand Down
Loading