Skip to content

Commit 2c29d2f

Browse files
anandgupta42claude
andcommitted
feat: open-source readiness — engine bootstrap, branding cleanup, release infrastructure
- Add uv-managed Python engine bootstrap (bridge/engine.ts) — zero system dependencies - Add `altimate-code engine status/reset/path` CLI subcommand - Add unified release workflow (npm + PyPI + GitHub Release on v* tags) - Add CI workflow (TypeScript + Python 3.10/3.11/3.12 matrix) - Add engine-only publish workflow (engine-v* tags → PyPI) - Add version sync script (bump-version.ts) - Add open-source files: LICENSE (MIT), README, CONTRIBUTING, CODE_OF_CONDUCT, CHANGELOG, SECURITY - Add GitHub templates: bug report, feature request, PR template, dependabot - Fix build defines: OPENCODE_* → ALTIMATE_CLI_* (was breaking version detection) - Fix binary/package names: opencode → altimate-code throughout - Fix Docker/Homebrew/AUR: anomalyco/opencode → AltimateAI/altimate-code - Rename SDK exports: OpencodeClient → AltimateClient, createOpencodeClient → createAltimateClient - Update theme $schema URLs: opencode.ai → altimate-code.sh - Update pyproject.toml with full PyPI metadata - Update ping protocol to return engine version - Strip v prefix from ALTIMATE_CLI_VERSION in Script module - Update 30+ test files: env vars, paths, config names Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 25991fd commit 2c29d2f

120 files changed

Lines changed: 1972 additions & 826 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug to help us improve
4+
title: "[Bug] "
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Description
10+
11+
A clear and concise description of what the bug is.
12+
13+
## Steps to Reproduce
14+
15+
1. Go to '...'
16+
2. Run '...'
17+
3. See error
18+
19+
## Expected Behavior
20+
21+
A clear and concise description of what you expected to happen.
22+
23+
## Actual Behavior
24+
25+
A clear and concise description of what actually happened.
26+
27+
## Environment
28+
29+
- **OS:** [e.g., macOS 15.1, Ubuntu 24.04]
30+
- **CLI version:** [e.g., 0.1.0]
31+
- **Python version:** [e.g., 3.12.0]
32+
- **Node version:** [e.g., 22.0.0]
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a new feature or improvement
4+
title: "[Feature] "
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Description
10+
11+
A clear and concise description of the feature you'd like to see.
12+
13+
## Use Case
14+
15+
Describe the problem or workflow this feature would address.
16+
17+
## Proposed Solution
18+
19+
A clear and concise description of how you'd like it to work.
20+
21+
## Alternatives Considered
22+
23+
A clear and concise description of any alternative solutions or features you've considered.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Summary
2+
3+
What changed and why?
4+
5+
## Test Plan
6+
7+
How was this tested?
8+
9+
## Checklist
10+
11+
- [ ] Tests added/updated
12+
- [ ] Documentation updated (if needed)
13+
- [ ] CHANGELOG updated (if user-facing)

.github/dependabot.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: "npm"
4+
directory: "/"
5+
schedule:
6+
interval: "weekly"
7+
open-pull-requests-limit: 10
8+
- package-ecosystem: "pip"
9+
directory: "/packages/altimate-engine"
10+
schedule:
11+
interval: "weekly"
12+
open-pull-requests-limit: 5

