Build reliable customer-facing AI agents with Parlant: an interaction control harness optimized for controlled, consistent, and predictable LLM interactions.
This report summarizes scanner evidence for emcie-co/parlant, a Python project with 18,298 GitHub stars. SynthScan examined 186,089 lines of code across 449 source files, recording 2655 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 16.4 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2146 finding(s).
Are imports declared and package/API names verified? 153 finding(s).
Are wrappers, guards, and repeated structures necessary? 1915 finding(s).
Which changes need focused human review? 2655 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2655 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/tool_utilities.py | 74 | def get_available_product_by_type(product_type: ProductType = ProductType.DRINKS) -> ToolResult: | CODE |
| LOW | tests/tool_utilities.py | 138 | def available_products_by_category(category: ProductCategory) -> ToolResult: | CODE |
| LOW | tests/tool_utilities.py | 147 | def available_products_by_categories(categories: list[ProductCategory]) -> ToolResult: | CODE |
| LOW | tests/tool_utilities.py | 241 | def calculate_expected_salary( | CODE |
| LOW | tests/tool_utilities.py | 252 | async def get_electronic_products_by_type( | CODE |
| LOW | tests/tool_utilities.py | 297 | async def search_electronic_products( | CODE |
| LOW | tests/tool_utilities.py | 553 | def _mock_lookup_credit_limit(username: str) -> Optional[float]: | CODE |
| LOW | tests/test_utilities.py | 290 | async def set_context_variable_value( | STRING |
| LOW | tests/test_utilities.py | 404 | async def get_when_async_done_or_timeout( | STRING |
| LOW | tests/test_utilities.py | 458 | def _ensure_cache_file_exists(self) -> None: | STRING |
| LOW | tests/test_utilities.py | 476 | def serialize_generation_info(generation: GenerationInfo) -> _GenerationInfoDocument: | STRING |
| LOW | tests/test_utilities.py | 501 | def deserialize_generation_info( | STRING |
| LOW | tests/test_utilities.py | 567 | async def create_schematic_generation_result_collection( | STRING |
| LOW | tests/test_utilities.py | 608 | async def two_required_query_params( | STRING |
| LOW | tests/test_utilities.py | 636 | async def one_required_query_param_one_required_body_param( | STRING |
| LOW | tests/core/test_cancellation_suppression_latch.py | 25 | async def test_latch_behavior_with_no_cancellation() -> None: | CODE |
| LOW | tests/core/test_cancellation_suppression_latch.py | 46 | async def test_latch_behavior_with_cancellation_after_suppression() -> None: | CODE |
| LOW | tests/core/test_cancellation_suppression_latch.py | 78 | async def test_latch_behavior_with_cancellation_before_suppression() -> None: | CODE |
| LOW | tests/core/test_id_generator.py | 18 | async def test_that_id_generator_generates_different_ids_for_objects_with_similar_small_content() -> ( | CODE |
| LOW | tests/core/test_id_generator.py | 34 | async def test_that_id_generator_generates_different_ids_for_objects_with_similar_big_content() -> ( | CODE |
| LOW | tests/core/stable/test_capability_vector_store.py | 26 | async def test_that_updating_a_capability_replaces_its_vector_documents( | CODE |
| LOW | tests/core/stable/test_capability_vector_store.py | 66 | async def test_that_deleting_a_capability_removes_its_vector_documents( | CODE |
| LOW | tests/core/stable/test_journey_guideline_projection.py | 10 | async def test_that_projection_yields_followup_for_existing_guideline(container: Container) -> None: | CODE |
| LOW | tests/core/stable/test_relationships.py | 55 | async def test_that_direct_guideline_relationships_can_be_listed( | CODE |
| LOW | tests/core/stable/test_relationships.py | 93 | async def test_that_indirect_guideline_relationships_can_be_listed( | CODE |
| LOW | tests/core/stable/test_relationships.py | 127 | async def test_that_db_data_is_loaded_correctly( | CODE |
| LOW | tests/core/stable/test_relationships.py | 165 | async def test_that_relationships_are_returned_for_source_without_indirect_relationships( | CODE |
| LOW | tests/core/stable/test_relationships.py | 206 | async def test_that_connections_are_returned_for_source_with_indirect_connections( | CODE |
| LOW | tests/core/stable/test_relationships.py | 248 | async def test_that_relationships_are_returned_for_target_without_indirect_connections( | CODE |
| LOW | tests/core/stable/test_relationships.py | 289 | async def test_that_relationships_are_returned_for_target_with_indirect_connections( | CODE |
| LOW | tests/core/stable/test_relationships.py | 331 | async def test_that_all_relationships_can_be_listed( | CODE |
| LOW | tests/core/stable/test_relationships.py | 360 | async def test_that_relationships_can_be_listed_by_kind_without_entity_filters( | CODE |
| LOW | tests/core/stable/test_relationships.py | 401 | async def test_that_relationships_can_be_listed_by_source_id_without_kind_filter( | CODE |
| LOW | tests/core/stable/test_relationships.py | 427 | async def test_that_relationships_can_be_listed_by_target_id_without_kind_filter( | CODE |
| LOW | tests/core/stable/test_relationships.py | 453 | async def test_that_relationships_can_be_listed_with_both_source_and_target_filters( | CODE |
| LOW | tests/core/stable/test_relationships.py | 483 | async def test_that_creating_a_direct_circular_dependency_raises_an_error( | CODE |
| LOW | tests/core/stable/test_relationships.py | 504 | async def test_that_creating_an_indirect_circular_dependency_raises_an_error( | CODE |
| LOW | tests/core/stable/test_relationships.py | 532 | async def test_that_creating_a_self_dependency_is_allowed( | CODE |
| LOW | tests/core/stable/test_relationships.py | 545 | async def test_that_creating_a_cycle_across_dependency_and_dependency_any_raises_an_error( | CODE |
| LOW | tests/core/stable/test_application.py | 102 | async def test_that_a_new_customer_session_can_be_created( | CODE |
| LOW | tests/core/stable/test_application.py | 118 | async def test_that_a_new_customer_session_with_a_proactive_agent_contains_a_message( | CODE |
| LOW | tests/core/stable/test_application.py | 140 | async def test_that_when_a_client_event_is_posted_then_new_server_events_are_emitted( | CODE |
| LOW | tests/core/stable/test_application.py | 168 | async def test_that_a_session_update_is_detected_as_soon_as_a_client_event_is_posted( | CODE |
| LOW | tests/core/stable/test_application.py | 192 | async def test_that_when_a_customer_quickly_posts_more_than_one_message_then_only_one_message_is_emitted_as_a_reply_to_t | CODE |
| LOW | tests/core/stable/test_application.py | 226 | def hand_off_to_human_operator() -> ToolResult: | CODE |
| LOW | tests/core/stable/test_application.py | 230 | async def test_that_a_response_is_not_generated_automatically_after_a_tool_switches_the_session_to_manual_mode( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 37 | async def test_that_list_guidelines_with_mutual_agent_tag_are_returned( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 76 | async def test_that_list_guidelines_global_guideline_is_returned( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 94 | async def test_that_guideline_with_not_hierarchy_tag_is_not_returned( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 127 | async def test_that_guideline_matches_are_not_filtered_by_enabled_journeys( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 169 | async def test_that_guideline_tagged_with_disabled_journey_is_filtered_out_when_matched( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 209 | async def test_that_find_canned_responses_for_agent_returns_global_canned_responses( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 230 | async def test_that_find_canned_responses_for_agent_returns_none_for_non_matching_tag( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 253 | async def test_that_find_canned_responses_for_agent_and_journey_returns_journey_canned_responses( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 282 | async def test_that_find_glossary_terms_for_agent_returns_all_when_no_tags( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 307 | async def test_that_find_glossary_terms_for_agent_returns_none_for_non_matching_tag( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 329 | async def test_that_find_capabilities_for_agent_returns_unique_capabilities( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 362 | async def test_find_relevant_journeys_for_agent_returns_most_relevant( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 400 | async def test_list_guidelines_dependent_directly_on_journey( | CODE |
| LOW | tests/core/stable/test_entity_cq.py | 438 | async def test_list_guidelines_dependent_indirectly_on_journey( | CODE |
| 1460 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/parlant/core/engines/alpha/message_generator.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …arlant/core/engines/alpha/canned_response_generator.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …viously_applied_actionable_customer_dependent_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …lpha/guideline_matching/generic/observational_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …pha/guideline_matching/generic/disambiguation_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …/guideline_matching/generic/response_analysis_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …ideline_matching/generic/guideline_actionable_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …neric/guideline_previously_applied_actionable_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …ne_matching/generic/guideline_low_criticality_batch.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …atching/generic/journey/journey_next_step_selection.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …ne_matching/generic/journey/journey_backtrack_check.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …ng/generic/journey/journey_backtrack_node_selection.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …ant/core/services/indexing/relative_action_proposer.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …ervices/indexing/journey_reachable_nodes_evaluation.py | 0 | - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json", exclude_unset=true), indent=2)} | STRING |
| HIGH | …/engines/alpha/tool_calling/overlapping_tools_batch.py | 0 | - **context**: {shot.description} - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json" | STRING |
| HIGH | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 0 | - **context**: {shot.description} - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json" | STRING |
| HIGH | …core/services/indexing/tool_running_action_detector.py | 0 | - **context**: {shot.description} - **expected result**: ```json {json.dumps(shot.expected_result.model_dump(mode="json" | STRING |
| HIGH | …viously_applied_actionable_customer_dependent_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …lpha/guideline_matching/generic/observational_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …pha/guideline_matching/generic/disambiguation_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …/guideline_matching/generic/response_analysis_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …ideline_matching/generic/guideline_actionable_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …neric/guideline_previously_applied_actionable_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …ne_matching/generic/guideline_low_criticality_batch.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …atching/generic/journey/journey_next_step_selection.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …ne_matching/generic/journey/journey_backtrack_check.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …ng/generic/journey/journey_backtrack_node_selection.py | 0 | - **interaction events**: {json.dumps([adapt_event(e) for e in shot.interaction_events], indent=2)} | STRING |
| HIGH | …viously_applied_actionable_customer_dependent_batch.py | 0 | examples of guideline match evaluations: ------------------- {formatted_shots} | STRING |
| HIGH | …ideline_matching/generic/guideline_actionable_batch.py | 0 | examples of guideline match evaluations: ------------------- {formatted_shots} | STRING |
| HIGH | …neric/guideline_previously_applied_actionable_batch.py | 0 | examples of guideline match evaluations: ------------------- {formatted_shots} | STRING |
| HIGH | …ne_matching/generic/guideline_low_criticality_batch.py | 0 | examples of guideline match evaluations: ------------------- {formatted_shots} | STRING |
| HIGH | …viously_applied_actionable_customer_dependent_batch.py | 0 | important: please note there are exactly {guidelines_len} guidelines in the list for you to check. output format ------- | STRING |
| HIGH | …ideline_matching/generic/guideline_actionable_batch.py | 0 | important: please note there are exactly {guidelines_len} guidelines in the list for you to check. output format ------- | STRING |
| HIGH | …neric/guideline_previously_applied_actionable_batch.py | 0 | important: please note there are exactly {guidelines_len} guidelines in the list for you to check. output format ------- | STRING |
| HIGH | …ne_matching/generic/guideline_low_criticality_batch.py | 0 | important: please note there are exactly {guidelines_len} guidelines in the list for you to check. output format ------- | STRING |
| HIGH | …/guideline_matching/generic/response_analysis_batch.py | 0 | important: please note there are exactly {guidelines_len} guidelines in the list for you to check. output format ------- | STRING |
| HIGH | …atching/generic/journey/journey_next_step_selection.py | 0 | examples of journey step selections: ------------------- {formatted_shots} ### example section is over. the following is | STRING |
| HIGH | …ne_matching/generic/journey/journey_backtrack_check.py | 0 | examples of journey step selections: ------------------- {formatted_shots} ### example section is over. the following is | STRING |
| HIGH | …ng/generic/journey/journey_backtrack_node_selection.py | 0 | examples of journey step selections: ------------------- {formatted_shots} ### example section is over. the following is | STRING |
| HIGH | …ore/services/indexing/guideline_continuous_proposer.py | 0 | guideline ----------- condition: {condition} action: {action} | STRING |
| HIGH | …core/services/indexing/tool_running_action_detector.py | 0 | guideline ----------- condition: {condition} action: {action} | STRING |
| HIGH | …ervices/indexing/guideline_agent_intention_proposer.py | 0 | guideline ----------- condition: {condition} action: {action} | STRING |
| HIGH | …ervices/indexing/customer_dependent_action_detector.py | 0 | guideline ----------- condition: {condition} action: {action} | STRING |
| HIGH | src/parlant/adapters/nlp/vertex_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/cerebras_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/qwen_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/mistral_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/azure_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/parlant_cloud_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/litellm_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/openrouter_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/aws_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/modelscope_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/together_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/openai_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/gemini_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/fireworks_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/ollama_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/anthropic_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| HIGH | src/parlant/adapters/nlp/deepseek_service.py | 0 | returns an error message if the environment is not set up correctly. | STRING |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/tool_utilities.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/test_utilities.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/__init__.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/test_cancellation_suppression_latch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/conftest.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/test_id_generator.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/test_relationships.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/test_application.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/test_entity_cq.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/test_health_reporter.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …core/stable/engines/alpha/test_user_story_scenarios.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …viously_applied_actionable_customer_dependent_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …table/engines/alpha/test_guideline_actionable_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ines/alpha/test_previously_applied_actionable_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …/core/stable/engines/alpha/test_relational_resolver.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …/stable/engines/alpha/test_context_variable_loading.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …/engines/alpha/test_guideline_low_criticality_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ts/core/stable/engines/alpha/test_guideline_matcher.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/engines/alpha/test_mcp.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …s/core/stable/engines/alpha/test_baseline_scenarios.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …core/stable/engines/alpha/test_disambiguation_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …stable/engines/alpha/test_generic_response_analysis.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/engines/alpha/test_tool_caller.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/persistence/test_matches_filters.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/nlp/test_embedding.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/nlp/test_generation.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/services/tools/test_openapi.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/services/tools/test_plugin_client.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ces/indexing/test_journey_reachable_nodes_evaluator.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ble/services/indexing/test_agent_intention_proposer.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ervices/indexing/test_continuous_guideline_proposer.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/stable/services/indexing/test_indexer.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …es/indexing/test_customer_dependent_action_detector.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …le/services/indexing/test_guideline_action_proposer.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/utils.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/utils.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/terms.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/tags.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/sessions.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …s/core/common/engines/alpha/steps/context_variables.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/engines.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/events.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ts/core/common/engines/alpha/steps/canned_responses.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/tools.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/agents.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/capabilities.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/customers.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/guidelines.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …re/unstable/engines/alpha/test_user_story_scenarios.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …nstable/engines/alpha/test_agent_intention_proposer.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …ines/alpha/test_previously_applied_actionable_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …/core/unstable/engines/alpha/test_guideline_matcher.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …core/unstable/engines/alpha/test_baseline_scenarios.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | …re/unstable/engines/alpha/test_disambiguation_batch.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/adapters/vector_db/test_mongo_vector.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/adapters/vector_db/test_qdrant.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/adapters/nlp/test_zhipu_service.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| LOW | tests/adapters/nlp/test_azure_service.py | 1 | # Copyright 2026 Emcie Co Ltd. | COMMENT |
| 207 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | …/core/stable/engines/alpha/test_relational_resolver.py | 232 | # Create a standalone guideline | COMMENT |
| MEDIUM⚡ | …/core/stable/engines/alpha/test_relational_resolver.py | 238 | # Create a journey with a condition | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 315 | # Create a journey with a condition | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 351 | # Create a standalone guideline | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 405 | # Create a journey | COMMENT |
| MEDIUM | tests/core/stable/engines/alpha/test_tool_caller.py | 1343 | # Create a tool with no parameters and consequential=False (default) | COMMENT |
| MEDIUM | tests/core/stable/engines/alpha/test_tool_caller.py | 1397 | # Create a tool with no parameters and consequential=False (default) | COMMENT |
| MEDIUM | tests/core/stable/engines/alpha/test_tool_caller.py | 1408 | # Create a staged event representing this tool already being staged | COMMENT |
| MEDIUM | tests/adapters/vector_db/test_mongo_vector.py | 390 | # Create a new database instance pointing to the same database | COMMENT |
| MEDIUM | tests/adapters/db/test_mongodb.py | 527 | # Create a simple collection | COMMENT |
| MEDIUM | tests/adapters/db/test_json_file.py | 198 | # Create a document first | COMMENT |
| MEDIUM | tests/adapters/db/test_json_file.py | 221 | # Create a document first | COMMENT |
| MEDIUM | tests/adapters/db/test_json_file.py | 249 | # Create a document first | COMMENT |
| MEDIUM | tests/adapters/db/test_json_file.py | 542 | # Create an empty file | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 1061 | # Create the first journey | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 1107 | # Create a chat state for order confirmation | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 1398 | # Create the user validation journey | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 1417 | # Create the hotel booking journey | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 1552 | # Create main customer service journey | COMMENT |
| MEDIUM⚡ | tests/sdk/test_journeys.py | 1767 | # Create a guideline | COMMENT |
| MEDIUM⚡ | tests/sdk/test_journeys.py | 1773 | # Create a journey with a custom state ID | COMMENT |
| MEDIUM⚡ | tests/sdk/test_journeys.py | 1780 | # Create a state with a custom ID | COMMENT |
| MEDIUM⚡ | tests/sdk/test_journeys.py | 1788 | # Create a session and send a message | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 1878 | # Create a state with a custom ID | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 2063 | # Create a linked journey (will be activated via link, not via conditions) | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 2077 | # Create the parent journey that links to the validation journey | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 2141 | # Create a state transition and attach retriever to the target state | COMMENT |
| MEDIUM | tests/sdk/test_journeys.py | 2178 | # Create a state transition and attach retriever to the target state | COMMENT |
| MEDIUM | tests/sdk/test_guidelines.py | 722 | # Create the first guideline | COMMENT |
| MEDIUM | tests/sdk/test_guidelines.py | 951 | # Create a canned response with a template that uses a field | COMMENT |
| MEDIUM | tests/sdk/test_guidelines.py | 985 | # Create a canned response that uses fields from multiple providers | COMMENT |
| MEDIUM | tests/sdk/test_sdk_validation.py | 183 | # Create a fork state | COMMENT |
| MEDIUM | tests/sdk/test_sdk_validation.py | 257 | # Create a tool state | COMMENT |
| MEDIUM | tests/sdk/test_sdk_validation.py | 288 | # Create a chat state | COMMENT |
| MEDIUM | tests/sdk/test_sdk_validation.py | 601 | # Create a fork state to test with | COMMENT |
| MEDIUM | tests/sdk/test_labels.py | 101 | # Create a journey with labels that will be propagated when the journey matches | COMMENT |
| MEDIUM | tests/sdk/test_canned_responses.py | 47 | # Create a canned response that depends on "order" field | COMMENT |
| MEDIUM | tests/api/test_guidelines.py | 973 | # Create a guideline with LOW criticality | COMMENT |
| MEDIUM | tests/api/test_sessions.py | 1911 | # Create an event with initial metadata | COMMENT |
| MEDIUM | tests/api/test_sessions.py | 1967 | # Create an event with initial metadata | COMMENT |
| MEDIUM | tests/api/test_sessions.py | 2021 | # Create a customer message with custom participant info | COMMENT |
| MEDIUM | tests/api/test_sessions.py | 2052 | # Create a customer message WITHOUT custom participant | COMMENT |
| MEDIUM | tests/api/test_relationships.py | 15 | # Import necessary modules and classes | COMMENT |
| MEDIUM | examples/travel_voice_agent.py | 100 | # Create the journey | COMMENT |
| MEDIUM | examples/travel_voice_agent.py | 168 | # Create the journey | COMMENT |
| MEDIUM | examples/healthcare.py | 70 | # Create the journey | COMMENT |
| MEDIUM | examples/healthcare.py | 130 | # Create the journey | COMMENT |
| MEDIUM | src/parlant/sdk.py | 1620 | # Create the new state | COMMENT |
| MEDIUM | src/parlant/sdk.py | 1692 | # Create a fork state for the condition | COMMENT |
| MEDIUM | src/parlant/sdk.py | 1734 | # Create the target state and add it to processing queue | COMMENT |
| MEDIUM | src/parlant/sdk.py | 1813 | # Create the transition only if target state is in mapping | COMMENT |
| MEDIUM | src/parlant/sdk.py | 4513 | # Create a shim that translates between SDK and core types | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/engine.py | 1602 | # Create a convenient accessor dict for tool-enabled guidelines (and their tools). | COMMENT |
| MEDIUM | src/parlant/core/services/tools/plugins.py | 259 | """This function is specifically used to refresh some of the tool's | STRING |
| MEDIUM | src/parlant/core/services/tools/mcp_service.py | 65 | """This class is a wrapper around the FastMCP server, mainly to be used in testing the MCP client""" | STRING |
| MEDIUM | …core/services/indexing/behavioral_change_evaluation.py | 563 | # Create a mapping from guideline payloads to evaluations | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/openrouter_service.py | 606 | # Create a dynamic generator for any OpenRouter model | STRING |
| MEDIUM | src/parlant/adapters/nlp/gemini_service.py | 231 | # Create a signature from parameters | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/gemini_service.py | 243 | # Create a fake callable | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/gemini_service.py | 596 | # Create the new class | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_utilities.py | 775 | except Exception: | STRING |
| LOW⚡ | tests/core/stable/test_health_reporter.py | 260 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | tests/core/stable/test_health_reporter.py | 332 | except Exception as e: # noqa: BLE001 | CODE |
| LOW | tests/core/stable/services/tools/test_plugin_client.py | 201 | except Exception as exc: | CODE |
| LOW⚡ | tests/adapters/db/test_mongodb.py | 730 | except Exception: | CODE |
| LOW | tests/e2e/test_server_cli.py | 239 | except Exception as exc: | CODE |
| LOW | tests/e2e/test_utilities.py | 125 | except Exception as exc: | CODE |
| LOW | tests/e2e/test_utilities.py | 157 | except Exception as e: | CODE |
| LOW | tests/e2e/test_utilities.py | 164 | except Exception: | CODE |
| LOW | docs/advanced/custom-llms.md | 289 | except Exception as e: | CODE |
| LOW | docs/adapters/nlp/vertex.md | 344 | except Exception as e: | CODE |
| LOW | docs/production/human-handoff.md | 195 | except Exception as e: | CODE |
| LOW | src/parlant/core/background_tasks.py | 133 | except Exception as exc: | CODE |
| LOW | src/parlant/core/async_utils.py | 226 | except Exception as e: | CODE |
| LOW | src/parlant/core/tools.py | 478 | except Exception as e: | CODE |
| LOW | src/parlant/core/tools.py | 492 | except Exception as e: | CODE |
| LOW | src/parlant/core/tools.py | 569 | except Exception as exc: | CODE |
| LOW | src/parlant/core/app_modules/sessions.py | 347 | except Exception: | CODE |
| LOW | src/parlant/core/app_modules/common.py | 18 | except Exception: | CODE |
| LOW | src/parlant/core/engines/alpha/prompt_builder.py | 156 | except Exception as e: | CODE |
| LOW | src/parlant/core/engines/alpha/message_generator.py | 302 | except Exception as exc: | CODE |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2048 | except Exception as e: | CODE |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 1237 | except Exception as exc: | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 1290 | except Exception as exc: | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2480 | except Exception as exc: | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2823 | except Exception as e: | STRING |
| LOW | src/parlant/core/engines/alpha/engine.py | 213 | except Exception as exc: | CODE |
| LOW | src/parlant/core/engines/alpha/engine.py | 273 | except Exception as exc: | CODE |
| LOW | src/parlant/core/engines/alpha/engine.py | 412 | except Exception: | CODE |
| LOW | …/engines/alpha/tool_calling/overlapping_tools_batch.py | 203 | except Exception as exc: | CODE |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 346 | except Exception as exc: | CODE |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 1027 | except Exception as exc: | STRING |
| LOW | …parlant/core/engines/alpha/tool_calling/tool_caller.py | 290 | except Exception as exc: | CODE |
| LOW | …parlant/core/engines/alpha/tool_calling/tool_caller.py | 308 | except Exception as e: | CODE |
| LOW | …ideline_matching/custom_guideline_matching_strategy.py | 57 | except Exception as e: | CODE |
| LOW | …viously_applied_actionable_customer_dependent_batch.py | 156 | except Exception as exc: | CODE |
| LOW | …lpha/guideline_matching/generic/observational_batch.py | 151 | except Exception as exc: | CODE |
| LOW | …pha/guideline_matching/generic/disambiguation_batch.py | 217 | except Exception as exc: | CODE |
| LOW | …/guideline_matching/generic/response_analysis_batch.py | 206 | except Exception as exc: | CODE |
| LOW | …ideline_matching/generic/guideline_actionable_batch.py | 146 | except Exception as exc: | CODE |
| LOW | …neric/guideline_previously_applied_actionable_batch.py | 149 | except Exception as exc: | CODE |
| LOW | …ne_matching/generic/guideline_low_criticality_batch.py | 123 | except Exception as exc: | CODE |
| LOW | …atching/generic/journey/journey_next_step_selection.py | 377 | except Exception as exc: | CODE |
| LOW | …ne_matching/generic/journey/journey_backtrack_check.py | 187 | except Exception: | CODE |
| LOW | …ne_matching/generic/journey/journey_backtrack_check.py | 363 | except Exception as exc: | STRING |
| LOW | …ng/generic/journey/journey_backtrack_node_selection.py | 254 | except Exception: | CODE |
| LOW | …ng/generic/journey/journey_backtrack_node_selection.py | 514 | except Exception as exc: | STRING |
| LOW | src/parlant/core/nlp/generation.py | 195 | except Exception: | CODE |
| LOW | src/parlant/core/nlp/generation.py | 206 | except Exception as exc: | CODE |
| LOW | src/parlant/core/nlp/generation.py | 362 | except Exception as exc: | CODE |
| LOW | src/parlant/core/nlp/generation.py | 438 | except Exception as e: | CODE |
| LOW | src/parlant/core/nlp/embedding.py | 234 | except Exception as exc: | CODE |
| LOW | src/parlant/core/services/tools/plugins.py | 235 | except Exception: | CODE |
| LOW | src/parlant/core/services/tools/plugins.py | 709 | except Exception as exc: | CODE |
| LOW | src/parlant/core/services/tools/plugins.py | 941 | except Exception: | CODE |
| LOW | src/parlant/core/services/tools/plugins.py | 999 | except Exception as exc: | CODE |
| LOW | src/parlant/core/services/tools/mcp_service.py | 218 | except Exception as exc: | CODE |
| LOW | src/parlant/core/services/tools/mcp_service.py | 257 | except Exception as exc: | CODE |
| LOW | src/parlant/core/services/tools/mcp_service.py | 282 | except Exception as exc: | CODE |
| LOW | src/parlant/core/services/tools/mcp_service.py | 297 | except Exception as e: | CODE |
| 138 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 2012 | # ── Tag-level dependency tests ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 2252 | # ── ANY-semantics tag dependency tests ───────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 2608 | # ── Dependency hierarchy tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 3199 | # ── Edge-case tests ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 3421 | # ── Custom journey tag propagation tests ─────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 3818 | # ── Dependency edge-case tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 4296 | # ── Numerical priority + dependency interaction tests ────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 4489 | # ── TAG_ALL vs TAG_ANY explicit tests ────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 4771 | # ── DEPENDENCY_ANY (OR group) tests ──────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 5030 | # ── DEPENDENCY_ANY edge case tests ───────────────────────────────────────── | COMMENT |
| MEDIUM | …/core/stable/engines/alpha/test_relational_resolver.py | 5741 | # ── Resolution attribution edge-case tests ──────────────────────────────── | COMMENT |
| MEDIUM | tests/core/stable/nlp/test_generation.py | 417 | # ============================================================================ | COMMENT |
| MEDIUM | tests/core/stable/nlp/test_generation.py | 419 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | src/parlant/core/engines/alpha/relational_resolver.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/parlant/core/engines/alpha/relational_resolver.py | 62 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/parlant/core/engines/alpha/relational_resolver.py | 68 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/parlant/core/engines/alpha/relational_resolver.py | 70 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 180 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 182 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 223 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 593 | # ── Phase 1: Resolve dependency targets ────────────────────────── | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 630 | # ── Phase 2: Topological sort (Kahn's algorithm) ───────────────── | COMMENT |
| MEDIUM | src/parlant/core/engines/alpha/relational_resolver.py | 634 | # ── Phase 3: Evaluate in topological order ─────────────────────── | COMMENT |
| MEDIUM | src/parlant/core/nlp/generation.py | 40 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/core/nlp/generation.py | 42 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/core/nlp/generation.py | 259 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/core/nlp/generation.py | 261 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/parlant_cloud_service.py | 361 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/parlant_cloud_service.py | 363 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/parlant_cloud_service.py | 580 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/parlant_cloud_service.py | 582 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/openai_service.py | 414 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/openai_service.py | 416 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/openai_service.py | 561 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/openai_service.py | 563 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/novita_service.py | 272 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/novita_service.py | 274 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/emcie_service.py | 335 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/emcie_service.py | 337 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/emcie_service.py | 534 | # ============================================================================ | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/emcie_service.py | 536 | # ============================================================================ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_utilities.py | 775 | except Exception: | CODE |
| HIGH | tests/test_utilities.py | 736 | except asyncio.CancelledError: | CODE |
| HIGH | tests/adapters/db/test_mongodb.py | 730 | except Exception: | CODE |
| HIGH | tests/sdk/utils.py | 221 | except asyncio.CancelledError: | CODE |
| HIGH | tests/sdk/utils.py | 249 | except (httpx.RequestError, httpx.TimeoutException): | CODE |
| HIGH | tests/sdk/test_tools.py | 448 | except asyncio.CancelledError: | CODE |
| HIGH | tests/sdk/test_tools.py | 440 | except asyncio.CancelledError: | CODE |
| HIGH | tests/api/test_websocket_logger.py | 96 | except asyncio.CancelledError: | CODE |
| HIGH | tests/e2e/test_utilities.py | 84 | except (socket.error, ConnectionRefusedError, OSError): | CODE |
| HIGH | tests/e2e/test_utilities.py | 164 | except Exception: | CODE |
| HIGH | src/parlant/sdk.py | 4962 | except BaseException: | CODE |
| HIGH | src/parlant/core/background_tasks.py | 131 | except asyncio.CancelledError: | CODE |
| HIGH | src/parlant/core/journeys.py | 1365 | except ItemNotFoundError: | CODE |
| HIGH | src/parlant/core/event_loop_monitor.py | 113 | except asyncio.CancelledError: | CODE |
| HIGH | …tching/generic/journey/journey_node_selection_batch.py | 343 | except asyncio.CancelledError: | CODE |
| HIGH | src/parlant/core/services/tools/plugins.py | 557 | except asyncio.CancelledError: | CODE |
| HIGH | src/parlant/core/services/tools/mcp_service.py | 216 | except RuntimeError: | CODE |
| HIGH | src/parlant/bin/prepare_migration.py | 409 | except ValueError: | CODE |
| HIGH | src/parlant/bin/client.py | 4758 | except FastExit: | CODE |
| HIGH | src/parlant/adapters/vector_db/qdrant.py | 299 | except AttributeError: | CODE |
| HIGH | src/parlant/adapters/vector_db/qdrant.py | 350 | except Exception: | CODE |
| HIGH | src/parlant/adapters/nlp/azure_service.py | 586 | except Exception: | CODE |
| HIGH | src/parlant/api/app.py | 89 | except asyncio.CancelledError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …re/stable/engines/alpha/test_journey_node_selection.py | 1098 | CODE | |
| LOW | …core/stable/engines/alpha/test_disambiguation_batch.py | 269 | CODE | |
| LOW | …re/unstable/engines/alpha/test_disambiguation_batch.py | 263 | CODE | |
| LOW | tests/adapters/db/test_mongodb.py | 1078 | CODE | |
| LOW | tests/adapters/db/test_mongodb.py | 1116 | CODE | |
| LOW | tests/adapters/db/test_mongodb.py | 1181 | CODE | |
| LOW | tests/sdk/utils.py | 125 | CODE | |
| LOW | tests/sdk/test_agents.py | 366 | CODE | |
| LOW | tests/e2e/test_utilities.py | 95 | CODE | |
| LOW | scripts/generate_client_sdk.py | 38 | CODE | |
| LOW | src/parlant/sdk.py | 1902 | CODE | |
| LOW | src/parlant/sdk.py | 727 | CODE | |
| LOW | src/parlant/sdk.py | 819 | CODE | |
| LOW | src/parlant/sdk.py | 953 | CODE | |
| LOW | src/parlant/sdk.py | 1386 | CODE | |
| LOW | src/parlant/sdk.py | 1472 | CODE | |
| LOW | src/parlant/sdk.py | 1586 | CODE | |
| LOW | src/parlant/sdk.py | 2944 | CODE | |
| LOW | src/parlant/sdk.py | 4684 | CODE | |
| LOW | src/parlant/sdk.py | 4878 | CODE | |
| LOW | src/parlant/core/journeys.py | 1067 | CODE | |
| LOW | src/parlant/core/entity_cq.py | 382 | CODE | |
| LOW | src/parlant/core/capabilities.py | 414 | CODE | |
| LOW | src/parlant/core/relationships.py | 339 | CODE | |
| LOW | src/parlant/core/glossary.py | 396 | CODE | |
| LOW | src/parlant/core/app_modules/context_variables.py | 84 | CODE | |
| LOW | src/parlant/core/app_modules/journeys.py | 116 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 264 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 553 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 725 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 756 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 930 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 1204 | CODE | |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 1353 | CODE | |
| LOW | src/parlant/core/engines/alpha/prompt_builder.py | 109 | CODE | |
| LOW | src/parlant/core/engines/alpha/message_generator.py | 197 | CODE | |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 610 | CODE | |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 1020 | CODE | |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 1062 | CODE | |
| LOW | src/parlant/core/engines/alpha/engine.py | 1043 | CODE | |
| LOW | src/parlant/core/engines/alpha/engine.py | 1646 | CODE | |
| LOW | src/parlant/core/engines/alpha/engine.py | 2143 | CODE | |
| LOW | …/engines/alpha/tool_calling/overlapping_tools_batch.py | 236 | CODE | |
| LOW | …/engines/alpha/tool_calling/overlapping_tools_batch.py | 661 | CODE | |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 172 | CODE | |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 182 | CODE | |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 355 | CODE | |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 1254 | CODE | |
| LOW | …ngines/alpha/tool_calling/default_tool_call_batcher.py | 64 | CODE | |
| LOW | …ngines/alpha/tool_calling/default_tool_call_batcher.py | 77 | CODE | |
| LOW | …viously_applied_actionable_customer_dependent_batch.py | 107 | CODE | |
| LOW | …lpha/guideline_matching/generic/observational_batch.py | 102 | CODE | |
| LOW | …pha/guideline_matching/generic/disambiguation_batch.py | 148 | CODE | |
| LOW | …/guideline_matching/generic/response_analysis_batch.py | 148 | CODE | |
| LOW | …ideline_matching/generic/guideline_actionable_batch.py | 97 | CODE | |
| LOW | …neric/guideline_previously_applied_actionable_batch.py | 100 | CODE | |
| LOW | …atching/generic/generic_guideline_matching_strategy.py | 161 | CODE | |
| LOW | …ne_matching/generic/guideline_low_criticality_batch.py | 73 | CODE | |
| LOW | …tching/generic/journey/journey_node_selection_batch.py | 159 | CODE | |
| LOW | …tching/generic/journey/journey_node_selection_batch.py | 264 | CODE | |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/core/test_cancellation_suppression_latch.py | 15 | CODE | |
| LOW | …/core/stable/engines/alpha/test_relational_resolver.py | 18 | CODE | |
| LOW | tests/adapters/db/test_snowflake_db.py | 15 | CODE | |
| LOW | tests/e2e/test_utilities.py | 15 | CODE | |
| LOW | src/parlant/sdk.py | 15 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 76 | CODE | |
| LOW | src/parlant/sdk.py | 99 | CODE | |
| LOW | src/parlant/sdk.py | 132 | CODE | |
| LOW | src/parlant/sdk.py | 132 | CODE | |
| LOW | src/parlant/sdk.py | 133 | CODE | |
| LOW | src/parlant/sdk.py | 134 | CODE | |
| LOW | src/parlant/sdk.py | 157 | CODE | |
| LOW | src/parlant/sdk.py | 163 | CODE | |
| LOW | src/parlant/sdk.py | 163 | CODE | |
| LOW | src/parlant/sdk.py | 163 | CODE | |
| LOW | src/parlant/sdk.py | 168 | CODE | |
| LOW | src/parlant/sdk.py | 183 | CODE | |
| LOW | src/parlant/sdk.py | 183 | CODE | |
| LOW | src/parlant/sdk.py | 183 | CODE | |
| LOW | src/parlant/sdk.py | 230 | CODE | |
| LOW | src/parlant/sdk.py | 230 | CODE | |
| LOW | src/parlant/sdk.py | 230 | CODE | |
| LOW | src/parlant/sdk.py | 230 | CODE | |
| LOW | src/parlant/sdk.py | 230 | CODE | |
| LOW | src/parlant/sdk.py | 239 | CODE | |
| LOW | src/parlant/sdk.py | 239 | CODE | |
| LOW | src/parlant/sdk.py | 239 | CODE | |
| LOW | src/parlant/sdk.py | 239 | CODE | |
| LOW | src/parlant/sdk.py | 239 | CODE | |
| LOW | src/parlant/sdk.py | 246 | CODE | |
| LOW | src/parlant/sdk.py | 246 | CODE | |
| LOW | src/parlant/sdk.py | 252 | CODE | |
| LOW | src/parlant/sdk.py | 252 | CODE | |
| LOW | src/parlant/sdk.py | 256 | CODE | |
| LOW | src/parlant/sdk.py | 256 | CODE | |
| LOW | src/parlant/sdk.py | 256 | CODE | |
| LOW | src/parlant/sdk.py | 263 | CODE | |
| LOW | src/parlant/sdk.py | 263 | CODE | |
| LOW | src/parlant/sdk.py | 263 | CODE | |
| LOW | src/parlant/sdk.py | 263 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/sdk.py | 274 | CODE | |
| LOW | src/parlant/core/tags.py | 15 | CODE | |
| LOW | src/parlant/core/sessions.py | 15 | CODE | |
| LOW | src/parlant/core/context_variables.py | 15 | CODE | |
| LOW | src/parlant/core/async_utils.py | 15 | CODE | |
| LOW | src/parlant/core/loggers.py | 15 | CODE | |
| LOW | src/parlant/core/canned_responses.py | 15 | CODE | |
| 58 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llms.txt | 234 | # Step 1: Get order number | COMMENT |
| LOW | llms.txt | 239 | # Step 2: Look up the order | COMMENT |
| LOW | llms.txt | 254 | # Step 4: Check if they need anything else | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2076 | # Step 1: Ask for account name | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2104 | # Step 2: Ask for desired credit limit | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2132 | # Step 3: Confirm information and move forward politely | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2161 | # Step 4: Use tool to get the current limit | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2211 | # Step 5: Use tool to change the limit | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2261 | # Step 6: Report to customer | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2278 | # Step 7: Report failure | COMMENT |
| LOW | docs/production/custom-frontend.md | 124 | ### Step 1: Initialize the Parlant Client | COMMENT |
| LOW | docs/production/custom-frontend.md | 162 | ### Step 2: Create a Session | COMMENT |
| LOW | docs/production/custom-frontend.md | 216 | ### Step 3: Send Customer Messages | COMMENT |
| LOW | docs/production/custom-frontend.md | 268 | ### Step 4: Monitor Session Events | COMMENT |
| LOW | docs/production/custom-frontend.md | 348 | ### Step 5: Display Messages in Your UI | COMMENT |
| LOW | docs/production/custom-frontend.md | 456 | ### Step 6: Complete HTML Example | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 341 | # Step 1: Dependencies | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 353 | # Step 2: Relational prioritization (includes transitive dep filtering) | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 371 | # Step 3: Numerical priority filtering. | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 393 | # Step 4: Entailment. | COMMENT |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2176 | # Step 1: Generate the draft message | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2266 | # Step 2: Select the most relevant canned response templates based on the draft message | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2306 | # Step 3: Pre-render these templates so that matching works better | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2351 | # Step 5: Respond based on the match quality | STRING |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1243 | # Step 1: Retrieve the journeys likely to be activated for this agent | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1248 | # Step 2 : Retrieve all the guidelines for the context. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1277 | # Step 4: Filter the best matches out of those. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1287 | # Step 5: Filter the journeys that are activated by the matched guidelines. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1292 | # Step 6: If any of the lower-probability journeys (those originally filtered out) | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1319 | # Step 7: Build the set of matched guidelines: | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1329 | # Step 8: Let the plan potentially intervene | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1332 | # Step 9: Resolve guideline matches by considering relationships | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1351 | # Step 1: Retrieve all the possible journeys for this agent | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1356 | # Step 2: Reuse the usable guidelines cached during the initial iteration. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1360 | # Step 3: Retrieve guidelines that need reevaluation based on tool calls made | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1370 | # Step 4: Reevaluate those guidelines using the latest context. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1380 | # Step 5: Filter out the journeys activated by the matched guidelines. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1388 | # Step 6: If any of the journeys have been activated, | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1426 | # Step 8: Let the plan potentially intervene | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1429 | # Step 9: Resolve guideline matches by considering relationships | COMMENT |
| LOW | src/parlant/core/engines/alpha/engine.py | 1262 | # Step 3: Exclude guidelines whose prerequisite journeys are less likely to be activated | COMMENT |
| LOW | src/parlant/core/engines/alpha/engine.py | 1414 | # Step 7: Build the final set of matched guidelines: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/adapters/vector_db/test_qdrant.py | 508 | # Check if any documents were successfully migrated to new format | COMMENT |
| LOW | tests/adapters/db/test_mongodb.py | 1106 | # Check if this index includes creation_utc field | COMMENT |
| LOW | tests/adapters/db/test_mongodb.py | 1169 | # Check if this index includes creation_utc field | COMMENT |
| LOW | tests/adapters/db/test_mongodb.py | 1210 | # Check if this index includes creation_utc field | COMMENT |
| LOW | src/parlant/sdk.py | 1768 | # Check if this state has no outgoing transitions (leaf state) | COMMENT |
| LOW | src/parlant/sdk.py | 1827 | # Add target to queue for further processing | COMMENT |
| LOW | src/parlant/sdk.py | 1873 | # Check if this is a journey node guideline | COMMENT |
| LOW | src/parlant/sdk.py | 5021 | # Check if the result is a deferred callable | COMMENT |
| LOW | src/parlant/core/sessions.py | 1551 | # Check if the event has chunks property | COMMENT |
| LOW | src/parlant/core/sessions.py | 1555 | # Check if the last chunk is None (completion signal) | COMMENT |
| LOW | src/parlant/core/journeys.py | 934 | # Check if journey with this ID already exists | COMMENT |
| LOW | src/parlant/core/agents.py | 354 | # Check if agent with this ID already exists | COMMENT |
| LOW | src/parlant/core/customers.py | 277 | # Check if customer with this ID already exists | COMMENT |
| LOW | src/parlant/core/guidelines.py | 699 | # Check if guideline with this ID already exists | COMMENT |
| LOW | src/parlant/core/glossary.py | 301 | # Check if term with this ID already exists | COMMENT |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 709 | # Check if this is the first agent message (greeting scenario) | COMMENT |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2016 | # Add chunk to the list and update the message | COMMENT |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 1284 | # Check if all required parameters are present | STRING |
| LOW | src/parlant/core/services/tools/plugins.py | 339 | # Check if it's a list[Enum] type | COMMENT |
| LOW | src/parlant/adapters/vector_db/qdrant.py | 84 | # Check if it's a timeout error | COMMENT |
| LOW | src/parlant/adapters/vector_db/qdrant.py | 331 | # Check if index exists | COMMENT |
| LOW | src/parlant/adapters/vector_db/qdrant.py | 637 | # Check if collections exist | COMMENT |
| LOW | src/parlant/adapters/vector_db/qdrant.py | 780 | # Check if metadata collection exists | COMMENT |
| LOW | src/parlant/adapters/vector_db/mongo.py | 113 | # Check if the index already exists | COMMENT |
| LOW | src/parlant/adapters/vector_db/mongo.py | 225 | # Check if the collection exists in MongoDB | COMMENT |
| LOW | src/parlant/adapters/vector_db/chroma.py | 246 | # Check if we have a corresponding embedded collection for the embedder type. | COMMENT |
| LOW | src/parlant/adapters/nlp/vertex_service.py | 776 | # Check if it's a short name we recognize | COMMENT |
| LOW | src/parlant/adapters/nlp/mistral_service.py | 350 | # Check if any score indicates flagged content (threshold can be adjusted) | COMMENT |
| LOW | src/parlant/adapters/nlp/azure_service.py | 280 | # Check if API key is provided (backward compatibility) | COMMENT |
| LOW | src/parlant/adapters/nlp/openrouter_service.py | 178 | # Check if it's a JSON mode error | COMMENT |
| LOW | src/parlant/adapters/nlp/openrouter_service.py | 234 | # Check if we got empty response | COMMENT |
| LOW⚡ | src/parlant/adapters/nlp/openrouter_service.py | 247 | # Check if parsed JSON is empty | COMMENT |
| LOW | src/parlant/adapters/nlp/openrouter_service.py | 602 | # Check if we have a predefined generator for this model | STRING |
| LOW | src/parlant/adapters/nlp/gemini_service.py | 529 | # Check if origin is Mapping or Sequence | STRING |
| LOW | src/parlant/api/sessions.py | 2129 | # Check if event is complete (for streaming events) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2076 | # Step 1: Ask for account name | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2104 | # Step 2: Ask for desired credit limit | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2132 | # Step 3: Confirm information and move forward politely | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2161 | # Step 4: Use tool to get the current limit | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2211 | # Step 5: Use tool to change the limit | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2261 | # Step 6: Report to customer | COMMENT |
| LOW | tests/core/common/engines/alpha/steps/journeys.py | 2278 | # Step 7: Report failure | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 341 | # Step 1: Dependencies | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 353 | # Step 2: Relational prioritization (includes transitive dep filtering) | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 371 | # Step 3: Numerical priority filtering. | COMMENT |
| LOW | src/parlant/core/engines/alpha/relational_resolver.py | 393 | # Step 4: Entailment. | COMMENT |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2176 | # Step 1: Generate the draft message | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2266 | # Step 2: Select the most relevant canned response templates based on the draft message | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2306 | # Step 3: Pre-render these templates so that matching works better | STRING |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 2351 | # Step 5: Respond based on the match quality | STRING |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1243 | # Step 1: Retrieve the journeys likely to be activated for this agent | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1248 | # Step 2 : Retrieve all the guidelines for the context. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1277 | # Step 4: Filter the best matches out of those. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1287 | # Step 5: Filter the journeys that are activated by the matched guidelines. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1292 | # Step 6: If any of the lower-probability journeys (those originally filtered out) | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1319 | # Step 7: Build the set of matched guidelines: | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1329 | # Step 8: Let the plan potentially intervene | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1332 | # Step 9: Resolve guideline matches by considering relationships | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1351 | # Step 1: Retrieve all the possible journeys for this agent | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1356 | # Step 2: Reuse the usable guidelines cached during the initial iteration. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1360 | # Step 3: Retrieve guidelines that need reevaluation based on tool calls made | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1370 | # Step 4: Reevaluate those guidelines using the latest context. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1380 | # Step 5: Filter out the journeys activated by the matched guidelines. | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1388 | # Step 6: If any of the journeys have been activated, | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1426 | # Step 8: Let the plan potentially intervene | COMMENT |
| LOW⚡ | src/parlant/core/engines/alpha/engine.py | 1429 | # Step 9: Resolve guideline matches by considering relationships | COMMENT |
| LOW | src/parlant/core/engines/alpha/engine.py | 1262 | # Step 3: Exclude guidelines whose prerequisite journeys are less likely to be activated | COMMENT |
| LOW | src/parlant/core/engines/alpha/engine.py | 1414 | # Step 7: Build the final set of matched guidelines: | COMMENT |
| LOW | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 1773 | "The customer wants to purchase a laptop and a mouse and we need to check if those products are available" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 75 | Parlant treats misalignment as a core design problem. It builds on [research into model accuracy and consistency](https: | CODE |
| MEDIUM | README.md | 75 | Parlant treats misalignment as a core design problem. It builds on [research into model accuracy and consistency](https: | CODE |
| MEDIUM | …ces/indexing/test_journey_reachable_nodes_evaluator.py | 55 | # Drop the few-shot examples, which render the same child/condition lines. | COMMENT |
| MEDIUM | docs/advanced/custom-llms.md | 167 | # Return the maximum number of tokens in the model's context window. | COMMENT |
| MEDIUM | docs/adapters/nlp/ollama.md | 58 | # embedding model required for creating embeddings | COMMENT |
| MEDIUM | docs/adapters/nlp/ollama.md | 92 | # Alternative embedding model (512 dimensions) | COMMENT |
| MEDIUM | docs/adapters/nlp/azure.md | 96 | # Use any embedding model (examples - check your Azure resource for availability) | COMMENT |
| MEDIUM | docs/adapters/nlp/azure.md | 251 | use CustomAzureEmbedder # Any embedding model you specify | CODE |
| MEDIUM | docs/adapters/nlp/azure.md | 253 | use AzureTextEmbedding3Large # Default embedding model | CODE |
| MEDIUM | docs/concepts/customization/tools.md | 229 | > To learn more about best-practices for designing your agent's tools, we recommend reading our blog post on [Agentic Ba | CODE |
| MEDIUM | docs/concepts/customization/retrievers.md | 31 | #### Simple RAG Example | COMMENT |
| MEDIUM | docs/concepts/entities/agents.md | 61 | > There's an interesting paper on the [failures of multi-agent systems](https://arxiv.org/abs/2503.13657#:~:text=We%20pr | CODE |
| MEDIUM | docs/production/agentic-design.md | 106 | > - [Agentic API Design blog post](https://parlant.io/blog/what-no-one-tells-you-about-agentic-api-design) - Detailed st | CODE |
| MEDIUM | …/engines/alpha/tool_calling/overlapping_tools_batch.py | 298 | if tool.parameters: # We check this because sometimes LLMs hallucinate placeholders for no- | CODE |
| MEDIUM | …t/core/engines/alpha/tool_calling/single_tool_batch.py | 424 | if tool.parameters: # We check this because sometimes LLMs hallucinate placeholders for no-param to | CODE |
| MEDIUM | src/parlant/adapters/nlp/openrouter_service.py | 364 | # Known embedding model dimensions | COMMENT |
| MEDIUM | src/parlant/adapters/nlp/ollama_service.py | 753 | else: # its a custom embedding model | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/quickstart/installation.md | 70 | export OPENAI_API_KEY="<YOUR_API_KEY>" | CODE |
| HIGH | docs/quickstart/installation.md | 70 | export OPENAI_API_KEY="<YOUR_API_KEY>" | CODE |
| HIGH | docs/adapters/vector_db/qdrant.md | 51 | # api_key="your-api-key-here", | COMMENT |
| HIGH | docs/adapters/nlp/openrouter.md | 17 | export OPENROUTER_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/adapters/nlp/openrouter.md | 44 | export OPENROUTER_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/adapters/nlp/openrouter.md | 514 | export OPENROUTER_API_KEY="your-api-key-here" | CODE |
| HIGH | docs/adapters/nlp/azure.md | 168 | export AZURE_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_utilities.py | 143 | def set_level(self, log_level: LogLevel) -> None: | CODE |
| LOW | tests/e2e/test_utilities.py | 175 | def set_port(self, port: int) -> None: | CODE |
| LOW | scripts/version.py | 36 | def set_package_version(version: str, package: Package) -> None: | CODE |
| LOW | scripts/version.py | 72 | def update_version_variable_in_code(version: str) -> None: | CODE |
| LOW⚡ | src/parlant/sdk.py | 3029 | async def set_value_for_customer(self, customer: Customer, value: JSONSerializable) -> None: | CODE |
| LOW⚡ | src/parlant/sdk.py | 3038 | async def set_value_for_tag(self, tag: TagId, value: JSONSerializable) -> None: | CODE |
| LOW⚡ | src/parlant/sdk.py | 3047 | async def set_global_value(self, value: JSONSerializable) -> None: | CODE |
| LOW⚡ | src/parlant/sdk.py | 3056 | async def set_value_for_agent(self, agent: Agent, value: JSONSerializable) -> None: | CODE |
| LOW | src/parlant/sdk.py | 657 | def _set_progress(self, key: str, pct: float) -> None: | CODE |
| LOW | src/parlant/sdk.py | 4932 | async def _setup_retrievers(self) -> None: | CODE |
| LOW | src/parlant/sdk.py | 5785 | __all__ = [ | CODE |
| LOW | src/parlant/core/loggers.py | 105 | def set_level(self, log_level: LogLevel) -> None: | CODE |
| LOW | src/parlant/core/loggers.py | 184 | def set_level(self, log_level: LogLevel) -> None: | CODE |
| LOW | src/parlant/core/loggers.py | 290 | def set_level(self, log_level: LogLevel) -> None: | CODE |
| LOW | src/parlant/core/tracer.py | 65 | def set_attribute(self, name: str, value: AttributeValue) -> None: ... | CODE |
| LOW | src/parlant/core/health/__init__.py | 42 | __all__ = [ | CODE |
| LOW | …ant/core/engines/alpha/perceived_performance_policy.py | 287 | def set_policy(self, agent_id: AgentId, policy: PerceivedPerformancePolicy) -> None: | CODE |
| LOW | …arlant/core/engines/alpha/canned_response_generator.py | 557 | def set_preamble_config(self, agent_id: AgentId, config: PreambleConfiguration) -> None: | STRING |
| LOW | src/parlant/core/engines/alpha/engine.py | 827 | async def _update_session_mode(self, context: EngineContext) -> None: | CODE |
| LOW | src/parlant/core/engines/alpha/engine.py | 1043 | async def _update_session_labels(self, context: EngineContext) -> None: | CODE |
| LOW | src/parlant/core/engines/alpha/planners.py | 212 | def set_planner(self, agent_id: AgentId, planner: Planner) -> None: | CODE |
| LOW | …core/services/indexing/behavioral_change_evaluation.py | 740 | async def _update_progress(percentage: float) -> None: | CODE |
| LOW⚡ | src/parlant/bin/client.py | 2772 | def update_customer(ctx: click.Context, customer_id: str, name: str) -> None: | CODE |
| LOW⚡ | src/parlant/bin/client.py | 2892 | def update_tag(ctx: click.Context, tag: str, name: str) -> None: | CODE |
| LOW | src/parlant/bin/client.py | 104 | def set_exit_status(status: int) -> None: | CODE |
| LOW | src/parlant/adapters/loggers/opentelemetry.py | 90 | def set_level(self, log_level: LogLevel) -> None: | CODE |
| LOW | src/parlant/adapters/vector_db/qdrant.py | 442 | async def _set_collection_version(self, collection_name: str, version: int) -> None: | CODE |
| LOW | src/parlant/adapters/db/snowflake_db.py | 767 | __all__ = [ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_utilities.py | 652 | CODE | |
| LOW | …ts/core/stable/engines/alpha/test_guideline_matcher.py | 648 | CODE | |
| LOW | src/parlant/sdk.py | 1902 | CODE | |
| LOW | src/parlant/sdk.py | 1472 | CODE | |
| LOW | src/parlant/sdk.py | 2010 | CODE | |
| LOW | src/parlant/sdk.py | 2027 | CODE | |
| LOW | src/parlant/sdk.py | 2044 | CODE | |
| LOW | src/parlant/sdk.py | 2061 | CODE | |
| LOW | src/parlant/sdk.py | 2085 | CODE | |
| LOW | src/parlant/sdk.py | 2141 | CODE | |
| LOW | src/parlant/sdk.py | 2158 | CODE | |
| LOW | src/parlant/sdk.py | 2175 | CODE | |
| LOW | src/parlant/sdk.py | 2192 | CODE | |
| LOW | src/parlant/sdk.py | 2216 | CODE | |
| LOW | src/parlant/sdk.py | 2275 | CODE | |
| LOW | src/parlant/sdk.py | 2292 | CODE | |
| LOW | src/parlant/sdk.py | 2309 | CODE | |
| LOW | src/parlant/sdk.py | 2326 | CODE | |
| LOW | src/parlant/sdk.py | 2350 | CODE | |
| LOW | src/parlant/sdk.py | 2425 | CODE | |
| LOW | src/parlant/sdk.py | 2442 | CODE | |
| LOW | src/parlant/sdk.py | 2459 | CODE | |
| LOW | src/parlant/sdk.py | 2483 | CODE | |
| LOW | src/parlant/sdk.py | 2711 | CODE | |
| LOW | src/parlant/sdk.py | 2763 | CODE | |
| LOW | src/parlant/sdk.py | 3405 | CODE | |
| LOW | src/parlant/sdk.py | 3476 | CODE | |
| LOW | src/parlant/sdk.py | 3528 | CODE | |
| LOW | src/parlant/sdk.py | 4178 | CODE | |
| LOW | src/parlant/sdk.py | 5121 | CODE | |
| LOW | src/parlant/sdk.py | 5358 | CODE | |
| LOW | src/parlant/core/entity_cq.py | 278 | CODE | |
| LOW | src/parlant/core/guidelines.py | 101 | CODE | |
| LOW | src/parlant/core/guidelines.py | 674 | CODE | |
| LOW | src/parlant/core/health/nlp_view.py | 94 | CODE | |
| LOW | src/parlant/core/app_modules/context_variables.py | 155 | CODE | |
| LOW | src/parlant/core/app_modules/customers.py | 88 | CODE | |
| LOW | src/parlant/bin/client.py | 1045 | CODE | |
| LOW | src/parlant/adapters/db/mongo_db.py | 269 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/adapters/db/test_mongodb.py | 392 | {"id": "dummy_id", "version": "1.0.0", "name": "Test Document"} | CODE |
| LOW | tests/adapters/db/test_json_file.py | 405 | "id": "dummy_id", | CODE |
| LOW⚡ | tests/sdk/test_customers.py | 23 | name="John Doe", metadata={"email": "john.doe@example.com"} | CODE |
| LOW⚡ | tests/sdk/test_customers.py | 31 | assert customer.name == "John Doe" | CODE |
| LOW⚡ | tests/sdk/test_customers.py | 39 | name="John Doe", | CODE |
| LOW⚡ | tests/sdk/test_customers.py | 58 | name="John Doe", | CODE |
| LOW⚡ | tests/sdk/test_customers.py | 65 | self.customer = await server.find_customer(name="John Doe") | CODE |
| LOW⚡ | tests/sdk/test_customers.py | 75 | name="John Doe", | CODE |
| LOW | tests/sdk/test_variables.py | 78 | self.customer = await server.create_customer("John Doe") | CODE |
| LOW | tests/sdk/test_variables.py | 187 | self.customer = await server.create_customer("Jane Doe") | CODE |
| LOW | tests/sdk/test_variables.py | 244 | self.customer = await server.create_customer("Jane Doe") | CODE |
| LOW | tests/sdk/test_variables.py | 286 | "Jane Doe", | CODE |
| LOW | tests/api/test_sessions.py | 1812 | "participant": {"id": "agent_007", "display_name": "John Doe"}, | CODE |
| LOW | tests/api/test_sessions.py | 1823 | assert event["data"]["participant"]["display_name"] == "John Doe" | CODE |
| LOW | tests/api/test_customers.py | 29 | name = "John Doe" | CODE |
| LOW | tests/api/test_customers.py | 60 | "name": "John Doe", | CODE |
| LOW | tests/modules/bank.py | 33 | return ToolResult({"name": "John Doe", "account_number": "1234567890"}) | CODE |
| LOW | …ng/generic/journey/journey_backtrack_node_selection.py | 1428 | _make_event("3", EventSource.CUSTOMER, "Jane Doe"), | STRING |
| LOW | src/parlant/api/sessions.py | 321 | examples=["John Doe", "Alice"], | CODE |
| LOW | src/parlant/api/sessions.py | 328 | "display_name": "John Doe", | CODE |
| LOW | src/parlant/api/sessions.py | 415 | "participant": {"id": "cust_123xy", "display_name": "John Doe"}, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/sdk/utils.py | 113 | """Check if the event is still streaming (chunks property exists and not yet terminated with null).""" | STRING |
| HIGH | scripts/version.py | 136 | "git diff --quiet && git diff --cached --quiet && git ls-files --others --exclude-standard" | CODE |
| HIGH | …arlant/core/engines/alpha/canned_response_generator.py | 1467 | If told so by a guideline or some other contextual condition, send the first message. Otherwise, do not produce a reply | CODE |
| HIGH | …arlant/core/engines/alpha/canned_response_generator.py | 1473 | "response_preamble_that_was_already_sent": null, | CODE |
| HIGH | …arlant/core/engines/alpha/canned_response_generator.py | 1486 | The only exception where you may not produce a reply (i.e., setting message = null) is if the user, or a provided guidel | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/parlant/adapters/nlp/azure_service.py | 144 | response = await self._client.beta.chat.completions.parse( | CODE |
| CRITICAL | src/parlant/adapters/nlp/openai_service.py | 200 | response = await self._client.beta.chat.completions.parse( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/sdk/test_sdk_validation.py | 581 | """Test comprehensive condition validation for ForkJourneyState""" | STRING |
| LOW | src/parlant/core/journeys.py | 1366 | # Journey not found, just return node as-is | COMMENT |
| MEDIUM | …arlant/core/engines/alpha/canned_response_generator.py | 1889 | # Build recap section to leverage LLM recency bias | STRING |
| LOW | src/parlant/api/sessions.py | 2137 | # Non-streaming event, just return it once | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/parlant/adapters/vector_db/qdrant.py | 63 | Retry an async operation on timeout errors with exponential backoff. Args: operation: The async operat | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/parlant/core/engines/alpha/prompt_builder.py | 326 | return f"\nIMPORTANT: Please note that the last message was sent by you, the AI agent (likely as a preamble). Yo | STRING |