Reusable workflow `uses:` refs do not follow GitHub transfer redirects.
Update owner string from peptiderepo to peptide-repo post org-migration.
Agent-Session: fix-e2e-ref-20260617
deploy.yml uses `uses: ./.github/workflows/ci.yml` as a pre-deploy gate.
Without workflow_call in the on: block, GitHub rejects the reference and
the auto-deploy errors on every push to main. No plugin code changed;
no version bump (CI-only change per CONVENTIONS).
Agent-Session: cowork-2026-06-17-ci-workflowcall
Co-authored-by: peptiderepo <bot@peptiderepo.com>
After phpcbf auto-fix in previous commit, remaining violations are
all warnings (exit code 2). Apply same pattern as peptide-news-plugin:
composer run lint || test $? -eq 2
Adds [peptide_directory] shortcode with card grid, category taxonomy (8 terms),
search, pagination, detail modal, and /v1/compounds REST endpoint. Includes 9
new meta fields (half-life, stability, solubility, etc.), admin data tools for
migration/re-enrichment, integration hooks for cross-plugin extensibility,
dark mode support, and full uninstall cleanup. Refactors AI generator into
PSA_OpenRouter + PSA_KB_Builder classes. Adds PHPUnit tests for PostType and
Directory classes. Fixes QA findings: dead JS selector, renderError loading
state, numeric meta validation, prepared SQL in uninstall.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create PSA_Cost_Tracker class with database table for API call logging
- Log prompt/completion tokens and estimated cost for every OpenRouter API call
- Implement monthly budget system with hard stop (budget of 0 = unlimited)
- Add budget checks in validate_peptide_name() and generate_peptide_content()
- Add dry_run() method to estimate costs before making API calls
- Display monthly usage summary and recent API logs in admin settings
- Add monthly_budget setting to admin interface with number input field
- Update uninstall.php to drop psa_api_logs table on plugin removal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>