.github/workflows/ci.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
typescript:
11+
name: TypeScript
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- uses: oven-sh/setup-bun@v2
17+
18+
- name: Install dependencies
19+
run: bun install
20+
21+
- name: Run tests
22+
run: bun test
23+
continue-on-error: true
24+
25+
python:
26+
name: Python ${{ matrix.python-version }}
27+
runs-on: ubuntu-latest
28+
strategy:
29+
matrix:
30+
python-version: ["3.10", "3.11", "3.12"]
31+
steps:
32+
- uses: actions/checkout@v4
33+
34+
- uses: actions/setup-python@v5
35+
with:
36+
python-version: ${{ matrix.python-version }}
37+
38+
- name: Install dependencies
39+
run: pip install -e ".[dev]"
40+
working-directory: packages/altimate-engine
41+
42+
- name: Run tests
43+
run: pytest
44+
working-directory: packages/altimate-engine
45+
46+
- name: Lint
47+
run: ruff check src
48+
working-directory: packages/altimate-engine
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Publish Engine
2+
3+
on:
4+
push:
5+
tags:
6+
- "engine-v*"
7+
8+
jobs:
9+
publish:
10+
name: Publish to PyPI
11+
runs-on: ubuntu-latest
12+
environment: pypi
13+
permissions:
14+
id-token: write
15+
steps:
16+
- uses: actions/checkout@v4
17+
18+
- uses: actions/setup-python@v5
19+
with:
20+
python-version: "3.12"
21+
22+
- name: Install build tools
23+
run: pip install build
24+
25+
- name: Build package
26+
run: python -m build
27+
working-directory: packages/altimate-engine
28+
29+
- name: Publish to PyPI
30+
uses: pypa/gh-action-pypi-publish@release/v1
31+
with:
32+
packages-dir: packages/altimate-engine/dist/

