{
    "object_kind": "push",
    "event_name": "push",
    "before": "abc37abdf7b22ee9e68e26084c81c0c14302b2ec",
    "after": "4d6ef7825682d67534711d051366c962cb93ee85",
    "ref": "refs\/heads\/main",
    "ref_protected": true,
    "checkout_sha": "4d6ef7825682d67534711d051366c962cb93ee85",
    "message": null,
    "user_id": 19,
    "user_name": "Bohunka Zsolt",
    "user_username": "bohunkazsolt",
    "user_email": "[REDACTED]",
    "user_avatar": "https:\/\/www.gravatar.com\/avatar\/495e14a024c9ddd64b339a3ee5bcce2be2e8468e23180b4ee001574938728865?s=80&d=identicon",
    "project_id": 206,
    "project": {
        "id": 206,
        "name": "leadmachine",
        "description": null,
        "web_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "avatar_url": null,
        "git_ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git",
        "namespace": "LeadMachine",
        "visibility_level": 0,
        "path_with_namespace": "leadmachine\/leadmachine",
        "default_branch": "main",
        "ci_config_path": "",
        "homepage": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git"
    },
    "commits": [
        {
            "id": "4d6ef7825682d67534711d051366c962cb93ee85",
            "message": "Track LLM usage and costs (D-115).\n\n- **Backend**:\n  - Introduced `MeteredLlmProvider` to log model usage (`llm_usage` table) with tokens, durations, and cost estimates.\n  - Added `llm:costs` command for usage breakdowns by purpose (e.g., live, post-call) and per-call cost insights, with top 10 costliest calls.\n  - Implemented usage-specific configuration (`backend\/config\/llm.php` pricing) and table migration.\n  - Updated `CallAnalysisService` to associate model usage with calls.\n  - Enhanced live analysis interval configuration (default: 5s) and suggestion count logic (`0 = all`).\n\n- **Frontend**:\n  - Added \"Jump to Latest\" button for live transcripts when automatic follow pauses.\n\n- **Docs**:\n  - Documented `llm:costs`, usage tracking, pricing configuration, and UI changes in `DEVELOPMENT.md` and `DATA_MODEL.md`.\n\n- **Testing**:\n  - Added feature and unit tests for logging costs, configuration handling, and `llm:costs` output validation.\n",
            "title": "Track LLM usage and costs (D-115).",
            "timestamp": "2026-10-11T18:28:25+02:00",
            "url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine\/-\/commit\/4d6ef7825682d67534711d051366c962cb93ee85",
            "author": {
                "name": "Bohunka Zsolt",
                "email": "bohunka.zsolt@dh.hu"
            },
            "added": [
                "backend\/app\/Console\/Commands\/LlmCostsCommand.php",
                "backend\/app\/Domain\/Llm\/LlmPricing.php",
                "backend\/app\/Domain\/Llm\/LlmUsageContext.php",
                "backend\/app\/Domain\/Llm\/MeteredLlmProvider.php",
                "backend\/database\/migrations\/2026_10_11_000600_create_llm_usage_table.php",
                "backend\/tests\/Feature\/LlmUsageTest.php",
                "frontend\/lib\/core\/design\/lm_jump_to_latest.dart"
            ],
            "modified": [
                "backend\/app\/Console\/Commands\/DataResetCommand.php",
                "backend\/app\/Lab\/PromptLabService.php",
                "backend\/app\/Livewire\/Admin\/Changes\/ChangeList.php",
                "backend\/app\/Providers\/AppServiceProvider.php",
                "backend\/app\/Services\/Call\/CallAnalysisService.php",
                "backend\/app\/Services\/Call\/LiveAnalysisService.php",
                "backend\/config\/app_api.php",
                "backend\/config\/llm.php",
                "backend\/resources\/views\/livewire\/admin\/changes\/change-list.blade.php",
                "backend\/tests\/Feature\/AdminWebChangesTest.php",
                "backend\/tests\/Feature\/LiveAnalysisFlowTest.php",
                "backend\/tests\/Feature\/OpenAiCompatibleLlmProviderTest.php",
                "docs\/AI_PIPELINE.md",
                "docs\/DATA_MODEL.md",
                "docs\/DECISIONS.md",
                "docs\/DEVELOPMENT.md",
                "docs\/SPEC.md",
                "frontend\/lib\/core\/design\/README_REWORK.md",
                "frontend\/lib\/core\/design\/design.dart",
                "frontend\/lib\/core\/theme\/tokens.dart",
                "frontend\/lib\/features\/live_call\/live_call_screen.dart",
                "frontend\/lib\/features\/live_call\/transcript_view.dart",
                "frontend\/lib\/l10n\/app_en.arb",
                "frontend\/lib\/l10n\/app_hu.arb",
                "frontend\/lib\/l10n\/app_it.arb",
                "frontend\/test\/screenshots\/screens_test.dart",
                "frontend\/test\/transcript_test.dart"
            ],
            "removed": []
        }
    ],
    "total_commits_count": 1,
    "push_options": [],
    "repository": {
        "name": "leadmachine",
        "url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "description": null,
        "homepage": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine",
        "git_http_url": "http:\/\/git.dunahousedev.hu\/leadmachine\/leadmachine.git",
        "git_ssh_url": "git@git.dunahousedev.hu:leadmachine\/leadmachine.git",
        "visibility_level": 0
    },
    "output": [
        "\/etc\/apache2\/sites-available\/bohunkazsolt.leadmachine.dunahousedev.hu.conf exists.",
        "\/etc\/apache2\/sites-available\/leadmachine.dunahousedev.hu.conf exists.",
        "Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log",
        "An unexpected error occurred:",
        "BrokenPipeError: [Errno 32] Broken pipe",
        "Ask for help or search for solutions at https:\/\/community.letsencrypt.org. See the logfile \/var\/log\/letsencrypt\/letsencrypt.log or re-run Certbot with -v for more details.",
        "Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log",
        "An unexpected error occurred:",
        "BrokenPipeError: [Errno 32] Broken pipe",
        "Ask for help or search for solutions at https:\/\/community.letsencrypt.org. See the logfile \/var\/log\/letsencrypt\/letsencrypt.log or re-run Certbot with -v for more details.",
        "Fetching origin",
        "From git.dunahousedev.hu:leadmachine\/leadmachine",
        "   abc37ab..4d6ef78  main       -> origin\/main",
        "HEAD is now at 4d6ef78 Track LLM usage and costs (D-115).",
        "--OK--"
    ]
}