gitextract_lshtm9pg/ ├── .devcontainer/ │ ├── Dockerfile │ └── devcontainer.json ├── .githooks/ │ ├── pre-commit │ ├── pre-push │ └── prepare-commit-msg ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ └── feature-request.md │ ├── dco.yml │ └── workflows/ │ ├── ci-test.yml │ ├── docker-publish.yml │ └── lint.yml ├── .gitignore ├── CHANGELOG.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── DCO.md ├── LICENSE ├── README.md ├── docs/ │ ├── adapters/ │ │ ├── nlp/ │ │ │ ├── azure.md │ │ │ ├── ollama.md │ │ │ ├── openrouter.md │ │ │ ├── snowflake-cortex.md │ │ │ └── vertex.md │ │ ├── persistence/ │ │ │ └── snowflake.md │ │ └── vector_db/ │ │ └── qdrant.md │ ├── advanced/ │ │ ├── contributing.md │ │ ├── custom-llms.md │ │ ├── engine-extensions.md │ │ └── explainability.md │ ├── concepts/ │ │ ├── customization/ │ │ │ ├── canned-responses.md │ │ │ ├── glossary.md │ │ │ ├── guidelines.md │ │ │ ├── journeys.md │ │ │ ├── relationships.md │ │ │ ├── retrievers.md │ │ │ ├── tools.md │ │ │ └── variables.md │ │ ├── entities/ │ │ │ ├── agents.md │ │ │ └── customers.md │ │ └── sessions.md │ ├── interactions.md │ ├── production/ │ │ ├── agentic-design.md │ │ ├── api-hardening.md │ │ ├── custom-frontend.md │ │ ├── human-handoff.md │ │ └── input-moderation.md │ └── quickstart/ │ ├── examples.md │ ├── installation.md │ └── motivation.md ├── examples/ │ ├── healthcare.py │ └── travel_voice_agent.py ├── llms.txt ├── mypy.ini ├── pyproject.toml ├── pytest.ini ├── pytest_stochastics.json ├── ruff.toml ├── scripts/ │ ├── ci/ │ │ └── github_action_ubuntu_2404_free_space.sh │ ├── fern/ │ │ ├── docs.yml │ │ ├── fern.config.json │ │ └── generators.yml │ ├── generate_client_sdk.py │ ├── initialize_repo.py │ ├── install_packages.py │ ├── lint.py │ ├── publish.py │ ├── utils.py │ └── version.py ├── src/ │ └── parlant/ │ ├── adapters/ │ │ ├── db/ │ │ │ ├── json_file.py │ │ │ ├── mongo_db.py │ │ │ ├── snowflake_db.py │ │ │ └── transient.py │ │ ├── loggers/ │ │ │ ├── opentelemetry.py │ │ │ └── websocket.py │ │ ├── meter/ │ │ │ └── opentelemetry.py │ │ ├── nlp/ │ │ │ ├── anthropic_service.py │ │ │ ├── aws_service.py │ │ │ ├── azure_service.py │ │ │ ├── cerebras_service.py │ │ │ ├── common.py │ │ │ ├── deepseek_service.py │ │ │ ├── emcie_service.py │ │ │ ├── fireworks_service.py │ │ │ ├── gemini_service.py │ │ │ ├── glm_service.py │ │ │ ├── hugging_face.py │ │ │ ├── lakera.py │ │ │ ├── litellm_service.py │ │ │ ├── mistral_service.py │ │ │ ├── modelscope_service.py │ │ │ ├── ollama_service.py │ │ │ ├── openai_service.py │ │ │ ├── openrouter_service.py │ │ │ ├── qwen_service.py │ │ │ ├── snowflake_cortex_service.py │ │ │ ├── together_service.py │ │ │ ├── vertex_service.py │ │ │ └── zhipu_service.py │ │ ├── tracing/ │ │ │ └── opentelemetry.py │ │ └── vector_db/ │ │ ├── chroma.py │ │ ├── qdrant.py │ │ └── transient.py │ ├── api/ │ │ ├── agents.py │ │ ├── app.py │ │ ├── authorization.py │ │ ├── canned_responses.py │ │ ├── capabilities.py │ │ ├── chat/ │ │ │ ├── .gitignore │ │ │ ├── .prettierrc │ │ │ ├── .vite/ │ │ │ │ └── deps_temp_0491001f/ │ │ │ │ └── package.json │ │ │ ├── components.json │ │ │ ├── dist/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── index-BBAJ1vle.js │ │ │ │ │ ├── index-BRVifGSy.css │ │ │ │ │ └── manifest-BRNJYplA.webmanifest │ │ │ │ ├── fonts/ │ │ │ │ │ ├── Inter/ │ │ │ │ │ │ └── inter.css │ │ │ │ │ ├── ibm-plex-mono/ │ │ │ │ │ │ ├── ibm-plex-mono.css │ │ │ │ │ │ └── static/ │ │ │ │ │ │ └── OFL.txt │ │ │ │ │ ├── ubuntu-mono/ │ │ │ │ │ │ ├── static/ │ │ │ │ │ │ │ └── UFL.txt │ │ │ │ │ │ └── ubuntu_mono.css │ │ │ │ │ └── ubuntu-sans/ │ │ │ │ │ ├── README.txt │ │ │ │ │ ├── UFL.txt │ │ │ │ │ └── ubuntu_sans.css │ │ │ │ └── index.html │ │ │ ├── eslint.config.js │ │ │ ├── index.html │ │ │ ├── manifest.webmanifest │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── public/ │ │ │ │ └── fonts/ │ │ │ │ ├── Inter/ │ │ │ │ │ └── inter.css │ │ │ │ ├── ibm-plex-mono/ │ │ │ │ │ ├── ibm-plex-mono.css │ │ │ │ │ └── static/ │ │ │ │ │ └── OFL.txt │ │ │ │ ├── ubuntu-mono/ │ │ │ │ │ ├── static/ │ │ │ │ │ │ └── UFL.txt │ │ │ │ │ └── ubuntu_mono.css │ │ │ │ └── ubuntu-sans/ │ │ │ │ ├── README.txt │ │ │ │ ├── UFL.txt │ │ │ │ └── ubuntu_sans.css │ │ │ ├── setupTests.ts │ │ │ ├── src/ │ │ │ │ ├── App.css │ │ │ │ ├── App.tsx │ │ │ │ ├── components/ │ │ │ │ │ ├── agents-list/ │ │ │ │ │ │ ├── agent-list.module.scss │ │ │ │ │ │ └── agent-list.tsx │ │ │ │ │ ├── avatar/ │ │ │ │ │ │ └── avatar.tsx │ │ │ │ │ ├── canned-response/ │ │ │ │ │ │ └── canned-response.tsx │ │ │ │ │ ├── canned-responses/ │ │ │ │ │ │ └── canned-responses.tsx │ │ │ │ │ ├── chat-header/ │ │ │ │ │ │ └── chat-header.tsx │ │ │ │ │ ├── chatbot/ │ │ │ │ │ │ └── chatbot.tsx │ │ │ │ │ ├── dark-mode-toggle/ │ │ │ │ │ │ └── dark-mode-toggle.tsx │ │ │ │ │ ├── error-boundary/ │ │ │ │ │ │ └── error-boundary.tsx │ │ │ │ │ ├── gradient-button/ │ │ │ │ │ │ ├── gradient-button.module.scss │ │ │ │ │ │ └── gradient-button.tsx │ │ │ │ │ ├── header-wrapper/ │ │ │ │ │ │ └── header-wrapper.tsx │ │ │ │ │ ├── log-filters/ │ │ │ │ │ │ └── log-filters.tsx │ │ │ │ │ ├── markdown/ │ │ │ │ │ │ └── markdown.tsx │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── draft-bubble.tsx │ │ │ │ │ │ ├── message-bubble.tsx │ │ │ │ │ │ ├── message-relative-time.tsx │ │ │ │ │ │ ├── message.module.scss │ │ │ │ │ │ └── message.tsx │ │ │ │ │ ├── message-details/ │ │ │ │ │ │ ├── empty-state.tsx │ │ │ │ │ │ ├── filter-tabs.tsx │ │ │ │ │ │ ├── flag-message.tsx │ │ │ │ │ │ ├── indexeddb-data.tsx │ │ │ │ │ │ ├── message-details-header.tsx │ │ │ │ │ │ ├── message-details.tsx │ │ │ │ │ │ ├── message-log.tsx │ │ │ │ │ │ └── message-logs.tsx │ │ │ │ │ ├── progress-logo/ │ │ │ │ │ │ └── progress-logo.tsx │ │ │ │ │ ├── session-list/ │ │ │ │ │ │ ├── session-list-item/ │ │ │ │ │ │ │ ├── session-list-item.module.scss │ │ │ │ │ │ │ └── session-list-item.tsx │ │ │ │ │ │ └── session-list.tsx │ │ │ │ │ ├── session-view/ │ │ │ │ │ │ ├── date-header/ │ │ │ │ │ │ │ └── date-header.tsx │ │ │ │ │ │ ├── session-view-header/ │ │ │ │ │ │ │ └── session-view-header.tsx │ │ │ │ │ │ ├── session-view.module.scss │ │ │ │ │ │ └── session-view.tsx │ │ │ │ │ ├── ui/ │ │ │ │ │ │ ├── button.tsx │ │ │ │ │ │ ├── checkbox.tsx │ │ │ │ │ │ ├── custom/ │ │ │ │ │ │ │ ├── copy-text.tsx │ │ │ │ │ │ │ ├── line-no-div.tsx │ │ │ │ │ │ │ ├── spacer.tsx │ │ │ │ │ │ │ └── tooltip.tsx │ │ │ │ │ │ ├── dialog.tsx │ │ │ │ │ │ ├── drawer.tsx │ │ │ │ │ │ ├── dropdown-menu.tsx │ │ │ │ │ │ ├── input.tsx │ │ │ │ │ │ ├── radio-group.tsx │ │ │ │ │ │ ├── resizable.tsx │ │ │ │ │ │ ├── select.tsx │ │ │ │ │ │ ├── sheet.tsx │ │ │ │ │ │ ├── skeleton.tsx │ │ │ │ │ │ ├── sonner.tsx │ │ │ │ │ │ ├── switch.tsx │ │ │ │ │ │ ├── textarea.tsx │ │ │ │ │ │ └── tooltip.tsx │ │ │ │ │ └── virtual-scroll/ │ │ │ │ │ └── virtual-scroll.tsx │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useDialog.tsx │ │ │ │ │ ├── useFetch.tsx │ │ │ │ │ ├── useLocalStorage.ts │ │ │ │ │ ├── useQuestionDialog.tsx │ │ │ │ │ └── useWebSocket.ts │ │ │ │ ├── index.css │ │ │ │ ├── lib/ │ │ │ │ │ ├── broadcast-channel.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── main.tsx │ │ │ │ ├── store.ts │ │ │ │ ├── utils/ │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── date.tsx │ │ │ │ │ ├── interfaces.tsx │ │ │ │ │ ├── logs.ts │ │ │ │ │ ├── methods.tsx │ │ │ │ │ ├── obj.tsx │ │ │ │ │ └── sounds.ts │ │ │ │ └── vite-env.d.ts │ │ │ ├── tailwind.config.js │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.app.tsbuildinfo │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.node.json │ │ │ ├── tsconfig.node.tsbuildinfo │ │ │ └── vite.config.ts │ │ ├── common.py │ │ ├── context_variables.py │ │ ├── customers.py │ │ ├── evaluations.py │ │ ├── glossary.py │ │ ├── guidelines.py │ │ ├── journeys.py │ │ ├── logs.py │ │ ├── relationships.py │ │ ├── services.py │ │ ├── sessions.py │ │ └── tags.py │ ├── bin/ │ │ ├── client.py │ │ ├── prepare_migration.py │ │ └── server.py │ ├── core/ │ │ ├── agents.py │ │ ├── app_modules/ │ │ │ ├── agents.py │ │ │ ├── canned_responses.py │ │ │ ├── capabilities.py │ │ │ ├── common.py │ │ │ ├── context_variables.py │ │ │ ├── customers.py │ │ │ ├── evaluations.py │ │ │ ├── glossary.py │ │ │ ├── guidelines.py │ │ │ ├── journeys.py │ │ │ ├── relationships.py │ │ │ ├── services.py │ │ │ ├── sessions.py │ │ │ └── tags.py │ │ ├── application.py │ │ ├── async_utils.py │ │ ├── background_tasks.py │ │ ├── canned_responses.py │ │ ├── capabilities.py │ │ ├── common.py │ │ ├── context_variables.py │ │ ├── customers.py │ │ ├── emission/ │ │ │ ├── event_buffer.py │ │ │ └── event_publisher.py │ │ ├── emissions.py │ │ ├── engines/ │ │ │ ├── alpha/ │ │ │ │ ├── canned_response_generator.py │ │ │ │ ├── engine.py │ │ │ │ ├── engine_context.py │ │ │ │ ├── entity_context.py │ │ │ │ ├── guideline_matching/ │ │ │ │ │ ├── common.py │ │ │ │ │ ├── custom_guideline_matching_strategy.py │ │ │ │ │ ├── generic/ │ │ │ │ │ │ ├── common.py │ │ │ │ │ │ ├── disambiguation_batch.py │ │ │ │ │ │ ├── generic_guideline_matching_strategy.py │ │ │ │ │ │ ├── guideline_actionable_batch.py │ │ │ │ │ │ ├── guideline_low_criticality_batch.py │ │ │ │ │ │ ├── guideline_previously_applied_actionable_batch.py │ │ │ │ │ │ ├── guideline_previously_applied_actionable_customer_dependent_batch.py │ │ │ │ │ │ ├── journey/ │ │ │ │ │ │ │ ├── journey_backtrack_check.py │ │ │ │ │ │ │ ├── journey_backtrack_node_selection.py │ │ │ │ │ │ │ ├── journey_next_step_selection.py │ │ │ │ │ │ │ └── journey_node_selection_batch.py │ │ │ │ │ │ ├── observational_batch.py │ │ │ │ │ │ └── response_analysis_batch.py │ │ │ │ │ ├── generic_guideline_matching_strategy_resolver.py │ │ │ │ │ ├── guideline_match.py │ │ │ │ │ ├── guideline_matcher.py │ │ │ │ │ └── guideline_matching_context.py │ │ │ │ ├── hooks.py │ │ │ │ ├── message_event_composer.py │ │ │ │ ├── message_generator.py │ │ │ │ ├── optimization_policy.py │ │ │ │ ├── perceived_performance_policy.py │ │ │ │ ├── planners.py │ │ │ │ ├── planning/ │ │ │ │ │ └── __init__.py │ │ │ │ ├── prompt_builder.py │ │ │ │ ├── relational_resolver.py │ │ │ │ ├── tool_calling/ │ │ │ │ │ ├── default_tool_call_batcher.py │ │ │ │ │ ├── overlapping_tools_batch.py │ │ │ │ │ ├── single_tool_batch.py │ │ │ │ │ └── tool_caller.py │ │ │ │ ├── tool_event_generator.py │ │ │ │ └── utils.py │ │ │ └── types.py │ │ ├── entity_cq.py │ │ ├── evaluations.py │ │ ├── glossary.py │ │ ├── guideline_tool_associations.py │ │ ├── guidelines.py │ │ ├── journey_guideline_projection.py │ │ ├── journeys.py │ │ ├── loggers.py │ │ ├── meter.py │ │ ├── nlp/ │ │ │ ├── embedding.py │ │ │ ├── generation.py │ │ │ ├── generation_info.py │ │ │ ├── moderation.py │ │ │ ├── policies.py │ │ │ ├── service.py │ │ │ └── tokenization.py │ │ ├── persistence/ │ │ │ ├── common.py │ │ │ ├── data_collection.py │ │ │ ├── document_database.py │ │ │ ├── document_database_helper.py │ │ │ ├── vector_database.py │ │ │ └── vector_database_helper.py │ │ ├── relationships.py │ │ ├── services/ │ │ │ ├── indexing/ │ │ │ │ ├── behavioral_change_evaluation.py │ │ │ │ ├── common.py │ │ │ │ ├── customer_dependent_action_detector.py │ │ │ │ ├── guideline_action_proposer.py │ │ │ │ ├── guideline_agent_intention_proposer.py │ │ │ │ ├── guideline_continuous_proposer.py │ │ │ │ ├── journey_reachable_nodes_evaluation.py │ │ │ │ ├── relative_action_proposer.py │ │ │ │ └── tool_running_action_detector.py │ │ │ └── tools/ │ │ │ ├── mcp_service.py │ │ │ ├── openapi.py │ │ │ ├── plugins.py │ │ │ └── service_registry.py │ │ ├── sessions.py │ │ ├── shots.py │ │ ├── tags.py │ │ ├── tools.py │ │ ├── tracer.py │ │ └── version.py │ ├── py.typed │ └── sdk.py └── tests/ ├── __init__.py ├── adapters/ │ ├── db/ │ │ ├── test_chroma.py │ │ ├── test_json_file.py │ │ ├── test_mongodb.py │ │ └── test_snowflake_db.py │ ├── nlp/ │ │ ├── test_azure_service.py │ │ ├── test_litellm_service.py │ │ ├── test_openrouter_service.py │ │ ├── test_qwen_service.py │ │ └── test_zhipu_service.py │ └── vector_db/ │ ├── test_qdrant.py │ └── test_transient.py ├── api/ │ ├── conftest.py │ ├── test_agents.py │ ├── test_app.py │ ├── test_authorization.py │ ├── test_canned_responses.py │ ├── test_capabilities.py │ ├── test_context_variables.py │ ├── test_customers.py │ ├── test_evaluations.py │ ├── test_glossary.py │ ├── test_guidelines.py │ ├── test_journeys.py │ ├── test_relationships.py │ ├── test_services.py │ ├── test_sessions.py │ ├── test_tags.py │ └── test_websocket_logger.py ├── conftest.py ├── core/ │ ├── .gitkeep │ ├── common/ │ │ ├── engines/ │ │ │ └── alpha/ │ │ │ ├── steps/ │ │ │ │ ├── agents.py │ │ │ │ ├── canned_responses.py │ │ │ │ ├── capabilities.py │ │ │ │ ├── context_variables.py │ │ │ │ ├── customers.py │ │ │ │ ├── engines.py │ │ │ │ ├── events.py │ │ │ │ ├── guidelines.py │ │ │ │ ├── journeys.py │ │ │ │ ├── sessions.py │ │ │ │ ├── tags.py │ │ │ │ ├── terms.py │ │ │ │ └── tools.py │ │ │ └── utils.py │ │ └── utils.py │ ├── conftest.py │ ├── stable/ │ │ ├── engines/ │ │ │ └── alpha/ │ │ │ ├── features/ │ │ │ │ ├── baseline/ │ │ │ │ │ ├── capabilities.feature │ │ │ │ │ ├── context_variables.feature │ │ │ │ │ ├── conversation.feature │ │ │ │ │ ├── errors.feature │ │ │ │ │ ├── glossary.feature │ │ │ │ │ ├── journeys.feature │ │ │ │ │ ├── moderation.feature │ │ │ │ │ ├── proactivity.feature │ │ │ │ │ ├── relationships.feature │ │ │ │ │ ├── strict_canned_responses.feature │ │ │ │ │ ├── strict_canned_responses_capabilities.feature │ │ │ │ │ ├── supervision.feature │ │ │ │ │ ├── tools.feature │ │ │ │ │ └── triggered_utterances.feature │ │ │ │ └── user_stories/ │ │ │ │ └── conversation.feature │ │ │ ├── test_baseline_scenarios.py │ │ │ ├── test_context_variable_loading.py │ │ │ ├── test_disambiguation_batch.py │ │ │ ├── test_generic_response_analysis.py │ │ │ ├── test_guideline_actionable_batch.py │ │ │ ├── test_guideline_low_criticality_batch.py │ │ │ ├── test_guideline_matcher.py │ │ │ ├── test_journey_node_selection.py │ │ │ ├── test_mcp.py │ │ │ ├── test_previously_applied_actionable_batch.py │ │ │ ├── test_previously_applied_actionable_customer_dependent_batch.py │ │ │ ├── test_relational_resolver.py │ │ │ ├── test_tool_caller.py │ │ │ └── test_user_story_scenarios.py │ │ ├── nlp/ │ │ │ ├── test_embedding.py │ │ │ └── test_generation.py │ │ ├── persistence/ │ │ │ └── test_matches_filters.py │ │ ├── services/ │ │ │ ├── indexing/ │ │ │ │ ├── test_agent_intention_proposer.py │ │ │ │ ├── test_continuous_guideline_proposer.py │ │ │ │ ├── test_customer_dependent_action_detector.py │ │ │ │ ├── test_guideline_action_proposer.py │ │ │ │ ├── test_relative_action_step_proposer.py │ │ │ │ └── test_tool_running_action_detector.py │ │ │ └── tools/ │ │ │ ├── test_openapi.py │ │ │ └── test_plugin_client.py │ │ ├── test_application.py │ │ ├── test_capability_vector_store.py │ │ ├── test_entity_cq.py │ │ ├── test_journey_guideline_projection.py │ │ └── test_relationships.py │ ├── test_cancellation_suppression_latch.py │ ├── test_id_generator.py │ └── unstable/ │ └── engines/ │ └── alpha/ │ ├── features/ │ │ ├── baseline/ │ │ │ ├── conversation.feature │ │ │ ├── fluid_canned_responses.feature │ │ │ ├── glossary.feature │ │ │ ├── strict_canned_responses.feature │ │ │ ├── supervision.feature │ │ │ └── tools.feature │ │ └── user_stories/ │ │ └── conversation.feature │ ├── test_agent_intention_proposer.py │ ├── test_baseline_scenarios.py │ ├── test_disambiguation_batch.py │ ├── test_guideline_matcher.py │ ├── test_journey_node_selection.py │ ├── test_previously_applied_actionable_batch.py │ └── test_user_story_scenarios.py ├── data/ │ └── get_products_by_type_data.json ├── e2e/ │ ├── conftest.py │ ├── test_client_cli_via_api.py │ ├── test_server_cli.py │ └── test_utilities.py ├── modules/ │ ├── bank.py │ ├── mcp_parrot.py │ └── tech_store.py ├── sdk/ │ ├── conftest.py │ ├── test_agents.py │ ├── test_canned_responses.py │ ├── test_current_entities.py │ ├── test_customers.py │ ├── test_dynamic_composition_mode.py │ ├── test_glossary.py │ ├── test_guidelines.py │ ├── test_journeys.py │ ├── test_labels.py │ ├── test_planners.py │ ├── test_retrievers.py │ ├── test_sdk_validation.py │ ├── test_server.py │ ├── test_tools.py │ ├── test_variables.py │ └── utils.py ├── test_utilities.py └── tool_utilities.py