Commit graph

228 commits

Author SHA1 Message Date
JerrettDavis
7bf5190449 fix: add diagnostic step to verify changelog file before upload 2026-04-15 22:41:47 -05:00
JerrettDavis
4a75e73194 fix: add debug step to diagnose changelog artifact issue 2026-04-15 22:38:53 -05:00
JerrettDavis
e91e4f9672 fix: correct YAML mapping for permissions block 2026-04-15 22:10:21 -05:00
JerrettDavis
bc49e6da16 fix: build TypeScript packages, add OIDC permission, sync SDK dep, scope GPR publish
- publish-pypi: add permissions: id-token: write for OIDC trusted publishing
- publish-npm: add npm run build before npm publish for both packages
- publish-github-packages: add npm run build, use --registry for GPR
- version-sync: add update_openclaw_package_json to sync headroom-ai dep range

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 22:09:05 -05:00
JerrettDavis
af7d6b7430 Merge branch 'ci/release-automation' of https://github.com/JerrettDavis/headroom into ci/release-automation 2026-04-15 22:00:06 -05:00
JD Davis
9e37b38c7a
Merge branch 'chopratejas:main' into ci/release-automation 2026-04-15 21:44:11 -05:00
JerrettDavis
049b3527a8 refactor: implement canonical+commit-height release algorithm
The release workflow now uses a loop-free algorithm:
- pyproject.toml is the canonical source of truth (never committed by workflow)
- Git tags use v{canonical}.{height} format (e.g. v0.5.25.3)
- npm publishes use 3-part semver bumped from canonical
- No commit step eliminates infinite release loops
- paths-ignore reduces unnecessary workflow triggers

Also:
- Add .releaseetadata to .gitignore
- Separate npm_version output for semver-compatible npm publishing
- create-release no longer blocks on publish jobs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 21:26:13 -05:00
JerrettDavis
910796ded2 feat: add act testing config, fix gitignore, make workflow production-ready
- Add .actrc with act defaults (Ubuntu runner, reuse, quiet)
- Add .github/act/dry-run.json and push-feat.json for local workflow testing
- Add .actrc.local.example for local overrides (gitignored)
- Add .env.act.example documenting required secrets
- Fix .gitignore: .env.act excluded, .env.act.example allowed
- Replace all bash git commands with Python subprocess (act compatibility)
- Add pip install build wheel for python -m build step
- Use absolute paths for artifact uploads (github.workspace)
- All publish jobs: dry_run + *_SKIP vars as safety gates
2026-04-15 20:28:29 -05:00
JerrettDavis
f33ec4e269 refactor: fully parameterized release workflow with top-level env block 2026-04-15 19:56:17 -05:00
JerrettDavis
8ba43e9dea fix: use correct npm package names (headroom-openclaw), add config comment block 2026-04-15 19:51:04 -05:00
JerrettDavis
e81c13fc84 fix: add separate job for GitHub Package Registry publish 2026-04-15 19:49:20 -05:00
JerrettDavis
cf00b06b70 chore: disable publish.yml auto-trigger (superseded by release.yml) 2026-04-15 19:37:15 -05:00
JerrettDavis
272c9736ac ci: add commitlint for conventional commit enforcement 2026-04-15 19:36:49 -05:00
JerrettDavis
ba589be753 feat: add unified release workflow with semantic versioning 2026-04-15 19:36:28 -05:00
chopratejas
4641e43891 Add supply chain hardening: SBOM, cosign signing, pinned digests, Dependabot
Enterprise supply chain improvements:
- publish.yml: Generate CycloneDX SBOM and attach to GitHub releases
- docker.yml: Sign all Docker images with Sigstore cosign (keyless OIDC)
- Dockerfile: Pin python:3.11-slim and distroless base images with SHA256
  digests to prevent silent upstream changes
- Add .github/dependabot.yml for automated Docker digest, GitHub Actions,
  and pip dependency update PRs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 17:28:14 -07:00
JerrettDavis
865bef2216 fix: harden persistent install wrappers and review gaps
Align Docker-native wrapper help and runtime behavior with the Python install contract, including persistent deployment metadata, baked install-image defaults, and explicit unsupported wrap targets.

Harden the Python persistent-install path with profile validation, safer provider-scope handling, Windows environment restoration, runtime parity improvements, and rollback-safe apply/update behavior.

Update README, Docker install docs, CI, and focused regressions to cover the Windows BOM failure, wrapper parity, compose coverage, and Docker-native wrap behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 18:03:21 -05:00
JerrettDavis
b325a06aae feat: harden persistent install wrappers
Tighten Docker-native bash and PowerShell wrapper validation for wrap and proxy flows, pin the bash wrapper to the install-time interpreter, clean up failed persistent container starts, and extend docs, CI, e2e, and native installer coverage for persistent Docker installs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-11 15:56:18 -05:00
JerrettDavis
fdf7d1e138 fix: harden devcontainer worktree startup
Make the devcontainer bootstrap and CI smoke tests work from linked worktrees, including git metadata translation, cache ownership fixes, workspace path handling, and config-scoped smoke checks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-10 13:49:29 -05:00
JerrettDavis
a1beb08d53 feat: add reproducible devcontainers
Add a default devcontainer and a compose-backed memory-stack profile, validate them in CI, and document the contributor workflow.

