Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .github/workflows/publish-python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Publish Python Package

on:
push:
tags:
- "python-v*"
workflow_dispatch:

concurrency:
group: ${{ github.ref }}
cancel-in-progress: true

jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/python
environment:
name: pypi
url: https://pypi.org/p/model-metadata-central
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: "3.10"

- name: Sync dependencies
run: uv sync

- name: Build registry from YAML sources
run: uv run python scripts/build_registry.py

- name: Build
run: uv build

- name: Publish
run: uv publish --trusted-publishing always
62 changes: 62 additions & 0 deletions .github/workflows/publish-typescript.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Publish TypeScript Package

on:
push:
tags:
- "typescript-v*"

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
outputs:
version: ${{ steps.version.outputs.version }}

steps:
- uses: actions/checkout@v4

- name: Extract version from tag
id: version
run: echo "version=${GITHUB_REF#refs/tags/typescript-v}" >> $GITHUB_OUTPUT

- uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"

- name: Install dependencies
run: npm ci

- name: Build
run: npm run build
working-directory: packages/typescript

- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: dist-typescript-${{ steps.version.outputs.version }}
path: packages/typescript/dist
retention-days: 1

publish:
needs: build
runs-on: ubuntu-latest
environment:
name: npm
url: https://www.npmjs.com/package/model-metadata-central
permissions:
id-token: write
contents: read

steps:
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: dist-typescript-${{ needs.build.outputs.version }}
path: dist

- name: Publish to npm
uses: npmjs/action-publish-oidc@v1
with:
publish-access: public
106 changes: 106 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Validate & Build

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
validate-models:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Validate models YAML against schema
run: |
npm install ajv ajv-cli
npx ajv validate \
-s model-metadata.schema.json \
-d "models/*.yaml" \
--spec=draft2020 \
--all-errors || exit 1

- name: Validate providers YAML against schema
run: |
npx ajv validate \
-s provider.schema.json \
-d "providers/*.yaml" \
--spec=draft2020 \
--all-errors || exit 1

codegen:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"

- name: Run codegen
run: node scripts/codegen.mjs

- name: Check for changes
run: |
git diff --exit-code packages/typescript/src/generated/
git diff --exit-code packages/python/model_metadata/generated/

typescript:
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/typescript
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"

- name: Install deps and type-check
run: npm ci && npm run lint

python:
runs-on: ubuntu-latest
defaults:
run:
working-directory: packages/python
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: "3.10"

- name: Install dependencies
run: uv sync

- name: Build registry from YAML sources
run: uv run python scripts/build_registry.py

- name: Type-check generated models
run: |
uv run python -c "
from model_metadata.generated.models import ModelMetadata, ProviderMetadata
m = ModelMetadata.model_validate({
'model_id': 'test',
'model_type': 'chat',
'context_window': 1000
})
print('ModelMetadata valid:', m.model_id)
p = ProviderMetadata.model_validate({
'provider_id': 'openai',
'name': 'OpenAI',
'api_type': 'openai_compatible',
'routing_priority': 'direct'
})
print('ProviderMetadata valid:', p.provider_id)
"
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
__pycache__
.pytest_cache
.pytest_cache

node_modules
dist
Loading
Loading