From 03ef8f2181d182b4a6d35b0d69825f4dd2d2845e Mon Sep 17 00:00:00 2001 From: atacan Date: Sat, 20 Jun 2026 15:01:47 +0200 Subject: [PATCH 1/2] bd init: initialize beads issue tracking --- .beads/.gitignore | 85 +++++++++++++++++++++++++++---------- .beads/.local_version | 2 +- .beads/beads.left.jsonl | 0 .beads/beads.left.meta.json | 1 + .beads/interactions.jsonl | 0 .beads/metadata.json | 7 ++- .gitignore | 5 +++ 7 files changed, 75 insertions(+), 25 deletions(-) create mode 100644 .beads/beads.left.jsonl create mode 100644 .beads/beads.left.meta.json create mode 100644 .beads/interactions.jsonl diff --git a/.beads/.gitignore b/.beads/.gitignore index f438450..304f708 100644 --- a/.beads/.gitignore +++ b/.beads/.gitignore @@ -1,29 +1,70 @@ -# SQLite databases +# Dolt database (managed by Dolt, not git) +dolt/ +embeddeddolt/ + +# Runtime files +bd.sock +bd.sock.startlock +sync-state.json +last-touched +.exclusive-lock + +# Daemon runtime (lock, log, pid) +daemon.* + +# Push state (runtime, per-machine) +push-state.json + +# Lock files (various runtime locks) +*.lock + +# Credential key (encryption key for federation peer auth — never commit) +.beads-credential-key + +# Local version tracking (prevents upgrade notification spam after git ops) +.local_version + +# Worktree redirect file (contains relative path to main repo's .beads/) +# Must not be committed as paths would be wrong in other clones +redirect + +# Sync state (local-only, per-machine) +# These files are machine-specific and should not be shared across clones +.sync.lock +export-state/ +export-state.json + +# Ephemeral store (SQLite - wisps/molecules, intentionally not versioned) +ephemeral.sqlite3 +ephemeral.sqlite3-journal +ephemeral.sqlite3-wal +ephemeral.sqlite3-shm + +# Dolt server management (auto-started by bd) +dolt-server.pid +dolt-server.log +dolt-server.lock +dolt-server.port +dolt-server.activity + +# Corrupt backup directories (created by bd doctor --fix recovery) +*.corrupt.backup/ + +# Backup data (auto-exported JSONL, local-only) +backup/ + +# Per-project environment file (Dolt connection config, GH#2520) +.env + +# Legacy files (from pre-Dolt versions) *.db *.db?* *.db-journal *.db-wal *.db-shm - -# Daemon runtime files -daemon.lock -daemon.log -daemon.pid -bd.sock - -# Legacy database files db.sqlite bd.db - -# Merge artifacts (temporary files from 3-way merge) -beads.base.jsonl -beads.base.meta.json -beads.left.jsonl -beads.left.meta.json -beads.right.jsonl -beads.right.meta.json - -# Keep JSONL exports and config (source of truth for git) -!issues.jsonl -!metadata.json -!config.json +# NOTE: Do NOT add negation patterns here. +# They would override fork protection in .git/info/exclude. +# Config files (metadata.json, config.yaml) are tracked by git by default +# since no pattern above ignores them. diff --git a/.beads/.local_version b/.beads/.local_version index c25c8e5..ee90284 100644 --- a/.beads/.local_version +++ b/.beads/.local_version @@ -1 +1 @@ -0.30.0 +1.0.4 diff --git a/.beads/beads.left.jsonl b/.beads/beads.left.jsonl new file mode 100644 index 0000000..e69de29 diff --git a/.beads/beads.left.meta.json b/.beads/beads.left.meta.json new file mode 100644 index 0000000..314f245 --- /dev/null +++ b/.beads/beads.left.meta.json @@ -0,0 +1 @@ +{"version":"0.29.0","timestamp":"2025-12-16T10:52:56.250828+01:00","commit":"6d2808a"} \ No newline at end of file diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl new file mode 100644 index 0000000..e69de29 diff --git a/.beads/metadata.json b/.beads/metadata.json index c787975..bd4fc69 100644 --- a/.beads/metadata.json +++ b/.beads/metadata.json @@ -1,4 +1,7 @@ { - "database": "beads.db", - "jsonl_export": "issues.jsonl" + "database": "dolt", + "backend": "dolt", + "dolt_mode": "embedded", + "dolt_database": "speechall_python_sdk", + "project_id": "c364bbd0-810b-4e5b-9e73-a31e7ac1d645" } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 57e02ba..b420491 100644 --- a/.gitignore +++ b/.gitignore @@ -147,3 +147,8 @@ uv.lock # AI planning documents (optional) history/ + +# Beads / Dolt files (added by bd init) +.dolt/ +*.db +.beads-credential-key From eb5dc918f1356d2a227746879e0527954e06bef7 Mon Sep 17 00:00:00 2001 From: atacan Date: Sat, 20 Jun 2026 15:15:41 +0200 Subject: [PATCH 2/2] Regenerate Python SDK for v0.4.0 --- .beads/issues.jsonl | 1 + fern/generators.yml | 2 +- pyproject.toml | 2 +- regenerate.sh | 4 +- src/types/transcription_model_identifier.py | 71 +++++++++------------ 5 files changed, 36 insertions(+), 44 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 45a1269..f8ba9eb 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -3,3 +3,4 @@ {"id":"speechall-python-sdk-416.2","title":"Create test CI workflow for pull requests","description":"## Overview\nCreate a GitHub Actions workflow that runs tests on pull requests and pushes to the main branch.\n\n## Context\n- The project uses pytest for testing\n- Python versions 3.8-3.12 are supported (per pyproject.toml classifiers)\n- Dev dependencies include pytest, pytest-asyncio, and mypy\n\n## File to Create\n`.github/workflows/test.yml`\n\n## Implementation\n\n```yaml\nname: Test\n\non:\n push:\n branches: [main]\n pull_request:\n branches: [main]\n\njobs:\n test:\n runs-on: ubuntu-latest\n strategy:\n matrix:\n python-version: [\"3.8\", \"3.9\", \"3.10\", \"3.11\", \"3.12\"]\n\n steps:\n - uses: actions/checkout@v4\n \n - name: Set up Python ${{ matrix.python-version }}\n uses: actions/setup-python@v5\n with:\n python-version: ${{ matrix.python-version }}\n \n - name: Install dependencies\n run: |\n python -m pip install --upgrade pip\n pip install -e \".[dev]\"\n \n - name: Run tests\n run: pytest tests/ -v || echo \"No tests found\"\n```\n\n## Key Points\n- Uses matrix strategy to test against all supported Python versions\n- Installs package in editable mode with dev dependencies\n- Gracefully handles case where no tests exist yet\n- Triggers on both PRs (for review) and pushes (for verification)\n\n## Acceptance Criteria\n- [ ] Workflow file created at `.github/workflows/test.yml`\n- [ ] Tests run on pull requests to main\n- [ ] Tests run on pushes to main\n- [ ] All Python versions 3.8-3.12 are tested","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-16T11:37:12.989765+01:00","updated_at":"2025-12-16T11:41:33.013357+01:00","closed_at":"2025-12-16T11:41:33.013357+01:00","dependencies":[{"issue_id":"speechall-python-sdk-416.2","depends_on_id":"speechall-python-sdk-416","type":"parent-child","created_at":"2025-12-16T11:37:12.99021+01:00","created_by":"daemon"}]} {"id":"speechall-python-sdk-416.3","title":"Create PR and merge to main to trigger PyPI release","description":"## Overview\nCreate a pull request from the `prepare-fern-release` branch to `main` and merge it to trigger the automated PyPI release.\n\n## Prerequisites\n- speechall-python-sdk-416.1: Version updated to 0.3.0\n- speechall-python-sdk-416.2: Test CI workflow created\n\n## Steps\n\n### 1. Commit all changes\nEnsure all changes are committed to the `prepare-fern-release` branch:\n- Updated `pyproject.toml` with version 0.3.0\n- New `.github/workflows/test.yml` file\n\n### 2. Push the branch\n```bash\ngit push origin prepare-fern-release\n```\n\n### 3. Create the Pull Request\n```bash\ngh pr create --title \"Release v0.3.0: Fern-generated SDK\" --body \"$(cat \u003c\u003c'PRBODY'\n## Summary\n- Migrates SDK to Fern code generation\n- Updates version to 0.3.0 (breaking change from 0.2.0)\n- Adds test CI workflow for pull requests\n\n## Changes\n- Updated `pyproject.toml` version to 0.3.0\n- Added `.github/workflows/test.yml` for CI testing\n\n## Release Process\nOn merge, the `publish-to-pypi.yml` workflow will automatically:\n1. Build the package\n2. Publish `speechall==0.3.0` to PyPI\nPRBODY\n)\"\n```\n\n### 4. Review and Merge\n- Wait for CI checks to pass\n- Review the PR\n- Merge to main\n\n### 5. Verify Release\nAfter merge:\n1. Check GitHub Actions for successful workflow runs\n2. Verify package on PyPI: https://pypi.org/project/speechall/0.3.0/\n3. Test installation: `pip install speechall==0.3.0`\n\n## Acceptance Criteria\n- [ ] PR created from prepare-fern-release to main\n- [ ] CI tests pass\n- [ ] PR merged to main\n- [ ] PyPI publish workflow completes successfully\n- [ ] speechall==0.3.0 available on PyPI","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-16T11:38:42.904536+01:00","updated_at":"2025-12-16T11:53:15.969948+01:00","closed_at":"2025-12-16T11:53:15.969948+01:00","dependencies":[{"issue_id":"speechall-python-sdk-416.3","depends_on_id":"speechall-python-sdk-416","type":"parent-child","created_at":"2025-12-16T11:38:42.904884+01:00","created_by":"daemon"},{"issue_id":"speechall-python-sdk-416.3","depends_on_id":"speechall-python-sdk-416.1","type":"blocks","created_at":"2025-12-16T11:38:42.905287+01:00","created_by":"daemon"},{"issue_id":"speechall-python-sdk-416.3","depends_on_id":"speechall-python-sdk-416.2","type":"blocks","created_at":"2025-12-16T11:38:42.905609+01:00","created_by":"daemon"}]} {"id":"speechall-python-sdk-u8e","title":"Fix pyproject.toml license field format for PEP 621 compliance","description":"## Issue\nCI tests are failing due to invalid `project.license` configuration in pyproject.toml.\n\n## Error\n```\nconfiguration error: `project.license` must be valid exactly by one definition (2 matches found):\n - keys: 'file': {type: string} required: ['file']\n - keys: 'text': {type: string} required: ['text']\n\nGIVEN VALUE: \"MIT\"\n```\n\n## Root Cause\nThe current format `license = \"MIT\"` is invalid per PEP 621. The license field must be either:\n1. `license = {text = \"MIT\"}` for SPDX identifier, or\n2. `license = {file = \"LICENSE\"}` for file reference\n\n## Solution\nChange line 11 in pyproject.toml from:\n```toml\nlicense = \"MIT\"\n```\nto:\n```toml\nlicense = {text = \"MIT\"}\n```\n\n## References\n- Test failure log: history/test_fail.log\n- PEP 621: https://peps.python.org/pep-0621/#license\n- Error occurred in CI on PR #3","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-16T11:58:50.171495+01:00","updated_at":"2025-12-16T11:59:19.438107+01:00","closed_at":"2025-12-16T11:59:19.438107+01:00","dependencies":[{"issue_id":"speechall-python-sdk-u8e","depends_on_id":"speechall-python-sdk-416.3","type":"blocks","created_at":"2025-12-16T11:58:50.172361+01:00","created_by":"daemon"}]} +{"id":"speechall-python-sdk-5nq","title":"Regenerate Python SDK from updated OpenAPI","status":"closed","priority":1,"issue_type":"task","created_at":"2026-06-20T13:01:58Z","created_by":"atacan","updated_at":"2026-06-20T13:13:30Z","started_at":"2026-06-20T13:02:01Z","closed_at":"2026-06-20T13:13:30Z","close_reason":"Completed Python SDK regeneration and PR preparation","owner":"atacandur@icloud.com"} diff --git a/fern/generators.yml b/fern/generators.yml index ac267c2..7bddc81 100644 --- a/fern/generators.yml +++ b/fern/generators.yml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=https://schema.buildwithfern.dev/generators-yml.json api: specs: - - openapi: ../../speechall-openapi/openapi.yaml + - openapi: ../../../Speechall-Repositories/speechall-openapi/openapi.yaml default-group: local groups: local: diff --git a/pyproject.toml b/pyproject.toml index 958e741..6e2b576 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "speechall" -version = "0.3.0" +version = "0.4.0" description = "Python SDK for Speechall API - Speech-to-text transcription service" readme = "README.md" requires-python = ">=3.8" diff --git a/regenerate.sh b/regenerate.sh index 81b07a9..2cd4122 100755 --- a/regenerate.sh +++ b/regenerate.sh @@ -3,8 +3,8 @@ set -e echo "🔍 Validating OpenAPI spec..." # Check if OpenAPI file exists -if [ ! -f "../speechall-openapi/openapi.yaml" ]; then - echo "❌ Error: OpenAPI spec not found at ../speechall-openapi/openapi.yaml" +if [ ! -f "../../Speechall-Repositories/speechall-openapi/openapi.yaml" ]; then + echo "❌ Error: OpenAPI spec not found at ../../Speechall-Repositories/speechall-openapi/openapi.yaml" exit 1 fi diff --git a/src/types/transcription_model_identifier.py b/src/types/transcription_model_identifier.py index e1a1f19..0dd4aa3 100644 --- a/src/types/transcription_model_identifier.py +++ b/src/types/transcription_model_identifier.py @@ -5,54 +5,45 @@ TranscriptionModelIdentifier = typing.Union[ typing.Literal[ "amazon.transcribe", - "assemblyai.best", - "assemblyai.nano", - "assemblyai.slam-1", "assemblyai.universal", + "assemblyai.universal-2", + "assemblyai.universal-3-pro", "azure.standard", "cloudflare.whisper", "cloudflare.whisper-large-v3-turbo", "cloudflare.whisper-tiny-en", - "deepgram.base", - "deepgram.base-conversationalai", - "deepgram.base-finance", - "deepgram.base-general", - "deepgram.base-meeting", - "deepgram.base-phonecall", - "deepgram.base-video", - "deepgram.base-voicemail", - "deepgram.enhanced", - "deepgram.enhanced-finance", - "deepgram.enhanced-general", - "deepgram.enhanced-meeting", - "deepgram.enhanced-phonecall", - "deepgram.nova", - "deepgram.nova-general", - "deepgram.nova-phonecall", + "deepgram.nova-3", + "deepgram.nova-3-general", + "deepgram.nova-3-medical", "deepgram.nova-2", - "deepgram.nova-2-atc", - "deepgram.nova-2-automotive", - "deepgram.nova-2-conversationalai", - "deepgram.nova-2-drivethru", - "deepgram.nova-2-finance", "deepgram.nova-2-general", - "deepgram.nova-2-medical", "deepgram.nova-2-meeting", - "deepgram.nova-2-phonecall", - "deepgram.nova-2-video", + "deepgram.nova-2-finance", + "deepgram.nova-2-conversationalai", "deepgram.nova-2-voicemail", - "deepgram.nova-3", - "deepgram.nova-3-general", - "deepgram.nova-3-medical", - "deepgram.whisper", - "deepgram.whisper-base", - "deepgram.whisper-large", - "deepgram.whisper-medium", - "deepgram.whisper-small", - "deepgram.whisper-tiny", + "deepgram.nova-2-video", + "deepgram.nova-2-medical", + "deepgram.nova-2-drivethru", + "deepgram.nova-2-automotive", + "deepgram.nova", + "deepgram.nova-general", + "deepgram.nova-phonecall", + "deepgram.nova-medical", + "deepgram.enhanced", + "deepgram.enhanced-general", + "deepgram.enhanced-meeting", + "deepgram.enhanced-phonecall", + "deepgram.enhanced-finance", + "deepgram.base", + "deepgram.meeting", + "deepgram.phonecall", + "deepgram.finance", + "deepgram.conversationalai", + "deepgram.voicemail", + "deepgram.video", "elevenlabs.scribe-v1", - "falai.elevenlabs-speech-to-text", - "falai.speech-to-text", + "falai.cohere-transcribe", + "falai.nvidia-nemotron-asr-multilingual", "falai.whisper", "falai.wizper", "fireworksai.whisper-v3", @@ -63,15 +54,15 @@ "gemini.gemini-2.5-pro", "gemini.gemini-2.5-flash", "gemini.gemini-2.5-flash-lite", - "gemini.gemini-2.0-flash", - "gemini.gemini-2.0-flash-lite", "groq.whisper-large-v3", "groq.whisper-large-v3-turbo", "ibm.standard", "mistral.voxtral-mini", + "mistral.voxtral-mini-v2", "openai.whisper-1", "openai.gpt-4o-transcribe", "openai.gpt-4o-mini-transcribe", + "openai.gpt-4o-transcribe-diarize", "revai.machine", "revai.fusion", "speechmatics.enhanced",