Also lock the memory-stack dependencies, pin related container tooling, and sync the latest healthcheck shutdown fix for stubbed memory handlers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-10 12:58:35 -05:00
JerrettDavis
1967859ef6 feat(ci): add docker wrap e2e workflow
Add a Docker-based end-to-end harness that validates Headroom's Codex, Aider, Cursor, and OpenClaw wrap flows without calling real model providers.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-07 22:36:43 -05:00
pratikbin
63aebe8235 refactor(docker): migrate to bake with multi-variant distroless images 2026-04-04 21:51:37 +05:30
pratikbin
944b35d78b feat: Dockerfile & ci 2026-04-03 01:02:26 +05:30
chopratejas
a2b2ec5463 Add OSS evaluation suite, universal JSON crush, latency benchmarks
Evaluation Suite:
- Tiered eval framework (Tier 1 ~$3/15min, Tier 2/3 for extended coverage)
- 16 benchmarks across 3 tiers: GSM8K, TruthfulQA, MMLU, ARC, HumanEval,
  SQuAD v2, BFCL, Tool Outputs, CCR needle retention, HotpotQA, and more
- Before/After runner with full proxy support (compression + CCR retrieval)
- LLM-as-judge for ground-truth comparison (BFCL function calling)
- Zero-cost compression-only runner (CCR needle retention, info retention)
- Cost tracker with per-model pricing and budget enforcement
- Report card generator (Markdown, JSON, HTML)
- Suite CLI: python -m headroom.evals suite --tier 1
- Fix BFCL dataset loader for current HuggingFace schema
- CI workflow: PR smoke test + weekly full Tier 1

Results: SQuAD 97%, BFCL 97%, Tool Outputs 100%, CCR 100%

SmartCrusher:
- Universal JSON crush for heterogeneous arrays
- Fix mypy redefinition warning in _crush_string_array

Other:
- Latency benchmark suite with docs
- Known limitations doc
- Prompt comparison evaluator
- Config updates for new features
2026-02-23 19:08:54 -08:00
chopratejas
d291710176 Add MkDocs GitHub Pages documentation site
- Add mkdocs.yml with Material theme (indigo, professional)
- Add docs/index.md landing page with quick install
- Add GitHub Actions workflow for auto-deployment
- Remove old docs/README.md (replaced by index.md)
2026-01-30 20:33:29 -08:00
chopratejas
1f806cef4c Add Agno integration tests to CI workflow 2026-01-16 16:11:02 -08:00
pythoninthegrass
ec7886481c Use oldest supported Python version (3.10) for package build
Build artifacts with Python 3.10 to ensure maximum compatibility
and avoid accidentally using newer features in build tooling.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 20:26:44 -06:00
pythoninthegrass
783fb080f5 Add Python 3.13 to CI matrix and optimize linting steps
Adds Python 3.13 to the test matrix. Optimizes CI by running linting
and type checking only on Python 3.12 instead of all versions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-14 20:26:44 -06:00
chopratejas
175746cc26 Prepare for OSS release v0.2.0
This commit prepares Headroom for public open source release with
comprehensive documentation, licensing, and community infrastructure.

License & Legal:
- Add Apache 2.0 LICENSE file
- Add NOTICE file with third-party attributions
- Add SECURITY.md for vulnerability reporting

Community:
- Add CONTRIBUTING.md with contribution guidelines
- Add CODE_OF_CONDUCT.md (Contributor Covenant)
- Add GitHub issue templates (bug report, feature request)
- Add pull request template

Documentation:
- Update README.md with compelling value proposition
- Add docs/getting-started.md
- Add docs/proxy.md for proxy server documentation
- Add docs/transforms.md for transform reference
- Add docs/api.md for API reference
- Add examples/README.md

Package Infrastructure:
- Add headroom/py.typed for PEP 561 compliance
- Add headroom/cli.py for CLI entry point
- Add .github/workflows/ci.yml for CI pipeline
- Add .github/workflows/publish.yml for PyPI publishing
- Update pyproject.toml with proper metadata

New Features:
- Add multi-provider support (Google, Cohere, LiteLLM, OpenAI-compatible)
- Add universal tokenizer registry with multiple backends
- Add model registry with pricing and context limits
- Add production proxy server with caching and rate limiting

Code Quality:
- Fix 83 lint issues via ruff auto-fix
- Fix version consistency (benchmarks 0.1.0 → 0.2.0)
- Add skip decorators for optional dependency tests
2026-01-07 11:36:44 -08:00