diff --git a/MANUAL_REGRAS_AGENT_TEMPLATE_BACKEND.md b/MANUAL_REGRAS_AGENT_TEMPLATE_BACKEND.md index 9baebc48..dfdf3763 100644 --- a/MANUAL_REGRAS_AGENT_TEMPLATE_BACKEND.md +++ b/MANUAL_REGRAS_AGENT_TEMPLATE_BACKEND.md @@ -199,11 +199,44 @@ ROUTE_STICKINESS_MAX_TOKENS `CONTINUE` mantém o agente ativo; `ROUTE` volta ao EnterpriseRouter. Stickiness não autoriza transações e não substitui tool policy. -## P.7. Intent shift +## P.7. Intent shift e abandono explícito (`CONTINUE` / `SHIFT` / `ABANDON`) -Durante `COLLECTING_PARAMETERS` ou `AWAITING_CONFIRMATION`, o framework protege a transação atual contra mudanças acidentais. Entretanto, uma mudança explícita de assunto pode cancelar/limpar o latch transacional e devolver o turno ao routing normal. +Durante `COLLECTING_PARAMETERS` ou `AWAITING_CONFIRMATION`, o framework protege a transação atual contra mudanças acidentais. Antes de assumir que toda nova fala pertence à transação aberta, o EnterpriseRouter pode classificar a relação da mensagem com o objetivo transacional ativo em três decisões semânticas: -A fala atual também tem precedência para preencher campos pendentes. Uma resposta como `PED-1001` durante coleta de `order_id` não deve ser reinterpretada como uma nova intent. +```text +CONTINUE +SHIFT +ABANDON +``` + +Essas decisões não são novos estados transacionais persistidos. Elas orientam o que fazer com o estado atual. O estado terminal operacional continua sendo, por exemplo, `CANCELLED`. + +- `CONTINUE`: a mensagem pertence à transação em andamento. A coleta, confirmação ou execução continua normalmente. +- `SHIFT`: o usuário passa temporariamente a perseguir outro objetivo. O framework libera o latch da transação ativa para rotear a nova intenção, mas **não interpreta o shift como autorização para apagar todas as `pending_topics`**. Pendências de um plano multi-intent podem continuar disponíveis para retomada posterior. +- `ABANDON`: o usuário manifesta desistência explícita da ação/transação ativa. O router sinaliza `transaction_interruption=explicit_abandonment`; o runtime encerra a transação relacionada como `CANCELLED` e limpa seus latches transacionais. + +Exemplos conceituais: + +```text +"PED-1001" +→ CONTINUE +→ preenche order_id da coleta atual + +"antes disso, quero consultar meus serviços" +→ SHIFT +→ atende o novo objetivo +→ pending_topics anteriores não são apagadas automaticamente + +"não quero mais cancelar" +→ ABANDON +→ encerra a transação de cancelamento ativa como CANCELLED +``` + +Quando existe `ABANDON` sem um novo objetivo para rotear, o framework pode representar o turno com uma intenção de estado como `state:TRANSACTION_ABANDONED`, sem selecionar novamente a tool que acabou de ser abandonada. Isso evita o ciclo incorreto `ABANDON → detectar novamente a palavra cancelar → reabrir cancelar_pedido`. + +`ABANDON` também não deve ser confundido com uma limpeza global do plano multi-intent. Por padrão, ele encerra a ação/transação ativa correlacionada; outras operações independentes podem permanecer em `pending_topics`. Se o usuário disser explicitamente que quer abandonar também outras ações, esse escopo deve ser resolvido de forma correlacionada, e não por um `pending_topics = []` indiscriminado. + +A fala atual continua tendo precedência para preencher campos pendentes quando a decisão é `CONTINUE`. Uma resposta como `PED-1001` durante coleta de `order_id` não deve ser reinterpretada como uma nova intent. ## P.8. Coleta de parâmetros diff --git a/MANUAL_RULES_AGENT_TEMPLATE_BACKEND_EN.md b/MANUAL_RULES_AGENT_TEMPLATE_BACKEND_EN.md index e707ee7e..0c39e218 100644 --- a/MANUAL_RULES_AGENT_TEMPLATE_BACKEND_EN.md +++ b/MANUAL_RULES_AGENT_TEMPLATE_BACKEND_EN.md @@ -196,11 +196,44 @@ ROUTE_STICKINESS_MAX_TOKENS `CONTINUE` keeps the active agent; `ROUTE` goes back to EnterpriseRouter. Stickiness does not authorize transactions and does not replace tool policy. -## P.7. Intent shift +## P.7. Intent shift and explicit abandonment (`CONTINUE` / `SHIFT` / `ABANDON`) -During `COLLECTING_PARAMETERS` or `AWAITING_CONFIRMATION`, the framework protects the current transaction from accidental topic changes. An explicit change of subject may, however, cancel/clear the transactional latch and return the turn to normal routing. +During `COLLECTING_PARAMETERS` or `AWAITING_CONFIRMATION`, the framework protects the current transaction from accidental topic changes. Before assuming that every new utterance belongs to the open transaction, EnterpriseRouter may classify how the message relates to the active transactional goal using three semantic decisions: -The current utterance also has precedence when filling pending fields. A response such as `PED-1001` while collecting `order_id` must not be reinterpreted as a new intent. +```text +CONTINUE +SHIFT +ABANDON +``` + +These decisions are not new persisted transactional states. They guide how the current state is handled. The operational terminal state remains, for example, `CANCELLED`. + +- `CONTINUE`: the message belongs to the transaction in progress. Parameter collection, confirmation, or execution continues normally. +- `SHIFT`: the user temporarily moves to another goal. The framework releases the active transactional latch so the new intent can be routed, but **a shift is not interpreted as permission to erase all `pending_topics`**. Pending work from a multi-intent plan may remain available for later resumption. +- `ABANDON`: the user explicitly gives up the active action/transaction. The router signals `transaction_interruption=explicit_abandonment`; the runtime terminates the related transaction as `CANCELLED` and clears its transactional latches. + +Conceptual examples: + +```text +"PED-1001" +→ CONTINUE +→ fills order_id for the current collection + +"before that, I want to check my services" +→ SHIFT +→ handles the new goal +→ previous pending_topics are not automatically erased + +"I don't want to cancel anymore" +→ ABANDON +→ terminates the active cancellation transaction as CANCELLED +``` + +When `ABANDON` occurs without a new goal to route, the framework may represent the turn with a state intent such as `state:TRANSACTION_ABANDONED`, without selecting again the tool that was just abandoned. This avoids the incorrect loop `ABANDON → detect the word cancel again → reopen cancelar_pedido`. + +`ABANDON` must also not be confused with a global cleanup of the multi-intent plan. By default, it terminates the correlated active action/transaction; other independent operations may remain in `pending_topics`. If the user explicitly abandons additional actions, that scope should be resolved by correlation rather than by an indiscriminate `pending_topics = []`. + +The current utterance still has precedence when filling pending fields when the decision is `CONTINUE`. A response such as `PED-1001` while collecting `order_id` must not be reinterpreted as a new intent. ## P.8. Parameter collection diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f80d2276 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..ad5975b5 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..7cbdba34 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..851ddfad Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..78a71e5d Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..1e1d6034 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..9173e5ab Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..3c4c277b Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..c79c9ecd Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..05f7a751 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..59de5647 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..1bbb960d Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..72b0aca7 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..a763cc5c Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..e39ccb57 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..4bdbd362 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..b6a83d0d Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..b917a574 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..0c79403d Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/state.py b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/state.py index 9533ad02..2741bd97 100644 --- a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/state.py +++ b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflow_actions/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflow_actions/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..672ec8af Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflow_actions/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc new file mode 100644 index 00000000..ba3e1b16 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..70ba3b26 Binary files /dev/null and b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/agent_graph.py b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/agent_graph.py index 0f6288d2..ee43b04e 100644 --- a/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/agent_graph.py +++ b/Tuning-Performance/Authentication/agent_template_backend_authentication/app/workflows/agent_graph.py @@ -448,6 +448,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -605,6 +612,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -700,6 +708,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..da7ea03c Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..5b6ab51e Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..77accaf2 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..8e74de72 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..cf679934 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..5c3f4a04 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..0e8cc297 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..00a5707f Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..26cc262c Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..f56e53d6 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..97bc5803 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..823a1a39 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..a725202b Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..19296b0a Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..fce919c0 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..bf35ba7a Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..47fe1272 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..05612aee Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..c39a0a89 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..009b7c12 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/state.py b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/state.py index 9533ad02..2741bd97 100644 --- a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/state.py +++ b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..8accd287 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc new file mode 100644 index 00000000..0b970980 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..49ad6af0 Binary files /dev/null and b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/agent_graph.py index 0f6288d2..ee43b04e 100644 --- a/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/Deterministic_Transactional_Workflow/agent_template_backend/app/workflows/agent_graph.py @@ -448,6 +448,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -605,6 +612,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -700,6 +708,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..21303451 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..005a6d8a Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..2f423392 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..8ee7f900 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..7214e11a Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..f1bf0dfe Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..af63de6a Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..bc4a8147 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..52afdf36 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..a44cfd9c Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e9246dd6 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..5961c07a Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..6674af30 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..37c8d76c Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..3e4fe4b8 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..a9c17ae6 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a1382b06 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/example_guardrails.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/example_guardrails.cpython-313.pyc new file mode 100644 index 00000000..4a27a18a Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/example_guardrails.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/example_judges.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/example_judges.cpython-313.pyc new file mode 100644 index 00000000..d82ff088 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/extensions/__pycache__/example_judges.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..14323bf2 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..15b78667 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e34e5416 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..28859532 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/state.py b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/state.py index 288e79c3..ed26bfcf 100644 --- a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/state.py +++ b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..d345c8b9 Binary files /dev/null and b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/agent_graph.py index c3384524..04977b26 100644 --- a/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/External_Guardrails_Judges/agent_template_backend/app/workflows/agent_graph.py @@ -446,6 +446,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -603,6 +610,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -698,6 +706,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..884409ed Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..7f097b78 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..d6621835 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..e5055fe3 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..0e9f1e1c Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..f05ef2c6 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..2b363379 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..27c5dd67 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..321fc089 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..bcd05596 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e011e2c1 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..417fdeaf Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..43c28410 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..8684f23b Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..19cee2f2 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..5919f9d0 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..60f4328a Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..a01c7f1e Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..91dabf0d Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..32cbdf80 Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/state.py b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/state.py index 9533ad02..2741bd97 100644 --- a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/state.py +++ b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..0807ab7c Binary files /dev/null and b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/agent_graph.py index 0f6288d2..ee43b04e 100644 --- a/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/Long_Term_Memory/templates/agent_template_backend/app/workflows/agent_graph.py @@ -448,6 +448,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -605,6 +612,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -700,6 +708,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..33197e54 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..b834e5a5 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..3f0f59de Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..66a88310 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..dd8907fd Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..d93873a6 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..e6a45d17 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..da03ff12 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..e5072a2b Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..e38f7072 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..ef32d167 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..e21d30a5 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..04492435 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..02ff434c Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..502913f3 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..84f7d61e Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..be993d0a Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..da0b1635 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..d5802e05 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..23b52e13 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/state.py b/Tuning-Performance/Normal/templates/agent_template_backend/app/state.py index 288e79c3..ed26bfcf 100644 --- a/Tuning-Performance/Normal/templates/agent_template_backend/app/state.py +++ b/Tuning-Performance/Normal/templates/agent_template_backend/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..7293dd3a Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/agent_graph.py index c3384524..04977b26 100644 --- a/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/Normal/templates/agent_template_backend/app/workflows/agent_graph.py @@ -446,6 +446,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -603,6 +610,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -698,6 +706,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f58a0656 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..ffb3aacc Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..2c08e830 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..633c69ba Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..b054c868 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..710b3183 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..a06a87f0 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..71ad8ec6 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..e10fbd85 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..1a49580a Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..42d368bd Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..b99954da Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/state.py b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/state.py index 288e79c3..ed26bfcf 100644 --- a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/state.py +++ b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..ce2047c5 Binary files /dev/null and b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py index c3384524..04977b26 100644 --- a/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py +++ b/Tuning-Performance/Normal/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py @@ -446,6 +446,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -603,6 +610,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -698,6 +706,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..41f7f0a9 Binary files /dev/null and b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/app/__pycache__/demo.cpython-313.pyc b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/app/__pycache__/demo.cpython-313.pyc new file mode 100644 index 00000000..4bb04c5e Binary files /dev/null and b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/app/__pycache__/demo.cpython-313.pyc differ diff --git a/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/tests/__pycache__/test_pause_resume.cpython-313-pytest-9.0.2.pyc b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/tests/__pycache__/test_pause_resume.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..96739456 Binary files /dev/null and b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend/tests/__pycache__/test_pause_resume.cpython-313-pytest-9.0.2.pyc differ diff --git a/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a8d37181 Binary files /dev/null and b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/app/__pycache__/demo.cpython-313.pyc b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/app/__pycache__/demo.cpython-313.pyc new file mode 100644 index 00000000..aca91b75 Binary files /dev/null and b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/app/__pycache__/demo.cpython-313.pyc differ diff --git a/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/tests/__pycache__/test_pause_resume.cpython-313-pytest-9.0.2.pyc b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/tests/__pycache__/test_pause_resume.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..2d339c6d Binary files /dev/null and b/Tuning-Performance/Pause_Resume_Workflow/agent_template_backend_pause_resume/tests/__pycache__/test_pause_resume.cpython-313-pytest-9.0.2.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f8eb5411 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..dd7251b0 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..2e100295 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..af7100e9 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..f5a9d475 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..9fefbf7d Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..7ebb5c30 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..e81fba32 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..0302053e Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..956fee11 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..fda75cab Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..9d7cc49e Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..e1fe21e2 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..b69294dc Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..85c19945 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..3a2600e2 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f201aed9 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..7c9b983b Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..ed945c8d Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..567eb4dc Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/state.py b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/state.py index 288e79c3..ed26bfcf 100644 --- a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/state.py +++ b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..03dc5e99 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/agent_graph.py index c3384524..04977b26 100644 --- a/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/Route_Stickness/templates/agent_template_backend/app/workflows/agent_graph.py @@ -446,6 +446,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -603,6 +610,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -698,6 +706,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f0d4c0e1 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..ca99d568 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..ffaf183b Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..8a0915dc Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..455b1753 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..bb03d128 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..44aa6f58 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..7d146604 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..340ff14d Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..c047c8d5 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e757f931 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..65b0a28a Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/state.py b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/state.py index 288e79c3..ed26bfcf 100644 --- a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/state.py +++ b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/state.py @@ -39,6 +39,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..e22859d1 Binary files /dev/null and b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py index c3384524..04977b26 100644 --- a/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py +++ b/Tuning-Performance/Route_Stickness/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py @@ -446,6 +446,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -603,6 +610,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -698,6 +706,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..41099f9b Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..7a89633b Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..c84d77fa Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..9c38b483 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..b970a9fe Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..9ca64f20 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..1ebd6c50 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..2a94b99f Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..0014d62e Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..1d1ee676 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..deb38e5d Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..505e62bd Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..2fcb362f Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..d78ba9c1 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..50ae968a Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..ffc9f3f3 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..dd8600fb Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..d6f43df7 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..8048b8f5 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..defbfd70 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/state.py b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/state.py index 970df839..f9d5dd4c 100644 --- a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/state.py +++ b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/state.py @@ -42,6 +42,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..50d3c241 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc new file mode 100644 index 00000000..40704f84 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..a4df9969 Binary files /dev/null and b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/agent_graph.py index 984765e9..fbb5b2bc 100644 --- a/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/Transaction_Evidence/agent_template_backend/app/workflows/agent_graph.py @@ -448,6 +448,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -605,6 +612,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -700,6 +708,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f942810b Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..886a86f3 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..accca3bf Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..103d670b Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..c09150b1 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..2d784a42 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..5f7bfa18 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..942b2401 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..c06c1248 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..ba05a3eb Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..317ae4d6 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..0cf9b024 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..479518dc Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..2baa2d5e Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..912d680d Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..bc15baf2 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..515f8338 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..24d81969 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..15e8e717 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..fde7777a Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/state.py b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/state.py index e048cf13..0a3d0eda 100644 --- a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/state.py +++ b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/state.py @@ -43,6 +43,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..6003863c Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc new file mode 100644 index 00000000..e179f6df Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..f8da2411 Binary files /dev/null and b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/agent_graph.py b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/agent_graph.py index 984765e9..fbb5b2bc 100644 --- a/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/agent_graph.py +++ b/Tuning-Performance/Transaction_Pre_Validation/agent_template_backend/app/workflows/agent_graph.py @@ -448,6 +448,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -605,6 +612,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -700,6 +708,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/docs/developer/en/02_routing_stickiness_and_intent_shift.md b/docs/developer/en/02_routing_stickiness_and_intent_shift.md index 130e4974..8f464023 100644 --- a/docs/developer/en/02_routing_stickiness_and_intent_shift.md +++ b/docs/developer/en/02_routing_stickiness_and_intent_shift.md @@ -1293,6 +1293,28 @@ Agents: This second template shows how to reuse the same architecture for another business domain. +### Transaction decisions: CONTINUE, SHIFT, and ABANDON + +When a transaction is active, the `EnterpriseRouter` semantic classifier distinguishes three outcomes: + +- `CONTINUE`: the message still belongs to the active transaction; +- `SHIFT`: the message starts another goal without explicitly giving up the current action; +- `ABANDON`: the user explicitly gives up the current action/transaction. + +`ABANDON` is a routing decision, not a new persisted `transaction_status`. The operational terminal state remains `CANCELLED`. The router publishes `transaction_interruption=explicit_abandonment`; the runtime closes the active transaction, clears its live latches, and records `cancelled_by_explicit_abandonment`. For a pure abandonment with no new goal, the router uses `state:TRANSACTION_ABANDONED` with `mcp_tools=[]` so the abandoned tool cannot be selected again by the same turn. + +The decision does not globally clear `pending_topics`. In multi-intent flows, unrelated pending operations remain available. `SHIFT` must not be interpreted as abandoning the entire plan either. + +Examples: + +```text +"before that, show my subscribed services" -> SHIFT +"I don't want to cancel anymore" -> ABANDON +"the order is PED-1001" -> CONTINUE +``` + +When `ABANDON` also contains a new goal, `intent` and `agent` point to that goal. For pure abandonment, the LLM may omit them and the framework creates the technical abandonment intent. + ### Generic deterministic intent shift — current behavior > Content consolidated from `Documentacao/RELEASE_NOTES_GENERIC_DETERMINISTIC_INTENT_SHIFT_V15.md`. diff --git a/docs/developer/pt/02_routing_stickiness_and_intent_shift.md b/docs/developer/pt/02_routing_stickiness_and_intent_shift.md index 56a98013..9420bf20 100644 --- a/docs/developer/pt/02_routing_stickiness_and_intent_shift.md +++ b/docs/developer/pt/02_routing_stickiness_and_intent_shift.md @@ -1295,6 +1295,28 @@ Agentes: Este segundo template mostra como reutilizar a mesma arquitetura para outro domínio de negócio. +### Decisões transacionais: CONTINUE, SHIFT e ABANDON + +Quando existe uma transação ativa, o classificador semântico do `EnterpriseRouter` diferencia três resultados: + +- `CONTINUE`: a mensagem ainda responde à transação ativa; +- `SHIFT`: a mensagem inicia outro objetivo sem uma desistência explícita da ação corrente; +- `ABANDON`: a mensagem desiste explicitamente da ação/transação corrente. + +`ABANDON` é uma decisão de roteamento. O estado operacional terminal permanece `CANCELLED`. O router publica `transaction_interruption=explicit_abandonment`; o runtime encerra a transação ativa, limpa seus latches e registra `cancelled_by_explicit_abandonment`. Em abandono puro, sem uma nova intent, o router usa `state:TRANSACTION_ABANDONED` e `mcp_tools=[]`, impedindo a reseleção da tool abandonada. + +A decisão não limpa globalmente `pending_topics`. Em multi-intent, operações pendentes não relacionadas continuam disponíveis. `SHIFT` também não deve ser interpretado como abandono de todo o plano. + +Exemplos: + +```text +"antes disso, quero consultar meus serviços" -> SHIFT +"não quero mais cancelar" -> ABANDON +"é o pedido PED-1001" -> CONTINUE +``` + +Com `ABANDON` acompanhado de um novo objetivo, `intent` e `agent` apontam para esse novo objetivo. Em abandono puro, ambos podem ser omitidos pelo LLM e o framework cria o intent técnico de abandono. + ### Intent shift determinístico genérico — comportamento atual > Conteúdo consolidado a partir de `Documentacao/RELEASE_NOTES_GENERIC_DETERMINISTIC_INTENT_SHIFT_V15.md`. diff --git a/libs/agent_framework/build/lib/agent_framework/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..393fb8bf Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/__pycache__/extensions.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/__pycache__/extensions.cpython-313.pyc new file mode 100644 index 00000000..6bcfde5d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/__pycache__/extensions.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/__pycache__/gateway_policy_context.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/__pycache__/gateway_policy_context.cpython-313.pyc new file mode 100644 index 00000000..8f935c61 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/__pycache__/gateway_policy_context.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/__pycache__/idempotency.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/__pycache__/idempotency.cpython-313.pyc new file mode 100644 index 00000000..d7cfedbb Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/__pycache__/idempotency.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/__pycache__/observer.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/__pycache__/observer.cpython-313.pyc new file mode 100644 index 00000000..54827815 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/__pycache__/observer.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/__pycache__/runtime_mcp_gateway_adapter.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/__pycache__/runtime_mcp_gateway_adapter.cpython-313.pyc new file mode 100644 index 00000000..38238133 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/__pycache__/runtime_mcp_gateway_adapter.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..91e613ef Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/composite_publisher.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/composite_publisher.cpython-313.pyc new file mode 100644 index 00000000..98c3131c Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/composite_publisher.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/event_builder.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/event_builder.cpython-313.pyc new file mode 100644 index 00000000..4446a3ff Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/event_builder.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/factory.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/factory.cpython-313.pyc new file mode 100644 index 00000000..8a3e728d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/factory.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/publisher.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/publisher.cpython-313.pyc new file mode 100644 index 00000000..39a07288 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/publisher.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-313.pyc new file mode 100644 index 00000000..3710122e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/tim_sequence.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/tim_sequence.cpython-313.pyc new file mode 100644 index 00000000..025f7710 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/__pycache__/tim_sequence.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..9a843496 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/kafka.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/kafka.cpython-313.pyc new file mode 100644 index 00000000..b2e4a9a5 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/kafka.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/langfuse.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/langfuse.cpython-313.pyc new file mode 100644 index 00000000..eb3c2eae Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/langfuse.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-313.pyc new file mode 100644 index 00000000..850581c1 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/pubsub.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/pubsub.cpython-313.pyc new file mode 100644 index 00000000..91e65961 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/analytics/providers/__pycache__/pubsub.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/billing/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/billing/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e9e66d67 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/billing/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/billing/__pycache__/usage_repository.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/billing/__pycache__/usage_repository.cpython-313.pyc new file mode 100644 index 00000000..a67530c2 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/billing/__pycache__/usage_repository.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/cache/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/cache/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..04b86877 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/cache/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/cache/__pycache__/cache.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/cache/__pycache__/cache.cpython-313.pyc new file mode 100644 index 00000000..e47f0c9e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/cache/__pycache__/cache.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..37b3d894 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/adapters.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/adapters.cpython-313.pyc new file mode 100644 index 00000000..432b7d64 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/adapters.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/base.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/base.cpython-313.pyc new file mode 100644 index 00000000..53e0fb60 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/base.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/gateway.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/gateway.cpython-313.pyc new file mode 100644 index 00000000..161d2324 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/gateway.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/interruption.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/interruption.cpython-313.pyc new file mode 100644 index 00000000..5c310dad Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/interruption.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/transcription.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/transcription.cpython-313.pyc new file mode 100644 index 00000000..07cf4ede Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/channels/__pycache__/transcription.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f7d3dbc8 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-313.pyc new file mode 100644 index 00000000..9b48baaf Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-313.pyc new file mode 100644 index 00000000..f3c63174 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/config/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/config/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a6db1bb1 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/config/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/config/__pycache__/agent_registry.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/config/__pycache__/agent_registry.cpython-313.pyc new file mode 100644 index 00000000..c1db452a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/config/__pycache__/agent_registry.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/config/__pycache__/settings.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/config/__pycache__/settings.cpython-313.pyc new file mode 100644 index 00000000..88305648 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/config/__pycache__/settings.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/events/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/events/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..dfe6ced0 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/events/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/events/__pycache__/oci_streaming.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/events/__pycache__/oci_streaming.cpython-313.pyc new file mode 100644 index 00000000..6a517098 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/events/__pycache__/oci_streaming.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/gateways/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/gateways/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..1497c7b0 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/gateways/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-313.pyc new file mode 100644 index 00000000..938c58d3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..13d24b84 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/client.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/client.cpython-313.pyc new file mode 100644 index 00000000..3ee859c0 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/client.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/config.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/config.cpython-313.pyc new file mode 100644 index 00000000..370f6f6e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/config.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..2a6c75c3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/router.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/router.cpython-313.pyc new file mode 100644 index 00000000..a99fd417 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/router.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/session_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/session_store.cpython-313.pyc new file mode 100644 index 00000000..063978d9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/global_supervisor/__pycache__/session_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..9503cb79 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/base.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/base.cpython-313.pyc new file mode 100644 index 00000000..ad115454 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/base.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/config_loader.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/config_loader.cpython-313.pyc new file mode 100644 index 00000000..4a6373b9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/config_loader.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/custom_rails.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/custom_rails.cpython-313.pyc new file mode 100644 index 00000000..5f16e14b Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/custom_rails.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/executor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/executor.cpython-313.pyc new file mode 100644 index 00000000..76a0ce34 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/executor.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-313.pyc new file mode 100644 index 00000000..005475ba Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/langgraph_adapters.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/langgraph_adapters.cpython-313.pyc new file mode 100644 index 00000000..53ac82d8 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/langgraph_adapters.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc new file mode 100644 index 00000000..36676c00 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/output_supervisor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/output_supervisor.cpython-313.pyc new file mode 100644 index 00000000..6fe0384e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/output_supervisor.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/parallel_executor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/parallel_executor.cpython-313.pyc new file mode 100644 index 00000000..6e5a9dc8 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/parallel_executor.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc new file mode 100644 index 00000000..2faecbb2 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_action.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_action.cpython-313.pyc new file mode 100644 index 00000000..de06bc82 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_action.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc new file mode 100644 index 00000000..a9334338 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc new file mode 100644 index 00000000..3d3b39bf Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rails.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rails.cpython-313.pyc new file mode 100644 index 00000000..03f36cfc Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/__pycache__/rails.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..5a8663ca Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-313.pyc new file mode 100644 index 00000000..a1da7169 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/config.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/config.cpython-313.pyc new file mode 100644 index 00000000..009d915e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/config.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc new file mode 100644 index 00000000..69fe1a5b Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc new file mode 100644 index 00000000..9abed83d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc new file mode 100644 index 00000000..f18e5d15 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-313.pyc new file mode 100644 index 00000000..ab6cbe50 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc new file mode 100644 index 00000000..8f10fdc3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc new file mode 100644 index 00000000..d6e600ef Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-313.pyc new file mode 100644 index 00000000..1b2dff7a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-313.pyc new file mode 100644 index 00000000..c2af6f63 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..9e4ba3ee Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc new file mode 100644 index 00000000..e0c2e93d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-313.pyc new file mode 100644 index 00000000..053dc694 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc new file mode 100644 index 00000000..08b46a44 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc new file mode 100644 index 00000000..023ef961 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc new file mode 100644 index 00000000..77bac8f9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-313.pyc new file mode 100644 index 00000000..d5cd6332 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc new file mode 100644 index 00000000..4bf4d612 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc new file mode 100644 index 00000000..e21f5956 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc new file mode 100644 index 00000000..97277c86 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-313.pyc new file mode 100644 index 00000000..33e30180 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-313.pyc new file mode 100644 index 00000000..334e62b3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/safe_out.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/safe_out.cpython-313.pyc new file mode 100644 index 00000000..ea56658d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/safe_out.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-313.pyc new file mode 100644 index 00000000..afce58b5 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc new file mode 100644 index 00000000..aacec91d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..903f4e91 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/supervision_template.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/supervision_template.cpython-313.pyc new file mode 100644 index 00000000..e7111a6b Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/supervision_template.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/tts_rules.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/tts_rules.cpython-313.pyc new file mode 100644 index 00000000..12e38f60 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/tts_rules.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e4547ab7 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-313.pyc new file mode 100644 index 00000000..9cd565fc Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc new file mode 100644 index 00000000..7ebd55ba Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-313.pyc new file mode 100644 index 00000000..ca1905ea Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-313.pyc new file mode 100644 index 00000000..bf674c16 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-313.pyc new file mode 100644 index 00000000..516d9ba2 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc new file mode 100644 index 00000000..aa71f5f4 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc new file mode 100644 index 00000000..a26fce76 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-313.pyc new file mode 100644 index 00000000..c8f9c0fb Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..dae0fca7 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/correspondencia_item.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/correspondencia_item.cpython-313.pyc new file mode 100644 index 00000000..25203986 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/correspondencia_item.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/groundedness.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/groundedness.cpython-313.pyc new file mode 100644 index 00000000..3f7c6819 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/groundedness.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/intencao_cancelar.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/intencao_cancelar.cpython-313.pyc new file mode 100644 index 00000000..94012421 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/intencao_cancelar.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/quantidade_coerente.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/quantidade_coerente.cpython-313.pyc new file mode 100644 index 00000000..ce058caa Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/quantidade_coerente.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/servico_correto.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/servico_correto.cpython-313.pyc new file mode 100644 index 00000000..ab875b40 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/servico_correto.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/verbalizacao_prematura.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/verbalizacao_prematura.cpython-313.pyc new file mode 100644 index 00000000..26d97a2a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/verbalizacao_prematura.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..63716a33 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-313.pyc new file mode 100644 index 00000000..82c85db4 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/oos_blocklist.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/oos_blocklist.cpython-313.pyc new file mode 100644 index 00000000..64cb2564 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/oos_blocklist.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc new file mode 100644 index 00000000..47569e8f Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-313.pyc new file mode 100644 index 00000000..ca1fa168 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..3693bdb4 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/mcp_mapper.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/mcp_mapper.cpython-313.pyc new file mode 100644 index 00000000..28329f0c Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/mcp_mapper.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..0506d819 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/resolver.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/resolver.cpython-313.pyc new file mode 100644 index 00000000..e760e2a7 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/identity/__pycache__/resolver.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..3f398b48 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/__pycache__/judge.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/__pycache__/judge.cpython-313.pyc new file mode 100644 index 00000000..49d40ba5 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/__pycache__/judge.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..6d6627d7 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/_compat.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/_compat.cpython-313.pyc new file mode 100644 index 00000000..da779fef Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/_compat.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-313.pyc new file mode 100644 index 00000000..d8673447 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..f014ca02 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..6713dee6 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-313.pyc new file mode 100644 index 00000000..9b1920ed Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-313.pyc new file mode 100644 index 00000000..8d25a7eb Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-313.pyc new file mode 100644 index 00000000..ac88701c Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-313.pyc new file mode 100644 index 00000000..23cbc9f1 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-313.pyc new file mode 100644 index 00000000..ce953403 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f53408a7 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/base.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/base.cpython-313.pyc new file mode 100644 index 00000000..c2723909 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/base.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/profile_resolver.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/profile_resolver.cpython-313.pyc new file mode 100644 index 00000000..240d8a2a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/profile_resolver.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/providers.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/providers.cpython-313.pyc new file mode 100644 index 00000000..0e46e899 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/providers.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/types.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/types.cpython-313.pyc new file mode 100644 index 00000000..fac84663 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/llm/__pycache__/types.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..5671eaa5 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/client.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/client.cpython-313.pyc new file mode 100644 index 00000000..e1051427 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/client.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..ab343571 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/registry.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/registry.cpython-313.pyc new file mode 100644 index 00000000..4a2f72c4 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/registry.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/tool_policy.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/tool_policy.cpython-313.pyc new file mode 100644 index 00000000..ff81f2fa Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/tool_policy.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/tool_router.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/tool_router.cpython-313.pyc new file mode 100644 index 00000000..a83ed8fc Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/mcp/__pycache__/tool_router.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..dfc32d2c Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_extractor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_extractor.cpython-313.pyc new file mode 100644 index 00000000..75617bc9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_extractor.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_memory.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_memory.cpython-313.pyc new file mode 100644 index 00000000..e0542ae4 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_memory.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_models.cpython-313.pyc new file mode 100644 index 00000000..ab1f4386 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_store.cpython-313.pyc new file mode 100644 index 00000000..bceeeb72 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/long_term_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/message_history.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/message_history.cpython-313.pyc new file mode 100644 index 00000000..8a4baf1e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/message_history.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/summary_memory.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/summary_memory.cpython-313.pyc new file mode 100644 index 00000000..f2e6d50a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/summary_memory.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/summary_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/summary_store.cpython-313.pyc new file mode 100644 index 00000000..ea2e3022 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/memory/__pycache__/summary_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/models/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/models/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..62370613 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/models/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/models/__pycache__/identity.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/models/__pycache__/identity.cpython-313.pyc new file mode 100644 index 00000000..1a6b4d01 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/models/__pycache__/identity.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/models/__pycache__/session.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/models/__pycache__/session.cpython-313.pyc new file mode 100644 index 00000000..ecdbb999 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/models/__pycache__/session.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e5922853 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/code_mapper.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/code_mapper.cpython-313.pyc new file mode 100644 index 00000000..6bb7356d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/code_mapper.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/context.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/context.cpython-313.pyc new file mode 100644 index 00000000..24187ed6 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/context.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/control_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/control_events.cpython-313.pyc new file mode 100644 index 00000000..8a51c87f Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/control_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/decorators.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/decorators.cpython-313.pyc new file mode 100644 index 00000000..0eb8dc72 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/decorators.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/event_bus.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/event_bus.cpython-313.pyc new file mode 100644 index 00000000..0d54e8b2 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/event_bus.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/grl_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/grl_events.cpython-313.pyc new file mode 100644 index 00000000..edbd6b54 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/grl_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/guardrail_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/guardrail_events.cpython-313.pyc new file mode 100644 index 00000000..31552cdf Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/guardrail_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/ic_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/ic_events.cpython-313.pyc new file mode 100644 index 00000000..50c66aee Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/ic_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/informational_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/informational_events.cpython-313.pyc new file mode 100644 index 00000000..1af4354b Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/informational_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/judge_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/judge_events.cpython-313.pyc new file mode 100644 index 00000000..fb64d4f9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/judge_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/langfuse_enterprise.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/langfuse_enterprise.cpython-313.pyc new file mode 100644 index 00000000..f1dbfa32 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/langfuse_enterprise.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-313.pyc new file mode 100644 index 00000000..e3f93f8f Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/llm_advisors.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/llm_advisors.cpython-313.pyc new file mode 100644 index 00000000..acd379cd Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/llm_advisors.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_contract.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_contract.cpython-313.pyc new file mode 100644 index 00000000..30ac0c22 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_contract.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_events.cpython-313.pyc new file mode 100644 index 00000000..d37ab17a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_otel.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_otel.cpython-313.pyc new file mode 100644 index 00000000..47c1def9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/noc_otel.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/observer.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/observer.cpython-313.pyc new file mode 100644 index 00000000..4871e78e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/observer.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/otel.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/otel.cpython-313.pyc new file mode 100644 index 00000000..0c0e1644 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/otel.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/streaming_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/streaming_events.cpython-313.pyc new file mode 100644 index 00000000..346186b3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/streaming_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/streaming_exporter.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/streaming_exporter.cpython-313.pyc new file mode 100644 index 00000000..e46d02e9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/streaming_exporter.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/telemetry.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/telemetry.cpython-313.pyc new file mode 100644 index 00000000..77915f0e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/telemetry.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/tim_backoffice_contract.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/tim_backoffice_contract.cpython-313.pyc new file mode 100644 index 00000000..bd3eedbb Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/tim_backoffice_contract.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/token_cost.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/token_cost.cpython-313.pyc new file mode 100644 index 00000000..eb020acd Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/token_cost.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/workflow_events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/workflow_events.cpython-313.pyc new file mode 100644 index 00000000..de1a0127 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/observability/__pycache__/workflow_events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/oci/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/oci/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..8a331fb0 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/oci/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/oci/__pycache__/auth.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/oci/__pycache__/auth.cpython-313.pyc new file mode 100644 index 00000000..a8cca2ad Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/oci/__pycache__/auth.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..0393bae6 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/mongodb_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/mongodb_store.cpython-313.pyc new file mode 100644 index 00000000..546cc342 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/mongodb_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/oracle_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/oracle_store.cpython-313.pyc new file mode 100644 index 00000000..836b1e2e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/oracle_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/sqlite_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/sqlite_store.cpython-313.pyc new file mode 100644 index 00000000..28d590e8 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/persistence/__pycache__/sqlite_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/presentation/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..2ea8209c Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/presentation/__pycache__/renderers.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/presentation/__pycache__/renderers.cpython-313.pyc new file mode 100644 index 00000000..966f6d4a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/presentation/__pycache__/renderers.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..b06d83ac Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/embedding_provider.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/embedding_provider.cpython-313.pyc new file mode 100644 index 00000000..f0027235 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/embedding_provider.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/graph_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/graph_store.cpython-313.pyc new file mode 100644 index 00000000..e9db1f82 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/graph_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/ingest.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/ingest.cpython-313.pyc new file mode 100644 index 00000000..35ac6bf3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/ingest.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/rag_service.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/rag_service.cpython-313.pyc new file mode 100644 index 00000000..871c7d84 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/rag_service.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/vector_store.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/vector_store.cpython-313.pyc new file mode 100644 index 00000000..7a3ea018 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/rag/__pycache__/vector_store.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/repositories/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/repositories/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..6f1fb7aa Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/repositories/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/repositories/__pycache__/session_repository.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/repositories/__pycache__/session_repository.cpython-313.pyc new file mode 100644 index 00000000..b8815bbb Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/repositories/__pycache__/session_repository.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..222d34ec Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/config_loader.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/config_loader.cpython-313.pyc new file mode 100644 index 00000000..17ab49de Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/config_loader.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/continuity.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/continuity.cpython-313.pyc new file mode 100644 index 00000000..a3edd9e0 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/continuity.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/enterprise_router.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/enterprise_router.cpython-313.pyc new file mode 100644 index 00000000..b805d8d4 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/enterprise_router.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..52d1888a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/routing/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/routing/enterprise_router.py b/libs/agent_framework/build/lib/agent_framework/routing/enterprise_router.py index 56161d85..ef8a569e 100644 --- a/libs/agent_framework/build/lib/agent_framework/routing/enterprise_router.py +++ b/libs/agent_framework/build/lib/agent_framework/routing/enterprise_router.py @@ -6,10 +6,12 @@ import re import unicodedata from typing import Any -from .config_loader import load_intents, load_router_defaults, load_state_policies +from .config_loader import load_intents, load_multi_intent_config, load_router_defaults, load_state_policies +from .multi_intent import MultiIntentPlanner from .continuity import SemanticRouteContinuity from .models import IntentDefinition, RouteDecision, RouterStatePolicy from agent_framework.llm.structured_output import parse_json_object +from agent_framework.mcp.tool_policy import ToolPolicyRegistry from agent_framework.runtime.transaction_parameters import extract_transaction_parameters, parse_transaction_confirmation from agent_framework.workflows.input_contract import ( expected_input_reprompt, @@ -44,6 +46,16 @@ class EnterpriseRouter: self.intents: list[IntentDefinition] = load_intents(self.config_path) self.state_policies: list[RouterStatePolicy] = load_state_policies(self.config_path) self.defaults = load_router_defaults(self.config_path) + tool_policies = ToolPolicyRegistry(getattr(settings, "TOOL_POLICIES_PATH", None)) + transactional_tools = { + name for name, policy in tool_policies.policies.items() + if policy.operation_type == "transactional" or policy.require_confirmation + } + self.multi_intent_planner = MultiIntentPlanner( + self.intents, + load_multi_intent_config(self.config_path), + transactional_tools=transactional_tools, + ) self.fallback_agent = self.defaults.get("fallback_agent", "billing_agent") self.intent_shift_threshold = float(self.defaults.get("confidence_threshold", 0.7)) self.transaction_confirmation = dict(self.defaults.get("transaction_confirmation") or {}) @@ -337,7 +349,19 @@ class EnterpriseRouter: # Prefer the configured LLM router when available; deterministic routing # remains the fallback for deployments that disable semantic routing. if self.enable_llm_router and self.llm is not None: - decision = await self._route_by_llm(contextual_input, reentry_state) + try: + decision = await self._route_by_llm(contextual_input, reentry_state) + except Exception as exc: + logger.exception("Falha no roteamento LLM durante reentrada contextual; usando fallback: %s", exc) + decision = self._route_by_keyword(contextual_input) or RouteDecision( + route=self.fallback_agent, + agent=self.fallback_agent, + intent="fallback", + confidence=0.1, + reason="Falha no classificador semântico durante reentrada contextual; usando fallback configurado.", + method="fallback", + metadata={"contextual_reentry_llm_failed": True}, + ) else: decision = self._route_by_keyword(contextual_input) or RouteDecision( route=self.fallback_agent, @@ -367,6 +391,15 @@ class EnterpriseRouter: explicit_next_state = state.get("next_state") tx_status_at_route = str(state.get("transaction_status") or "").strip().upper() terminal_tx = tx_status_at_route in {"COMPLETED", "FAILED", "CANCELLED", "BLOCKED", "OUT_OF_SCOPE"} + operational_context_reset = bool(state.get("operational_context_reset")) + if terminal_tx: + # Same conversation/session, new interaction: a terminal workflow may + # remain in durable history, but it must not own the next turn. This is + # also a compatibility guard for checkpoints created before terminal + # workflow tombstones were persisted. + state["pending_domain_workflow"] = None + state["pending_tool_clarification"] = None + state["workflow_input_reprompt"] = None # Um status transacional terminal é a fonte de verdade sobre o latch. Se # um checkpoint legado/parcial ainda trouxer ``next_state`` da transação @@ -374,7 +407,9 @@ class EnterpriseRouter: # de estado. O workflow_state da sessão continua disponível porque pode # representar um workflow conversacional independente da transação já # encerrada. - if terminal_tx and explicit_next_state: + if operational_context_reset: + current_state = None + elif terminal_tx and explicit_next_state: current_state = session.get("metadata", {}).get("workflow_state") else: current_state = explicit_next_state or session.get("metadata", {}).get("workflow_state") @@ -424,6 +459,26 @@ class EnterpriseRouter: await self._emit(decision, state) return decision + # An explicit human-handoff request is a global conversation control, + # not an intent shift and not a value of the paused workflow contract. + # It must therefore preempt the workflow semantic classifier *after* + # deterministic expected_input matching (so "sim"/"não" keep their + # absolute contract precedence) but *before* unmatched semantic resume. + # CONTINUE/ROUTE/END_SESSION decisions from this probe are ignored here; + # the workflow remains authoritative for every non-handoff message. + global_control = await self.continuity.evaluate_global_control( + state, intents=self.intents, allowed_controls={"HUMAN_HANDOFF"} + ) + if global_control is not None: + global_control.metadata = { + **dict(global_control.metadata or {}), + "interrupted_workflow_name": pending_workflow.get("workflow_name"), + "interrupted_workflow_execution_id": pending_workflow.get("execution_id"), + "workflow_interruption": "human_handoff", + } + await self._emit(global_control, state) + return global_control + # Enumerated contracts retain workflow ownership for unmatched # replies. A workflow may explicitly opt in to semantic handling: # coherent free text can be resumed as a workflow-declared value, @@ -684,6 +739,49 @@ class EnterpriseRouter: # intent/agente ativos devem prevalecer sobre a route stickiness. Isso # evita manter um fluxo read-only (por exemplo, tracking) quando o usuário # muda para uma ação transacional (por exemplo, devolução). + planner = getattr(self, "multi_intent_planner", None) + multi_intent_plan = planner.plan(str(text)) if planner is not None else None + multi_intent_method = "keyword" + if ( + planner is not None + and planner.looks_compound(str(text)) + and planner.needs_semantic_fallback(multi_intent_plan) + and self.enable_llm_router + and self.llm is not None + ): + try: + semantic_plan = await self._plan_multi_intent_by_llm(str(text), state) + if semantic_plan is not None: + multi_intent_plan = semantic_plan + multi_intent_method = "llm" + except Exception as exc: + # O fallback semântico é fail-safe: um plano determinístico + # parcial continua válido se o provedor estiver indisponível. + logger.exception("Falha no classificador LLM multi-intent: %s", exc) + if multi_intent_plan is not None: + primary = multi_intent_plan.operations[0] + decision = RouteDecision( + route=primary.agent, + agent=primary.agent, + intent=primary.intent, + confidence=1.0, + reason=( + "Plano multi-intent classificado semanticamente e validado contra intents configuradas." + if multi_intent_method == "llm" + else "Plano multi-intent validado a partir de intents configuradas." + ), + method=multi_intent_method, + metadata={ + "multi_intent": True, + "multi_intent_classifier": multi_intent_method, + "multi_intent_plan": multi_intent_plan.model_dump(mode="json"), + }, + domain=primary.domain, + mcp_tools=primary.tools, + ) + await self._emit(decision, state) + return decision + keyword_candidate = self._route_by_keyword(text) active_agent = str(state.get("active_agent") or "").strip() previous = state.get("route_decision") or {} @@ -708,7 +806,7 @@ class EnterpriseRouter: # anterior não pode capturar uma nova mensagem depois de COMPLETED, # FAILED, CANCELLED, BLOCKED ou OUT_OF_SCOPE. Nesses casos a mensagem # volta ao roteamento normal (keyword/LLM/fallback). - if not terminal_tx: + if not terminal_tx and not operational_context_reset: decision = await self.continuity.evaluate(state, intents=self.intents) if decision: await self._emit(decision, state) @@ -756,7 +854,33 @@ class EnterpriseRouter: """ tx_status = str(state.get("transaction_status") or "").strip().upper() if tx_status == "AWAITING_CONFIRMATION": - confirmation = parse_transaction_confirmation(text) + active = state.get("active_transaction") if isinstance(state.get("active_transaction"), dict) else {} + previous = state.get("route_decision") if isinstance(state.get("route_decision"), dict) else {} + owner_intent = str(active.get("started_from_intent") or previous.get("intent") or state.get("intent") or "") + compound_plan = self.multi_intent_planner.plan_confirmation_secondary( + text, primary_intent=owner_intent, primary_agent=state_decision.agent + ) + remainder = self.multi_intent_planner.confirmation_remainder(text) + if ( + remainder + and self.multi_intent_planner.needs_semantic_fallback(compound_plan) + and self.enable_llm_router + and self.llm is not None + ): + try: + semantic_plan = await self._plan_multi_intent_by_llm( + remainder, + state, + confirmation_primary=(owner_intent, state_decision.agent), + ) + if semantic_plan is not None: + compound_plan = semantic_plan + except Exception as exc: + logger.exception( + "Falha no classificador LLM multi-intent após confirmação: %s", + exc, + ) + confirmation = "confirm" if compound_plan is not None else parse_transaction_confirmation(text) source = "deterministic" classifier_output = None raw_classifier = None @@ -785,6 +909,12 @@ class EnterpriseRouter: "transaction_confirmation_decision": confirmation, "transaction_confirmation_source": source, } + if compound_plan is not None: + state_decision.metadata.update({ + "multi_intent": True, + "multi_intent_confirmation": True, + "multi_intent_plan": compound_plan.model_dump(mode="json"), + }) if source == "semantic": state_decision.metadata.update({ "transaction_confirmation_classifier_output": classifier_output, @@ -863,7 +993,8 @@ class EnterpriseRouter: # a perfectly valid parameter answer (for example an order identifier # utterance containing the generic word "pedido"). When semantic # classification is available, use the configured route only as a - # candidate hint and let the LLM decide CONTINUE vs SHIFT. This avoids + # candidate hint and let the LLM decide CONTINUE, SHIFT or ABANDON. + # This avoids # both failure modes: parameter extraction cannot hide a real new goal, # and a broad keyword cannot steal a legitimate parameter turn. if not (self.enable_llm_router and self.llm is not None): @@ -912,7 +1043,11 @@ class EnterpriseRouter: "Use o significado da mensagem e o contexto transacional; não use palavras isoladas como regra. " "A extração dos parâmetros pendentes já foi tentada antes desta etapa e não consumiu o turno. " "Se ainda assim a mensagem for apenas uma resposta referencial/valor/nome ao dado pendente, retorne CONTINUE. " - "Se o usuário passou claramente a perseguir outro objetivo, retorne SHIFT e a nova intent permitida. " + "Se o usuário passou claramente a perseguir outro objetivo sem desistir explicitamente da ação atual, " + "retorne SHIFT e a nova intent permitida. " + "Se o usuário desistiu explicitamente da ação/transação atual, retorne ABANDON. " + "Quando ABANDON vier acompanhado de um novo objetivo, também informe intent e agent desse novo objetivo. " + "Quando for apenas abandono sem novo objetivo, intent e agent podem ser nulos. " "Retorne somente JSON válido com decision, intent, agent, confidence, reason." ) user = { @@ -938,16 +1073,61 @@ class EnterpriseRouter: logger.warning("Falha ao avaliar mudança semântica de intent transacional via LLM: %s", exc) return None - if str(data.get("decision") or "").strip().upper() != "SHIFT": + decision_kind = str(data.get("decision") or "").strip().upper() + if decision_kind not in {"SHIFT", "ABANDON"}: return None confidence = float(data.get("confidence") or 0.0) if confidence < self.intent_shift_threshold: return None intent_name = str(data.get("intent") or "").strip() + agent = str(data.get("agent") or "").strip() + + if decision_kind == "ABANDON": + # ABANDON encerra explicitamente apenas a interação/transação ativa. + # Pending topics de outros objetivos não são apagados aqui. Quando a + # desistência também traz um novo objetivo, roteamos diretamente para + # ele; em abandono puro, usamos um intent de estado sem tools para que + # o agente atual apenas confirme o encerramento, sem rearmar a ação. + if intent_name: + agent = agent or str(self._agent_for_intent(intent_name) or "").strip() + if not agent: + return None + domain = self._domain_for_intent(intent_name) + mcp_tools = self._tools_for_intent(intent_name) + else: + agent = str(state_decision.agent or state_decision.route or "").strip() + if not agent: + return None + intent_name = "state:TRANSACTION_ABANDONED" + domain = None + mcp_tools = [] + + return RouteDecision( + route=agent, + agent=agent, + intent=intent_name, + confidence=confidence, + reason=str(data.get("reason") or "Abandono explícito da transação ativa."), + method="llm", + metadata={ + "transaction_interruption": "explicit_abandonment", + "interrupted_state": state_decision.next_state, + "interrupted_agent": state_decision.agent, + "interrupted_intent": started_intent or previous_intent, + "interruption_source": "semantic_classifier", + "configured_routing_hint": ( + configured_candidate.intent if configured_candidate is not None else None + ), + "raw_llm_answer": answer[:1000], + }, + domain=domain, + mcp_tools=mcp_tools, + ) + if not intent_name or intent_name == (started_intent or previous_intent): return None - agent = str(data.get("agent") or self._agent_for_intent(intent_name) or "").strip() + agent = agent or str(self._agent_for_intent(intent_name) or "").strip() if not agent: return None @@ -1086,7 +1266,12 @@ class EnterpriseRouter: kw_normalized = kw.casefold() strategy = None # Exato primeiro para preservar o comportamento existente. - if kw_normalized in normalized: + keyword_tokens = self._keyword_tokens(kw) + text_tokens = self._keyword_tokens(text) + if ( + (len(keyword_tokens) == 1 and keyword_tokens[0] in text_tokens) + or (len(keyword_tokens) > 1 and kw_normalized in normalized) + ): strategy = "exact" elif self._ordered_keyword_match(kw, text): strategy = "ordered_tokens" @@ -1130,6 +1315,76 @@ class EnterpriseRouter: mcp_tools=intent.mcp_tools, ) + async def _plan_multi_intent_by_llm( + self, + text: str, + state: dict[str, Any], + *, + confirmation_primary: tuple[str, str] | None = None, + ): + """Classify compound requests and validate them through the planner. + + The model returns only intent names and source fragments. Agent, domain + and tool ownership always come from the loaded routing catalog. + """ + allowed = [intent for intent in self.intents if intent.enabled] + allowed_payload = [ + { + "intent": intent.name, + "description": intent.description, + "examples": intent.examples[:3], + } + for intent in allowed + ] + secondary_only = confirmation_primary is not None + system = ( + "Você é um classificador multi-intent. Identifique objetivos independentes " + "expressos explicitamente pelo usuário. Não execute ações e não responda ao " + "usuário. Use somente nomes presentes em allowed_intents. Para um pedido " + "explícito que não pertença a nenhuma intent permitida, use intent=null e " + "unsupported=true. Não transforme detalhes, parâmetros ou objetos de uma " + "mesma solicitação em novas intents. " + + ( + "A confirmação da transação já foi consumida; classifique somente o pedido " + "secundário fornecido e retorne exatamente uma operação. " + if secondary_only else + "Retorne pelo menos duas operações somente quando houver múltiplos objetivos. " + ) + + "Retorne somente JSON válido no formato: " + '{"confidence":0.0,"operations":[{"intent":"nome_ou_null",' + '"source_text":"trecho literal","unsupported":false}]}.' + ) + active_tx = state.get("active_transaction") if isinstance(state.get("active_transaction"), dict) else {} + payload = { + "message": text, + "allowed_intents": allowed_payload, + "secondary_only": secondary_only, + "transaction_context": ({ + "status": state.get("transaction_status"), + "started_from_intent": active_tx.get("started_from_intent"), + "tool_name": active_tx.get("tool_name"), + } if active_tx else None), + } + answer = await self.llm.ainvoke( + [ + {"role": "system", "content": system}, + {"role": "user", "content": json.dumps(payload, ensure_ascii=False)}, + ], + temperature=0.0, + max_tokens=768, + profile_name="router", + component_name="router.multi_intent", + generation_name="llm.router.multi_intent", + ) + data = self._parse_json(answer) + if confirmation_primary is not None: + return self.multi_intent_planner.plan_confirmation_from_semantic( + data, + primary_intent=confirmation_primary[0], + primary_agent=confirmation_primary[1], + ) + return self.multi_intent_planner.plan_from_semantic(data) + async def _route_by_llm(self, text: str, state: dict[str, Any]) -> RouteDecision: allowed = [i for i in self.intents if i.enabled] allowed_payload = [ @@ -1163,7 +1418,7 @@ class EnterpriseRouter: user = { "message": text, "allowed_intents": allowed_payload, - "session_context": (state.get("context") or {}).get("session", {}), + "session_context": ({} if state.get("operational_context_reset") else (state.get("context") or {}).get("session", {})), "transaction_context": transaction_context, } answer = await self.llm.ainvoke( diff --git a/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..14725d45 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/agent_runtime.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/agent_runtime.cpython-313.pyc new file mode 100644 index 00000000..5030833e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/agent_runtime.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/transaction_input.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/transaction_input.cpython-313.pyc new file mode 100644 index 00000000..f7d5ff86 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/transaction_input.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/transaction_parameters.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/transaction_parameters.cpython-313.pyc new file mode 100644 index 00000000..0df895b3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/runtime/__pycache__/transaction_parameters.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/runtime/agent_runtime.py b/libs/agent_framework/build/lib/agent_framework/runtime/agent_runtime.py index 1dc9c07a..3fa365af 100644 --- a/libs/agent_framework/build/lib/agent_framework/runtime/agent_runtime.py +++ b/libs/agent_framework/build/lib/agent_framework/runtime/agent_runtime.py @@ -12,7 +12,7 @@ from typing import Any, Iterable, Mapping from agent_framework.memory.summary_memory import MemoryContext, render_recent_messages -from agent_framework.runtime.transaction_parameters import extract_transaction_parameters, parse_transaction_confirmation +from agent_framework.runtime.transaction_parameters import extract_transaction_parameters, reconcile_transaction_parameters, parse_transaction_confirmation from agent_framework.workflows.input_contract import match_expected_input @@ -365,6 +365,119 @@ class AgentRuntimeMixin: return False + @classmethod + def _mcp_workflows_terminal_for_rag(cls, mcp_results: list[dict[str, Any]]) -> tuple[bool, list[str]]: + """Detecta workflows do turno já encerrados para evitar retrieval pós-execução. + + A regra é intencionalmente estreita: somente resultados que se identificam + como workflow (``workflow_status`` em metadata ou ``workflow_name``/ + ``execution_id`` junto de ``status`` no payload) participam da decisão. + ``COMPLETED`` e ``FAILED`` são tratados igualmente como terminais para RAG. + Se não houver workflow detectado, o comportamento normal de RAG permanece. + """ + statuses: list[str] = [] + for item in mcp_results or []: + if not isinstance(item, dict): + continue + + metadata = item.get("metadata") + if isinstance(metadata, Mapping): + workflow_status = str(metadata.get("workflow_status") or "").strip().upper() + if workflow_status: + statuses.append(workflow_status) + continue + + result = item.get("result") + for mapping in cls._iter_mapping_values(result): + if not isinstance(mapping, Mapping): + continue + identifies_workflow = bool(mapping.get("workflow_name") or mapping.get("execution_id")) + status = str(mapping.get("status") or "").strip().upper() + if identifies_workflow and status: + statuses.append(status) + break + + if not statuses: + return False, [] + terminal = {"COMPLETED", "FAILED"} + return all(status in terminal for status in statuses), statuses + + @staticmethod + def _operation_result_is_terminal(result: Any) -> bool: + if not isinstance(result, Mapping): + return False + return str(result.get("status") or "").strip().lower() in {"completed", "failed"} + + @classmethod + def _has_pending_operations_for_rag(cls, state: dict[str, Any]) -> bool: + """Retorna True quando a fila executável ainda possui trabalho não terminal. + + ``pending_topics`` é a fonte de trabalho pendente. O ``multi_intent_plan`` + persistido é contexto/read-only e não pode ser reinterpretado como fila, + pois seus status originais podem permanecer ``pending`` após a conclusão. + ``operation_results`` evita que um tópico residual já terminal conte de novo. + """ + operation_results = state.get("operation_results") or {} + if not isinstance(operation_results, Mapping): + operation_results = {} + + pending_topics = state.get("pending_topics") + if not isinstance(pending_topics, (list, tuple)): + return False + for topic in pending_topics: + if not isinstance(topic, Mapping): + continue + op_id = str(topic.get("operation_id") or "").strip() + stored = operation_results.get(op_id) if op_id else None + if cls._operation_result_is_terminal(stored): + continue + status = str(topic.get("status") or "pending").strip().lower() + if status not in {"completed", "failed"}: + return True + return False + + @classmethod + def _has_unresolved_knowledge_operation_for_rag(cls, state: dict[str, Any]) -> bool: + """Detecta operação de knowledge ainda sem resultado terminal. + + O framework aceita marcadores explícitos (``knowledge``/``requires_rag``) + e, para compatibilidade com os intents existentes, a convenção ``knowledge`` + no nome do intent. Não há nomes de domínio ou de agentes hardcoded. + """ + operation_results = state.get("operation_results") or {} + if not isinstance(operation_results, Mapping): + operation_results = {} + + plan = state.get("multi_intent_plan") + if not isinstance(plan, Mapping): + route = state.get("route_decision") + if isinstance(route, Mapping): + metadata = route.get("metadata") + if isinstance(metadata, Mapping): + plan = metadata.get("multi_intent_plan") + if not isinstance(plan, Mapping): + return False + + for operation in plan.get("operations") or []: + if not isinstance(operation, Mapping): + continue + intent = str(operation.get("intent") or "").strip().lower() + is_knowledge = bool( + operation.get("knowledge") + or operation.get("requires_rag") + or "knowledge" in intent + ) + if not is_knowledge: + continue + op_id = str(operation.get("operation_id") or "").strip() + stored = operation_results.get(op_id) if op_id else None + if cls._operation_result_is_terminal(stored): + continue + status = str(operation.get("status") or "pending").strip().lower() + if status not in {"completed", "failed"}: + return True + return False + @classmethod def _mcp_llm_composition_directive(cls, mcp_results: list[dict[str, Any]]) -> tuple[bool, list[str]]: """Lê instruções de composição declaradas por tools/workflows. @@ -404,6 +517,33 @@ class AgentRuntimeMixin: mcp_results = state.get("mcp_results") or [] requires_rag, rag_query_override = self._mcp_rag_directive(mcp_results) explicit_mcp_sufficient = self._mcp_rag_sufficient(mcp_results) + # Política de precedência para o skip pós-workflow: + # 1) trabalho pendente mantém o processamento normal; + # 2) requires_rag=true força retrieval; + # 3) knowledge ainda não resolvido força retrieval; + # 4) só então workflows COMPLETED/FAILED podem suprimir RAG. + has_pending_operations = self._has_pending_operations_for_rag(state) + has_unresolved_knowledge = self._has_unresolved_knowledge_operation_for_rag(state) + workflows_terminal, workflow_statuses = self._mcp_workflows_terminal_for_rag(mcp_results) + if ( + not has_pending_operations + and not requires_rag + and not has_unresolved_knowledge + and workflows_terminal + ): + return "", { + "enabled": False, + "attempted": False, + "skipped": True, + "status": "skipped", + "reason": "all_turn_workflows_terminal", + "workflow_statuses": workflow_statuses, + "pending_operations": False, + "unresolved_knowledge_operation": False, + "required_by_tool": False, + "mcp_explicitly_sufficient": bool(explicit_mcp_sufficient), + "provider": getattr(settings, "RAG_PROVIDER", "standard"), + } if ( not requires_rag and bool(getattr(settings, "SKIP_RAG_WHEN_MCP_SUFFICIENT", True)) @@ -1466,6 +1606,153 @@ class AgentRuntimeMixin: cfg = self._tool_config(tool_name) return str(getattr(cfg, "description", "") or "") if cfg is not None else "" + @staticmethod + def _transaction_context_newest_first(context: Any) -> str: + """Normalize bounded conversation text into newest->oldest message blocks. + + Role-labelled multi-line messages are kept intact. This avoids reversing + individual lines inside an assistant explanation while still honoring the + temporal search order required by parameter reconciliation. + """ + raw = str(context or "").strip() + if not raw: + return "" + blocks: list[str] = [] + current: list[str] = [] + for line in raw.splitlines(): + stripped = line.strip() + if not stripped: + continue + low = stripped.lower() + starts_role = low.startswith(("user:", "assistant:", "system:", "cliente:", "agente:")) + if starts_role and current: + blocks.append(" ".join(current)) + current = [stripped] + else: + current.append(stripped) + if current: + blocks.append(" ".join(current)) + if not blocks: + blocks = [line.strip() for line in raw.splitlines() if line.strip()] + newest = list(reversed(blocks)) + return "\n".join(f"history:{i+1}: {block}" for i, block in enumerate(newest)) + + async def _reconcile_transaction_parameters( + self, + state: dict[str, Any], + *, + tool_name: str, + parameter_names: list[str], + known_arguments: dict[str, Any] | None = None, + ) -> dict[str, Any]: + """Reconcile a coherent required-parameter set from text and tool schema.""" + # Compatibility/extensibility: if a domain/runtime subclass explicitly + # overrides the legacy extractor, honor that override and translate its + # candidates into reconciliation decisions. The base framework path below + # remains the coherent temporal reconciler. + override = getattr(type(self), "_extract_transaction_parameters", None) + if override is not None and override is not AgentRuntimeMixin._extract_transaction_parameters: + route_meta_compat = ((state.get("route_decision") or {}).get("metadata") or {}) if isinstance(state.get("route_decision"), dict) else {} + compat_fields = list(parameter_names) if route_meta_compat.get("transaction_parameter_values") else [ + name for name in parameter_names if (known_arguments or {}).get(name) in _EMPTY_VALUES + ] + extracted = await override( + self, state, tool_name=tool_name, missing_parameters=compat_fields, + known_arguments=dict(known_arguments or {}), + ) + values = dict(extracted or {}) + decisions = {name: ("resolved" if name in values else ("preserve" if (known_arguments or {}).get(name) not in _EMPTY_VALUES else "unresolved")) for name in parameter_names} + provenance = {name: ("current" if name in values else "state") for name in parameter_names if decisions[name] != "unresolved"} + return {"values": values, "decisions": decisions, "provenance": provenance, "clear_fields": []} + + active = self._active_transaction(state) or {} + schema = active.get("parameter_schema") if isinstance(active.get("parameter_schema"), dict) else None + if not schema: + policy = self._resolve_tool_execution_policy(tool_name, known_arguments or {}) + schema = self._transaction_parameter_schema(tool_name, policy) + description = str(active.get("tool_description") or self._transaction_tool_description(tool_name) or "") + route_meta = ((state.get("route_decision") or {}).get("metadata") or {}) if isinstance(state.get("route_decision"), dict) else {} + contextual_reentry = bool(route_meta.get("contextual_reentry")) + text = (route_meta.get("original_input") if contextual_reentry else None) or state.get("sanitized_input") or state.get("user_text") or "" + conversational_context = route_meta.get("relevant_conversation_context") if contextual_reentry else None + if not str(conversational_context or "").strip(): + conversational_context = active.get("parameter_conversational_context") + if contextual_reentry and not str(conversational_context or "").strip(): + effective = str(route_meta.get("contextual_reentry_input") or "") + prefix = "CONTEXTO DA SOLICITAÇÃO IMEDIATAMENTE ANTERIOR:\n" + suffix = "\n\nCONTINUAÇÃO ATUAL DO CLIENTE:\n" + if prefix in effective and suffix in effective: + conversational_context = effective.split(prefix, 1)[1].split(suffix, 1)[0].strip() + ordered_context = self._transaction_context_newest_first(conversational_context) + cached = route_meta.get("transaction_parameter_values") + effective_known = dict(known_arguments or {}) + if isinstance(cached, dict): + for key, value in cached.items(): + if str(key) in set(str(x) for x in parameter_names) and value not in _EMPTY_VALUES: + effective_known[str(key)] = value + return await reconcile_transaction_parameters( + getattr(self, "llm", None), + text=str(text), + tool_name=tool_name, + parameter_names=[str(x) for x in parameter_names], + known_arguments=effective_known, + parameter_schema=schema, + tool_description=description, + conversational_context=ordered_context, + ) + + async def _extract_transaction_parameters_current_only( + self, + state: dict[str, Any], + *, + tool_name: str, + missing_parameters: list[str], + known_arguments: dict[str, Any] | None = None, + ) -> dict[str, Any]: + """Collect pending parameters from the current utterance only. + + This is the normal COLLECTING_PARAMETERS path. Temporal conversation + history is deliberately excluded here; `_reconcile_transaction_parameters` + is the fallback when this direct collection cannot satisfy or validate the + declarative parameter contract. + """ + if not missing_parameters: + return {} + + # Preserve the framework extension contract: domain/test runtimes that + # explicitly override the legacy collector remain the authoritative + # implementation of the *traditional* first pass. The temporal fallback + # is still owned by the base runtime and is invoked only after failure. + override = getattr(type(self), "_extract_transaction_parameters", None) + if override is not None and override is not AgentRuntimeMixin._extract_transaction_parameters: + return await override( + self, + state, + tool_name=tool_name, + missing_parameters=list(missing_parameters), + known_arguments=dict(known_arguments or {}), + ) + + active = self._active_transaction(state) or {} + schema = active.get("parameter_schema") if isinstance(active.get("parameter_schema"), dict) else None + if not schema: + policy = self._resolve_tool_execution_policy(tool_name, known_arguments or {}) + schema = self._transaction_parameter_schema(tool_name, policy) + description = str(active.get("tool_description") or self._transaction_tool_description(tool_name) or "") + route_meta = ((state.get("route_decision") or {}).get("metadata") or {}) if isinstance(state.get("route_decision"), dict) else {} + text = route_meta.get("original_input") if route_meta.get("contextual_reentry") else None + text = text or state.get("sanitized_input") or state.get("user_text") or "" + return await extract_transaction_parameters( + getattr(self, "llm", None), + text=str(text), + tool_name=tool_name, + missing_parameters=[str(x) for x in missing_parameters], + known_arguments=dict(known_arguments or {}), + parameter_schema=schema, + tool_description=description, + conversational_context="", + ) + async def _extract_transaction_parameters( self, state: dict[str, Any], @@ -1535,6 +1822,7 @@ class AgentRuntimeMixin: suffix = "\n\nCONTINUAÇÃO ATUAL DO CLIENTE:\n" if prefix in effective and suffix in effective: conversational_context = effective.split(prefix, 1)[1].split(suffix, 1)[0].strip() + ordered_context = self._transaction_context_newest_first(conversational_context) extracted = await extract_transaction_parameters( getattr(self, "llm", None), text=str(text), @@ -1543,9 +1831,42 @@ class AgentRuntimeMixin: known_arguments={**dict(known_arguments or {}), **reused}, parameter_schema=schema, tool_description=description, - conversational_context=str(conversational_context or ""), + conversational_context=ordered_context, ) - return {**reused, **extracted} + + # Compatibility/resilience fallback: if a provider returns only a partial + # flat extraction, scan bounded prior text source-by-source from newest to + # oldest for still-unresolved fields. This preserves temporal order and + # remains schema-driven; the main COLLECTING_PARAMETERS path uses the + # coherent set reconciler above. + combined = {**reused, **extracted} + unresolved = [name for name in missing_parameters if name not in combined] + if unresolved and str(conversational_context or "").strip(): + source_lines = self._transaction_context_newest_first(conversational_context).splitlines() + for source_line in source_lines: + if not unresolved: + break + source_text = source_line.split(": ", 1)[1] if ": " in source_line else source_line + low_source = source_text.lower() + for role_prefix in ("user: ", "assistant: ", "cliente: ", "agente: ", "system: "): + if low_source.startswith(role_prefix): + source_text = source_text[len(role_prefix):] + break + recovered = await extract_transaction_parameters( + getattr(self, "llm", None), + text=source_text, + tool_name=tool_name, + missing_parameters=list(unresolved), + known_arguments={**dict(known_arguments or {}), **combined}, + parameter_schema=schema, + tool_description=description, + conversational_context="", + ) + for key, value in recovered.items(): + if key in unresolved and value not in _EMPTY_VALUES: + combined[key] = value + unresolved = [name for name in unresolved if name not in combined] + return combined def _transactional_action_match(self, text: str, tools: list[str] | None = None) -> str | None: """Detecta solicitação transacional usando metadados de tools.yaml. @@ -1643,17 +1964,60 @@ class AgentRuntimeMixin: return descriptor @staticmethod - def _workflow_payload_from_tool_result(result: dict[str, Any]) -> dict[str, Any] | None: + def _workflow_declares_final_response(workflow: dict[str, Any]) -> bool: + """Return True when the workflow payload itself declares a final response. + + Some legacy/domain adapters can return ``status=PAUSED`` even after the + resumed workflow has reached a terminal node. The authoritative signal + for conversation lifecycle is the domain contract + ``workflow_response_final=true``. Treating that payload as still paused + would persist the old expected_input and resurrect it on the next turn. + """ + if not isinstance(workflow, dict): + return False + candidates: list[dict[str, Any]] = [] + output = workflow.get("output") + if isinstance(output, dict): + # Adapters may promote the final node payload directly to ``output``. + candidates.append(output) + state = workflow.get("state") if isinstance(workflow.get("state"), dict) else {} + current_node = str(state.get("current_node") or "").strip() + if current_node and isinstance(output.get(current_node), dict): + candidates.append(output[current_node]) + # Other adapters keep node outputs under ``nodes``/``vars``. + for key in ("nodes", "vars"): + node_map = state.get(key) if isinstance(state.get(key), dict) else {} + if current_node and isinstance(node_map.get(current_node), dict): + candidates.append(node_map[current_node]) + candidates.append(workflow) + return any(item.get("workflow_response_final") is True for item in candidates) + + @classmethod + def _workflow_payload_from_tool_result(cls, result: dict[str, Any]) -> dict[str, Any] | None: data = result.get("result") if isinstance(result, dict) else None if not isinstance(data, dict): return None # MCP HTTP envelope may contain another result layer. nested = data.get("result") + candidate = None if isinstance(nested, dict) and nested.get("status") in {"PAUSED", "COMPLETED", "FAILED"}: - return nested - if data.get("status") in {"PAUSED", "COMPLETED", "FAILED"}: - return data - return None + candidate = nested + elif data.get("status") in {"PAUSED", "COMPLETED", "FAILED"}: + candidate = data + if not isinstance(candidate, dict): + return None + + # Normalize a stale PAUSED status when the domain has explicitly declared + # that its final user response was produced. Work on a shallow copy so + # the raw MCP evidence remains untouched for telemetry/audit. + if candidate.get("status") == "PAUSED" and cls._workflow_declares_final_response(candidate): + candidate = dict(candidate) + candidate["status"] = "COMPLETED" + metadata = dict(candidate.get("metadata") or {}) + metadata["status_normalized_from"] = "PAUSED" + metadata["status_normalized_reason"] = "workflow_response_final" + candidate["metadata"] = metadata + return candidate def _capture_pending_domain_workflow(self, state: dict[str, Any], tool_result: dict[str, Any]) -> None: workflow = self._workflow_payload_from_tool_result(tool_result) @@ -1667,18 +2031,43 @@ class AgentRuntimeMixin: executed.append(workflow_name) state["business_workflows_executed"] = executed if workflow.get("status") != "PAUSED": - # Clearing must be materialized in the graph-state patch. ``pop``/absence - # is not enough with LangGraph state merging: an older latch can survive - # into the next turn and incorrectly resume a workflow that already - # completed. Only clear the currently owned execution (or an unlabeled - # legacy latch); never clear a different concurrently tracked workflow. + # A completed/failed workflow is a terminal interaction lifecycle, but + # NOT a terminal user session. Materialize explicit tombstones so an old + # LangGraph checkpoint cannot resurrect ``expected_input``/pause on the + # next message in the same session. Only clear the execution currently + # owned by this latch (or an unlabeled legacy latch). pending = state.get("pending_domain_workflow") pending_execution = (pending or {}).get("execution_id") if isinstance(pending, dict) else None workflow_execution = metadata.get("workflow_execution_id") or workflow.get("execution_id") - if not pending_execution or not workflow_execution or str(pending_execution) == str(workflow_execution): + owns_latch = ( + not pending_execution + or not workflow_execution + or str(pending_execution) == str(workflow_execution) + ) + if owns_latch: + terminal_status = "COMPLETED" if workflow.get("status") == "COMPLETED" else "FAILED" + # Close any operational transaction created to own the paused + # workflow before changing transaction_status to a terminal value. + if self._active_transaction(state): + self._finish_active_transaction(state, terminal_status, result=tool_result) + else: + state["active_transaction"] = None + state["selected_tool_call"] = {} + state["pending_tool_call"] = {} + state["missing_parameters"] = [] + state["confirmation_required"] = False + state["confirmation_received"] = terminal_status == "COMPLETED" + state["next_state"] = None + state["transaction_status"] = terminal_status state["pending_domain_workflow"] = None - if state.get("transaction_status") == "WORKFLOW_PAUSED": - state["transaction_status"] = None + state["pending_tool_clarification"] = None + state["workflow_input_reprompt"] = None + # Conversation session remains the same, but the completed + # workflow defines an operational-context boundary. The next + # user turn consumes this marker and starts with a clean + # short-term interaction context (history is still durable for + # audit/telemetry and long-term memory remains available). + state["operational_context_boundary_pending"] = True return state["pending_domain_workflow"] = { "workflow_name": metadata.get("workflow_name") or workflow.get("workflow_name"), @@ -1855,7 +2244,15 @@ class AgentRuntimeMixin: transaction_id: str | None = None, ) -> dict[str, Any]: current = state.get("active_transaction") if isinstance(state.get("active_transaction"), dict) else {} - txid = transaction_id or current.get("transaction_id") or str(uuid.uuid4()) + current_is_active = self._transaction_is_active(state) and bool(current.get("transaction_id")) + txid = transaction_id or (current.get("transaction_id") if current_is_active else None) or str(uuid.uuid4()) + normalized_arguments = dict(arguments or {}) + if not current_is_active and transaction_id is None: + # workflow_execution_id is transaction-scoped. A value left by a + # completed/failed transaction must never seed a new one in the same + # session. A paused workflow is resumed through pending_domain_workflow + # / retomar_workflow, not by opening a new transaction with this field. + normalized_arguments.pop("workflow_execution_id", None) if str(current.get("tool_name") or "") != str(tool_name): pre_validation = state.get("transaction_pre_validation") pre_validation = pre_validation if isinstance(pre_validation, dict) else {} @@ -1883,7 +2280,7 @@ class AgentRuntimeMixin: tx = { "transaction_id": txid, "tool_name": tool_name, - "arguments": dict(arguments or {}), + "arguments": normalized_arguments, "status": status, "started_from_intent": current.get("started_from_intent") or state.get("intent"), "requires": list(policy.get("requires") or getattr(cfg, "requires", []) or []), @@ -1894,7 +2291,14 @@ class AgentRuntimeMixin: "parameter_conversational_context": parameter_context or "", "user_claims_are_evidence": False if parameter_context else current.get("user_claims_are_evidence", False), } + # Invariant: the operational transaction and the scalar lifecycle status + # must always describe the same interaction. A previous terminal status + # (for example COMPLETED) must not survive after a new transaction is + # installed, otherwise the next input-boundary normalization may clear the + # newly created confirmation/parameter latches as if they belonged to the + # previous transaction. state["active_transaction"] = tx + state["transaction_status"] = status return tx @staticmethod @@ -2050,6 +2454,11 @@ class AgentRuntimeMixin: state["confirmation_required"] = False state["confirmation_received"] = False state["next_state"] = None + # Defensive cleanup for checkpoints written by older versions: a + # terminal interaction must never retain a resumable workflow contract. + state["pending_domain_workflow"] = None + state["pending_tool_clarification"] = None + state["workflow_input_reprompt"] = None state.pop("transaction_confirmation_message_override", None) state.pop("transaction_parameter_message_override", None) return @@ -2131,6 +2540,7 @@ class AgentRuntimeMixin: "transaction_evidence", "last_transaction_evidence", "relevant_transaction_evidence", "transaction_pre_validation", "tool_terminal_result", "transaction_confirmation_message_override", "transaction_parameter_message_override", + "operational_context_boundary_pending", "operational_context_reset", ) return {key: state.get(key) for key in keys if key in state} @@ -2612,6 +3022,9 @@ class AgentRuntimeMixin: def _clear_active_interaction_context_on_route_shift(self, state: dict[str, Any]) -> bool: """Invalidate active conversational latches when routing leaves their owner. + A semantic `explicit_abandonment` uses the same live-latch cleanup as a + route shift, but preserves a distinct audit reason/action. + This is deliberately generic. It compares the current route decision with the owner recorded by a paused workflow; it does not inspect domain, tool, workflow or intent names. Durable checkpoints/history remain intact. @@ -2635,10 +3048,12 @@ class AgentRuntimeMixin: if not (intent_changed or agent_changed): return False + interruption = str(route_metadata.get("transaction_interruption") or "").strip().lower() + explicit_abandonment = interruption == "explicit_abandonment" state["last_interrupted_domain_workflow"] = { **pending_workflow, "status": "CANCELLED", - "reason": "intent_shift", + "reason": "explicit_abandonment" if explicit_abandonment else "intent_shift", } state["pending_domain_workflow"] = None @@ -2661,7 +3076,11 @@ class AgentRuntimeMixin: state["transaction_pre_validation"] = None state["pending_tool_clarification"] = None state["tool_policy_result"] = { - "action": "cleared_by_intent_shift", + "action": ( + "cleared_by_explicit_abandonment" + if explicit_abandonment + else "cleared_by_intent_shift" + ), "workflow_execution_id": pending_workflow.get("execution_id"), } state["mcp_results"] = [] @@ -2694,17 +3113,21 @@ class AgentRuntimeMixin: self._normalize_transaction_lifecycle(state) # Uma transação em coleta/confirmação não pode aprisionar a sessão. O - # EnterpriseRouter é a única fonte para interrupção por mudança de intent. - # Não existe interpretação lexical de desistência no runtime: mudou a - # intent, a transação anterior é encerrada e seus latches são limpos. + # EnterpriseRouter é a única fonte para interrupção semântica: SHIFT ou + # ABANDON. Não existe interpretação lexical de desistência no runtime; o + # runtime apenas aplica a decisão do router e limpa os latches da ação. active_before_interruption = self._active_transaction(state) interruption = str(route_meta.get("transaction_interruption") or "").strip().lower() - if active_before_interruption and interruption == "intent_shift": + if active_before_interruption and interruption in {"intent_shift", "explicit_abandonment"}: interrupted_tool = active_before_interruption.get("tool_name") self._finish_active_transaction(state, "CANCELLED") state["transaction_pre_validation"] = None state["tool_policy_result"] = { - "action": "cancelled_by_intent_shift", + "action": ( + "cancelled_by_explicit_abandonment" + if interruption == "explicit_abandonment" + else "cancelled_by_intent_shift" + ), "tool_name": interrupted_tool, } @@ -2738,23 +3161,38 @@ class AgentRuntimeMixin: policy = self._resolve_tool_execution_policy(tool_name, previous_args) missing_before = self._missing_required_arguments(policy, previous_args) - # Parâmetros TRANSACIONAIS são interpretados exclusivamente pelo - # extrator LLM genérico. Durante COLLECTING_PARAMETERS, a fala atual - # também pode CORRIGIR um required field já coletado em turno anterior - # (ex.: valor=19,99 e o cliente diz "desculpa, é 14,99" enquanto - # subject ainda está pendente). Por isso o contrato editável do turno - # é o conjunto completo de ``requires``; somente as chaves realmente - # extraídas pela LLM sobrescrevem ``previous_args``. Campos não citados - # permanecem intactos. Isso preserva parameter-before-intent-shift sem - # tornar valores antigos imutáveis por acidente. - editable_required = [str(name) for name in (policy.get("requires") or [])] - extracted = await self._extract_transaction_parameters( + # Uma única fonte de verdade para parâmetros: o extractor recebe + # todos os required fields, valores já conhecidos e o contexto + # bounded da própria transação. Assim ele pode resolver referências + # e correções explícitas sem uma segunda máquina de reconciliação. + arguments = dict(previous_args) + required_fields = [str(name) for name in (policy.get("requires") or [])] + collector_override = getattr(type(self), "_extract_transaction_parameters", None) + collector_fields = ( + list(missing_before) + if collector_override is not None and collector_override is not AgentRuntimeMixin._extract_transaction_parameters + else required_fields + ) + extracted_current = await self._extract_transaction_parameters( state, tool_name=tool_name, - missing_parameters=editable_required, + missing_parameters=collector_fields, known_arguments=previous_args, ) - arguments = {**previous_args, **extracted} + arguments.update(dict(extracted_current or {})) + route_meta_collection = ((state.get("route_decision") or {}).get("metadata") or {}) if isinstance(state.get("route_decision"), dict) else {} + router_values = route_meta_collection.get("transaction_parameter_values") + router_fields = sorted( + str(k) for k, v in (router_values.items() if isinstance(router_values, dict) else []) + if v not in _EMPTY_VALUES + ) + state["transaction_parameter_collection"] = { + "tool_name": tool_name, + "mode": "single_extractor", + "resolved_fields": sorted(str(k) for k in (extracted_current or {}).keys()), + "router_resolved_fields": router_fields, + } + state.pop("transaction_parameter_reconciliation", None) # Argumentos estruturados já presentes no contexto são aceitos de # forma genérica (não são parsing textual). Para required fields, @@ -2801,6 +3239,10 @@ class AgentRuntimeMixin: state, tool_name=tool_name, arguments=arguments, policy=policy, emit_events=emit_events ) if pre_validation_result is not None: + # A pre-validation é a fronteira autoritativa. Se pedir um + # parâmetro novamente, o estado produzido por ela é preservado + # e o próximo turno volta ao mesmo extractor. Não existe uma + # segunda tentativa escondida de reconciliação no mesmo turno. return [pre_validation_result] tool_name, policy, force_confirmation = self._apply_prevalidated_transaction_decision( @@ -3120,6 +3562,33 @@ class AgentRuntimeMixin: if not resolved_session_id: return None + # A completed workflow can keep the same session identifier while + # opening a fresh operational interaction. On that first post-boundary + # turn, do not inject ConversationSummaryMemory/recent messages from the + # closed workflow. Durable message history is intentionally untouched. + # Long-term memory is loaded below as usual because identity/preferences + # are not short-term workflow state. + reset_short_term = bool(state.get("operational_context_reset")) + if reset_short_term: + memory_context = MemoryContext( + summary="", + recent_messages=[], + compressed=False, + metadata={"operational_context_reset": True, "session_id": resolved_session_id}, + ) + state["memory_context"] = memory_context + state["memory_context_metadata"] = memory_context.metadata + if bool(getattr(settings, "ENABLE_LONG_TERM_MEMORY", False)): + manager = getattr(self, "long_term_memory_manager", None) + if manager is None: + from agent_framework.memory.long_term_memory import create_long_term_memory_manager + manager = create_long_term_memory_manager(settings, telemetry=getattr(self, "telemetry", None)) + self.long_term_memory_manager = manager + items = await manager.load(state) + state["long_term_memories"] = [item.to_dict() for item in items] + state["long_term_memory_context"] = manager.render(items) + return memory_context + summary_memory = getattr(self, "summary_memory", None) if summary_memory is None: from agent_framework.memory.message_history import create_memory @@ -3211,6 +3680,119 @@ class AgentRuntimeMixin: sections.append(f"Últimas mensagens completas da conversa:\n{rendered}") return sections + # ------------------------------------------------------------------ + # LLM context compaction + # ------------------------------------------------------------------ + _LLM_CONTEXT_DROP_KEYS = { + # Runtime/checkpoint internals are useful for audit/debug, but must not be + # recursively injected into an answering prompt. They frequently contain + # copies of the original request, session and previous workflow outputs. + "state", "vars", "session", "session_metadata", "original_context", + "agent_profile", "business_events", "trace", "nodes", "input", + # Provider / transport diagnostics do not add business grounding. + "raw_llm_answer", "headers", "request_kwargs", "response_headers", + } + + def _compact_llm_value( + self, + value: Any, + *, + max_chars: int = 16000, + max_depth: int = 6, + max_items: int = 24, + ) -> str: + """Render structured context for an LLM without checkpoint explosions. + + The operational state may intentionally retain complete workflow/MCP evidence + for auditability. Prompt context has a different contract: it contains the + business facts needed for the current answer, not recursive runtime objects. + This renderer therefore drops framework-internal recursive keys, bounds list + sizes/depth and finally enforces a hard character budget. + """ + truncated = False + + def compact(item: Any, depth: int = 0) -> Any: + nonlocal truncated + if depth >= max_depth: + if isinstance(item, (dict, list, tuple, set)): + truncated = True + return "[conteúdo aninhado omitido]" + return item + if isinstance(item, dict): + out: dict[str, Any] = {} + for idx, (key, raw) in enumerate(item.items()): + if idx >= max_items: + truncated = True + out["_omitted_fields"] = max(0, len(item) - max_items) + break + key_s = str(key) + if key_s.lower() in self._LLM_CONTEXT_DROP_KEYS: + truncated = True + continue + out[key_s] = compact(raw, depth + 1) + return out + if isinstance(item, (list, tuple, set)): + seq = list(item) + if len(seq) > max_items: + truncated = True + out = [compact(child, depth + 1) for child in seq[:max_items]] + if len(seq) > max_items: + out.append(f"[+{len(seq) - max_items} itens omitidos]") + return out + if isinstance(item, str) and len(item) > 4000: + truncated = True + return item[:4000] + "…[texto truncado]" + return item + + try: + rendered = json.dumps(compact(value), ensure_ascii=False, default=str, separators=(",", ":")) + except Exception: + rendered = str(value) + if len(rendered) > max_chars: + truncated = True + rendered = rendered[:max_chars] + "…[contexto truncado pelo framework]" + if truncated: + return rendered + "\n[observação: payload técnico/duplicado foi compactado; fatos preservados dentro do orçamento]" + return rendered + + @staticmethod + def _is_context_length_error(exc: Exception) -> bool: + text = str(exc).lower() + markers = ( + "maximum context length", + "max context length", + "context_length_exceeded", + "input length", + "too many tokens", + ) + return any(marker in text for marker in markers) + + def _compact_messages_for_retry( + self, + messages: list[dict[str, str]], + *, + max_total_chars: int = 60000, + ) -> list[dict[str, str]]: + """Emergency second-pass budget used only after provider rejection.""" + if not messages: + return messages + system_budget = min(20000, max_total_chars // 3) + remaining = max_total_chars - system_budget + compacted: list[dict[str, str]] = [] + for index, message in enumerate(messages): + content = str(message.get("content") or "") + role = str(message.get("role") or "user") + if role == "system": + budget = system_budget + else: + non_system_left = max(1, sum(1 for m in messages[index:] if str(m.get("role") or "") != "system")) + budget = max(4000, remaining // non_system_left) + remaining = max(0, remaining - budget) + if len(content) > budget: + content = content[:budget] + "…[mensagem compactada após limite de contexto]" + compacted.append({"role": role, "content": content}) + return compacted + # ------------------------------------------------------------------ # Messages / LLM / cache # ------------------------------------------------------------------ @@ -3236,19 +3818,26 @@ class AgentRuntimeMixin: f"Intent/rota escolhidos pelo framework:\nintent={state.get('intent')} route={state.get('route')}", ]) if include_business_context: - sections.append(f"BusinessContext canônico:\n{runtime.business_context or '[sem business_context]'}") + sections.append( + "BusinessContext canônico:\n" + + self._compact_llm_value(runtime.business_context or "[sem business_context]", max_chars=6000) + ) if mcp_results is not None: - sections.append(f"Resultados MCP normalizados pelo framework:\n{mcp_results}") + sections.append( + "Resultados MCP normalizados pelo framework:\n" + + self._compact_llm_value(mcp_results, max_chars=18000) + ) transaction_evidence = self.transaction_evidence_for_turn(state, mcp_results) if transaction_evidence: sections.append( "Evidências operacionais de transações anteriores relevantes ao recurso atual " - f"(persistidas pelo framework, não inferidas pela memória conversacional):\n{transaction_evidence}" + "(persistidas pelo framework, não inferidas pela memória conversacional):\n" + + self._compact_llm_value(transaction_evidence, max_chars=12000) ) if rag_context is not None: sections.append(f"Contexto de conhecimento (RAG):\n{rag_context or '[sem contexto RAG]'}") if rag_metadata is not None: - sections.append(f"Metadados RAG:\n{rag_metadata}") + sections.append("Metadados RAG:\n" + self._compact_llm_value(rag_metadata, max_chars=6000)) provider = str(rag_metadata.get("provider") or getattr(getattr(self, "settings", None), "RAG_PROVIDER", "standard")) grounded_only = bool(getattr(getattr(self, "settings", None), "RAG_GROUNDED_ONLY", False)) if provider == "kbdb": @@ -3262,7 +3851,7 @@ class AgentRuntimeMixin: "- Se o RAG estiver vazio, bloqueado ou com erro, ainda é permitido responder apenas a partes comprovadas por MCP/business context; não invente a parte documental ausente." ) for title, value in (extra_sections or {}).items(): - sections.append(f"{title}:\n{value}") + sections.append(f"{title}:\n" + self._compact_llm_value(value, max_chars=10000)) return MessageBuilder(state).system(system_prompt).user("\n\n".join(sections)).build() async def _cache_get(self, key: str): @@ -3324,7 +3913,33 @@ class AgentRuntimeMixin: return cached if telemetry: await telemetry.event("cache.llm.miss", {"agent": agent_name, "key": key}, kind="cache") - answer = await self.llm.ainvoke(messages, profile_name=agent_name, component_name=agent_name, generation_name=f"llm.{agent_name}") + try: + answer = await self.llm.ainvoke( + messages, + profile_name=agent_name, + component_name=agent_name, + generation_name=f"llm.{agent_name}", + ) + except Exception as exc: + if not self._is_context_length_error(exc): + raise + retry_messages = self._compact_messages_for_retry(messages) + if telemetry: + await telemetry.event( + "llm.context.compacted_retry", + { + "agent": agent_name, + "original_chars": sum(len(str(m.get("content") or "")) for m in messages), + "retry_chars": sum(len(str(m.get("content") or "")) for m in retry_messages), + }, + kind="llm", + ) + answer = await self.llm.ainvoke( + retry_messages, + profile_name=agent_name, + component_name=agent_name, + generation_name=f"llm.{agent_name}.context_retry", + ) await self._cache_set(key, answer, ttl) return answer diff --git a/libs/agent_framework/build/lib/agent_framework/security/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..8d437d4d Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/security/__pycache__/authentication.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/authentication.cpython-313.pyc new file mode 100644 index 00000000..4e932231 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/authentication.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/security/__pycache__/factory.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/factory.cpython-313.pyc new file mode 100644 index 00000000..e79d4ac9 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/factory.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/security/__pycache__/installer.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/installer.cpython-313.pyc new file mode 100644 index 00000000..4b60c06b Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/installer.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/security/__pycache__/middleware.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/middleware.cpython-313.pyc new file mode 100644 index 00000000..7ac290cf Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/security/__pycache__/middleware.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/sse/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/sse/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..6cccf5f5 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/sse/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/sse/__pycache__/events.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/sse/__pycache__/events.cpython-313.pyc new file mode 100644 index 00000000..4f40a31a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/sse/__pycache__/events.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..ab585f86 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/router_supervisor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/router_supervisor.cpython-313.pyc new file mode 100644 index 00000000..02b57518 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/router_supervisor.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/supervisor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/supervisor.cpython-313.pyc new file mode 100644 index 00000000..790fbed3 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/supervisor/__pycache__/supervisor.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..662e3cc8 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/graph.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/graph.cpython-313.pyc new file mode 100644 index 00000000..ecf06f78 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/graph.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/input_contract.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/input_contract.cpython-313.pyc new file mode 100644 index 00000000..9280ab9b Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/input_contract.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/models.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..e3648446 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/registry.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/registry.cpython-313.pyc new file mode 100644 index 00000000..ac7534a1 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/registry.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/repository.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/repository.cpython-313.pyc new file mode 100644 index 00000000..4ba84943 Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/repository.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/runtime.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..f739c63a Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/runtime.cpython-313.pyc differ diff --git a/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/tool_executor.cpython-313.pyc b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/tool_executor.cpython-313.pyc new file mode 100644 index 00000000..7714ab8e Binary files /dev/null and b/libs/agent_framework/build/lib/agent_framework/workflows/__pycache__/tool_executor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..9e6ab7b1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..71d64042 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/extensions.cpython-313.pyc b/libs/agent_framework/src/agent_framework/__pycache__/extensions.cpython-313.pyc new file mode 100644 index 00000000..47e05974 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/extensions.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/gateway_policy_context.cpython-313.pyc b/libs/agent_framework/src/agent_framework/__pycache__/gateway_policy_context.cpython-313.pyc new file mode 100644 index 00000000..e88eaccd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/gateway_policy_context.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/idempotency.cpython-313.pyc b/libs/agent_framework/src/agent_framework/__pycache__/idempotency.cpython-313.pyc new file mode 100644 index 00000000..419d753a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/idempotency.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/idempotency.cpython-314.pyc b/libs/agent_framework/src/agent_framework/__pycache__/idempotency.cpython-314.pyc new file mode 100644 index 00000000..c57d7a90 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/idempotency.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/observer.cpython-313.pyc b/libs/agent_framework/src/agent_framework/__pycache__/observer.cpython-313.pyc new file mode 100644 index 00000000..01101db9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/observer.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/observer.cpython-314.pyc b/libs/agent_framework/src/agent_framework/__pycache__/observer.cpython-314.pyc new file mode 100644 index 00000000..5769340f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/observer.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/__pycache__/runtime_mcp_gateway_adapter.cpython-313.pyc b/libs/agent_framework/src/agent_framework/__pycache__/runtime_mcp_gateway_adapter.cpython-313.pyc new file mode 100644 index 00000000..1d040f91 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/__pycache__/runtime_mcp_gateway_adapter.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..171af7a9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..db730fda Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/composite_publisher.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/composite_publisher.cpython-313.pyc new file mode 100644 index 00000000..e7aa9016 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/composite_publisher.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/composite_publisher.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/composite_publisher.cpython-314.pyc new file mode 100644 index 00000000..4a7eec80 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/composite_publisher.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/event_builder.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/event_builder.cpython-313.pyc new file mode 100644 index 00000000..a06866c9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/event_builder.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/event_builder.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/event_builder.cpython-314.pyc new file mode 100644 index 00000000..2fd78d87 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/event_builder.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/factory.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/factory.cpython-313.pyc new file mode 100644 index 00000000..1e73aaa8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/factory.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/factory.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/factory.cpython-314.pyc new file mode 100644 index 00000000..dbb0b1e3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/factory.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/publisher.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/publisher.cpython-313.pyc new file mode 100644 index 00000000..8fcf15f5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/publisher.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/publisher.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/publisher.cpython-314.pyc new file mode 100644 index 00000000..1b2e0731 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/publisher.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-313.pyc new file mode 100644 index 00000000..a4a4b6fc Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-314.pyc new file mode 100644 index 00000000..93116399 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_payload_mapper.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_sequence.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_sequence.cpython-313.pyc new file mode 100644 index 00000000..a18f97b5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_sequence.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_sequence.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_sequence.cpython-314.pyc new file mode 100644 index 00000000..1f849c97 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/__pycache__/tim_sequence.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..31392dd2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..801eb7fb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/kafka.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/kafka.cpython-313.pyc new file mode 100644 index 00000000..b5e221b2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/kafka.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/kafka.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/kafka.cpython-314.pyc new file mode 100644 index 00000000..4585713c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/kafka.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/langfuse.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/langfuse.cpython-313.pyc new file mode 100644 index 00000000..1387eaaa Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/langfuse.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/langfuse.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/langfuse.cpython-314.pyc new file mode 100644 index 00000000..9ae90a61 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/langfuse.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-313.pyc new file mode 100644 index 00000000..585cc284 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-314.pyc new file mode 100644 index 00000000..db5b6685 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/oci_streaming.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/pubsub.cpython-313.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/pubsub.cpython-313.pyc new file mode 100644 index 00000000..cfeae8e0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/pubsub.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/pubsub.cpython-314.pyc b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/pubsub.cpython-314.pyc new file mode 100644 index 00000000..7bb19f1d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/analytics/providers/__pycache__/pubsub.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/billing/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/billing/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..beff5c83 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/billing/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/billing/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/billing/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..6ef6f8cf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/billing/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/billing/__pycache__/usage_repository.cpython-313.pyc b/libs/agent_framework/src/agent_framework/billing/__pycache__/usage_repository.cpython-313.pyc new file mode 100644 index 00000000..386d5fbc Binary files /dev/null and b/libs/agent_framework/src/agent_framework/billing/__pycache__/usage_repository.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/billing/__pycache__/usage_repository.cpython-314.pyc b/libs/agent_framework/src/agent_framework/billing/__pycache__/usage_repository.cpython-314.pyc new file mode 100644 index 00000000..86878d26 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/billing/__pycache__/usage_repository.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/cache/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/cache/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..570985a0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/cache/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/cache/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/cache/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..6be3d8d1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/cache/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/cache/__pycache__/cache.cpython-313.pyc b/libs/agent_framework/src/agent_framework/cache/__pycache__/cache.cpython-313.pyc new file mode 100644 index 00000000..d1242ed3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/cache/__pycache__/cache.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/cache/__pycache__/cache.cpython-314.pyc b/libs/agent_framework/src/agent_framework/cache/__pycache__/cache.cpython-314.pyc new file mode 100644 index 00000000..d100dadd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/cache/__pycache__/cache.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..faa15aa3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..12318df1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/adapters.cpython-313.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/adapters.cpython-313.pyc new file mode 100644 index 00000000..8eace6d7 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/adapters.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/adapters.cpython-314.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/adapters.cpython-314.pyc new file mode 100644 index 00000000..de548818 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/adapters.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/base.cpython-313.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/base.cpython-313.pyc new file mode 100644 index 00000000..71705ae5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/base.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/base.cpython-314.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/base.cpython-314.pyc new file mode 100644 index 00000000..aca24524 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/base.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/gateway.cpython-313.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/gateway.cpython-313.pyc new file mode 100644 index 00000000..85a563e8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/gateway.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/gateway.cpython-314.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/gateway.cpython-314.pyc new file mode 100644 index 00000000..52b31d12 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/gateway.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/interruption.cpython-313.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/interruption.cpython-313.pyc new file mode 100644 index 00000000..f0b0e553 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/interruption.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/interruption.cpython-314.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/interruption.cpython-314.pyc new file mode 100644 index 00000000..29ce8619 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/interruption.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/transcription.cpython-313.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/transcription.cpython-313.pyc new file mode 100644 index 00000000..17f6fd04 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/transcription.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/channels/__pycache__/transcription.cpython-314.pyc b/libs/agent_framework/src/agent_framework/channels/__pycache__/transcription.cpython-314.pyc new file mode 100644 index 00000000..bf3e5264 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/channels/__pycache__/transcription.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a89c93af Binary files /dev/null and b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..0f1a5aac Binary files /dev/null and b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-313.pyc b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-313.pyc new file mode 100644 index 00000000..1b4826bf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-314.pyc b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-314.pyc new file mode 100644 index 00000000..d4532893 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/checkpoint_repository.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-313.pyc b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-313.pyc new file mode 100644 index 00000000..34b52689 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-314.pyc b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-314.pyc new file mode 100644 index 00000000..73567503 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/checkpoints/__pycache__/langgraph_saver.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/config/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/config/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a251e689 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/config/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/config/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/config/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..fc23523e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/config/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/config/__pycache__/agent_registry.cpython-313.pyc b/libs/agent_framework/src/agent_framework/config/__pycache__/agent_registry.cpython-313.pyc new file mode 100644 index 00000000..4d737a18 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/config/__pycache__/agent_registry.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/config/__pycache__/agent_registry.cpython-314.pyc b/libs/agent_framework/src/agent_framework/config/__pycache__/agent_registry.cpython-314.pyc new file mode 100644 index 00000000..7e4aa3f2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/config/__pycache__/agent_registry.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/config/__pycache__/settings.cpython-313.pyc b/libs/agent_framework/src/agent_framework/config/__pycache__/settings.cpython-313.pyc new file mode 100644 index 00000000..4175dd4c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/config/__pycache__/settings.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/config/__pycache__/settings.cpython-314.pyc b/libs/agent_framework/src/agent_framework/config/__pycache__/settings.cpython-314.pyc new file mode 100644 index 00000000..c5c6565e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/config/__pycache__/settings.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/events/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/events/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..7f8879c5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/events/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/events/__pycache__/oci_streaming.cpython-313.pyc b/libs/agent_framework/src/agent_framework/events/__pycache__/oci_streaming.cpython-313.pyc new file mode 100644 index 00000000..2787c391 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/events/__pycache__/oci_streaming.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/gateways/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/gateways/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..fb011b5f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/gateways/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/gateways/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/gateways/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..653eb0a8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/gateways/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-313.pyc new file mode 100644 index 00000000..6c583696 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-314.pyc b/libs/agent_framework/src/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-314.pyc new file mode 100644 index 00000000..82a2a06d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/gateways/__pycache__/mcp_gateway_client.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..17a4e0e0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/client.cpython-313.pyc new file mode 100644 index 00000000..8d949d94 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/client.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/config.cpython-313.pyc b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/config.cpython-313.pyc new file mode 100644 index 00000000..1cda59f7 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/config.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..c00fbcd3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/router.cpython-313.pyc b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/router.cpython-313.pyc new file mode 100644 index 00000000..5c36a51a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/router.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/session_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/session_store.cpython-313.pyc new file mode 100644 index 00000000..f29f409b Binary files /dev/null and b/libs/agent_framework/src/agent_framework/global_supervisor/__pycache__/session_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e6748692 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..78bb0ad7 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/base.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/base.cpython-313.pyc new file mode 100644 index 00000000..2b0d27b2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/base.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/base.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/base.cpython-314.pyc new file mode 100644 index 00000000..bb9ca225 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/base.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/config_loader.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/config_loader.cpython-313.pyc new file mode 100644 index 00000000..fef46f5f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/config_loader.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/config_loader.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/config_loader.cpython-314.pyc new file mode 100644 index 00000000..66e624fd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/config_loader.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/custom_rails.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/custom_rails.cpython-313.pyc new file mode 100644 index 00000000..f232e066 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/custom_rails.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/custom_rails.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/custom_rails.cpython-314.pyc new file mode 100644 index 00000000..773b7140 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/custom_rails.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/executor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/executor.cpython-313.pyc new file mode 100644 index 00000000..20cae0e9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/executor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-313.pyc new file mode 100644 index 00000000..3163328a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-314.pyc new file mode 100644 index 00000000..85d2efc5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/framework_llm_client.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/langgraph_adapters.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/langgraph_adapters.cpython-313.pyc new file mode 100644 index 00000000..8358bbd1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/langgraph_adapters.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc new file mode 100644 index 00000000..8d8f919a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-314.pyc new file mode 100644 index 00000000..f3de0d04 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/llm_rails.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/output_supervisor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/output_supervisor.cpython-313.pyc new file mode 100644 index 00000000..548ec054 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/output_supervisor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/output_supervisor.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/output_supervisor.cpython-314.pyc new file mode 100644 index 00000000..00e048cb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/output_supervisor.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/parallel_executor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/parallel_executor.cpython-313.pyc new file mode 100644 index 00000000..e3641b6a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/parallel_executor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/parallel_executor.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/parallel_executor.cpython-314.pyc new file mode 100644 index 00000000..c6af641d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/parallel_executor.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc new file mode 100644 index 00000000..1e5a9b96 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-314.pyc new file mode 100644 index 00000000..ad982155 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/pipeline.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_action.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_action.cpython-313.pyc new file mode 100644 index 00000000..d80bc2d3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_action.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_action.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_action.cpython-314.pyc new file mode 100644 index 00000000..1f21200f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_action.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc new file mode 100644 index 00000000..ac1ae631 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-314.pyc new file mode 100644 index 00000000..2b6383ca Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_decision.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc new file mode 100644 index 00000000..32fb0ab1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-314.pyc new file mode 100644 index 00000000..84103c52 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rail_result.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rails.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rails.cpython-313.pyc new file mode 100644 index 00000000..c5b5b845 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rails.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rails.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rails.cpython-314.pyc new file mode 100644 index 00000000..ada55196 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/__pycache__/rails.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..1bfc7a6a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..0e2103da Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-313.pyc new file mode 100644 index 00000000..3916d89d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-314.pyc new file mode 100644 index 00000000..6335a222 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/_compat.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/config.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/config.cpython-313.pyc new file mode 100644 index 00000000..1e3b36da Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/config.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc new file mode 100644 index 00000000..e818798a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-314.pyc new file mode 100644 index 00000000..57e5e6a9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contestation_validation.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc new file mode 100644 index 00000000..03726731 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-314.pyc new file mode 100644 index 00000000..9a38d414 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/contracts.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc new file mode 100644 index 00000000..b21b72b2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-314.pyc new file mode 100644 index 00000000..bd35ca0f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/input_size.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-313.pyc new file mode 100644 index 00000000..b15f86c9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-314.pyc new file mode 100644 index 00000000..6c7b8d21 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_adapter.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc new file mode 100644 index 00000000..9c8fbc94 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-314.pyc new file mode 100644 index 00000000..f8f9d1c4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_client.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc new file mode 100644 index 00000000..78bb173b Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-314.pyc new file mode 100644 index 00000000..d220e22e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/llm_rails.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-313.pyc new file mode 100644 index 00000000..3d364730 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-314.pyc new file mode 100644 index 00000000..b66611a4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/output_sanitization.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-313.pyc new file mode 100644 index 00000000..324b0fb5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-314.pyc new file mode 100644 index 00000000..f32bdd76 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/__pycache__/pipeline.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..92693d1d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..2eb5407f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc new file mode 100644 index 00000000..24514e29 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-314.pyc new file mode 100644 index 00000000..2e8a98ce Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/_context.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-313.pyc new file mode 100644 index 00000000..c8eb5e00 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-314.pyc new file mode 100644 index 00000000..8aa6d650 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ausencia_oferta_proativa.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc new file mode 100644 index 00000000..acdb4fbd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-314.pyc new file mode 100644 index 00000000..6a20d0fa Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/coerencia.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc new file mode 100644 index 00000000..2eea70b1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-314.pyc new file mode 100644 index 00000000..3481c088 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_in.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc new file mode 100644 index 00000000..2b40e1b0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc.128272546232176 b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-313.pyc.128272546232176 new file mode 100644 index 00000000..e69de29b diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-314.pyc new file mode 100644 index 00000000..3974ac0f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/dlex_out.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-313.pyc new file mode 100644 index 00000000..37cae7bb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-314.pyc new file mode 100644 index 00000000..42746422 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fallback.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc new file mode 100644 index 00000000..684c4167 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-314.pyc new file mode 100644 index 00000000..efcf677c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/fraseologia.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc new file mode 100644 index 00000000..1122b7b6 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-314.pyc new file mode 100644 index 00000000..32c3c9b4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/out_of_scope.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc new file mode 100644 index 00000000..0fca1941 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-314.pyc new file mode 100644 index 00000000..5eebc604 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/pinj.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-313.pyc new file mode 100644 index 00000000..6bfe4951 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-314.pyc new file mode 100644 index 00000000..e96207b2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/ragsec.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-313.pyc new file mode 100644 index 00000000..9f2d9a96 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-314.pyc new file mode 100644 index 00000000..e13b37ad Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/revprec.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/safe_out.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/safe_out.cpython-313.pyc new file mode 100644 index 00000000..2774d2dd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/safe_out.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-313.pyc new file mode 100644 index 00000000..831d03ac Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-314.pyc new file mode 100644 index 00000000..5d569726 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/tox.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc new file mode 100644 index 00000000..998cae13 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-314.pyc new file mode 100644 index 00000000..451b2728 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/__pycache__/toxicidade_output.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..81b6a1f9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/supervision_template.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/supervision_template.cpython-313.pyc new file mode 100644 index 00000000..8cf6db9c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/supervision_template.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/tts_rules.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/tts_rules.cpython-313.pyc new file mode 100644 index 00000000..99288c8a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/prompts/shared/__pycache__/tts_rules.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..aa9d5999 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..1726df73 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-313.pyc new file mode 100644 index 00000000..1013767c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-314.pyc new file mode 100644 index 00000000..0e6fb0c9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/alcada.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc new file mode 100644 index 00000000..f4a65628 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-314.pyc new file mode 100644 index 00000000..cd8b0c9e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/anatel.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-313.pyc new file mode 100644 index 00000000..27d36a48 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-314.pyc new file mode 100644 index 00000000..398e18a0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/confirmation.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-313.pyc new file mode 100644 index 00000000..a5045828 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-314.pyc new file mode 100644 index 00000000..3c349030 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_in.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-313.pyc new file mode 100644 index 00000000..4b1e1f9d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-314.pyc new file mode 100644 index 00000000..34bb605e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/dlex_out.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc new file mode 100644 index 00000000..d721fe49 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-314.pyc new file mode 100644 index 00000000..1da544c4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/ragsec.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc new file mode 100644 index 00000000..7973b2a7 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-314.pyc new file mode 100644 index 00000000..807ecfeb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/revprec.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-313.pyc new file mode 100644 index 00000000..a7e0e360 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-314.pyc new file mode 100644 index 00000000..00de5433 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/__pycache__/tox.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..da950c01 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/correspondencia_item.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/correspondencia_item.cpython-313.pyc new file mode 100644 index 00000000..d6a00dc1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/correspondencia_item.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/groundedness.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/groundedness.cpython-313.pyc new file mode 100644 index 00000000..1308c952 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/groundedness.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/intencao_cancelar.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/intencao_cancelar.cpython-313.pyc new file mode 100644 index 00000000..db9779ed Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/intencao_cancelar.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/quantidade_coerente.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/quantidade_coerente.cpython-313.pyc new file mode 100644 index 00000000..6d3357e4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/quantidade_coerente.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/servico_correto.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/servico_correto.cpython-313.pyc new file mode 100644 index 00000000..fbe5429a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/servico_correto.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/verbalizacao_prematura.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/verbalizacao_prematura.cpython-313.pyc new file mode 100644 index 00000000..f0cbbe33 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rails/supervision/__pycache__/verbalizacao_prematura.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..526b5cf1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..29d0b959 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-313.pyc new file mode 100644 index 00000000..0c9b4c37 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-314.pyc new file mode 100644 index 00000000..77f59381 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/alcada.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/oos_blocklist.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/oos_blocklist.cpython-313.pyc new file mode 100644 index 00000000..a8d83f4e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/oos_blocklist.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc new file mode 100644 index 00000000..2d7ea502 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-314.pyc new file mode 100644 index 00000000..553ba623 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/pinj_patterns.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-313.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-313.pyc new file mode 100644 index 00000000..4e2b23b0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-314.pyc b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-314.pyc new file mode 100644 index 00000000..0e597824 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/guardrails/calibrated/rules/__pycache__/tox_blocklist.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..79439883 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..94d0a627 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/mcp_mapper.cpython-313.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/mcp_mapper.cpython-313.pyc new file mode 100644 index 00000000..1fffb81f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/mcp_mapper.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/mcp_mapper.cpython-314.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/mcp_mapper.cpython-314.pyc new file mode 100644 index 00000000..01486b5c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/mcp_mapper.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..b015c14b Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/models.cpython-314.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/models.cpython-314.pyc new file mode 100644 index 00000000..42bb4a31 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/models.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/resolver.cpython-313.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/resolver.cpython-313.pyc new file mode 100644 index 00000000..4e40edf3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/resolver.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/identity/__pycache__/resolver.cpython-314.pyc b/libs/agent_framework/src/agent_framework/identity/__pycache__/resolver.cpython-314.pyc new file mode 100644 index 00000000..33d85369 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/identity/__pycache__/resolver.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..2c9423c8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..8d81487b Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/__pycache__/judge.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/__pycache__/judge.cpython-313.pyc new file mode 100644 index 00000000..5b6c9bea Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/__pycache__/judge.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/__pycache__/judge.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/__pycache__/judge.cpython-314.pyc new file mode 100644 index 00000000..7a77062d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/__pycache__/judge.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a8f8bd44 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..cd289340 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/_compat.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/_compat.cpython-313.pyc new file mode 100644 index 00000000..f430abb6 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/_compat.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-313.pyc new file mode 100644 index 00000000..da332e3a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-314.pyc new file mode 100644 index 00000000..b1a58d00 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/llm_client.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..8a144360 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..1e1a85bd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..524d2fa8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-313.pyc new file mode 100644 index 00000000..0569e929 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-314.pyc new file mode 100644 index 00000000..d4fa79eb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/aluc.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-313.pyc new file mode 100644 index 00000000..ee50b32c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-314.pyc new file mode 100644 index 00000000..f7caec67 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/csi.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-313.pyc new file mode 100644 index 00000000..7487f111 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-314.pyc new file mode 100644 index 00000000..5225c547 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/fallback.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-313.pyc new file mode 100644 index 00000000..cdc86752 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-314.pyc new file mode 100644 index 00000000..d37df005 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/rqlt.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-313.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-313.pyc new file mode 100644 index 00000000..e915a970 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-314.pyc b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-314.pyc new file mode 100644 index 00000000..82d78778 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/judges/calibrated/prompts/__pycache__/vctn.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..914bae72 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..92b06624 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/base.cpython-313.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/base.cpython-313.pyc new file mode 100644 index 00000000..05e9824a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/base.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/base.cpython-314.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/base.cpython-314.pyc new file mode 100644 index 00000000..612655a4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/base.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/profile_resolver.cpython-313.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/profile_resolver.cpython-313.pyc new file mode 100644 index 00000000..edc92cf4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/profile_resolver.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/profile_resolver.cpython-314.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/profile_resolver.cpython-314.pyc new file mode 100644 index 00000000..763301ff Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/profile_resolver.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/providers.cpython-313.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/providers.cpython-313.pyc new file mode 100644 index 00000000..b551d192 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/providers.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/providers.cpython-314.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/providers.cpython-314.pyc new file mode 100644 index 00000000..3b8a7878 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/providers.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/structured_output.cpython-313.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/structured_output.cpython-313.pyc new file mode 100644 index 00000000..83898b8e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/structured_output.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/types.cpython-313.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/types.cpython-313.pyc new file mode 100644 index 00000000..94ead776 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/types.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/llm/__pycache__/types.cpython-314.pyc b/libs/agent_framework/src/agent_framework/llm/__pycache__/types.cpython-314.pyc new file mode 100644 index 00000000..6ab0fe25 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/llm/__pycache__/types.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..21ce5a3a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..b9ca1a86 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/client.cpython-313.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/client.cpython-313.pyc new file mode 100644 index 00000000..07e23de3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/client.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/client.cpython-314.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/client.cpython-314.pyc new file mode 100644 index 00000000..a28d6d05 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/client.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..a8a2df48 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/models.cpython-314.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/models.cpython-314.pyc new file mode 100644 index 00000000..dd643d26 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/models.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/registry.cpython-313.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/registry.cpython-313.pyc new file mode 100644 index 00000000..9913bbf6 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/registry.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/registry.cpython-314.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/registry.cpython-314.pyc new file mode 100644 index 00000000..9bd592a5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/registry.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_policy.cpython-313.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_policy.cpython-313.pyc new file mode 100644 index 00000000..3a3a8c72 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_policy.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_policy.cpython-314.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_policy.cpython-314.pyc new file mode 100644 index 00000000..861d005a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_policy.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_router.cpython-313.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_router.cpython-313.pyc new file mode 100644 index 00000000..ecc2d0cf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_router.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_router.cpython-314.pyc b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_router.cpython-314.pyc new file mode 100644 index 00000000..ca2966a5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/mcp/__pycache__/tool_router.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f8e01ee5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..cf4b7753 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_extractor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_extractor.cpython-313.pyc new file mode 100644 index 00000000..13860610 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_extractor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_extractor.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_extractor.cpython-314.pyc new file mode 100644 index 00000000..0346f895 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_extractor.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_memory.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_memory.cpython-313.pyc new file mode 100644 index 00000000..6aa97e0f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_memory.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_memory.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_memory.cpython-314.pyc new file mode 100644 index 00000000..828229ca Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_memory.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_models.cpython-313.pyc new file mode 100644 index 00000000..5f9e9dab Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_models.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_models.cpython-314.pyc new file mode 100644 index 00000000..4d8e11a9 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_models.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_store.cpython-313.pyc new file mode 100644 index 00000000..36f94e18 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_store.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_store.cpython-314.pyc new file mode 100644 index 00000000..c8ab6e0d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/long_term_store.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/message_history.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/message_history.cpython-313.pyc new file mode 100644 index 00000000..ade5aed4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/message_history.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/message_history.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/message_history.cpython-314.pyc new file mode 100644 index 00000000..d5f245cb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/message_history.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_memory.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_memory.cpython-313.pyc new file mode 100644 index 00000000..3e8188b1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_memory.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_memory.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_memory.cpython-314.pyc new file mode 100644 index 00000000..046b1d97 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_memory.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_store.cpython-313.pyc new file mode 100644 index 00000000..5f3ce0d4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_store.cpython-314.pyc b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_store.cpython-314.pyc new file mode 100644 index 00000000..8e8c46b6 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/memory/__pycache__/summary_store.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/models/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/models/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..3fa4f458 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/models/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/models/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/models/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..158dc319 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/models/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/models/__pycache__/identity.cpython-313.pyc b/libs/agent_framework/src/agent_framework/models/__pycache__/identity.cpython-313.pyc new file mode 100644 index 00000000..c273cb37 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/models/__pycache__/identity.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/models/__pycache__/identity.cpython-314.pyc b/libs/agent_framework/src/agent_framework/models/__pycache__/identity.cpython-314.pyc new file mode 100644 index 00000000..669b49e5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/models/__pycache__/identity.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/models/__pycache__/session.cpython-313.pyc b/libs/agent_framework/src/agent_framework/models/__pycache__/session.cpython-313.pyc new file mode 100644 index 00000000..142868d5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/models/__pycache__/session.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/models/__pycache__/session.cpython-314.pyc b/libs/agent_framework/src/agent_framework/models/__pycache__/session.cpython-314.pyc new file mode 100644 index 00000000..27631f27 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/models/__pycache__/session.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..3095e2ed Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..48009c3a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/code_mapper.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/code_mapper.cpython-313.pyc new file mode 100644 index 00000000..ff505671 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/code_mapper.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/code_mapper.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/code_mapper.cpython-314.pyc new file mode 100644 index 00000000..721e0f6f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/code_mapper.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/context.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/context.cpython-313.pyc new file mode 100644 index 00000000..0a8326bf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/context.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/context.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/context.cpython-314.pyc new file mode 100644 index 00000000..283fa670 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/context.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/control_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/control_events.cpython-313.pyc new file mode 100644 index 00000000..42f45e68 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/control_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/decorators.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/decorators.cpython-313.pyc new file mode 100644 index 00000000..aa273b07 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/decorators.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/event_bus.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/event_bus.cpython-313.pyc new file mode 100644 index 00000000..4dd047fb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/event_bus.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/event_bus.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/event_bus.cpython-314.pyc new file mode 100644 index 00000000..38824de4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/event_bus.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/grl_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/grl_events.cpython-313.pyc new file mode 100644 index 00000000..aaeab242 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/grl_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/guardrail_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/guardrail_events.cpython-313.pyc new file mode 100644 index 00000000..f8b4db19 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/guardrail_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/guardrail_events.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/guardrail_events.cpython-314.pyc new file mode 100644 index 00000000..49ca9cdc Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/guardrail_events.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/ic_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/ic_events.cpython-313.pyc new file mode 100644 index 00000000..1737199e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/ic_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/ic_events.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/ic_events.cpython-314.pyc new file mode 100644 index 00000000..054226b7 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/ic_events.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/informational_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/informational_events.cpython-313.pyc new file mode 100644 index 00000000..8295681d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/informational_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/judge_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/judge_events.cpython-313.pyc new file mode 100644 index 00000000..0adfa30d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/judge_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/judge_events.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/judge_events.cpython-314.pyc new file mode 100644 index 00000000..c69dff5f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/judge_events.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/langfuse_enterprise.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/langfuse_enterprise.cpython-313.pyc new file mode 100644 index 00000000..228abc6d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/langfuse_enterprise.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-313.pyc new file mode 100644 index 00000000..594ea750 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-314.pyc new file mode 100644 index 00000000..a31f9204 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/langgraph_telemetry.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/llm_advisors.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/llm_advisors.cpython-313.pyc new file mode 100644 index 00000000..fe74b6de Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/llm_advisors.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/llm_advisors.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/llm_advisors.cpython-314.pyc new file mode 100644 index 00000000..3ff69f78 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/llm_advisors.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_contract.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_contract.cpython-313.pyc new file mode 100644 index 00000000..fb73ce38 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_contract.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_contract.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_contract.cpython-314.pyc new file mode 100644 index 00000000..b42cb531 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_contract.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_events.cpython-313.pyc new file mode 100644 index 00000000..3471004f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_otel.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_otel.cpython-313.pyc new file mode 100644 index 00000000..7e18ce6c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_otel.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_otel.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_otel.cpython-314.pyc new file mode 100644 index 00000000..e5208bbf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/noc_otel.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/observer.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/observer.cpython-313.pyc new file mode 100644 index 00000000..8b8e1e10 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/observer.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/observer.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/observer.cpython-314.pyc new file mode 100644 index 00000000..b6d9d520 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/observer.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/otel.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/otel.cpython-313.pyc new file mode 100644 index 00000000..ef635b56 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/otel.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/otel.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/otel.cpython-314.pyc new file mode 100644 index 00000000..c82d9a00 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/otel.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_events.cpython-313.pyc new file mode 100644 index 00000000..a877ac2c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_events.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_events.cpython-314.pyc new file mode 100644 index 00000000..5024ce92 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_events.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_exporter.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_exporter.cpython-313.pyc new file mode 100644 index 00000000..a7df1984 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/streaming_exporter.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/telemetry.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/telemetry.cpython-313.pyc new file mode 100644 index 00000000..6d765162 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/telemetry.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/telemetry.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/telemetry.cpython-314.pyc new file mode 100644 index 00000000..328363c3 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/telemetry.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/tim_backoffice_contract.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/tim_backoffice_contract.cpython-313.pyc new file mode 100644 index 00000000..1a5f3fc0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/tim_backoffice_contract.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/token_cost.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/token_cost.cpython-313.pyc new file mode 100644 index 00000000..24460255 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/token_cost.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/token_cost.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/token_cost.cpython-314.pyc new file mode 100644 index 00000000..527e74dd Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/token_cost.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/workflow_events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/workflow_events.cpython-313.pyc new file mode 100644 index 00000000..f503e3a1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/workflow_events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/observability/__pycache__/workflow_events.cpython-314.pyc b/libs/agent_framework/src/agent_framework/observability/__pycache__/workflow_events.cpython-314.pyc new file mode 100644 index 00000000..e1b6ed0d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/observability/__pycache__/workflow_events.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/oci/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/oci/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..acd781af Binary files /dev/null and b/libs/agent_framework/src/agent_framework/oci/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/oci/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/oci/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..a0dbad2e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/oci/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/oci/__pycache__/auth.cpython-313.pyc b/libs/agent_framework/src/agent_framework/oci/__pycache__/auth.cpython-313.pyc new file mode 100644 index 00000000..2af4386c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/oci/__pycache__/auth.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/oci/__pycache__/auth.cpython-314.pyc b/libs/agent_framework/src/agent_framework/oci/__pycache__/auth.cpython-314.pyc new file mode 100644 index 00000000..777bee6f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/oci/__pycache__/auth.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..733a8d0f Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..9d1a06ec Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/mongodb_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/mongodb_store.cpython-313.pyc new file mode 100644 index 00000000..763cec20 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/mongodb_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/oracle_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/oracle_store.cpython-313.pyc new file mode 100644 index 00000000..e56a6369 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/oracle_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/oracle_store.cpython-314.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/oracle_store.cpython-314.pyc new file mode 100644 index 00000000..f0ca36fc Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/oracle_store.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/sqlite_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/sqlite_store.cpython-313.pyc new file mode 100644 index 00000000..cb0ebebe Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/sqlite_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/persistence/__pycache__/sqlite_store.cpython-314.pyc b/libs/agent_framework/src/agent_framework/persistence/__pycache__/sqlite_store.cpython-314.pyc new file mode 100644 index 00000000..af469be1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/persistence/__pycache__/sqlite_store.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/presentation/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..6f0c89e4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/presentation/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/presentation/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..fd21b0dc Binary files /dev/null and b/libs/agent_framework/src/agent_framework/presentation/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/presentation/__pycache__/renderers.cpython-313.pyc b/libs/agent_framework/src/agent_framework/presentation/__pycache__/renderers.cpython-313.pyc new file mode 100644 index 00000000..1968a29d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/presentation/__pycache__/renderers.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/presentation/__pycache__/renderers.cpython-314.pyc b/libs/agent_framework/src/agent_framework/presentation/__pycache__/renderers.cpython-314.pyc new file mode 100644 index 00000000..5f59fa15 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/presentation/__pycache__/renderers.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..c9d635ac Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..a672562d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/embedding_provider.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/embedding_provider.cpython-313.pyc new file mode 100644 index 00000000..bdf965d5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/embedding_provider.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/embedding_provider.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/embedding_provider.cpython-314.pyc new file mode 100644 index 00000000..64fed763 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/embedding_provider.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/graph_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/graph_store.cpython-313.pyc new file mode 100644 index 00000000..9b882352 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/graph_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/graph_store.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/graph_store.cpython-314.pyc new file mode 100644 index 00000000..de809b45 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/graph_store.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/ingest.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/ingest.cpython-313.pyc new file mode 100644 index 00000000..835fcdfa Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/ingest.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/ingest.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/ingest.cpython-314.pyc new file mode 100644 index 00000000..e2019397 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/ingest.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/kbdb_service.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/kbdb_service.cpython-313.pyc new file mode 100644 index 00000000..eaaa2b58 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/kbdb_service.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/kbdb_service.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/kbdb_service.cpython-314.pyc new file mode 100644 index 00000000..36a91cdc Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/kbdb_service.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/rag_service.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/rag_service.cpython-313.pyc new file mode 100644 index 00000000..937bb6e0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/rag_service.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/rag_service.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/rag_service.cpython-314.pyc new file mode 100644 index 00000000..60e42b2a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/rag_service.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/vector_store.cpython-313.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/vector_store.cpython-313.pyc new file mode 100644 index 00000000..0472c07d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/vector_store.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/rag/__pycache__/vector_store.cpython-314.pyc b/libs/agent_framework/src/agent_framework/rag/__pycache__/vector_store.cpython-314.pyc new file mode 100644 index 00000000..1d46a12a Binary files /dev/null and b/libs/agent_framework/src/agent_framework/rag/__pycache__/vector_store.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/repositories/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/repositories/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f3260451 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/repositories/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/repositories/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/repositories/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..f5377bab Binary files /dev/null and b/libs/agent_framework/src/agent_framework/repositories/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/repositories/__pycache__/session_repository.cpython-313.pyc b/libs/agent_framework/src/agent_framework/repositories/__pycache__/session_repository.cpython-313.pyc new file mode 100644 index 00000000..ae555f55 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/repositories/__pycache__/session_repository.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/repositories/__pycache__/session_repository.cpython-314.pyc b/libs/agent_framework/src/agent_framework/repositories/__pycache__/session_repository.cpython-314.pyc new file mode 100644 index 00000000..dc5d5ec1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/repositories/__pycache__/session_repository.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..3c9f6b05 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..4309a16d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/config_loader.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/config_loader.cpython-313.pyc new file mode 100644 index 00000000..fcbbfdfb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/config_loader.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/config_loader.cpython-314.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/config_loader.cpython-314.pyc new file mode 100644 index 00000000..ffa86a58 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/config_loader.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/continuity.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/continuity.cpython-313.pyc new file mode 100644 index 00000000..3bb32a12 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/continuity.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/continuity.cpython-314.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/continuity.cpython-314.pyc new file mode 100644 index 00000000..297d701c Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/continuity.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/enterprise_router.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/enterprise_router.cpython-313.pyc new file mode 100644 index 00000000..53b18084 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/enterprise_router.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/enterprise_router.cpython-314.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/enterprise_router.cpython-314.pyc new file mode 100644 index 00000000..eac189e4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/enterprise_router.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..6b7c1641 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/models.cpython-314.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/models.cpython-314.pyc new file mode 100644 index 00000000..27a483b5 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/models.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/multi_intent.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/multi_intent.cpython-313.pyc new file mode 100644 index 00000000..57aed7e1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/multi_intent.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/__pycache__/pending_topics.cpython-313.pyc b/libs/agent_framework/src/agent_framework/routing/__pycache__/pending_topics.cpython-313.pyc new file mode 100644 index 00000000..34d35240 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/routing/__pycache__/pending_topics.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/routing/enterprise_router.py b/libs/agent_framework/src/agent_framework/routing/enterprise_router.py index c435e329..ef8a569e 100644 --- a/libs/agent_framework/src/agent_framework/routing/enterprise_router.py +++ b/libs/agent_framework/src/agent_framework/routing/enterprise_router.py @@ -993,7 +993,8 @@ class EnterpriseRouter: # a perfectly valid parameter answer (for example an order identifier # utterance containing the generic word "pedido"). When semantic # classification is available, use the configured route only as a - # candidate hint and let the LLM decide CONTINUE vs SHIFT. This avoids + # candidate hint and let the LLM decide CONTINUE, SHIFT or ABANDON. + # This avoids # both failure modes: parameter extraction cannot hide a real new goal, # and a broad keyword cannot steal a legitimate parameter turn. if not (self.enable_llm_router and self.llm is not None): @@ -1042,7 +1043,11 @@ class EnterpriseRouter: "Use o significado da mensagem e o contexto transacional; não use palavras isoladas como regra. " "A extração dos parâmetros pendentes já foi tentada antes desta etapa e não consumiu o turno. " "Se ainda assim a mensagem for apenas uma resposta referencial/valor/nome ao dado pendente, retorne CONTINUE. " - "Se o usuário passou claramente a perseguir outro objetivo, retorne SHIFT e a nova intent permitida. " + "Se o usuário passou claramente a perseguir outro objetivo sem desistir explicitamente da ação atual, " + "retorne SHIFT e a nova intent permitida. " + "Se o usuário desistiu explicitamente da ação/transação atual, retorne ABANDON. " + "Quando ABANDON vier acompanhado de um novo objetivo, também informe intent e agent desse novo objetivo. " + "Quando for apenas abandono sem novo objetivo, intent e agent podem ser nulos. " "Retorne somente JSON válido com decision, intent, agent, confidence, reason." ) user = { @@ -1068,16 +1073,61 @@ class EnterpriseRouter: logger.warning("Falha ao avaliar mudança semântica de intent transacional via LLM: %s", exc) return None - if str(data.get("decision") or "").strip().upper() != "SHIFT": + decision_kind = str(data.get("decision") or "").strip().upper() + if decision_kind not in {"SHIFT", "ABANDON"}: return None confidence = float(data.get("confidence") or 0.0) if confidence < self.intent_shift_threshold: return None intent_name = str(data.get("intent") or "").strip() + agent = str(data.get("agent") or "").strip() + + if decision_kind == "ABANDON": + # ABANDON encerra explicitamente apenas a interação/transação ativa. + # Pending topics de outros objetivos não são apagados aqui. Quando a + # desistência também traz um novo objetivo, roteamos diretamente para + # ele; em abandono puro, usamos um intent de estado sem tools para que + # o agente atual apenas confirme o encerramento, sem rearmar a ação. + if intent_name: + agent = agent or str(self._agent_for_intent(intent_name) or "").strip() + if not agent: + return None + domain = self._domain_for_intent(intent_name) + mcp_tools = self._tools_for_intent(intent_name) + else: + agent = str(state_decision.agent or state_decision.route or "").strip() + if not agent: + return None + intent_name = "state:TRANSACTION_ABANDONED" + domain = None + mcp_tools = [] + + return RouteDecision( + route=agent, + agent=agent, + intent=intent_name, + confidence=confidence, + reason=str(data.get("reason") or "Abandono explícito da transação ativa."), + method="llm", + metadata={ + "transaction_interruption": "explicit_abandonment", + "interrupted_state": state_decision.next_state, + "interrupted_agent": state_decision.agent, + "interrupted_intent": started_intent or previous_intent, + "interruption_source": "semantic_classifier", + "configured_routing_hint": ( + configured_candidate.intent if configured_candidate is not None else None + ), + "raw_llm_answer": answer[:1000], + }, + domain=domain, + mcp_tools=mcp_tools, + ) + if not intent_name or intent_name == (started_intent or previous_intent): return None - agent = str(data.get("agent") or self._agent_for_intent(intent_name) or "").strip() + agent = agent or str(self._agent_for_intent(intent_name) or "").strip() if not agent: return None diff --git a/libs/agent_framework/src/agent_framework/routing/pending_topics.py b/libs/agent_framework/src/agent_framework/routing/pending_topics.py index 628b6647..1cd9f2ee 100644 --- a/libs/agent_framework/src/agent_framework/routing/pending_topics.py +++ b/libs/agent_framework/src/agent_framework/routing/pending_topics.py @@ -17,6 +17,7 @@ class PendingTopicDrain: mcp_results: list[dict[str, Any]] rag_results: list[dict[str, Any]] state_patch: dict[str, Any] + operation_results: dict[str, dict[str, Any]] _LIVE_TRANSACTION_STATUSES = { @@ -48,10 +49,19 @@ async def drain_pending_topics( ) -> PendingTopicDrain: """Drain read-only topics and retain anything that cannot finish safely.""" route = state.get("route_decision") if isinstance(state.get("route_decision"), dict) else {} - plan = route.get("metadata", {}).get("multi_intent_plan") - topics = list(state.get("pending_topics") or ( - plan.get("operations", [])[1:] if isinstance(plan, dict) else [] - )) + # Persisted plan has precedence because route_decision is intentionally + # replaced on continuation/confirmation turns. Keeping the plan outside + # route_decision lets a terminal primary operation be correlated back to + # its original operation_id after WAITING_*/AWAITING_CONFIRMATION. + plan = state.get("multi_intent_plan") + if not isinstance(plan, dict): + plan = route.get("metadata", {}).get("multi_intent_plan") + # `pending_topics` is the authoritative execution queue. Never rebuild it + # from the persisted multi-intent plan on continuation turns: the plan is + # durable read-only context, while pending_topics represents work that is + # still allowed to execute. Rehydrating from plan.operations would execute + # already-completed secondary operations again after a confirmation/resume. + topics = list(state.get("pending_topics") or []) remaining: list[dict[str, Any]] = [] handled = list(state.get("handled_topics") or []) combined_mcp_results = list(state.get("mcp_results") or []) @@ -59,8 +69,83 @@ async def drain_pending_topics( secondary_answers: list[str] = [] state_patch: dict[str, Any] = {} may_promote_deferred = not _has_live_transaction(state) - agent_responses = list(state.get("agent_responses") or []) - if not agent_responses and str(candidate or "").strip(): + + # agent_responses is only the visible projection for the current turn. + # Durable operation data must not be kept there because checkpointed + # responses from a previous plan would leak into later turns. + operation_results = dict(state.get("operation_results") or {}) + + # Promote the primary operation to durable operation_results only when it + # is terminal. On the first turn of a transactional operation the same + # candidate may merely be a confirmation prompt, so _has_live_transaction + # deliberately prevents an early/false COMPLETED record. + primary_operation = None + if isinstance(plan, dict): + operations = plan.get("operations") or [] + if operations and isinstance(operations[0], dict): + primary_operation = operations[0] + + def _primary_terminal_status() -> str | None: + if not isinstance(primary_operation, dict) or _has_live_transaction(state): + return None + terminal_map = { + "COMPLETED": "completed", + "FAILED": "failed", + "CANCELLED": "cancelled", + "BLOCKED": "blocked", + "OUT_OF_SCOPE": "out_of_scope", + } + active = state.get("active_transaction") + active_status = active.get("status") if isinstance(active, dict) else None + tx_status = str(active_status or state.get("transaction_status") or "").upper() + if tx_status in terminal_map: + return terminal_map[tx_status] + + # Workflow-backed MCP results commonly carry the terminal status under + # result.status instead of transaction_status. Prefer the most recent + # current-turn result. + for evidence in reversed(list(state.get("mcp_results") or [])): + if not isinstance(evidence, dict): + continue + status = str(evidence.get("transaction_status") or "").upper() + result = evidence.get("result") + if not status and isinstance(result, dict): + status = str(result.get("status") or "").upper() + if status in terminal_map: + return terminal_map[status] + if evidence.get("ok") is False: + return "failed" + if evidence.get("ok") is True: + return "completed" + + # Read-only/non-tool primaries are terminal when the agent has produced + # a candidate and there is no live transaction latch. + if not (primary_operation.get("tools") or []): + return "completed" + return None + + primary_status = _primary_terminal_status() + if primary_status: + operation_id = str(primary_operation.get("operation_id") or "").strip() + if operation_id: + operation_results[operation_id] = { + "operation_id": operation_id, + "plan_id": plan.get("plan_id") if isinstance(plan, dict) else None, + "agent": primary_operation.get("agent"), + "intent": primary_operation.get("intent"), + "domain": primary_operation.get("domain"), + "source_text": str(primary_operation.get("source_text") or "").strip(), + "status": primary_status, + "answer": str(candidate or "").strip(), + "mcp_results": list(state.get("mcp_results") or []), + "rag_results": list(state.get("rag_results") or []), + "transaction_status": state.get("transaction_status"), + "transaction_pre_validation": state.get("transaction_pre_validation"), + "transaction_evidence": list(state.get("transaction_evidence") or []), + } + + agent_responses: list[dict[str, Any]] = [] + if str(candidate or "").strip(): primary_agent = str( state.get("active_agent") or state.get("route") @@ -76,7 +161,30 @@ async def drain_pending_topics( "primary": True, "status": "completed", }) + current_plan_id = str(plan.get("plan_id") or "").strip() if isinstance(plan, dict) else "" + for topic in topics: + operation_id = str(topic.get("operation_id") or "").strip() + existing_result = operation_results.get(operation_id) if operation_id else None + if isinstance(existing_result, dict): + existing_status = str(existing_result.get("status") or "").strip().lower() + existing_plan_id = str(existing_result.get("plan_id") or "").strip() + same_plan = bool(current_plan_id and existing_plan_id == current_plan_id) + # Compatibility for results created before plan_id was persisted: + # only treat them as the same operation when the durable identity + # fields still match the currently queued topic. + if not existing_plan_id and current_plan_id: + same_plan = all( + str(existing_result.get(key) or "").strip() == str(topic.get(key) or "").strip() + for key in ("agent", "intent", "domain", "source_text") + ) + if same_plan and existing_status in {"completed", "failed", "cancelled", "blocked", "out_of_scope"}: + # Completed operations are durable read-only context. They can + # be consumed by later processing through operation_results, but + # are never dispatched or re-projected by the execution queue. + handled.append({**topic, "plan_id": current_plan_id or None, "status": existing_status}) + continue + disposition = topic.get("disposition") promoted = False if disposition == "defer": @@ -126,6 +234,9 @@ async def drain_pending_topics( "next_state": None, "workflow_id": None, "route_bypassed": False, + # Durable completed results are available to downstream agents as + # read-only operational context for dependency/parameter reuse. + "operation_results": operation_results, } try: result = await handler(child) @@ -154,6 +265,21 @@ async def drain_pending_topics( if rag_evidence not in combined_rag_results: combined_rag_results.append(rag_evidence) secondary_answers.append(answer) + operation_id = str(topic.get("operation_id") or "").strip() + if operation_id: + operation_results[operation_id] = { + "operation_id": operation_id, + "plan_id": current_plan_id or None, + "agent": topic.get("agent"), + "intent": topic.get("intent"), + "domain": topic.get("domain"), + "source_text": source_text, + "status": "completed", + "answer": answer, + "mcp_results": list((result or {}).get("mcp_results") or []), + "rag": (result or {}).get("rag"), + "rag_context": (result or {}).get("rag_context"), + } if promoted: agent_responses = [{**item, "primary": False} for item in agent_responses] agent_responses.append({ @@ -190,9 +316,14 @@ async def drain_pending_topics( }, }, }) - handled.append({**topic, "status": "completed"}) + handled.append({**topic, "plan_id": current_plan_id or None, "status": "completed"}) - secondary_answers.extend(MultiIntentPlanner.public_messages(plan)) + # Public planner messages belong to the turn that created the plan. A + # persisted plan may be read on later confirmation/resume turns, but its + # presentation messages must not be emitted again. + route_plan = ((route.get("metadata") or {}).get("multi_intent_plan") if isinstance(route, dict) else None) + if isinstance(route_plan, dict): + secondary_answers.extend(MultiIntentPlanner.public_messages(route_plan)) unique = [] for answer in secondary_answers: if answer and answer.casefold() not in candidate.casefold() and answer not in unique: @@ -208,4 +339,5 @@ async def drain_pending_topics( mcp_results=combined_mcp_results, rag_results=combined_rag_results, state_patch=state_patch, + operation_results=operation_results, ) diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..0a6e6f46 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..6e59bce2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/agent_runtime.cpython-313.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/agent_runtime.cpython-313.pyc new file mode 100644 index 00000000..2fa877d0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/agent_runtime.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/agent_runtime.cpython-314.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/agent_runtime.cpython-314.pyc new file mode 100644 index 00000000..660e3228 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/agent_runtime.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_input.cpython-313.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_input.cpython-313.pyc new file mode 100644 index 00000000..4ca250eb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_input.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_parameters.cpython-313.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_parameters.cpython-313.pyc new file mode 100644 index 00000000..359fe755 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_parameters.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_parameters.cpython-314.pyc b/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_parameters.cpython-314.pyc new file mode 100644 index 00000000..ddee35ac Binary files /dev/null and b/libs/agent_framework/src/agent_framework/runtime/__pycache__/transaction_parameters.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/runtime/agent_runtime.py b/libs/agent_framework/src/agent_framework/runtime/agent_runtime.py index 62201b01..3fa365af 100644 --- a/libs/agent_framework/src/agent_framework/runtime/agent_runtime.py +++ b/libs/agent_framework/src/agent_framework/runtime/agent_runtime.py @@ -365,6 +365,119 @@ class AgentRuntimeMixin: return False + @classmethod + def _mcp_workflows_terminal_for_rag(cls, mcp_results: list[dict[str, Any]]) -> tuple[bool, list[str]]: + """Detecta workflows do turno já encerrados para evitar retrieval pós-execução. + + A regra é intencionalmente estreita: somente resultados que se identificam + como workflow (``workflow_status`` em metadata ou ``workflow_name``/ + ``execution_id`` junto de ``status`` no payload) participam da decisão. + ``COMPLETED`` e ``FAILED`` são tratados igualmente como terminais para RAG. + Se não houver workflow detectado, o comportamento normal de RAG permanece. + """ + statuses: list[str] = [] + for item in mcp_results or []: + if not isinstance(item, dict): + continue + + metadata = item.get("metadata") + if isinstance(metadata, Mapping): + workflow_status = str(metadata.get("workflow_status") or "").strip().upper() + if workflow_status: + statuses.append(workflow_status) + continue + + result = item.get("result") + for mapping in cls._iter_mapping_values(result): + if not isinstance(mapping, Mapping): + continue + identifies_workflow = bool(mapping.get("workflow_name") or mapping.get("execution_id")) + status = str(mapping.get("status") or "").strip().upper() + if identifies_workflow and status: + statuses.append(status) + break + + if not statuses: + return False, [] + terminal = {"COMPLETED", "FAILED"} + return all(status in terminal for status in statuses), statuses + + @staticmethod + def _operation_result_is_terminal(result: Any) -> bool: + if not isinstance(result, Mapping): + return False + return str(result.get("status") or "").strip().lower() in {"completed", "failed"} + + @classmethod + def _has_pending_operations_for_rag(cls, state: dict[str, Any]) -> bool: + """Retorna True quando a fila executável ainda possui trabalho não terminal. + + ``pending_topics`` é a fonte de trabalho pendente. O ``multi_intent_plan`` + persistido é contexto/read-only e não pode ser reinterpretado como fila, + pois seus status originais podem permanecer ``pending`` após a conclusão. + ``operation_results`` evita que um tópico residual já terminal conte de novo. + """ + operation_results = state.get("operation_results") or {} + if not isinstance(operation_results, Mapping): + operation_results = {} + + pending_topics = state.get("pending_topics") + if not isinstance(pending_topics, (list, tuple)): + return False + for topic in pending_topics: + if not isinstance(topic, Mapping): + continue + op_id = str(topic.get("operation_id") or "").strip() + stored = operation_results.get(op_id) if op_id else None + if cls._operation_result_is_terminal(stored): + continue + status = str(topic.get("status") or "pending").strip().lower() + if status not in {"completed", "failed"}: + return True + return False + + @classmethod + def _has_unresolved_knowledge_operation_for_rag(cls, state: dict[str, Any]) -> bool: + """Detecta operação de knowledge ainda sem resultado terminal. + + O framework aceita marcadores explícitos (``knowledge``/``requires_rag``) + e, para compatibilidade com os intents existentes, a convenção ``knowledge`` + no nome do intent. Não há nomes de domínio ou de agentes hardcoded. + """ + operation_results = state.get("operation_results") or {} + if not isinstance(operation_results, Mapping): + operation_results = {} + + plan = state.get("multi_intent_plan") + if not isinstance(plan, Mapping): + route = state.get("route_decision") + if isinstance(route, Mapping): + metadata = route.get("metadata") + if isinstance(metadata, Mapping): + plan = metadata.get("multi_intent_plan") + if not isinstance(plan, Mapping): + return False + + for operation in plan.get("operations") or []: + if not isinstance(operation, Mapping): + continue + intent = str(operation.get("intent") or "").strip().lower() + is_knowledge = bool( + operation.get("knowledge") + or operation.get("requires_rag") + or "knowledge" in intent + ) + if not is_knowledge: + continue + op_id = str(operation.get("operation_id") or "").strip() + stored = operation_results.get(op_id) if op_id else None + if cls._operation_result_is_terminal(stored): + continue + status = str(operation.get("status") or "pending").strip().lower() + if status not in {"completed", "failed"}: + return True + return False + @classmethod def _mcp_llm_composition_directive(cls, mcp_results: list[dict[str, Any]]) -> tuple[bool, list[str]]: """Lê instruções de composição declaradas por tools/workflows. @@ -404,6 +517,33 @@ class AgentRuntimeMixin: mcp_results = state.get("mcp_results") or [] requires_rag, rag_query_override = self._mcp_rag_directive(mcp_results) explicit_mcp_sufficient = self._mcp_rag_sufficient(mcp_results) + # Política de precedência para o skip pós-workflow: + # 1) trabalho pendente mantém o processamento normal; + # 2) requires_rag=true força retrieval; + # 3) knowledge ainda não resolvido força retrieval; + # 4) só então workflows COMPLETED/FAILED podem suprimir RAG. + has_pending_operations = self._has_pending_operations_for_rag(state) + has_unresolved_knowledge = self._has_unresolved_knowledge_operation_for_rag(state) + workflows_terminal, workflow_statuses = self._mcp_workflows_terminal_for_rag(mcp_results) + if ( + not has_pending_operations + and not requires_rag + and not has_unresolved_knowledge + and workflows_terminal + ): + return "", { + "enabled": False, + "attempted": False, + "skipped": True, + "status": "skipped", + "reason": "all_turn_workflows_terminal", + "workflow_statuses": workflow_statuses, + "pending_operations": False, + "unresolved_knowledge_operation": False, + "required_by_tool": False, + "mcp_explicitly_sufficient": bool(explicit_mcp_sufficient), + "provider": getattr(settings, "RAG_PROVIDER", "standard"), + } if ( not requires_rag and bool(getattr(settings, "SKIP_RAG_WHEN_MCP_SUFFICIENT", True)) @@ -2882,6 +3022,9 @@ class AgentRuntimeMixin: def _clear_active_interaction_context_on_route_shift(self, state: dict[str, Any]) -> bool: """Invalidate active conversational latches when routing leaves their owner. + A semantic `explicit_abandonment` uses the same live-latch cleanup as a + route shift, but preserves a distinct audit reason/action. + This is deliberately generic. It compares the current route decision with the owner recorded by a paused workflow; it does not inspect domain, tool, workflow or intent names. Durable checkpoints/history remain intact. @@ -2905,10 +3048,12 @@ class AgentRuntimeMixin: if not (intent_changed or agent_changed): return False + interruption = str(route_metadata.get("transaction_interruption") or "").strip().lower() + explicit_abandonment = interruption == "explicit_abandonment" state["last_interrupted_domain_workflow"] = { **pending_workflow, "status": "CANCELLED", - "reason": "intent_shift", + "reason": "explicit_abandonment" if explicit_abandonment else "intent_shift", } state["pending_domain_workflow"] = None @@ -2931,7 +3076,11 @@ class AgentRuntimeMixin: state["transaction_pre_validation"] = None state["pending_tool_clarification"] = None state["tool_policy_result"] = { - "action": "cleared_by_intent_shift", + "action": ( + "cleared_by_explicit_abandonment" + if explicit_abandonment + else "cleared_by_intent_shift" + ), "workflow_execution_id": pending_workflow.get("execution_id"), } state["mcp_results"] = [] @@ -2964,17 +3113,21 @@ class AgentRuntimeMixin: self._normalize_transaction_lifecycle(state) # Uma transação em coleta/confirmação não pode aprisionar a sessão. O - # EnterpriseRouter é a única fonte para interrupção por mudança de intent. - # Não existe interpretação lexical de desistência no runtime: mudou a - # intent, a transação anterior é encerrada e seus latches são limpos. + # EnterpriseRouter é a única fonte para interrupção semântica: SHIFT ou + # ABANDON. Não existe interpretação lexical de desistência no runtime; o + # runtime apenas aplica a decisão do router e limpa os latches da ação. active_before_interruption = self._active_transaction(state) interruption = str(route_meta.get("transaction_interruption") or "").strip().lower() - if active_before_interruption and interruption == "intent_shift": + if active_before_interruption and interruption in {"intent_shift", "explicit_abandonment"}: interrupted_tool = active_before_interruption.get("tool_name") self._finish_active_transaction(state, "CANCELLED") state["transaction_pre_validation"] = None state["tool_policy_result"] = { - "action": "cancelled_by_intent_shift", + "action": ( + "cancelled_by_explicit_abandonment" + if interruption == "explicit_abandonment" + else "cancelled_by_intent_shift" + ), "tool_name": interrupted_tool, } diff --git a/libs/agent_framework/src/agent_framework/security/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/security/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..e4e83433 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/security/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/security/__pycache__/authentication.cpython-313.pyc b/libs/agent_framework/src/agent_framework/security/__pycache__/authentication.cpython-313.pyc new file mode 100644 index 00000000..b09249eb Binary files /dev/null and b/libs/agent_framework/src/agent_framework/security/__pycache__/authentication.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/security/__pycache__/factory.cpython-313.pyc b/libs/agent_framework/src/agent_framework/security/__pycache__/factory.cpython-313.pyc new file mode 100644 index 00000000..615bb375 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/security/__pycache__/factory.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/security/__pycache__/installer.cpython-313.pyc b/libs/agent_framework/src/agent_framework/security/__pycache__/installer.cpython-313.pyc new file mode 100644 index 00000000..aaed83ce Binary files /dev/null and b/libs/agent_framework/src/agent_framework/security/__pycache__/installer.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/security/__pycache__/middleware.cpython-313.pyc b/libs/agent_framework/src/agent_framework/security/__pycache__/middleware.cpython-313.pyc new file mode 100644 index 00000000..de845c0e Binary files /dev/null and b/libs/agent_framework/src/agent_framework/security/__pycache__/middleware.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/sse/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/sse/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..26baa626 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/sse/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/sse/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/sse/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..9ac09c33 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/sse/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/sse/__pycache__/events.cpython-313.pyc b/libs/agent_framework/src/agent_framework/sse/__pycache__/events.cpython-313.pyc new file mode 100644 index 00000000..c1716a17 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/sse/__pycache__/events.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/sse/__pycache__/events.cpython-314.pyc b/libs/agent_framework/src/agent_framework/sse/__pycache__/events.cpython-314.pyc new file mode 100644 index 00000000..b77449d8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/sse/__pycache__/events.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/supervisor/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..568462bf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/supervisor/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..60c412db Binary files /dev/null and b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/supervisor/__pycache__/router_supervisor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/router_supervisor.cpython-313.pyc new file mode 100644 index 00000000..3359cc74 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/router_supervisor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/supervisor/__pycache__/supervisor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/supervisor.cpython-313.pyc new file mode 100644 index 00000000..101f6020 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/supervisor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/supervisor/__pycache__/supervisor.cpython-314.pyc b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/supervisor.cpython-314.pyc new file mode 100644 index 00000000..13df78c2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/supervisor/__pycache__/supervisor.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/__init__.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..1ea33ed2 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/__init__.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/__init__.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..c074f711 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/__init__.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/graph.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/graph.cpython-313.pyc new file mode 100644 index 00000000..b7834f57 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/graph.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/graph.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/graph.cpython-314.pyc new file mode 100644 index 00000000..075d8fe1 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/graph.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/input_contract.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/input_contract.cpython-313.pyc new file mode 100644 index 00000000..e81dd4bf Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/input_contract.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/models.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/models.cpython-313.pyc new file mode 100644 index 00000000..b7a0b9f8 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/models.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/models.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/models.cpython-314.pyc new file mode 100644 index 00000000..3b48e642 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/models.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/registry.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/registry.cpython-313.pyc new file mode 100644 index 00000000..3f248383 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/registry.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/registry.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/registry.cpython-314.pyc new file mode 100644 index 00000000..55efa0a4 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/registry.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/repository.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/repository.cpython-313.pyc new file mode 100644 index 00000000..f14e44c0 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/repository.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/repository.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/repository.cpython-314.pyc new file mode 100644 index 00000000..8179873d Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/repository.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/runtime.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..5386cb34 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/runtime.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/runtime.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/runtime.cpython-314.pyc new file mode 100644 index 00000000..d9a32d43 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/runtime.cpython-314.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/tool_executor.cpython-313.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/tool_executor.cpython-313.pyc new file mode 100644 index 00000000..d5b2da55 Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/tool_executor.cpython-313.pyc differ diff --git a/libs/agent_framework/src/agent_framework/workflows/__pycache__/tool_executor.cpython-314.pyc b/libs/agent_framework/src/agent_framework/workflows/__pycache__/tool_executor.cpython-314.pyc new file mode 100644 index 00000000..ef439ebe Binary files /dev/null and b/libs/agent_framework/src/agent_framework/workflows/__pycache__/tool_executor.cpython-314.pyc differ diff --git a/scripts/sync_pending_topics_to_tuning.py b/scripts/sync_pending_topics_to_tuning.py index 26158899..397a1f9f 100644 --- a/scripts/sync_pending_topics_to_tuning.py +++ b/scripts/sync_pending_topics_to_tuning.py @@ -22,6 +22,11 @@ def update_state(path: Path) -> None: " handled_topics: list[dict[str, Any]]\n", path, ) + if " operation_results: dict[str, dict[str, Any]]" not in text: + marker = " handled_topics: list[dict[str, Any]]\n" + if marker in text: + text = text.replace(marker, marker + " operation_results: dict[str, dict[str, Any]]\n", 1) + if " rag_results: list[dict[str, Any]]" not in text: text = replace_once( text, diff --git a/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..f6a2b79f Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/__pycache__/__init__.cpython-314.pyc b/templates/agent_template_backend/app/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..4f344901 Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/__init__.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc b/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..08f8cb6c Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/main.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/__pycache__/main.cpython-314.pyc b/templates/agent_template_backend/app/__pycache__/main.cpython-314.pyc new file mode 100644 index 00000000..15378ed3 Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/main.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..8d7093df Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc b/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..31cdc3a5 Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/state.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/__pycache__/state.cpython-314.pyc b/templates/agent_template_backend/app/__pycache__/state.cpython-314.pyc new file mode 100644 index 00000000..642a1e4d Binary files /dev/null and b/templates/agent_template_backend/app/__pycache__/state.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc b/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..4e27b205 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-314.pyc b/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-314.pyc new file mode 100644 index 00000000..12a86967 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/billing_agent.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc b/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..803273eb Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-314.pyc b/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-314.pyc new file mode 100644 index 00000000..383d9630 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/orders_agent.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc b/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..104fb209 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-314.pyc b/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-314.pyc new file mode 100644 index 00000000..0f0b10e4 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/product_agent.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc b/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..eda48f56 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-314.pyc b/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-314.pyc new file mode 100644 index 00000000..df4ccb96 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/prompting.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc b/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..df7bf154 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-314.pyc b/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-314.pyc new file mode 100644 index 00000000..9545b887 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/runtime.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc b/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..7fbc59f0 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-314.pyc b/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-314.pyc new file mode 100644 index 00000000..54dbc3d0 Binary files /dev/null and b/templates/agent_template_backend/app/agents/__pycache__/support_agent.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..a6540ec7 Binary files /dev/null and b/templates/agent_template_backend/app/examples/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc b/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc new file mode 100644 index 00000000..8fc575e9 Binary files /dev/null and b/templates/agent_template_backend/app/examples/__pycache__/grl_examples.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc b/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc new file mode 100644 index 00000000..8253000a Binary files /dev/null and b/templates/agent_template_backend/app/examples/__pycache__/ic_examples.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc b/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc new file mode 100644 index 00000000..41a72082 Binary files /dev/null and b/templates/agent_template_backend/app/examples/__pycache__/mcp_examples.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc b/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc new file mode 100644 index 00000000..a8f3f887 Binary files /dev/null and b/templates/agent_template_backend/app/examples/__pycache__/noc_examples.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc b/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc new file mode 100644 index 00000000..3b7d6a83 Binary files /dev/null and b/templates/agent_template_backend/app/examples/__pycache__/observer_examples.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..9144c5b2 Binary files /dev/null and b/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-314.pyc b/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..021ac353 Binary files /dev/null and b/templates/agent_template_backend/app/observability/__pycache__/__init__.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..9495cf23 Binary files /dev/null and b/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-314.pyc b/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-314.pyc new file mode 100644 index 00000000..78794e78 Binary files /dev/null and b/templates/agent_template_backend/app/observability/__pycache__/telemetry_observer.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..9191fadd Binary files /dev/null and b/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-314.pyc b/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 00000000..128f7539 Binary files /dev/null and b/templates/agent_template_backend/app/presentation/__pycache__/__init__.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc b/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc new file mode 100644 index 00000000..32e74b95 Binary files /dev/null and b/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-314.pyc b/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-314.pyc new file mode 100644 index 00000000..6045cee7 Binary files /dev/null and b/templates/agent_template_backend/app/presentation/__pycache__/tool_renderers.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/state.py b/templates/agent_template_backend/app/state.py index e048cf13..0a3d0eda 100644 --- a/templates/agent_template_backend/app/state.py +++ b/templates/agent_template_backend/app/state.py @@ -43,6 +43,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/templates/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..d2173760 Binary files /dev/null and b/templates/agent_template_backend/app/workflow_actions/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc b/templates/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc new file mode 100644 index 00000000..9ec9aa1b Binary files /dev/null and b/templates/agent_template_backend/app/workflow_actions/__pycache__/devolucao.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..3515b5c1 Binary files /dev/null and b/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-314.pyc b/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-314.pyc new file mode 100644 index 00000000..7e6e5fcb Binary files /dev/null and b/templates/agent_template_backend/app/workflows/__pycache__/agent_graph.cpython-314.pyc differ diff --git a/templates/agent_template_backend/app/workflows/agent_graph.py b/templates/agent_template_backend/app/workflows/agent_graph.py index 34d9e069..3cd2435d 100644 --- a/templates/agent_template_backend/app/workflows/agent_graph.py +++ b/templates/agent_template_backend/app/workflows/agent_graph.py @@ -448,6 +448,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -605,6 +612,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -688,6 +696,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..eafedeeb Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 00000000..c13b42c4 Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/__pycache__/main.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc new file mode 100644 index 00000000..a8f0280d Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/__pycache__/mcp_gateway_client_factory.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc new file mode 100644 index 00000000..f856d0c4 Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/__pycache__/state.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc new file mode 100644 index 00000000..406206df Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/agents/__pycache__/billing_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc new file mode 100644 index 00000000..cbe2d5df Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/agents/__pycache__/orders_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc new file mode 100644 index 00000000..d394a5bf Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/agents/__pycache__/product_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc new file mode 100644 index 00000000..d96c6e4c Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/agents/__pycache__/prompting.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc new file mode 100644 index 00000000..0d395862 Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/agents/__pycache__/runtime.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc new file mode 100644 index 00000000..9dee7059 Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/agents/__pycache__/support_agent.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 00000000..359dee6e Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/observability/__pycache__/__init__.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc new file mode 100644 index 00000000..76a03bbd Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/observability/__pycache__/telemetry_observer.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/state.py b/templates/agent_template_backend_day_zero/app/state.py index b27c56ad..a65a343f 100644 --- a/templates/agent_template_backend_day_zero/app/state.py +++ b/templates/agent_template_backend_day_zero/app/state.py @@ -40,6 +40,8 @@ class AgentState(TypedDict, total=False): agent_responses: list[dict[str, Any]] pending_topics: list[dict[str, Any]] handled_topics: list[dict[str, Any]] + operation_results: dict[str, dict[str, Any]] + multi_intent_plan: dict[str, Any] active_agent: str route_bypassed: bool continuity_signal: dict[str, Any] diff --git a/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc b/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc new file mode 100644 index 00000000..31ea4a26 Binary files /dev/null and b/templates/agent_template_backend_day_zero/app/workflows/__pycache__/agent_graph.cpython-313.pyc differ diff --git a/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py b/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py index 75507f00..16ee2296 100644 --- a/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py +++ b/templates/agent_template_backend_day_zero/app/workflows/agent_graph.py @@ -446,6 +446,13 @@ class AgentWorkflow: if (decision.metadata or {}).get("multi_intent_plan") else list(state.get("pending_topics") or []) ), + # Durable correlation for the primary operation. route_decision + # is replaced by state routing on confirmation/resume turns. + "multi_intent_plan": ( + (decision.metadata or {}).get("multi_intent_plan") + or state.get("multi_intent_plan") + or {} + ), } async def billing_agent(self, state): @@ -603,6 +610,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, "output_guardrails_already_applied": False, @@ -686,6 +694,7 @@ class AgentWorkflow: "pending_topics": drained.pending_topics, "handled_topics": drained.handled_topics, "agent_responses": drained.agent_responses, + "operation_results": drained.operation_results, "mcp_results": drained.mcp_results, "rag_results": drained.rag_results, **drained.state_patch, diff --git a/tests/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..9f26c74c Binary files /dev/null and b/tests/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_agent_template_backend_safety_consistency.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_agent_template_backend_safety_consistency.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..203c1aaa Binary files /dev/null and b/tests/__pycache__/test_agent_template_backend_safety_consistency.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_aoferta_transaction_continuation.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_aoferta_transaction_continuation.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..be2a9639 Binary files /dev/null and b/tests/__pycache__/test_aoferta_transaction_continuation.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_compliance_protocol_expected_values.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_compliance_protocol_expected_values.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..547d6c39 Binary files /dev/null and b/tests/__pycache__/test_compliance_protocol_expected_values.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_contextual_reentry_transaction_parameters.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_contextual_reentry_transaction_parameters.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..87d39ac0 Binary files /dev/null and b/tests/__pycache__/test_contextual_reentry_transaction_parameters.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_dlex_out_expected_protocol_authorization.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_dlex_out_expected_protocol_authorization.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..53b3c203 Binary files /dev/null and b/tests/__pycache__/test_dlex_out_expected_protocol_authorization.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_expected_input_coherence_delegation.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_expected_input_coherence_delegation.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..6671a979 Binary files /dev/null and b/tests/__pycache__/test_expected_input_coherence_delegation.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_expected_input_semantic_classifier.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_expected_input_semantic_classifier.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..9ae409fc Binary files /dev/null and b/tests/__pycache__/test_expected_input_semantic_classifier.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_fraseologia_business_parameter_prompt.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_fraseologia_business_parameter_prompt.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..14867836 Binary files /dev/null and b/tests/__pycache__/test_fraseologia_business_parameter_prompt.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_generic_tool_response_presentation.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_generic_tool_response_presentation.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..9d92704e Binary files /dev/null and b/tests/__pycache__/test_generic_tool_response_presentation.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_judge_transaction_sampling.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_judge_transaction_sampling.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..e5a4371b Binary files /dev/null and b/tests/__pycache__/test_judge_transaction_sampling.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_mcp_parameter_extraction_runtime.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_mcp_parameter_extraction_runtime.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..c855ad64 Binary files /dev/null and b/tests/__pycache__/test_mcp_parameter_extraction_runtime.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_observer_cross_loop_deadlock_fix.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_observer_cross_loop_deadlock_fix.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..12210d63 Binary files /dev/null and b/tests/__pycache__/test_observer_cross_loop_deadlock_fix.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_paused_workflow_resume_precedence.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_paused_workflow_resume_precedence.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..d66326e1 Binary files /dev/null and b/tests/__pycache__/test_paused_workflow_resume_precedence.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_performance_optimizations.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_performance_optimizations.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..d35152ba Binary files /dev/null and b/tests/__pycache__/test_performance_optimizations.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_phraseology_rewrite_revalidation.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_phraseology_rewrite_revalidation.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..95d74350 Binary files /dev/null and b/tests/__pycache__/test_phraseology_rewrite_revalidation.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_route_stickiness_transaction_shift.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_route_stickiness_transaction_shift.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..f1635a55 Binary files /dev/null and b/tests/__pycache__/test_route_stickiness_transaction_shift.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_structured_output_parser.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_structured_output_parser.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..cecf5edf Binary files /dev/null and b/tests/__pycache__/test_structured_output_parser.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transaction_confirmation_customer_facing.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transaction_confirmation_customer_facing.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..d6311453 Binary files /dev/null and b/tests/__pycache__/test_transaction_confirmation_customer_facing.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transaction_explicit_abandonment_and_structural_candidate.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transaction_explicit_abandonment_and_structural_candidate.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..ec3b3223 Binary files /dev/null and b/tests/__pycache__/test_transaction_explicit_abandonment_and_structural_candidate.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transaction_explicit_abandonment_and_structural_candidate.cpython-313.pyc b/tests/__pycache__/test_transaction_explicit_abandonment_and_structural_candidate.cpython-313.pyc new file mode 100644 index 00000000..4636b040 Binary files /dev/null and b/tests/__pycache__/test_transaction_explicit_abandonment_and_structural_candidate.cpython-313.pyc differ diff --git a/tests/__pycache__/test_transaction_parameter_descriptions.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transaction_parameter_descriptions.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..44c4613f Binary files /dev/null and b/tests/__pycache__/test_transaction_parameter_descriptions.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transaction_parameter_llm_precedence.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transaction_parameter_llm_precedence.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..d728688f Binary files /dev/null and b/tests/__pycache__/test_transaction_parameter_llm_precedence.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transaction_state_regression_matrix.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transaction_state_regression_matrix.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..61bf31ba Binary files /dev/null and b/tests/__pycache__/test_transaction_state_regression_matrix.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transaction_state_router_interruption.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transaction_state_router_interruption.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..5be25124 Binary files /dev/null and b/tests/__pycache__/test_transaction_state_router_interruption.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transactional_tool_flow.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_transactional_tool_flow.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..155772f3 Binary files /dev/null and b/tests/__pycache__/test_transactional_tool_flow.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/__pycache__/test_transactional_tool_flow.cpython-313.pyc b/tests/__pycache__/test_transactional_tool_flow.cpython-313.pyc new file mode 100644 index 00000000..e3cdf074 Binary files /dev/null and b/tests/__pycache__/test_transactional_tool_flow.cpython-313.pyc differ diff --git a/tests/test_transaction_explicit_abandonment_and_structural_candidate.py b/tests/test_transaction_explicit_abandonment_and_structural_candidate.py index 9a2ea3cb..9a7caf8d 100644 --- a/tests/test_transaction_explicit_abandonment_and_structural_candidate.py +++ b/tests/test_transaction_explicit_abandonment_and_structural_candidate.py @@ -13,6 +13,14 @@ class _RouterLLM: prompt = messages[-1]["content"] if isinstance(messages[-1], dict) else str(messages[-1]) if kwargs.get("profile_name") == "transaction_parameter_extraction" or "pending_parameters:" in prompt: return json.dumps({"subject": None, "valor": None}) + if "nao quero mais cancelar" in prompt.lower() or "não quero mais cancelar" in prompt.lower(): + return json.dumps({ + "decision": "ABANDON", + "intent": None, + "agent": None, + "confidence": 0.99, + "reason": "abandono explícito sem novo objetivo", + }) if "esquece" in prompt.lower(): return json.dumps({ "decision": "ABANDON", @@ -101,9 +109,20 @@ async def test_generic_shift_does_not_interrupt_active_transaction(tmp_path): async def test_explicit_abandonment_can_leave_active_transaction(tmp_path): decision = await _router(tmp_path).route(_active_state("esquece isso, quero ver minha fatura")) assert decision.intent == "billing_invoice_explanation" + assert decision.agent == "billing_agent" assert decision.metadata["transaction_interruption"] == "explicit_abandonment" +@pytest.mark.asyncio +async def test_explicit_abandonment_without_new_goal_does_not_rearm_tool(tmp_path): + decision = await _router(tmp_path).route(_active_state("nao quero mais cancelar")) + assert decision.intent == "state:TRANSACTION_ABANDONED" + assert decision.agent == "contestacao_agent" + assert decision.mcp_tools == [] + assert decision.metadata["transaction_interruption"] == "explicit_abandonment" + assert decision.metadata["interrupted_intent"] == "contas_contestation" + + class _PolicyRouter: def __init__(self): self.registry = SimpleNamespace( @@ -296,3 +315,42 @@ async def test_initially_missing_subject_clear_still_allows_unique_anchored_cand assert rec["candidate_provenance"] == { "subject": "unique_anchored_evidence_block" } + + +class _AbandonRuntime(AgentRuntimeMixin): + def __init__(self): + self.tool_router = None + self.llm = None + + +@pytest.mark.asyncio +async def test_runtime_abandon_cancels_only_active_transaction_without_rearming_tool(): + runtime = _AbandonRuntime() + state = { + "sanitized_input": "nao quero mais cancelar", + "route_decision": { + "intent": "state:TRANSACTION_ABANDONED", + "agent": "orders_agent", + "metadata": {"transaction_interruption": "explicit_abandonment"}, + }, + "transaction_status": "COLLECTING_PARAMETERS", + "missing_parameters": ["order_id"], + "active_transaction": { + "tool_name": "cancelar_pedido", + "arguments": {}, + "status": "COLLECTING_PARAMETERS", + "started_from_intent": "retail_order_cancel", + }, + "selected_tool_call": {"tool_name": "cancelar_pedido", "arguments": {}}, + "pending_topics": [{"operation_id": "op-x", "intent": "other_pending_intent"}], + } + + results = await runtime.execute_tools_for_intent(state, tools=[]) + + assert results == [] + assert state["transaction_status"] == "CANCELLED" + assert state["active_transaction"] is None + assert state["selected_tool_call"] == {} + assert state["tool_policy_result"]["action"] == "cancelled_by_explicit_abandonment" + # ABANDON encerra a ação ativa; não apaga outras ações pendentes por efeito colateral. + assert state["pending_topics"] == [{"operation_id": "op-x", "intent": "other_pending_intent"}] diff --git a/tests/unit/__pycache__/test_agent_runtime.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_agent_runtime.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..05f0804d Binary files /dev/null and b/tests/unit/__pycache__/test_agent_runtime.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_authentication.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_authentication.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..f5b533dc Binary files /dev/null and b/tests/unit/__pycache__/test_authentication.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_authentication_policies.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_authentication_policies.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..669a59f7 Binary files /dev/null and b/tests/unit/__pycache__/test_authentication_policies.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_cache.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_cache.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..81702987 Binary files /dev/null and b/tests/unit/__pycache__/test_cache.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_cache_distributed.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_cache_distributed.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..9254699c Binary files /dev/null and b/tests/unit/__pycache__/test_cache_distributed.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_imports_compile.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_imports_compile.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..747a0d75 Binary files /dev/null and b/tests/unit/__pycache__/test_imports_compile.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_langgraph_checkpoint_interrupt_controlled.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_langgraph_checkpoint_interrupt_controlled.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..98335bb2 Binary files /dev/null and b/tests/unit/__pycache__/test_langgraph_checkpoint_interrupt_controlled.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_langgraph_checkpoint_runtime_config.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_langgraph_checkpoint_runtime_config.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..0037d7d6 Binary files /dev/null and b/tests/unit/__pycache__/test_langgraph_checkpoint_runtime_config.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_langgraph_checkpoint_runtime_config.cpython-313.pyc b/tests/unit/__pycache__/test_langgraph_checkpoint_runtime_config.cpython-313.pyc new file mode 100644 index 00000000..50642e2c Binary files /dev/null and b/tests/unit/__pycache__/test_langgraph_checkpoint_runtime_config.cpython-313.pyc differ diff --git a/tests/unit/__pycache__/test_langgraph_checkpoint_saver.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_langgraph_checkpoint_saver.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..5db2eac4 Binary files /dev/null and b/tests/unit/__pycache__/test_langgraph_checkpoint_saver.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_langgraph_telemetry.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_langgraph_telemetry.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..beb69f5d Binary files /dev/null and b/tests/unit/__pycache__/test_langgraph_telemetry.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_llm_rich_response.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_llm_rich_response.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..bdbb6ddd Binary files /dev/null and b/tests/unit/__pycache__/test_llm_rich_response.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_long_term_memory_autonomous.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_long_term_memory_autonomous.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..90691ca9 Binary files /dev/null and b/tests/unit/__pycache__/test_long_term_memory_autonomous.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_pubsub_analytics_publisher.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_pubsub_analytics_publisher.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..10f1143b Binary files /dev/null and b/tests/unit/__pycache__/test_pubsub_analytics_publisher.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_rag.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_rag.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..a851eae3 Binary files /dev/null and b/tests/unit/__pycache__/test_rag.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_rag_kbdb_provider.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_rag_kbdb_provider.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..ea9a16f6 Binary files /dev/null and b/tests/unit/__pycache__/test_rag_kbdb_provider.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_rag_oracle_sql_generation.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_rag_oracle_sql_generation.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..9710d2eb Binary files /dev/null and b/tests/unit/__pycache__/test_rag_oracle_sql_generation.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_rag_runtime_grounding.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_rag_runtime_grounding.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..9d570a9a Binary files /dev/null and b/tests/unit/__pycache__/test_rag_runtime_grounding.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_resilient_checkpointer.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_resilient_checkpointer.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..49b0a868 Binary files /dev/null and b/tests/unit/__pycache__/test_resilient_checkpointer.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_semantic_route_stickiness.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_semantic_route_stickiness.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..899f8ae5 Binary files /dev/null and b/tests/unit/__pycache__/test_semantic_route_stickiness.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_sse.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_sse.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..bfcfb418 Binary files /dev/null and b/tests/unit/__pycache__/test_sse.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_sse_replay_dedup.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_sse_replay_dedup.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..a82430aa Binary files /dev/null and b/tests/unit/__pycache__/test_sse_replay_dedup.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_telemetry_langfuse_compact.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_telemetry_langfuse_compact.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..3b71e865 Binary files /dev/null and b/tests/unit/__pycache__/test_telemetry_langfuse_compact.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_token_cost_enterprise.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_token_cost_enterprise.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..abcb3534 Binary files /dev/null and b/tests/unit/__pycache__/test_token_cost_enterprise.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_tool_policies.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_tool_policies.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..20bbb399 Binary files /dev/null and b/tests/unit/__pycache__/test_tool_policies.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_transactional_workflows.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_transactional_workflows.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..eaee4e80 Binary files /dev/null and b/tests/unit/__pycache__/test_transactional_workflows.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_transactional_workflows.cpython-313.pyc b/tests/unit/__pycache__/test_transactional_workflows.cpython-313.pyc new file mode 100644 index 00000000..afb7dd26 Binary files /dev/null and b/tests/unit/__pycache__/test_transactional_workflows.cpython-313.pyc differ diff --git a/tests/unit/__pycache__/test_workflow_runtime_diagnostics.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_workflow_runtime_diagnostics.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..484de46d Binary files /dev/null and b/tests/unit/__pycache__/test_workflow_runtime_diagnostics.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_workflow_static.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_workflow_static.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..dfdaa34c Binary files /dev/null and b/tests/unit/__pycache__/test_workflow_static.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/__pycache__/test_workflow_terminal_snapshot_semantics.cpython-313-pytest-9.0.2.pyc b/tests/unit/__pycache__/test_workflow_terminal_snapshot_semantics.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 00000000..f2157704 Binary files /dev/null and b/tests/unit/__pycache__/test_workflow_terminal_snapshot_semantics.cpython-313-pytest-9.0.2.pyc differ diff --git a/tests/unit/test_pending_topics_isolation.py b/tests/unit/test_pending_topics_isolation.py index 37d18ed6..c37d071d 100644 --- a/tests/unit/test_pending_topics_isolation.py +++ b/tests/unit/test_pending_topics_isolation.py @@ -115,3 +115,208 @@ async def test_deferred_transaction_is_promoted_after_primary_completes(): assert result.state_patch["pending_tool_call"]["tool_name"] == "cancelar_pedido" assert result.agent_responses[-1]["primary"] is True assert result.agent_responses[-1]["agent"] == "orders_agent" + + +@pytest.mark.asyncio +async def test_stale_agent_responses_do_not_leak_into_new_turn_projection(): + state = { + "answer": "Lista atual de serviços.", + "route": "vas_agent", + "active_agent": "vas_agent", + "intent": "contas_vas_information", + "agent_responses": [ + {"agent": "contestacao_agent", "answer": "Você confirma Tamboro e Paramount+?", "primary": True, "status": "completed"}, + {"operation_id": "op-2", "agent": "faturas_agent", "answer": "Resposta antiga de fatura.", "primary": False, "status": "completed"}, + ], + "pending_topics": [], + } + result = await drain_pending_topics(state, state["answer"], {}) + assert [r["answer"] for r in result.agent_responses] == ["Lista atual de serviços."] + assert result.agent_responses[0]["agent"] == "vas_agent" + assert result.agent_responses[0]["primary"] is True + + +@pytest.mark.asyncio +async def test_completed_secondary_result_is_kept_as_durable_operation_result(): + async def billing_agent(state): + return { + "answer": "Fatura consultada.", + "mcp_results": [{"tool_name": "consultar_faturas", "ok": True, "invoice_id": "INV-1"}], + } + state = { + "answer": "Cancelamento concluído.", + "route": "contestacao_agent", + "active_agent": "contestacao_agent", + "intent": "contas_vas_cancel", + "operation_results": { + "op-1": {"operation_id": "op-1", "status": "completed", "answer": "Cancelamento concluído."} + }, + "pending_topics": [{ + "operation_id": "op-2", "intent": "contas_invoice_query", "agent": "faturas_agent", + "domain": "telecom_contas", "tools": ["consultar_faturas"], + "source_text": "consulte minha fatura", "disposition": "execute", "status": "pending", + }], + } + result = await drain_pending_topics(state, state["answer"], {"faturas_agent": billing_agent}) + assert result.operation_results["op-1"]["answer"] == "Cancelamento concluído." + assert result.operation_results["op-2"]["status"] == "completed" + assert result.operation_results["op-2"]["mcp_results"][0]["invoice_id"] == "INV-1" + assert [r["answer"] for r in result.agent_responses] == ["Cancelamento concluído.", "Fatura consultada."] + + +@pytest.mark.asyncio +async def test_primary_operation_is_not_promoted_while_waiting_confirmation(): + state = { + "answer": "Você confirma o cancelamento?", + "route": "contestacao_agent", + "active_agent": "contestacao_agent", + "intent": "contas_vas_cancel", + "transaction_status": "AWAITING_CONFIRMATION", + "confirmation_required": True, + "pending_tool_call": {"tool_name": "cancelar_vas_avulso", "arguments": {"subject": "Tamboro"}}, + "multi_intent_plan": { + "plan_id": "mip-1", + "operations": [ + {"operation_id": "op-1", "intent": "contas_vas_cancel", "agent": "contestacao_agent", "domain": "telecom_contas", "tools": ["cancelar_vas_avulso"], "source_text": "cancele tamboro"}, + ], + }, + "operation_results": {}, + "pending_topics": [], + } + result = await drain_pending_topics(state, state["answer"], {}) + assert "op-1" not in result.operation_results + + +@pytest.mark.asyncio +async def test_terminal_primary_operation_is_promoted_and_keeps_previous_results(): + state = { + "answer": "Tamboro cancelado; Paramount+ não encontrado.", + "route": "contestacao_agent", + "active_agent": "contestacao_agent", + "intent": "state:WAITING_CONTESTACAO_CONFIRMATION", + "transaction_status": "COMPLETED", + "multi_intent_plan": { + "plan_id": "mip-1", + "operations": [ + {"operation_id": "op-1", "intent": "contas_vas_cancel", "agent": "contestacao_agent", "domain": "telecom_contas", "tools": ["cancelar_vas_avulso"], "source_text": "cancele tamboro e paramount"}, + {"operation_id": "op-2", "intent": "contas_invoice_query", "agent": "faturas_agent", "domain": "telecom_contas", "tools": ["consultar_faturas"], "source_text": "consulte minha fatura"}, + ], + }, + "operation_results": { + "op-2": {"operation_id": "op-2", "status": "completed", "answer": "Fatura consultada."} + }, + "mcp_results": [ + { + "tool_name": "cancelar_vas_avulso", + "ok": True, + "result": { + "status": "COMPLETED", + "output": { + "cancelar_vas_avulso": { + "results": [ + {"subject": "Tamboro Mensal", "success": True, "protocol": "123"}, + {"subject": "Paramount+", "success": False, "reason": "service_not_found"}, + ] + } + }, + }, + } + ], + "transaction_evidence": [{"transaction_id": "tx-1", "status": "COMPLETED"}], + "pending_topics": [], + } + result = await drain_pending_topics(state, state["answer"], {}) + assert result.operation_results["op-2"]["answer"] == "Fatura consultada." + primary = result.operation_results["op-1"] + assert primary["plan_id"] == "mip-1" + assert primary["status"] == "completed" + assert primary["mcp_results"][0]["result"]["output"]["cancelar_vas_avulso"]["results"][1]["reason"] == "service_not_found" + assert primary["transaction_evidence"][0]["transaction_id"] == "tx-1" + assert [item["answer"] for item in result.agent_responses] == ["Tamboro cancelado; Paramount+ não encontrado."] + +@pytest.mark.asyncio +async def test_persisted_plan_does_not_rehydrate_completed_secondary_topics_on_next_turn(): + calls = {"faturas": 0, "suporte": 0} + + async def billing_agent(state): + calls["faturas"] += 1 + return {"answer": "Fatura executada novamente - ERRO."} + + async def support_agent(state): + calls["suporte"] += 1 + return {"answer": "RAG executado novamente - ERRO."} + + plan = { + "plan_id": "mip-continue-1", + "operations": [ + {"operation_id": "op-1", "intent": "contas_vas_cancel", "agent": "contestacao_agent", "domain": "telecom_contas", "tools": ["cancelar_vas_avulso"], "source_text": "cancele tamboro"}, + {"operation_id": "op-2", "intent": "contas_invoice_query", "agent": "faturas_agent", "domain": "telecom_contas", "tools": ["consultar_faturas"], "source_text": "consulte minha fatura", "disposition": "execute", "status": "pending"}, + {"operation_id": "op-3", "intent": "contas_knowledge", "agent": "suporte_contas_agent", "domain": "telecom_contas", "tools": [], "source_text": "explique infinity pos", "disposition": "execute", "status": "pending"}, + ], + } + state = { + "answer": "Cancelamento concluído.", + "route": "contestacao_agent", + "active_agent": "contestacao_agent", + "intent": "state:WAITING_CONTESTACAO_CONFIRMATION", + "transaction_status": "COMPLETED", + "route_decision": {"route": "contestacao_agent", "intent": "state:WAITING_CONTESTACAO_CONFIRMATION", "metadata": {}}, + "multi_intent_plan": plan, + # Empty is authoritative: op-2/op-3 were already drained on turn 1. + "pending_topics": [], + "operation_results": { + "op-2": {"operation_id": "op-2", "plan_id": "mip-continue-1", "agent": "faturas_agent", "intent": "contas_invoice_query", "domain": "telecom_contas", "source_text": "consulte minha fatura", "status": "completed", "answer": "Fatura consultada no turno anterior."}, + "op-3": {"operation_id": "op-3", "plan_id": "mip-continue-1", "agent": "suporte_contas_agent", "intent": "contas_knowledge", "domain": "telecom_contas", "source_text": "explique infinity pos", "status": "completed", "answer": "Infinity explicado no turno anterior."}, + }, + "mcp_results": [{"tool_name": "cancelar_vas_avulso", "ok": True, "result": {"status": "COMPLETED"}}], + } + + result = await drain_pending_topics( + state, + state["answer"], + {"faturas_agent": billing_agent, "suporte_contas_agent": support_agent}, + ) + + assert calls == {"faturas": 0, "suporte": 0} + assert [item["answer"] for item in result.agent_responses] == ["Cancelamento concluído."] + assert result.operation_results["op-2"]["answer"] == "Fatura consultada no turno anterior." + assert result.operation_results["op-3"]["answer"] == "Infinity explicado no turno anterior." + assert result.operation_results["op-1"]["status"] == "completed" + + +@pytest.mark.asyncio +async def test_completed_queued_topic_is_idempotently_skipped_but_result_remains_available_to_processing(): + calls = 0 + + async def billing_agent(state): + nonlocal calls + calls += 1 + return {"answer": "não deveria executar"} + + plan = { + "plan_id": "mip-idempotent-1", + "operations": [ + {"operation_id": "op-1", "intent": "primary", "agent": "primary_agent", "domain": "test", "tools": [], "source_text": "principal"}, + {"operation_id": "op-2", "intent": "contas_invoice_query", "agent": "faturas_agent", "domain": "telecom_contas", "tools": ["consultar_faturas"], "source_text": "consulte minha fatura", "disposition": "execute", "status": "pending"}, + ], + } + existing = { + "operation_id": "op-2", "plan_id": "mip-idempotent-1", "agent": "faturas_agent", + "intent": "contas_invoice_query", "domain": "telecom_contas", "source_text": "consulte minha fatura", + "status": "completed", "answer": "Fatura já consultada.", + "mcp_results": [{"result": {"invoice_id": "INV-1"}}], + } + state = { + "answer": "Resposta atual.", + "route": "primary_agent", "active_agent": "primary_agent", "intent": "primary", + "multi_intent_plan": plan, + "pending_topics": [dict(plan["operations"][1])], + "operation_results": {"op-2": existing}, + } + + result = await drain_pending_topics(state, state["answer"], {"faturas_agent": billing_agent}) + + assert calls == 0 + assert result.operation_results["op-2"]["mcp_results"][0]["result"]["invoice_id"] == "INV-1" + assert [item["answer"] for item in result.agent_responses] == ["Resposta atual."] + assert result.pending_topics == [] diff --git a/tests/unit/test_rag_runtime_grounding.py b/tests/unit/test_rag_runtime_grounding.py index 407d0681..7d087582 100644 --- a/tests/unit/test_rag_runtime_grounding.py +++ b/tests/unit/test_rag_runtime_grounding.py @@ -98,3 +98,191 @@ def test_kbdb_build_messages_injects_grounding_policy(): user = next(m["content"] for m in messages if m["role"] == "user") assert "Política de grounding obrigatória" in user assert "Não complete lacunas usando conhecimento paramétrico" in user + +@pytest.mark.asyncio +@pytest.mark.parametrize("workflow_status", ["COMPLETED", "FAILED"]) +async def test_rag_skips_when_all_turn_workflows_are_terminal(workflow_status): + rt = _runtime() + state = { + "agent_id": "telecom_contas", + "user_text": "sim", + "sanitized_input": "sim", + "mcp_results": [ + { + "ok": True, + "tool_name": "cancelar_vas_avulso", + "result": { + "execution_id": "wf-1", + "workflow_name": "cancelamento_vas_avulso", + "status": workflow_status, + "output": {"answer": "resultado operacional"}, + }, + "metadata": { + "workflow_name": "cancelamento_vas_avulso", + "workflow_status": workflow_status, + }, + } + ], + } + + context, metadata = await rt._retrieve_rag_context(state) + + assert context == "" + assert not rt.rag_service.calls + assert metadata["status"] == "skipped" + assert metadata["reason"] == "all_turn_workflows_terminal" + assert metadata["workflow_statuses"] == [workflow_status] + + +@pytest.mark.asyncio +async def test_rag_still_runs_when_any_turn_workflow_is_not_terminal(): + rt = _runtime() + state = { + "agent_id": "telecom_contas", + "user_text": "sim", + "sanitized_input": "sim", + "mcp_results": [ + { + "ok": True, + "result": {"execution_id": "wf-1", "workflow_name": "w1", "status": "COMPLETED"}, + "metadata": {"workflow_status": "COMPLETED"}, + }, + { + "ok": True, + "result": {"execution_id": "wf-2", "workflow_name": "w2", "status": "RUNNING"}, + "metadata": {"workflow_status": "RUNNING"}, + }, + ], + } + + context, metadata = await rt._retrieve_rag_context(state) + + assert rt.rag_service.calls + assert "Tarifação documentada" in context + assert metadata["status"] == "executed" + + +@pytest.mark.asyncio +async def test_explicit_requires_rag_overrides_terminal_workflow_skip(): + rt = _runtime() + state = { + "agent_id": "telecom_contas", + "user_text": "sim", + "sanitized_input": "sim", + "mcp_results": [ + { + "ok": True, + "result": { + "execution_id": "wf-1", + "workflow_name": "w1", + "status": "COMPLETED", + "requires_rag": True, + "rag_query": "explicar regra de negócio", + }, + "metadata": {"workflow_status": "COMPLETED"}, + } + ], + } + + context, metadata = await rt._retrieve_rag_context(state) + + assert rt.rag_service.calls + assert rt.rag_service.calls[0][0] == "explicar regra de negócio" + assert "Tarifação documentada" in context + assert metadata["required_by_tool"] is True + + +@pytest.mark.asyncio +async def test_terminal_workflow_does_not_skip_rag_when_operation_is_pending(): + rt = _runtime() + state = { + "agent_id": "telecom_contas", + "user_text": "sim", + "sanitized_input": "sim", + "pending_topics": [ + {"operation_id": "op-2", "intent": "invoice_query", "status": "pending"} + ], + "operation_results": {}, + "mcp_results": [ + { + "ok": True, + "result": {"execution_id": "wf-1", "workflow_name": "w1", "status": "COMPLETED"}, + "metadata": {"workflow_status": "COMPLETED"}, + } + ], + } + + context, metadata = await rt._retrieve_rag_context(state) + + assert rt.rag_service.calls + assert "Tarifação documentada" in context + assert metadata["status"] == "executed" + + +@pytest.mark.asyncio +async def test_terminal_workflow_does_not_skip_rag_when_knowledge_operation_is_unresolved(): + rt = _runtime() + state = { + "agent_id": "telecom_contas", + "user_text": "sim", + "sanitized_input": "sim", + "multi_intent_plan": { + "plan_id": "mip-1", + "operations": [ + {"operation_id": "op-1", "intent": "cancel", "status": "completed"}, + {"operation_id": "op-2", "intent": "account_knowledge", "status": "pending"}, + ], + }, + # op-1 está resolvida, op-2 ainda não possui resultado terminal. + "operation_results": {"op-1": {"status": "completed"}}, + "mcp_results": [ + { + "ok": True, + "result": {"execution_id": "wf-1", "workflow_name": "w1", "status": "COMPLETED"}, + "metadata": {"workflow_status": "COMPLETED"}, + } + ], + } + + context, metadata = await rt._retrieve_rag_context(state) + + assert rt.rag_service.calls + assert "Tarifação documentada" in context + assert metadata["status"] == "executed" + + +@pytest.mark.asyncio +async def test_completed_operation_results_prevent_stale_plan_from_counting_as_pending(): + rt = _runtime() + state = { + "agent_id": "telecom_contas", + "user_text": "sim", + "sanitized_input": "sim", + "multi_intent_plan": { + "plan_id": "mip-1", + "operations": [ + {"operation_id": "op-1", "intent": "cancel", "status": "pending"}, + {"operation_id": "op-2", "intent": "invoice_query", "status": "pending"}, + {"operation_id": "op-3", "intent": "account_knowledge", "status": "pending"}, + ], + }, + "operation_results": { + "op-1": {"status": "completed"}, + "op-2": {"status": "completed"}, + "op-3": {"status": "completed"}, + }, + "mcp_results": [ + { + "ok": True, + "result": {"execution_id": "wf-1", "workflow_name": "w1", "status": "COMPLETED"}, + "metadata": {"workflow_status": "COMPLETED"}, + } + ], + } + + context, metadata = await rt._retrieve_rag_context(state) + + assert context == "" + assert not rt.rag_service.calls + assert metadata["status"] == "skipped" + assert metadata["reason"] == "all_turn_workflows_terminal"