gitextract_qj0m35_8/ ├── .claude/ │ ├── commands/ │ │ └── fix-github-issue.md │ └── settings.json ├── .coveragerc ├── .dockerignore ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── documentation.yml │ │ ├── feature_request.yml │ │ └── tool_addition.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── docker-pr.yml │ ├── docker-release.yml │ ├── semantic-pr.yml │ ├── semantic-release.yml │ └── test.yml ├── .gitignore ├── .pre-commit-config.yaml ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── Dockerfile ├── LICENSE ├── README.md ├── SECURITY.md ├── claude_config_example.json ├── clink/ │ ├── __init__.py │ ├── agents/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── claude.py │ │ ├── codex.py │ │ └── gemini.py │ ├── constants.py │ ├── models.py │ ├── parsers/ │ │ ├── __init__.py │ │ ├── base.py │ │ ├── claude.py │ │ ├── codex.py │ │ └── gemini.py │ └── registry.py ├── code_quality_checks.ps1 ├── code_quality_checks.sh ├── communication_simulator_test.py ├── conf/ │ ├── __init__.py │ ├── azure_models.json │ ├── cli_clients/ │ │ ├── claude.json │ │ ├── codex.json │ │ └── gemini.json │ ├── custom_models.json │ ├── dial_models.json │ ├── gemini_models.json │ ├── openai_models.json │ ├── openrouter_models.json │ └── xai_models.json ├── config.py ├── docker/ │ ├── README.md │ └── scripts/ │ ├── build.ps1 │ ├── build.sh │ ├── deploy.ps1 │ ├── deploy.sh │ └── healthcheck.py ├── docker-compose.yml ├── docs/ │ ├── adding_providers.md │ ├── adding_tools.md │ ├── advanced-usage.md │ ├── ai-collaboration.md │ ├── ai_banter.md │ ├── azure_openai.md │ ├── configuration.md │ ├── context-revival.md │ ├── contributions.md │ ├── custom_models.md │ ├── docker-deployment.md │ ├── gemini-setup.md │ ├── getting-started.md │ ├── index.md │ ├── locale-configuration.md │ ├── logging.md │ ├── model_ranking.md │ ├── name-change.md │ ├── testing.md │ ├── tools/ │ │ ├── analyze.md │ │ ├── apilookup.md │ │ ├── challenge.md │ │ ├── chat.md │ │ ├── clink.md │ │ ├── codereview.md │ │ ├── consensus.md │ │ ├── debug.md │ │ ├── docgen.md │ │ ├── listmodels.md │ │ ├── planner.md │ │ ├── precommit.md │ │ ├── refactor.md │ │ ├── secaudit.md │ │ ├── testgen.md │ │ ├── thinkdeep.md │ │ ├── tracer.md │ │ └── version.md │ ├── troubleshooting.md │ ├── vcr-testing.md │ └── wsl-setup.md ├── examples/ │ ├── claude_config_macos.json │ └── claude_config_wsl.json ├── pal-mcp-server ├── providers/ │ ├── __init__.py │ ├── azure_openai.py │ ├── base.py │ ├── custom.py │ ├── dial.py │ ├── gemini.py │ ├── openai.py │ ├── openai_compatible.py │ ├── openrouter.py │ ├── registries/ │ │ ├── __init__.py │ │ ├── azure.py │ │ ├── base.py │ │ ├── custom.py │ │ ├── dial.py │ │ ├── gemini.py │ │ ├── openai.py │ │ ├── openrouter.py │ │ └── xai.py │ ├── registry.py │ ├── registry_provider_mixin.py │ ├── shared/ │ │ ├── __init__.py │ │ ├── model_capabilities.py │ │ ├── model_response.py │ │ ├── provider_type.py │ │ └── temperature.py │ └── xai.py ├── pyproject.toml ├── pytest.ini ├── requirements-dev.txt ├── requirements.txt ├── run-server.ps1 ├── run-server.sh ├── run_integration_tests.ps1 ├── run_integration_tests.sh ├── scripts/ │ └── sync_version.py ├── server.py ├── simulator_tests/ │ ├── __init__.py │ ├── base_test.py │ ├── conversation_base_test.py │ ├── log_utils.py │ ├── test_analyze_validation.py │ ├── test_basic_conversation.py │ ├── test_chat_simple_validation.py │ ├── test_codereview_validation.py │ ├── test_consensus_conversation.py │ ├── test_consensus_three_models.py │ ├── test_consensus_workflow_accurate.py │ ├── test_content_validation.py │ ├── test_conversation_chain_validation.py │ ├── test_cross_tool_comprehensive.py │ ├── test_cross_tool_continuation.py │ ├── test_debug_certain_confidence.py │ ├── test_debug_validation.py │ ├── test_line_number_validation.py │ ├── test_logs_validation.py │ ├── test_model_thinking_config.py │ ├── test_o3_model_selection.py │ ├── test_o3_pro_expensive.py │ ├── test_ollama_custom_url.py │ ├── test_openrouter_fallback.py │ ├── test_openrouter_models.py │ ├── test_per_tool_deduplication.py │ ├── test_planner_continuation_history.py │ ├── test_planner_validation.py │ ├── test_planner_validation_old.py │ ├── test_precommitworkflow_validation.py │ ├── test_prompt_size_limit_bug.py │ ├── test_refactor_validation.py │ ├── test_secaudit_validation.py │ ├── test_testgen_validation.py │ ├── test_thinkdeep_validation.py │ ├── test_token_allocation_validation.py │ ├── test_vision_capability.py │ └── test_xai_models.py ├── systemprompts/ │ ├── __init__.py │ ├── analyze_prompt.py │ ├── chat_prompt.py │ ├── clink/ │ │ ├── codex_codereviewer.txt │ │ ├── default.txt │ │ ├── default_codereviewer.txt │ │ └── default_planner.txt │ ├── codereview_prompt.py │ ├── consensus_prompt.py │ ├── debug_prompt.py │ ├── docgen_prompt.py │ ├── generate_code_prompt.py │ ├── planner_prompt.py │ ├── precommit_prompt.py │ ├── refactor_prompt.py │ ├── secaudit_prompt.py │ ├── testgen_prompt.py │ ├── thinkdeep_prompt.py │ └── tracer_prompt.py ├── tests/ │ ├── CASSETTE_MAINTENANCE.md │ ├── __init__.py │ ├── conftest.py │ ├── gemini_cassettes/ │ │ ├── chat_codegen/ │ │ │ └── gemini25_pro_calculator/ │ │ │ └── mldev.json │ │ ├── chat_cross/ │ │ │ └── step1_gemini25_flash_number/ │ │ │ └── mldev.json │ │ └── consensus/ │ │ └── step2_gemini25_flash_against/ │ │ └── mldev.json │ ├── http_transport_recorder.py │ ├── mock_helpers.py │ ├── openai_cassettes/ │ │ ├── chat_cross_step2_gpt5_reminder.json │ │ ├── chat_gpt5_continuation.json │ │ ├── chat_gpt5_moon_distance.json │ │ ├── consensus_step1_gpt51_for.json │ │ ├── consensus_step1_gpt52_for.json │ │ ├── consensus_step1_gpt5_for.json │ │ └── o3_pro_basic_math.json │ ├── pii_sanitizer.py │ ├── sanitize_cassettes.py │ ├── test_alias_target_restrictions.py │ ├── test_auto_mode.py │ ├── test_auto_mode_comprehensive.py │ ├── test_auto_mode_custom_provider_only.py │ ├── test_auto_mode_model_listing.py │ ├── test_auto_mode_provider_selection.py │ ├── test_auto_model_planner_fix.py │ ├── test_azure_openai_provider.py │ ├── test_buggy_behavior_prevention.py │ ├── test_cassette_semantic_matching.py │ ├── test_challenge.py │ ├── test_chat_codegen_integration.py │ ├── test_chat_cross_model_continuation.py │ ├── test_chat_openai_integration.py │ ├── test_chat_simple.py │ ├── test_clink_claude_agent.py │ ├── test_clink_claude_parser.py │ ├── test_clink_codex_agent.py │ ├── test_clink_gemini_agent.py │ ├── test_clink_gemini_parser.py │ ├── test_clink_integration.py │ ├── test_clink_parsers.py │ ├── test_clink_tool.py │ ├── test_collaboration.py │ ├── test_config.py │ ├── test_consensus.py │ ├── test_consensus_integration.py │ ├── test_consensus_schema.py │ ├── test_conversation_continuation_integration.py │ ├── test_conversation_field_mapping.py │ ├── test_conversation_file_features.py │ ├── test_conversation_memory.py │ ├── test_conversation_missing_files.py │ ├── test_custom_openai_temperature_fix.py │ ├── test_custom_provider.py │ ├── test_debug.py │ ├── test_deploy_scripts.py │ ├── test_dial_provider.py │ ├── test_directory_expansion_tracking.py │ ├── test_disabled_tools.py │ ├── test_docker_claude_desktop_integration.py │ ├── test_docker_config_complete.py │ ├── test_docker_healthcheck.py │ ├── test_docker_implementation.py │ ├── test_docker_mcp_validation.py │ ├── test_docker_security.py │ ├── test_docker_volume_persistence.py │ ├── test_file_protection.py │ ├── test_gemini_token_usage.py │ ├── test_image_support_integration.py │ ├── test_image_validation.py │ ├── test_integration_utf8.py │ ├── test_intelligent_fallback.py │ ├── test_issue_245_simple.py │ ├── test_large_prompt_handling.py │ ├── test_line_numbers_integration.py │ ├── test_listmodels.py │ ├── test_listmodels_restrictions.py │ ├── test_mcp_error_handling.py │ ├── test_model_enumeration.py │ ├── test_model_metadata_continuation.py │ ├── test_model_resolution_bug.py │ ├── test_model_restrictions.py │ ├── test_o3_pro_output_text_fix.py │ ├── test_o3_temperature_fix_simple.py │ ├── test_openai_compatible_token_usage.py │ ├── test_openai_provider.py │ ├── test_openrouter_provider.py │ ├── test_openrouter_registry.py │ ├── test_openrouter_store_parameter.py │ ├── test_parse_model_option.py │ ├── test_path_traversal_security.py │ ├── test_per_tool_model_defaults.py │ ├── test_pii_sanitizer.py │ ├── test_pip_detection_fix.py │ ├── test_planner.py │ ├── test_precommit_workflow.py │ ├── test_prompt_regression.py │ ├── test_prompt_size_limit_bug_fix.py │ ├── test_provider_retry_logic.py │ ├── test_provider_routing_bugs.py │ ├── test_provider_utf8.py │ ├── test_providers.py │ ├── test_rate_limit_patterns.py │ ├── test_refactor.py │ ├── test_secaudit.py │ ├── test_server.py │ ├── test_supported_models_aliases.py │ ├── test_thinking_modes.py │ ├── test_tools.py │ ├── test_tracer.py │ ├── test_utf8_localization.py │ ├── test_utils.py │ ├── test_uvx_resource_packaging.py │ ├── test_uvx_support.py │ ├── test_workflow_file_embedding.py │ ├── test_workflow_metadata.py │ ├── test_workflow_prompt_size_validation_simple.py │ ├── test_workflow_utf8.py │ ├── test_xai_provider.py │ └── transport_helpers.py ├── tools/ │ ├── __init__.py │ ├── analyze.py │ ├── apilookup.py │ ├── challenge.py │ ├── chat.py │ ├── clink.py │ ├── codereview.py │ ├── consensus.py │ ├── debug.py │ ├── docgen.py │ ├── listmodels.py │ ├── models.py │ ├── planner.py │ ├── precommit.py │ ├── refactor.py │ ├── secaudit.py │ ├── shared/ │ │ ├── __init__.py │ │ ├── base_models.py │ │ ├── base_tool.py │ │ ├── exceptions.py │ │ └── schema_builders.py │ ├── simple/ │ │ ├── __init__.py │ │ └── base.py │ ├── testgen.py │ ├── thinkdeep.py │ ├── tracer.py │ ├── version.py │ └── workflow/ │ ├── __init__.py │ ├── base.py │ ├── schema_builders.py │ └── workflow_mixin.py └── utils/ ├── __init__.py ├── client_info.py ├── conversation_memory.py ├── env.py ├── file_types.py ├── file_utils.py ├── image_utils.py ├── model_context.py ├── model_restrictions.py ├── security_config.py ├── storage_backend.py └── token_utils.py