.github/workflows/release.yml

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*"
7+
8+
permissions:
9+
contents: write
10+
id-token: write
11+
packages: write
12+
13+
env:
14+
GH_REPO: AltimateAI/altimate-code
15+
16+
jobs:
17+
build:
18+
name: Build
19+
runs-on: ubuntu-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- uses: oven-sh/setup-bun@v2
24+
25+
- name: Install dependencies
26+
run: bun install
27+
28+
- name: Build all targets
29+
run: bun run packages/altimate-code/script/build.ts
30+
env:
31+
ALTIMATE_CLI_VERSION: ${{ github.ref_name }}
32+
ALTIMATE_CLI_CHANNEL: latest
33+
ALTIMATE_CLI_RELEASE: "1"
34+
GH_REPO: ${{ env.GH_REPO }}
35+
MODELS_DEV_API_JSON: packages/altimate-code/test/tool/fixtures/models-api.json
36+
37+
- name: Upload build artifacts
38+
uses: actions/upload-artifact@v4
39+
with:
40+
name: dist
41+
path: packages/altimate-code/dist/
42+
43+
publish-npm:
44+
name: Publish to npm
45+
needs: build
46+
runs-on: ubuntu-latest
47+
steps:
48+
- uses: actions/checkout@v4
49+
50+
- uses: oven-sh/setup-bun@v2
51+
52+
- name: Install dependencies
53+
run: bun install
54+
55+
- name: Download build artifacts
56+
uses: actions/download-artifact@v4
57+
with:
58+
name: dist
59+
path: packages/altimate-code/dist/
60+
61+
- name: Publish to npm
62+
run: bun run packages/altimate-code/script/publish.ts
63+
env:
64+
ALTIMATE_CLI_VERSION: ${{ github.ref_name }}
65+
ALTIMATE_CLI_CHANNEL: latest
66+
ALTIMATE_CLI_RELEASE: "1"
67+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
68+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
69+
GH_REPO: ${{ env.GH_REPO }}
70+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
71+
72+
publish-engine:
73+
name: Publish engine to PyPI
74+
needs: build
75+
runs-on: ubuntu-latest
76+
environment: pypi
77+
permissions:
78+
id-token: write
79+
steps:
80+
- uses: actions/checkout@v4
81+
82+
- uses: actions/setup-python@v5
83+
with:
84+
python-version: "3.12"
85+
86+
- name: Install build tools
87+
run: pip install build
88+
89+
- name: Build package
90+
run: python -m build
91+
working-directory: packages/altimate-engine
92+
93+
- name: Publish to PyPI
94+
uses: pypa/gh-action-pypi-publish@release/v1
95+
with:
96+
packages-dir: packages/altimate-engine/dist/
97+
98+
github-release:
99+
name: Create GitHub Release
100+
needs: [build, publish-npm]
101+
runs-on: ubuntu-latest
102+
permissions:
103+
contents: write
104+
steps:
105+
- uses: actions/checkout@v4
106+
with:
107+
fetch-depth: 0
108+
109+
- name: Generate release notes
110+
id: notes
111+
run: |
112+
# Get the previous tag
113+
PREV_TAG=$(git tag --sort=-version:refname | grep '^v' | head -2 | tail -1)
114+
CURRENT_TAG=${{ github.ref_name }}
115+
116+
# Generate changelog from commits between tags
117+
echo "## What's Changed" > notes.md
118+
echo "" >> notes.md
119+
120+
if [ -n "$PREV_TAG" ]; then
121+
# Categorize commits
122+
echo "### Features" >> notes.md
123+
git log ${PREV_TAG}..${CURRENT_TAG} --pretty=format:"- %s (%h)" --grep="^feat" >> notes.md || true
124+
echo "" >> notes.md
125+
echo "" >> notes.md
126+
127+
echo "### Bug Fixes" >> notes.md
128+
git log ${PREV_TAG}..${CURRENT_TAG} --pretty=format:"- %s (%h)" --grep="^fix" >> notes.md || true
129+
echo "" >> notes.md
130+
echo "" >> notes.md
131+
132+
echo "### Other Changes" >> notes.md
133+
git log ${PREV_TAG}..${CURRENT_TAG} --pretty=format:"- %s (%h)" --invert-grep --grep="^feat" --grep="^fix" >> notes.md || true
134+
echo "" >> notes.md
135+
else
136+
echo "Initial release" >> notes.md
137+
fi
138+
139+
echo "" >> notes.md
140+
echo "### Install" >> notes.md
141+
echo '```bash' >> notes.md
142+
echo "npm install -g altimate-code-ai@${CURRENT_TAG#v}" >> notes.md
143+
echo "# or" >> notes.md
144+
echo "brew install altimate/tap/altimate-code" >> notes.md
145+
echo '```' >> notes.md
146+
147+
echo "" >> notes.md
148+
echo "**Full Changelog**: https://github.com/${GH_REPO}/compare/${PREV_TAG}...${CURRENT_TAG}" >> notes.md
149+
env:
150+
GH_REPO: ${{ env.GH_REPO }}
151+
152+
- name: Download build artifacts
153+
uses: actions/download-artifact@v4
154+
with:
155+
name: dist
156+
path: packages/altimate-code/dist/
157+
158+
- name: Create GitHub Release
159+
uses: softprops/action-gh-release@v2
160+
with:
161+
body_path: notes.md
162+
draft: false
163+
prerelease: ${{ contains(github.ref_name, '-') }}
164+
files: |
165+
packages/altimate-code/dist/*.tar.gz
166+
packages/altimate-code/dist/*.zip
167+
env:
168+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [0.1.0] - 2025-06-01
9+
10+
### Added
11+
12+
- Initial open-source release
13+
- SQL analysis and formatting via Python engine
14+
- Column-level lineage tracking
15+
- dbt integration (profiles, lineage, `+` operator)
16+
- Warehouse connectivity (Snowflake, BigQuery, Databricks, Postgres, DuckDB, MySQL)
17+
- AI-powered SQL code review
18+
- TUI interface with Solid.js
19+
- MCP (Model Context Protocol) server support
20+
- Auto-bootstrapping Python engine via uv

CODE_OF_CONDUCT.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Code of Conduct
2+
3+
This project follows the [Contributor Covenant Code of Conduct v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).
4+
5+
By participating in this project, you agree to abide by its terms.
6+
7+
## Reporting
8+
9+
If you experience or witness unacceptable behavior, please contact us at **info@altimate.ai**.
10+
11+
All reports will be reviewed and investigated promptly and fairly. The project team is committed to maintaining confidentiality with regard to the reporter of an incident.

0 commit comments

Comments
 (0)