feat: Complete code integration of modules (#18)

The complete code integration is done.

Co-authored-by: Sagnik <sagnik7896@gmail.com>
Reviewed-on: #18
This commit was merged in pull request #18.
This commit is contained in:
2026-04-12 19:20:14 +05:30
parent 248d92042f
commit 4645ff737b
27 changed files with 3393 additions and 50 deletions

View File

@@ -16,6 +16,8 @@ from typing import Any
from .policy_service import PolicyContext, PolicyService
from .canvas_service import canvas_service
from .data_access_gateway import data_access_gateway
from .persona_service import persona_service
from backend.services.nemoclaw_runtime import nemoclaw_runtime
try:
import asyncpg # type: ignore
@@ -177,6 +179,19 @@ class PromptOrchestrator:
execution["retrievalPlan"] = retrieval_plan
persona_plan = await persona_service.plan_for_prompt(
prompt=prompt,
tenant_id=tenant_id,
actor_role=actor_role,
)
execution["personaPlan"] = persona_plan
execution["workflowDispatch"] = nemoclaw_runtime.build_workflow_dispatch(
prompt=prompt,
tenant_id=tenant_id,
actor_role=actor_role,
component_templates=persona_plan["recommendedTemplates"],
)
# ── Step 2: Policy validation ─────────────────────────────────────────
policy_errors = []
for component_plan in retrieval_plan.get("components", []):
@@ -209,6 +224,7 @@ class PromptOrchestrator:
branch_id=branch_id,
placement_mode=placement_mode,
ctx=ctx,
persona_plan=persona_plan,
)
execution["visualizationPlan"] = viz_plan
@@ -255,9 +271,18 @@ class PromptOrchestrator:
branch_id: str,
placement_mode: str,
ctx: PolicyContext,
persona_plan: dict[str, Any],
) -> dict[str, Any]:
"""Converts a retrieval plan into a list of CanvasComponent descriptors."""
components = []
components = [
self._persona_text_canvas(
execution_id=execution_id,
actor_id=actor_id,
branch_id=branch_id,
prompt=prompt,
persona_plan=persona_plan,
)
]
base_order = 900 # Append after existing components
component_plans = retrieval_plan.get("components", [])
@@ -343,6 +368,85 @@ class PromptOrchestrator:
return {"components": components}
@staticmethod
def _persona_text_canvas(
*,
execution_id: str,
actor_id: str,
branch_id: str,
prompt: str,
persona_plan: dict[str, Any],
) -> dict[str, Any]:
recommended = ", ".join(persona_plan.get("recommendedTemplates", [])) or "no direct template matches"
content = (
f"Oracle received: {prompt}\n\n"
f"Reusable templates: {recommended}\n\n"
"Execution policy: query live CRM data first, reuse matching templates, "
"synthesize missing UI blocks, then dispatch the required ComfyUI-backed workflow."
)
return {
"componentId": str(uuid.uuid4()),
"type": "textCanvas",
"title": "Oracle Planning Notes",
"description": "Persona-driven guidance generated before data-bound components.",
"dataSourceDescriptor": {
"descriptorId": str(uuid.uuid4()),
"sourceType": "inline",
"connectorId": "oracle-persona",
"dataset": "oracle_persona_plan",
"authContextRef": f"authctx_{actor_id}_scope",
"queryTemplate": "",
"queryParameters": {},
"rowLimit": 1,
"privacyTier": "standard",
},
"visualizationParameters": {
"content": content,
"widthMode": "full",
"adjustableHeight": True,
},
"dataBindings": {"dimensions": [], "measures": [], "series": [], "filters": []},
"version": 1,
"lifecycleState": "active",
"provenance": {
"originType": "prompt_generated",
"promptExecutionId": execution_id,
"sourceBranchId": branch_id,
"createdBy": actor_id,
"createdAt": _now(),
},
"renderingHints": {"estimatedHeightPx": 180, "skeletonVariant": "text", "virtualizationPriority": 4},
"layout": {
"orderIndex": 910,
"sectionId": "sec_prompt_generated",
"widthMode": "full",
"minHeightPx": 180,
"stickyHeader": False,
},
"accessControls": {
"visibilityScope": "private",
"allowedRoles": ["senior_broker", "sales_director", "marketing_operator", "data_steward", "compliance_reviewer", "platform_admin"],
"redactionPolicy": "none",
},
"styleSignature": {
"theme": "velocity_glass",
"paletteToken": "ocean_signal",
"motionProfile": "calm_reveal",
"density": "comfortable",
"radiusScale": "lg",
"typographyScale": "balanced",
},
"validationState": {
"schema": "pass",
"policy": "pass",
"a11y": "pass",
"performance": "pass",
"status": "validated",
},
"auditLog": [f"aud_{execution_id}_persona"],
"dataRows": [],
}
@staticmethod
def _map_type(plan_type: str) -> str:
mapping = {