Skip to content

fix: clean node_modules before install in Inferno CI - #186

Merged
quotentiroler merged 80 commits into
mainfrom
develop
Dec 27, 2025
Merged

fix: clean node_modules before install in Inferno CI#186
quotentiroler merged 80 commits into
mainfrom
develop

Conversation

@quotentiroler

Copy link
Copy Markdown
Collaborator

Fixes esbuild version mismatch by clearing node_modules before install

quotentiroler and others added 22 commits October 27, 2025 21:41
- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)
- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit
Copilot AI review requested due to automatic review settings December 27, 2025 13:41
@quotentiroler
quotentiroler merged commit 33c0c74 into main Dec 27, 2025
10 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses an esbuild version mismatch issue in the Inferno CI workflow by clearing node_modules before installation. The changes include:

  • Adding rm -rf node_modules */node_modules before bun install to ensure clean dependency installation
  • Migrating from Docker Compose-based Inferno setup to direct Ruby execution
  • Adding service containers (Inferno DB, Redis) to the GitHub Actions workflow
  • Enhancing error handling and logging throughout the test execution
  • Updating package versions across multiple package.json files

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/smart-compliance-tests.yml Adds node_modules cleanup before install, migrates Inferno from Docker to direct Ruby execution, adds service containers, and improves error handling
ui/package.json Updates version string to include new build timestamp
scripts/package.json Updates version string to include new build timestamp
package.json Updates version string to include new build timestamp
backend/package.json Updates version string to include new build timestamp

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -81,84 +114,92 @@ jobs:

# Wait for Keycloak to be ready
echo "Waiting for Keycloak..."

Copilot AI Dec 27, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The wait time for Keycloak has been increased from 60 to 90 iterations (7.5 minutes total). This increase should be documented with a comment explaining why the longer timeout is necessary, or consider if this indicates an underlying performance issue that should be addressed.

Suggested change
echo "Waiting for Keycloak..."
echo "Waiting for Keycloak..."
# NOTE: This loop was intentionally increased to 90 iterations (7.5 minutes max)
# to account for slow Keycloak startup in CI (e.g., cold image pulls, DB migrations).
# If Keycloak frequently requires close to this full timeout, underlying performance
# issues (container startup time, database readiness, etc.) should be investigated.

Copilot uses AI. Check for mistakes.
Comment on lines +357 to +360
echo "| Passed | $PASSED |" >> $GITHUB_STEP_SUMMARY
echo "| Failed | $FAILED |" >> $GITHUB_STEP_SUMMARY
echo "| Skipped | $SKIPPED |" >> $GITHUB_STEP_SUMMARY
echo "| Errors | $ERRORS |" >> $GITHUB_STEP_SUMMARY

Copilot AI Dec 27, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The emoji indicators (✅, ❌, ⏭️, ⚠️) were removed from the status column. While this change makes the output cleaner, it reduces visual scanning efficiency. Consider restoring the emojis or document why they were removed.

Suggested change
echo "| Passed | $PASSED |" >> $GITHUB_STEP_SUMMARY
echo "| Failed | $FAILED |" >> $GITHUB_STEP_SUMMARY
echo "| Skipped | $SKIPPED |" >> $GITHUB_STEP_SUMMARY
echo "| Errors | $ERRORS |" >> $GITHUB_STEP_SUMMARY
echo "| Passed | $PASSED |" >> $GITHUB_STEP_SUMMARY
echo "| Failed | $FAILED |" >> $GITHUB_STEP_SUMMARY
echo "| ⏭️ Skipped | $SKIPPED |" >> $GITHUB_STEP_SUMMARY
echo "| ⚠️ Errors | $ERRORS |" >> $GITHUB_STEP_SUMMARY

Copilot uses AI. Check for mistakes.
# Run Inferno tests via API
- name: Run SMART Compliance Tests
id: inferno-tests
continue-on-error: true

Copilot AI Dec 27, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding continue-on-error: true silently allows test failures to pass the CI check. This undermines the purpose of compliance testing. If failures should be non-blocking during development, this should be controlled via a workflow input or environment variable rather than being hardcoded.

Copilot uses AI. Check for mistakes.
quotentiroler added a commit that referenced this pull request Jan 25, 2026
* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* feat: add SMART compliance tests CI workflow (#184)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: improve Inferno CI workflow (#185)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>

* fix: clean node_modules before install in Inferno CI

* fix: clean node_modules before install in Inferno CI (#186)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* fix: use oven-sh/setup-bun for Inferno CI

* fix: use Ruby 3.3 for Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* fix(ci): add robust error handling to Inferno test execution

- Add set +e to disable bash exit on error
- Add verbose debugging for API calls
- Properly handle HTTP codes and response parsing
- Add defensive jq parsing with 2>/dev/null
- Better status messages during test polling

* fix(ci): truncate session response output for better debugging

* fix(ci): add standalone_smart_auth_info input for Inferno tests

* fix(ci): run discovery tests only (no interactive OAuth needed)

* fix(ci): implement direct SMART 2.2.0 configuration validation

Instead of trying to run Inferno's interactive OAuth tests, we now:
1. Directly validate .well-known/smart-configuration fields
2. Check for required SMART 2.2.0 fields (authorization_endpoint, token_endpoint, capabilities)
3. Verify PKCE support and key capabilities
4. Document Inferno test groups for manual testing
5. Save configuration snapshots as artifacts

* fix(ci): discover FHIR server endpoints dynamically

- Query /fhir-servers to discover available FHIR servers
- Use discovered smartConfig endpoint path
- Gracefully handle case where no FHIR servers are configured
- Still validates proxy is running and healthy

* fix(ci): add HAPI FHIR server for SMART compliance testing

- Add HAPI FHIR R4 server as a GitHub Actions service container
- Configure FHIR_SERVER_BASE to point to the HAPI server
- Now tests have a real FHIR server to validate SMART configuration

* chore: update CI dependencies to latest versions

- PostgreSQL: 16-alpine  17-alpine (latest stable)
- Redis: 7-alpine  8-alpine (latest v8.4.0)
- HAPI FHIR: latest  v8.6.0-1 (pinned for reproducibility)
- Fix HAPI health check: use wget instead of curl
- Add health-start-period=45s for HAPI (takes ~32s to start)

* fix: remove HAPI health check, add manual wait step

The HAPI FHIR container doesn't have wget or curl installed.
Removed the container health check and added an explicit wait step
before starting the backend that properly waits for HAPI to respond.

* feat(ci): add Playwright automation for Inferno SMART tests

- Add Playwright for OAuth flow automation
- Create inferno-oauth-automation.js script
- Replace manual curl validation with actual Inferno test execution
- Use Keycloak test user (doctor/doctor123) for OAuth

* 🔄 Update version to 0.0.1-RELEASE.202512271303.55df35ce

* fix(ci): install Playwright in isolated directory to avoid npm conflicts

* fix(ci): use correct Keycloak environment variable names

* fix(ci): improve Inferno test group discovery and listing

* Revert "fix(ci): improve Inferno test group discovery and listing"

This reverts commit 8dd66e4b8f0eb28c3c18307781b8562283a48108.

* Reapply "fix(ci): improve Inferno test group discovery and listing"

This reverts commit f61a98c758464376294cfa4aac8bc1ace212657f.

* Revert "Reapply "fix(ci): improve Inferno test group discovery and listing""

This reverts commit b8d8e381aefe08a1fbf9b9eb3893dc37982b6bec.

* Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""

This reverts commit 54c9bce8d3dc1e8e9350891a87d4da5e2d55d3bb.

* Revert "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing"""

This reverts commit c28126e67442949fcd46a8bb0ecb8eea2bb9bc94.

* Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing"""

This reverts commit 9f5527dc6659c8924297f1da48c337bccac4e8b3.

* Revert "Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""""

This reverts commit 7f5464bffbdb08a236c17fb31a53f04b2d5922c5.

* Reapply "Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""""

This reverts commit a80d45641750ab43b54109253ef239fbb7052b23.

* fix(ci): use correct Inferno API endpoint for test runs

* Revert "fix(ci): use correct Inferno API endpoint for test runs"

This reverts commit e2dd3cba9026fb2f79630c41b9b4883e5b15fa0a.

* Reapply "fix(ci): use correct Inferno API endpoint for test runs"

This reverts commit b0e135d666bf127909d8b5ef11ac38c9d1364712.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test runs""

This reverts commit 6be5b1f4c5300a1c52d92a560464aba1244d9f22.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""

This reverts commit 7da0e45dff6ae692ffb0bf7d455e5b87b8dcee96.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs"""

This reverts commit 627827726da4f85ef211039ceb2e455ca9b977d3.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs"""

This reverts commit 89f289964eb15a31e87825fd5c6a7436cd1630b2.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""""

This reverts commit 132d030e53506b1c06ff31c84d2e84fb6631df35.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""""

This reverts commit 3ee6ec14f86ce5532946d01a8753e482ab07846b.

* fix(ci): provide standalone_smart_auth_info input for Inferno tests

* Revert "fix(ci): provide standalone_smart_auth_info input for Inferno tests"

This reverts commit ebf4513f3440455e5e31258328bbaa852a92f65a.

* Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"

This reverts commit 045be2274bb63a37720f8c7deea300813e56bc7e.

* Revert "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""

This reverts commit 5537be11774bc49eed6ffa347cafe3f69a2a743c.

* Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""

This reverts commit 1db804f3de383de1f2a535934be6d63954a09956.

* Revert "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""

This reverts commit db61fa0682c5a75de8cf1d04b318e8ed7d705bde.

* Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""

This reverts commit ce6a95356f86e822fdacabb97ded805272ee087c.

* Revert "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""""

This reverts commit 1c57cb99ffa13c4ab7a4ad322ea1ed3ba4ccb7d1.

* Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""""

This reverts commit 8feb4543e504ff0a1e709ea98b701293f57b4842.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""""

This reverts commit fc27fe8477a6d2a38b33e10400d81048ad427c0e.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""""

This reverts commit 8b15bbbee1682631e7d71bdabdb57b636c0b28a2.

* fix(ci): use correct Inferno API endpoint for test run status

* Revert "fix(ci): use correct Inferno API endpoint for test run status"

This reverts commit 50a1f6d45ff03c0890039792880f541d1f04ccf9.

* Reapply "fix(ci): use correct Inferno API endpoint for test run status"

This reverts commit 38eebf2443f562710f952bcc9bd20fe44a322d31.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test run status""

This reverts commit 9196e266bed8ffde892544850de0a972dffc58e8.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""

This reverts commit 8e84c37b80d32a04c8fbf98bc5e99de315d32b48.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""

This reverts commit 395f1237c84195ce38d8eeba948540ffbb4f943d.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""

This reverts commit ab75707ddab8325b295d3c56fbc324c64f41bdaf.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""

This reverts commit 1a64142736d6e9bf9e8405e9d974a113a81de60f.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""

This reverts commit 6972e44c56e64d48bb076c0a04ff05d4606cb086.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""

This reverts commit a310f97ae007373f5aa9fc8a2e6b6e26f903226d.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""

This reverts commit d3994cc032c4803980cc99300c0b970be9ef6b12.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""

This reverts commit a00a6bf606850047add76c4185842c1d7c0eed33.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""

This reverts commit 9265b61431d5baec6d946b74149cc17ea807a7e5.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""

This reverts commit 555eb9b49df0341193a68043b94a0ec9c6e1d51a.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""

This reverts commit fd425a4139ec4f69f554f572e94c0f2faab34405.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""

This reverts commit a34947d2e6b85cdaae97aa86fa381240b698c501.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""

This reverts commit ccab5cb094ea9ef9e5e58b8bf0c2b7395cf2174c.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""

This reverts commit 33cbd4a371285859b8b5ca7627b3cd27347d91ca.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""

This reverts commit b2b642a6a06515acdbb3dc7024941de00e90588e.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""

This reverts commit 1c85f25c420405ddf9855a43c58061776bbbdfbe.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""

This reverts commit 029a40bf0027668e771c4ccdad5fb7c828e492ef.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""

This reverts commit 979d67e9921ed9485b14ee11e5958e0a4a7a944d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""

This reverts commit a15aadea1f6bfe929f0f3399b161be72cf293ca2.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""

This reverts commit bda2b76b88845c7fdc18c742b049f7ce8e3c5f11.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""

This reverts commit 6cd03b2fd3be392e114ff44e32c1cf2c9965b704.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""

This reverts commit 65166ba8cffc56fa58a8651ba882be2bfe3c2f51.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""

This reverts commit fe73d5f8ff7d6135838dba2b0da0300d5bcced74.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""

This reverts commit c9f00f1631a3a22f67154851845ee8767ec7ecd2.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""

This reverts commit db79b00eefde0f8eb42ae55f0a5e1f5cfa4886ad.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""

This reverts commit 4801f38ff6d6394fcd80a134d23b6ddcebcc39de.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""

This reverts commit 841f9783c2b981e364a59d56595db7769b56acf5.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""

This reverts commit a30fb8714f7362f8ec0434ba033243523c010a9d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""

This reverts commit 15d53d2290960f17bbf2ce1a9d1b1cc8667df60c.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""

This reverts commit 49349cca48599650b00580f7f43063a11eab5bfc.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""

This reverts commit 49ebfe34ea401644aeb89b774576f12259d01a80.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""

This reverts commit fa8c20f9a87f2ddbc242e291138f80eeab320206.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""

This reverts commit 07c6b7e4e65f4ea20544c70c1fedc0cb9322ad7b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""

This reverts commit 12e744af289aed9372c4dbdc0452a8220864e020.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""

This reverts commit 25504c4c272ca5c5f7e1c3e38c370e4769beac62.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""

This reverts commit c39e34e0ca7aa5e096d6bc1f70531f02734d8525.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""

This reverts commit cde2fafab817271adf1a3a1d24aec9f1e49f291b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""

This reverts commit 94b4a62b88dd176028b8cb765e7e852155175b7d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""

This reverts commit 99502a13f0a47da7fb4a03445da51db907674b75.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""

This reverts commit 7789911804f1a93823e83368a8a817c5fc6cb7aa.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""

This reverts commit 21ca557fa558219c4ed85e3c0cd6ceae5883d37b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""

This reverts commit 21628dda797d61381e26d27405733f3fa5db829d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""

This reverts commit b3c2eff8fd6e10ce810770be22cc315e06d12803.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""""

This reverts commit 4f9d0fa6a509205f72cbff62742ff28917e0b699.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""""

This reverts commit 5a71a624511651b85cc4454aef148c11066d88c7.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""""

This reverts commit 2c649d08a9056820c9367a5401bfe42fa1a8b421.

* fix(ci): improve OAuth automation in Inferno tests

* Revert "fix(ci): improve OAuth automation in Inferno tests"

This reverts commit 88f7311c665665dcdb217ba88e3789edf2329796.

* Reapply "fix(ci): improve OAuth automation in Inferno tests"

This reverts commit ce1bee09a91e426fdfc165b3f8a9b92fec443d30.

* Revert "Reapply "fix(ci): improve OAuth automation in Inferno tests""

This reverts commit 09f5c98cb723da81f72ad2031a0e964ed3fc7d94.

* Reapply "Reapply "fix(ci): improve OAuth automation in Inferno tests""

This reverts commit bbf5df9f7d10527f3c47bd6dd7aec06601de714c.

* Revert "Reapply "Reapply "fix(ci): improve OAuth automation in Inferno tests"""

This reverts commit f9e2102d4fbd72fa32179e7392ff2aacdf69ea13.

* fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.

* Revert "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."

This reverts commit 8a8934a8919018f1914dd6aae3e4d43b52be3f66.

* Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."

This reverts commit 0faa28acdc7d7bc378fb04db16660c1e1308371b.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""

This reverts commit 19f319a8b23c75b46d0241ffa5858a9c1bb8bea5.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""

This reverts commit 42cf9d4fa2d61171c717405b5b5b4a111a19344a.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""

This reverts commit 99634dd791d01aa5a4d3f3c7d8dccaf5dcd222cc.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""

This reverts commit fff5765d8820799b716d0e7c119d9e776906615f.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""

This reverts commit 7a43c3bd15abbe82ce57cd119fc946b2f33f78ad.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""

This reverts commit 4723bbbcf1aa44e8c0f6fde646a1e4ab486a91f9.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""

This reverts commit c88fb8b667999983b16e768b602ba8c30670b1c2.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""

This reverts commit 94ff9d5c1ac266d871f6499e2d9c08e8d383955f.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""

This reverts commit e859c2d37fa21f12d7f6c5d30a58c35da84c8941.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""

This reverts commit 123c91a1c6c47cd2d8d71a781dfbe5331333b2e7.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""""

This reverts commit 69edad96d2c32f90617801121085c6deda8350bd.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""""

This reverts commit dd78fd161ac7bb0c90b4691e3fb0bcc396d677b2.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""""

This reverts commit 4db0bd34e37bdda1fe39a0687735794564165c30.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""""

This reverts commit 3cc50c9b60adf8d91c3baf20cf0234901e5708b6.

* fix(ci): add detailed logging to Inferno test polling - Add poll count logging for every API call - Add waiting status detection for OAuth flow - Increase timeout to 3 minutes - Log waiting result count

* chore(ci): temporarily disable production release workflow

* fix(ci): start Sidekiq worker for Inferno test processing Tests were stuck in 'queued' status because no background worker was processing them. Inferno uses Sidekiq for running tests asynchronously.

* fix(ci): use correct Sidekiq command with worker.rb for Inferno jobs

* fix(ci): cache Keycloak Docker image + fail on timeout/no tests

* fix(ci): improve Keycloak health check with HTTP status logging

* fix(ci): use /health endpoint instead of /health/ready for Keycloak

* fix(ci): wire up OAuth automation for Inferno tests waiting state

* fix(ci): use /realms/master for Keycloak health check + debug OAuth URL location

* fix(ci): fix regex syntax error in OAuth URL extraction

* fix(ci): improve OAuth URL detection with better field inspection

* fix(ci): fix OAuth URL extraction from markdown + add debug logging

* fix(ci): add SMART client scopes and test user to Keycloak

* feat(auth): add SMART scope translation in proxy

- Separate SMART scopes from OIDC scopes in /auth/authorize
- Only pass OIDC-compatible scopes to Keycloak
- Restore original SMART scopes in /auth/token response
- Encode SMART scopes in state parameter for round-trip
- Translate scope in token request to prevent Keycloak rejection
- Remove hardcoded SMART scope creation from CI workflow

This allows the proxy to work with standard Keycloak without
requiring custom SMART client scopes in the Keycloak realm.

* feat(keycloak): add SMART scopes and test client to realm export

- Add SMART on FHIR client scopes (launch/patient, patient/*.read, etc.)
- Add inferno-test-client pre-configured for testing
- Add testuser with offline_access role for OAuth testing
- Simplify CI to verify realm import instead of manual setup
- Remove scope translation from proxy (Keycloak handles it now)

* fix(keycloak): add offline_access realm role for refresh tokens

* fix(keycloak): add offline_access to default realm roles

* fix(keycloak): use defaultRole composite for offline_access

* fix(keycloak): add offline_access client scope definition

* fix(ci): explicitly assign offline_access role to users via API

* fix(smart): improve SMART 2.2.0 compliance

- Add jwks_uri to SMART configuration (required when sso-openid-connect supported)
- Remove 'plain' from code_challenge_methods_supported (SHALL NOT include per spec)
- Add CORS headers to .well-known/smart-configuration endpoint
- Add Cache-Control/Pragma headers to token response (RFC 6749 compliance)
- Add fhirUser protocol mapper to fhirUser client scope
- Set fhirUser attribute on doctor user for testing

* fix(types): add jwks_uri to OpenIDConfiguration interface

* fix: add fhirUser attribute to testuser for SMART compliance

* fix(keycloak): add built-in OIDC scopes to realm export

Add standard OpenID Connect scopes (openid, profile, email, address, phone,
roles, web-origins, acr, microprofile-jwt) to the realm-export.json.

Keycloak 26 was warning that these referenced scopes don't exist during import,
which may have been preventing the fhirUser protocol mapper from properly
adding the claim to ID tokens.

* refactor: remove hardcoded Keycloak API calls from CI, rely on realm-export.json

- Remove role creation/assignment API calls from CI workflow
- CI now only verifies configuration exists (read-only)
- Add offline_access role to doctor user in realm-export.json
- All configuration should come from realm-export.json

* refactor: remove hardcoded Keycloak URLs, auth endpoints discovered from SMART config

* chore: remove accidentally committed test results, add to .gitignore

* refactor: load test config from testing/alpha/inferno-config.json

- Remove hardcoded values from smart-compliance-tests.yml
- Load client_id, test_user, ports from alpha config
- Remove hardcoded auth endpoints (discovered from SMART config)
- Use alpha as default test stage

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

* fix: use bun 1.3.5 in Inferno CI (#187)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>
Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>

* Update

* Update

---------

Co-authored-by: quotentiroler <nussbaumer.max@hotmail.com>
Co-authored-by: max <40643627+quotentiroler@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>
Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>
quotentiroler added a commit that referenced this pull request Jan 25, 2026
* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

* Update

* Update

* 🧪 Auto-PR: Merge `develop` → `test` (#180)

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* feat: add SMART compliance tests CI workflow (#184)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: improve Inferno CI workflow (#185)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>

* fix: clean node_modules before install in Inferno CI

* fix: clean node_modules before install in Inferno CI (#186)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* fix: use oven-sh/setup-bun for Inferno CI

* fix: use Ruby 3.3 for Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* fix(ci): add robust error handling to Inferno test execution

- Add set +e to disable bash exit on error
- Add verbose debugging for API calls
- Properly handle HTTP codes and response parsing
- Add defensive jq parsing with 2>/dev/null
- Better status messages during test polling

* fix(ci): truncate session response output for better debugging

* fix(ci): add standalone_smart_auth_info input for Inferno tests

* fix(ci): run discovery tests only (no interactive OAuth needed)

* fix(ci): implement direct SMART 2.2.0 configuration validation

Instead of trying to run Inferno's interactive OAuth tests, we now:
1. Directly validate .well-known/smart-configuration fields
2. Check for required SMART 2.2.0 fields (authorization_endpoint, token_endpoint, capabilities)
3. Verify PKCE support and key capabilities
4. Document Inferno test groups for manual testing
5. Save configuration snapshots as artifacts

* fix(ci): discover FHIR server endpoints dynamically

- Query /fhir-servers to discover available FHIR servers
- Use discovered smartConfig endpoint path
- Gracefully handle case where no FHIR servers are configured
- Still validates proxy is running and healthy

* fix(ci): add HAPI FHIR server for SMART compliance testing

- Add HAPI FHIR R4 server as a GitHub Actions service container
- Configure FHIR_SERVER_BASE to point to the HAPI server
- Now tests have a real FHIR server to validate SMART configuration

* chore: update CI dependencies to latest versions

- PostgreSQL: 16-alpine  17-alpine (latest stable)
- Redis: 7-alpine  8-alpine (latest v8.4.0)
- HAPI FHIR: latest  v8.6.0-1 (pinned for reproducibility)
- Fix HAPI health check: use wget instead of curl
- Add health-start-period=45s for HAPI (takes ~32s to start)

* fix: remove HAPI health check, add manual wait step

The HAPI FHIR container doesn't have wget or curl installed.
Removed the container health check and added an explicit wait step
before starting the backend that properly waits for HAPI to respond.

* feat(ci): add Playwright automation for Inferno SMART tests

- Add Playwright for OAuth flow automation
- Create inferno-oauth-automation.js script
- Replace manual curl validation with actual Inferno test execution
- Use Keycloak test user (doctor/doctor123) for OAuth

* 🔄 Update version to 0.0.1-RELEASE.202512271303.55df35ce

* fix(ci): install Playwright in isolated directory to avoid npm conflicts

* fix(ci): use correct Keycloak environment variable names

* fix(ci): improve Inferno test group discovery and listing

* Revert "fix(ci): improve Inferno test group discovery and listing"

This reverts commit 8dd66e4b8f0eb28c3c18307781b8562283a48108.

* Reapply "fix(ci): improve Inferno test group discovery and listing"

This reverts commit f61a98c758464376294cfa4aac8bc1ace212657f.

* Revert "Reapply "fix(ci): improve Inferno test group discovery and listing""

This reverts commit b8d8e381aefe08a1fbf9b9eb3893dc37982b6bec.

* Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""

This reverts commit 54c9bce8d3dc1e8e9350891a87d4da5e2d55d3bb.

* Revert "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing"""

This reverts commit c28126e67442949fcd46a8bb0ecb8eea2bb9bc94.

* Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing"""

This reverts commit 9f5527dc6659c8924297f1da48c337bccac4e8b3.

* Revert "Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""""

This reverts commit 7f5464bffbdb08a236c17fb31a53f04b2d5922c5.

* Reapply "Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""""

This reverts commit a80d45641750ab43b54109253ef239fbb7052b23.

* fix(ci): use correct Inferno API endpoint for test runs

* Revert "fix(ci): use correct Inferno API endpoint for test runs"

This reverts commit e2dd3cba9026fb2f79630c41b9b4883e5b15fa0a.

* Reapply "fix(ci): use correct Inferno API endpoint for test runs"

This reverts commit b0e135d666bf127909d8b5ef11ac38c9d1364712.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test runs""

This reverts commit 6be5b1f4c5300a1c52d92a560464aba1244d9f22.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""

This reverts commit 7da0e45dff6ae692ffb0bf7d455e5b87b8dcee96.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs"""

This reverts commit 627827726da4f85ef211039ceb2e455ca9b977d3.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs"""

This reverts commit 89f289964eb15a31e87825fd5c6a7436cd1630b2.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""""

This reverts commit 132d030e53506b1c06ff31c84d2e84fb6631df35.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""""

This reverts commit 3ee6ec14f86ce5532946d01a8753e482ab07846b.

* fix(ci): provide standalone_smart_auth_info input for Inferno tests

* Revert "fix(ci): provide standalone_smart_auth_info input for Inferno tests"

This reverts commit ebf4513f3440455e5e31258328bbaa852a92f65a.

* Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"

This reverts commit 045be2274bb63a37720f8c7deea300813e56bc7e.

* Revert "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""

This reverts commit 5537be11774bc49eed6ffa347cafe3f69a2a743c.

* Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""

This reverts commit 1db804f3de383de1f2a535934be6d63954a09956.

* Revert "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""

This reverts commit db61fa0682c5a75de8cf1d04b318e8ed7d705bde.

* Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""

This reverts commit ce6a95356f86e822fdacabb97ded805272ee087c.

* Revert "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""""

This reverts commit 1c57cb99ffa13c4ab7a4ad322ea1ed3ba4ccb7d1.

* Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""""

This reverts commit 8feb4543e504ff0a1e709ea98b701293f57b4842.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""""

This reverts commit fc27fe8477a6d2a38b33e10400d81048ad427c0e.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""""

This reverts commit 8b15bbbee1682631e7d71bdabdb57b636c0b28a2.

* fix(ci): use correct Inferno API endpoint for test run status

* Revert "fix(ci): use correct Inferno API endpoint for test run status"

This reverts commit 50a1f6d45ff03c0890039792880f541d1f04ccf9.

* Reapply "fix(ci): use correct Inferno API endpoint for test run status"

This reverts commit 38eebf2443f562710f952bcc9bd20fe44a322d31.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test run status""

This reverts commit 9196e266bed8ffde892544850de0a972dffc58e8.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""

This reverts commit 8e84c37b80d32a04c8fbf98bc5e99de315d32b48.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""

This reverts commit 395f1237c84195ce38d8eeba948540ffbb4f943d.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""

This reverts commit ab75707ddab8325b295d3c56fbc324c64f41bdaf.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""

This reverts commit 1a64142736d6e9bf9e8405e9d974a113a81de60f.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""

This reverts commit 6972e44c56e64d48bb076c0a04ff05d4606cb086.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""

This reverts commit a310f97ae007373f5aa9fc8a2e6b6e26f903226d.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""

This reverts commit d3994cc032c4803980cc99300c0b970be9ef6b12.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""

This reverts commit a00a6bf606850047add76c4185842c1d7c0eed33.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""

This reverts commit 9265b61431d5baec6d946b74149cc17ea807a7e5.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""

This reverts commit 555eb9b49df0341193a68043b94a0ec9c6e1d51a.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""

This reverts commit fd425a4139ec4f69f554f572e94c0f2faab34405.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""

This reverts commit a34947d2e6b85cdaae97aa86fa381240b698c501.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""

This reverts commit ccab5cb094ea9ef9e5e58b8bf0c2b7395cf2174c.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""

This reverts commit 33cbd4a371285859b8b5ca7627b3cd27347d91ca.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""

This reverts commit b2b642a6a06515acdbb3dc7024941de00e90588e.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""

This reverts commit 1c85f25c420405ddf9855a43c58061776bbbdfbe.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""

This reverts commit 029a40bf0027668e771c4ccdad5fb7c828e492ef.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""

This reverts commit 979d67e9921ed9485b14ee11e5958e0a4a7a944d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""

This reverts commit a15aadea1f6bfe929f0f3399b161be72cf293ca2.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""

This reverts commit bda2b76b88845c7fdc18c742b049f7ce8e3c5f11.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""

This reverts commit 6cd03b2fd3be392e114ff44e32c1cf2c9965b704.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""

This reverts commit 65166ba8cffc56fa58a8651ba882be2bfe3c2f51.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""

This reverts commit fe73d5f8ff7d6135838dba2b0da0300d5bcced74.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""

This reverts commit c9f00f1631a3a22f67154851845ee8767ec7ecd2.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""

This reverts commit db79b00eefde0f8eb42ae55f0a5e1f5cfa4886ad.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""

This reverts commit 4801f38ff6d6394fcd80a134d23b6ddcebcc39de.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""

This reverts commit 841f9783c2b981e364a59d56595db7769b56acf5.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""

This reverts commit a30fb8714f7362f8ec0434ba033243523c010a9d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""

This reverts commit 15d53d2290960f17bbf2ce1a9d1b1cc8667df60c.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""

This reverts commit 49349cca48599650b00580f7f43063a11eab5bfc.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""

This reverts commit 49ebfe34ea401644aeb89b774576f12259d01a80.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""

This reverts commit fa8c20f9a87f2ddbc242e291138f80eeab320206.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""

This reverts commit 07c6b7e4e65f4ea20544c70c1fedc0cb9322ad7b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""

This reverts commit 12e744af289aed9372c4dbdc0452a8220864e020.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""

This reverts commit 25504c4c272ca5c5f7e1c3e38c370e4769beac62.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""

This reverts commit c39e34e0ca7aa5e096d6bc1f70531f02734d8525.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""

This reverts commit cde2fafab817271adf1a3a1d24aec9f1e49f291b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""

This reverts commit 94b4a62b88dd176028b8cb765e7e852155175b7d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""

This reverts commit 99502a13f0a47da7fb4a03445da51db907674b75.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""

This reverts commit 7789911804f1a93823e83368a8a817c5fc6cb7aa.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""

This reverts commit 21ca557fa558219c4ed85e3c0cd6ceae5883d37b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""

This reverts commit 21628dda797d61381e26d27405733f3fa5db829d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""

This reverts commit b3c2eff8fd6e10ce810770be22cc315e06d12803.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""""

This reverts commit 4f9d0fa6a509205f72cbff62742ff28917e0b699.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""""

This reverts commit 5a71a624511651b85cc4454aef148c11066d88c7.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""""

This reverts commit 2c649d08a9056820c9367a5401bfe42fa1a8b421.

* fix(ci): improve OAuth automation in Inferno tests

* Revert "fix(ci): improve OAuth automation in Inferno tests"

This reverts commit 88f7311c665665dcdb217ba88e3789edf2329796.

* Reapply "fix(ci): improve OAuth automation in Inferno tests"

This reverts commit ce1bee09a91e426fdfc165b3f8a9b92fec443d30.

* Revert "Reapply "fix(ci): improve OAuth automation in Inferno tests""

This reverts commit 09f5c98cb723da81f72ad2031a0e964ed3fc7d94.

* Reapply "Reapply "fix(ci): improve OAuth automation in Inferno tests""

This reverts commit bbf5df9f7d10527f3c47bd6dd7aec06601de714c.

* Revert "Reapply "Reapply "fix(ci): improve OAuth automation in Inferno tests"""

This reverts commit f9e2102d4fbd72fa32179e7392ff2aacdf69ea13.

* fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.

* Revert "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."

This reverts commit 8a8934a8919018f1914dd6aae3e4d43b52be3f66.

* Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."

This reverts commit 0faa28acdc7d7bc378fb04db16660c1e1308371b.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""

This reverts commit 19f319a8b23c75b46d0241ffa5858a9c1bb8bea5.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""

This reverts commit 42cf9d4fa2d61171c717405b5b5b4a111a19344a.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""

This reverts commit 99634dd791d01aa5a4d3f3c7d8dccaf5dcd222cc.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""

This reverts commit fff5765d8820799b716d0e7c119d9e776906615f.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""

This reverts commit 7a43c3bd15abbe82ce57cd119fc946b2f33f78ad.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""

This reverts commit 4723bbbcf1aa44e8c0f6fde646a1e4ab486a91f9.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""

This reverts commit c88fb8b667999983b16e768b602ba8c30670b1c2.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""

This reverts commit 94ff9d5c1ac266d871f6499e2d9c08e8d383955f.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""

This reverts commit e859c2d37fa21f12d7f6c5d30a58c35da84c8941.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""

This reverts commit 123c91a1c6c47cd2d8d71a781dfbe5331333b2e7.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""""

This reverts commit 69edad96d2c32f90617801121085c6deda8350bd.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""""

This reverts commit dd78fd161ac7bb0c90b4691e3fb0bcc396d677b2.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""""

This reverts commit 4db0bd34e37bdda1fe39a0687735794564165c30.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""""

This reverts commit 3cc50c9b60adf8d91c3baf20cf0234901e5708b6.

* fix(ci): add detailed logging to Inferno test polling - Add poll count logging for every API call - Add waiting status detection for OAuth flow - Increase timeout to 3 minutes - Log waiting result count

* chore(ci): temporarily disable production release workflow

* fix(ci): start Sidekiq worker for Inferno test processing Tests were stuck in 'queued' status because no background worker was processing them. Inferno uses Sidekiq for running tests asynchronously.

* fix(ci): use correct Sidekiq command with worker.rb for Inferno jobs

* fix(ci): cache Keycloak Docker image + fail on timeout/no tests

* fix(ci): improve Keycloak health check with HTTP status logging

* fix(ci): use /health endpoint instead of /health/ready for Keycloak

* fix(ci): wire up OAuth automation for Inferno tests waiting state

* fix(ci): use /realms/master for Keycloak health check + debug OAuth URL location

* fix(ci): fix regex syntax error in OAuth URL extraction

* fix(ci): improve OAuth URL detection with better field inspection

* fix(ci): fix OAuth URL extraction from markdown + add debug logging

* fix(ci): add SMART client scopes and test user to Keycloak

* feat(auth): add SMART scope translation in proxy

- Separate SMART scopes from OIDC scopes in /auth/authorize
- Only pass OIDC-compatible scopes to Keycloak
- Restore original SMART scopes in /auth/token response
- Encode SMART scopes in state parameter for round-trip
- Translate scope in token request to prevent Keycloak rejection
- Remove hardcoded SMART scope creation from CI workflow

This allows the proxy to work with standard Keycloak without
requiring custom SMART client scopes in the Keycloak realm.

* feat(keycloak): add SMART scopes and test client to realm export

- Add SMART on FHIR client scopes (launch/patient, patient/*.read, etc.)
- Add inferno-test-client pre-configured for testing
- Add testuser with offline_access role for OAuth testing
- Simplify CI to verify realm import instead of manual setup
- Remove scope translation from proxy (Keycloak handles it now)

* fix(keycloak): add offline_access realm role for refresh tokens

* fix(keycloak): add offline_access to default realm roles

* fix(keycloak): use defaultRole composite for offline_access

* fix(keycloak): add offline_access client scope definition

* fix(ci): explicitly assign offline_access role to users via API

* fix(smart): improve SMART 2.2.0 compliance

- Add jwks_uri to SMART configuration (required when sso-openid-connect supported)
- Remove 'plain' from code_challenge_methods_supported (SHALL NOT include per spec)
- Add CORS headers to .well-known/smart-configuration endpoint
- Add Cache-Control/Pragma headers to token response (RFC 6749 compliance)
- Add fhirUser protocol mapper to fhirUser client scope
- Set fhirUser attribute on doctor user for testing

* fix(types): add jwks_uri to OpenIDConfiguration interface

* fix: add fhirUser attribute to testuser for SMART compliance

* fix(keycloak): add built-in OIDC scopes to realm export

Add standard OpenID Connect scopes (openid, profile, email, address, phone,
roles, web-origins, acr, microprofile-jwt) to the realm-export.json.

Keycloak 26 was warning that these referenced scopes don't exist during import,
which may have been preventing the fhirUser protocol mapper from properly
adding the claim to ID tokens.

* refactor: remove hardcoded Keycloak API calls from CI, rely on realm-export.json

- Remove role creation/assignment API calls from CI workflow
- CI now only verifies configuration exists (read-only)
- Add offline_access role to doctor user in realm-export.json
- All configuration should come from realm-export.json

* refactor: remove hardcoded Keycloak URLs, auth endpoints discovered from SMART config

* chore: remove accidentally committed test results, add to .gitignore

* refactor: load test config from testing/alpha/inferno-config.json

- Remove hardcoded values from smart-compliance-tests.yml
- Load client_id, test_user, ports from alpha config
- Remove hardcoded auth endpoints (discovered from SMART config)
- Use alpha as default test stage

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

* fix: use bun 1.3.5 in Inferno CI (#187)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>
Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>

* Update

* Update

---------

Co-authored-by: quotentiroler <nussbaumer.max@hotmail.com>
Co-authored-by: max <40643627+quotentiroler@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>
Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>
Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@quotentiroler quotentiroler mentioned this pull request Jan 25, 2026
quotentiroler added a commit that referenced this pull request Jan 25, 2026
* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

* Update

* Update

* 🧪 Auto-PR: Merge `develop` → `test` (#180)

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* feat: add SMART compliance tests CI workflow (#184)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

---------




* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: improve Inferno CI workflow (#185)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

---------




* fix: clean node_modules before install in Inferno CI

* fix: clean node_modules before install in Inferno CI (#186)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

---------




* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* fix: use oven-sh/setup-bun for Inferno CI

* fix: use Ruby 3.3 for Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* fix(ci): add robust error handling to Inferno test execution

- Add set +e to disable bash exit on error
- Add verbose debugging for API calls
- Properly handle HTTP codes and response parsing
- Add defensive jq parsing with 2>/dev/null
- Better status messages during test polling

* fix(ci): truncate session response output for better debugging

* fix(ci): add standalone_smart_auth_info input for Inferno tests

* fix(ci): run discovery tests only (no interactive OAuth needed)

* fix(ci): implement direct SMART 2.2.0 configuration validation

Instead of trying to run Inferno's interactive OAuth tests, we now:
1. Directly validate .well-known/smart-configuration fields
2. Check for required SMART 2.2.0 fields (authorization_endpoint, token_endpoint, capabilities)
3. Verify PKCE support and key capabilities
4. Document Inferno test groups for manual testing
5. Save configuration snapshots as artifacts

* fix(ci): discover FHIR server endpoints dynamically

- Query /fhir-servers to discover available FHIR servers
- Use discovered smartConfig endpoint path
- Gracefully handle case where no FHIR servers are configured
- Still validates proxy is running and healthy

* fix(ci): add HAPI FHIR server for SMART compliance testing

- Add HAPI FHIR R4 server as a GitHub Actions service container
- Configure FHIR_SERVER_BASE to point to the HAPI server
- Now tests have a real FHIR server to validate SMART configuration

* chore: update CI dependencies to latest versions

- PostgreSQL: 16-alpine  17-alpine (latest stable)
- Redis: 7-alpine  8-alpine (latest v8.4.0)
- HAPI FHIR: latest  v8.6.0-1 (pinned for reproducibility)
- Fix HAPI health check: use wget instead of curl
- Add health-start-period=45s for HAPI (takes ~32s to start)

* fix: remove HAPI health check, add manual wait step

The HAPI FHIR container doesn't have wget or curl installed.
Removed the container health check and added an explicit wait step
before starting the backend that properly waits for HAPI to respond.

* feat(ci): add Playwright automation for Inferno SMART tests

- Add Playwright for OAuth flow automation
- Create inferno-oauth-automation.js script
- Replace manual curl validation with actual Inferno test execution
- Use Keycloak test user (doctor/doctor123) for OAuth

* 🔄 Update version to 0.0.1-RELEASE.202512271303.55df35ce

* fix(ci): install Playwright in isolated directory to avoid npm conflicts

* fix(ci): use correct Keycloak environment variable names

* fix(ci): improve Inferno test group discovery and listing

* Revert "fix(ci): improve Inferno test group discovery and listing"

This reverts commit 8dd66e4b8f0eb28c3c18307781b8562283a48108.

* Reapply "fix(ci): improve Inferno test group discovery and listing"

This reverts commit f61a98c758464376294cfa4aac8bc1ace212657f.

* Revert "Reapply "fix(ci): improve Inferno test group discovery and listing""

This reverts commit b8d8e381aefe08a1fbf9b9eb3893dc37982b6bec.

* Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""

This reverts commit 54c9bce8d3dc1e8e9350891a87d4da5e2d55d3bb.

* Revert "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing"""

This reverts commit c28126e67442949fcd46a8bb0ecb8eea2bb9bc94.

* Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing"""

This reverts commit 9f5527dc6659c8924297f1da48c337bccac4e8b3.

* Revert "Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""""

This reverts commit 7f5464bffbdb08a236c17fb31a53f04b2d5922c5.

* Reapply "Reapply "Reapply "Reapply "fix(ci): improve Inferno test group discovery and listing""""

This reverts commit a80d45641750ab43b54109253ef239fbb7052b23.

* fix(ci): use correct Inferno API endpoint for test runs

* Revert "fix(ci): use correct Inferno API endpoint for test runs"

This reverts commit e2dd3cba9026fb2f79630c41b9b4883e5b15fa0a.

* Reapply "fix(ci): use correct Inferno API endpoint for test runs"

This reverts commit b0e135d666bf127909d8b5ef11ac38c9d1364712.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test runs""

This reverts commit 6be5b1f4c5300a1c52d92a560464aba1244d9f22.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""

This reverts commit 7da0e45dff6ae692ffb0bf7d455e5b87b8dcee96.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs"""

This reverts commit 627827726da4f85ef211039ceb2e455ca9b977d3.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs"""

This reverts commit 89f289964eb15a31e87825fd5c6a7436cd1630b2.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""""

This reverts commit 132d030e53506b1c06ff31c84d2e84fb6631df35.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test runs""""

This reverts commit 3ee6ec14f86ce5532946d01a8753e482ab07846b.

* fix(ci): provide standalone_smart_auth_info input for Inferno tests

* Revert "fix(ci): provide standalone_smart_auth_info input for Inferno tests"

This reverts commit ebf4513f3440455e5e31258328bbaa852a92f65a.

* Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"

This reverts commit 045be2274bb63a37720f8c7deea300813e56bc7e.

* Revert "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""

This reverts commit 5537be11774bc49eed6ffa347cafe3f69a2a743c.

* Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""

This reverts commit 1db804f3de383de1f2a535934be6d63954a09956.

* Revert "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""

This reverts commit db61fa0682c5a75de8cf1d04b318e8ed7d705bde.

* Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""

This reverts commit ce6a95356f86e822fdacabb97ded805272ee087c.

* Revert "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""""

This reverts commit 1c57cb99ffa13c4ab7a4ad322ea1ed3ba4ccb7d1.

* Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests""""

This reverts commit 8feb4543e504ff0a1e709ea98b701293f57b4842.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""""

This reverts commit fc27fe8477a6d2a38b33e10400d81048ad427c0e.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): provide standalone_smart_auth_info input for Inferno tests"""""

This reverts commit 8b15bbbee1682631e7d71bdabdb57b636c0b28a2.

* fix(ci): use correct Inferno API endpoint for test run status

* Revert "fix(ci): use correct Inferno API endpoint for test run status"

This reverts commit 50a1f6d45ff03c0890039792880f541d1f04ccf9.

* Reapply "fix(ci): use correct Inferno API endpoint for test run status"

This reverts commit 38eebf2443f562710f952bcc9bd20fe44a322d31.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test run status""

This reverts commit 9196e266bed8ffde892544850de0a972dffc58e8.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""

This reverts commit 8e84c37b80d32a04c8fbf98bc5e99de315d32b48.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""

This reverts commit 395f1237c84195ce38d8eeba948540ffbb4f943d.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""

This reverts commit ab75707ddab8325b295d3c56fbc324c64f41bdaf.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""

This reverts commit 1a64142736d6e9bf9e8405e9d974a113a81de60f.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""

This reverts commit 6972e44c56e64d48bb076c0a04ff05d4606cb086.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""

This reverts commit a310f97ae007373f5aa9fc8a2e6b6e26f903226d.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""

This reverts commit d3994cc032c4803980cc99300c0b970be9ef6b12.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""

This reverts commit a00a6bf606850047add76c4185842c1d7c0eed33.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""

This reverts commit 9265b61431d5baec6d946b74149cc17ea807a7e5.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""

This reverts commit 555eb9b49df0341193a68043b94a0ec9c6e1d51a.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""

This reverts commit fd425a4139ec4f69f554f572e94c0f2faab34405.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""

This reverts commit a34947d2e6b85cdaae97aa86fa381240b698c501.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""

This reverts commit ccab5cb094ea9ef9e5e58b8bf0c2b7395cf2174c.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""

This reverts commit 33cbd4a371285859b8b5ca7627b3cd27347d91ca.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""

This reverts commit b2b642a6a06515acdbb3dc7024941de00e90588e.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""

This reverts commit 1c85f25c420405ddf9855a43c58061776bbbdfbe.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""

This reverts commit 029a40bf0027668e771c4ccdad5fb7c828e492ef.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""

This reverts commit 979d67e9921ed9485b14ee11e5958e0a4a7a944d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""

This reverts commit a15aadea1f6bfe929f0f3399b161be72cf293ca2.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""

This reverts commit bda2b76b88845c7fdc18c742b049f7ce8e3c5f11.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""

This reverts commit 6cd03b2fd3be392e114ff44e32c1cf2c9965b704.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""

This reverts commit 65166ba8cffc56fa58a8651ba882be2bfe3c2f51.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""

This reverts commit fe73d5f8ff7d6135838dba2b0da0300d5bcced74.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""

This reverts commit c9f00f1631a3a22f67154851845ee8767ec7ecd2.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""

This reverts commit db79b00eefde0f8eb42ae55f0a5e1f5cfa4886ad.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""

This reverts commit 4801f38ff6d6394fcd80a134d23b6ddcebcc39de.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""

This reverts commit 841f9783c2b981e364a59d56595db7769b56acf5.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""

This reverts commit a30fb8714f7362f8ec0434ba033243523c010a9d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""

This reverts commit 15d53d2290960f17bbf2ce1a9d1b1cc8667df60c.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""

This reverts commit 49349cca48599650b00580f7f43063a11eab5bfc.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""

This reverts commit 49ebfe34ea401644aeb89b774576f12259d01a80.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""

This reverts commit fa8c20f9a87f2ddbc242e291138f80eeab320206.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""

This reverts commit 07c6b7e4e65f4ea20544c70c1fedc0cb9322ad7b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""

This reverts commit 12e744af289aed9372c4dbdc0452a8220864e020.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""

This reverts commit 25504c4c272ca5c5f7e1c3e38c370e4769beac62.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""

This reverts commit c39e34e0ca7aa5e096d6bc1f70531f02734d8525.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""

This reverts commit cde2fafab817271adf1a3a1d24aec9f1e49f291b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""

This reverts commit 94b4a62b88dd176028b8cb765e7e852155175b7d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""

This reverts commit 99502a13f0a47da7fb4a03445da51db907674b75.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""

This reverts commit 7789911804f1a93823e83368a8a817c5fc6cb7aa.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""

This reverts commit 21ca557fa558219c4ed85e3c0cd6ceae5883d37b.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""

This reverts commit 21628dda797d61381e26d27405733f3fa5db829d.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""

This reverts commit b3c2eff8fd6e10ce810770be22cc315e06d12803.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""""

This reverts commit 4f9d0fa6a509205f72cbff62742ff28917e0b699.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status""""""""""""""""""""""""

This reverts commit 5a71a624511651b85cc4454aef148c11066d88c7.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status"""""""""""""""""""""""""

This reverts commit 2c649d08a9056820c9367a5401bfe42fa1a8b421.

* fix(ci): improve OAuth automation in Inferno tests

* Revert "fix(ci): improve OAuth automation in Inferno tests"

This reverts commit 88f7311c665665dcdb217ba88e3789edf2329796.

* Reapply "fix(ci): improve OAuth automation in Inferno tests"

This reverts commit ce1bee09a91e426fdfc165b3f8a9b92fec443d30.

* Revert "Reapply "fix(ci): improve OAuth automation in Inferno tests""

This reverts commit 09f5c98cb723da81f72ad2031a0e964ed3fc7d94.

* Reapply "Reapply "fix(ci): improve OAuth automation in Inferno tests""

This reverts commit bbf5df9f7d10527f3c47bd6dd7aec06601de714c.

* Revert "Reapply "Reapply "fix(ci): improve OAuth automation in Inferno tests"""

This reverts commit f9e2102d4fbd72fa32179e7392ff2aacdf69ea13.

* fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.

* Revert "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."

This reverts commit 8a8934a8919018f1914dd6aae3e4d43b52be3f66.

* Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."

This reverts commit 0faa28acdc7d7bc378fb04db16660c1e1308371b.

* Revert "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""

This reverts commit 19f319a8b23c75b46d0241ffa5858a9c1bb8bea5.

* Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""

This reverts commit 42cf9d4fa2d61171c717405b5b5b4a111a19344a.

* Revert "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""

This reverts commit 99634dd791d01aa5a4d3f3c7d8dccaf5dcd222cc.

* Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""

This reverts commit fff5765d8820799b716d0e7c119d9e776906615f.

* Revert "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""

This reverts commit 7a43c3bd15abbe82ce57cd119fc946b2f33f78ad.

* Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""

This reverts commit 4723bbbcf1aa44e8c0f6fde646a1e4ab486a91f9.

* Revert "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""

This reverts commit c88fb8b667999983b16e768b602ba8c30670b1c2.

* Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""

This reverts commit 94ff9d5c1ac266d871f6499e2d9c08e8d383955f.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""

This reverts commit e859c2d37fa21f12d7f6c5d30a58c35da84c8941.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""

This reverts commit 123c91a1c6c47cd2d8d71a781dfbe5331333b2e7.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""""

This reverts commit 69edad96d2c32f90617801121085c6deda8350bd.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions."""""""

This reverts commit dd78fd161ac7bb0c90b4691e3fb0bcc396d677b2.

* Revert "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""""

This reverts commit 4db0bd34e37bdda1fe39a0687735794564165c30.

* Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "Reapply "fix(ci): use correct Inferno API endpoint for test run status Use /api/test_runs/:id?include_results=true instead of /api/test_sessions/:id/test_runs/:id for both waitForTestResult and waitForSimpleTestCompletion functions.""""""""

This reverts commit 3cc50c9b60adf8d91c3baf20cf0234901e5708b6.

* fix(ci): add detailed logging to Inferno test polling - Add poll count logging for every API call - Add waiting status detection for OAuth flow - Increase timeout to 3 minutes - Log waiting result count

* chore(ci): temporarily disable production release workflow

* fix(ci): start Sidekiq worker for Inferno test processing Tests were stuck in 'queued' status because no background worker was processing them. Inferno uses Sidekiq for running tests asynchronously.

* fix(ci): use correct Sidekiq command with worker.rb for Inferno jobs

* fix(ci): cache Keycloak Docker image + fail on timeout/no tests

* fix(ci): improve Keycloak health check with HTTP status logging

* fix(ci): use /health endpoint instead of /health/ready for Keycloak

* fix(ci): wire up OAuth automation for Inferno tests waiting state

* fix(ci): use /realms/master for Keycloak health check + debug OAuth URL location

* fix(ci): fix regex syntax error in OAuth URL extraction

* fix(ci): improve OAuth URL detection with better field inspection

* fix(ci): fix OAuth URL extraction from markdown + add debug logging

* fix(ci): add SMART client scopes and test user to Keycloak

* feat(auth): add SMART scope translation in proxy

- Separate SMART scopes from OIDC scopes in /auth/authorize
- Only pass OIDC-compatible scopes to Keycloak
- Restore original SMART scopes in /auth/token response
- Encode SMART scopes in state parameter for round-trip
- Translate scope in token request to prevent Keycloak rejection
- Remove hardcoded SMART scope creation from CI workflow

This allows the proxy to work with standard Keycloak without
requiring custom SMART client scopes in the Keycloak realm.

* feat(keycloak): add SMART scopes and test client to realm export

- Add SMART on FHIR client scopes (launch/patient, patient/*.read, etc.)
- Add inferno-test-client pre-configured for testing
- Add testuser with offline_access role for OAuth testing
- Simplify CI to verify realm import instead of manual setup
- Remove scope translation from proxy (Keycloak handles it now)

* fix(keycloak): add offline_access realm role for refresh tokens

* fix(keycloak): add offline_access to default realm roles

* fix(keycloak): use defaultRole composite for offline_access

* fix(keycloak): add offline_access client scope definition

* fix(ci): explicitly assign offline_access role to users via API

* fix(smart): improve SMART 2.2.0 compliance

- Add jwks_uri to SMART configuration (required when sso-openid-connect supported)
- Remove 'plain' from code_challenge_methods_supported (SHALL NOT include per spec)
- Add CORS headers to .well-known/smart-configuration endpoint
- Add Cache-Control/Pragma headers to token response (RFC 6749 compliance)
- Add fhirUser protocol mapper to fhirUser client scope
- Set fhirUser attribute on doctor user for testing

* fix(types): add jwks_uri to OpenIDConfiguration interface

* fix: add fhirUser attribute to testuser for SMART compliance

* fix(keycloak): add built-in OIDC scopes to realm export

Add standard OpenID Connect scopes (openid, profile, email, address, phone,
roles, web-origins, acr, microprofile-jwt) to the realm-export.json.

Keycloak 26 was warning that these referenced scopes don't exist during import,
which may have been preventing the fhirUser protocol mapper from properly
adding the claim to ID tokens.

* refactor: remove hardcoded Keycloak API calls from CI, rely on realm-export.json

- Remove role creation/assignment API calls from CI workflow
- CI now only verifies configuration exists (read-only)
- Add offline_access role to doctor user in realm-export.json
- All configuration should come from realm-export.json

* refactor: remove hardcoded Keycloak URLs, auth endpoints discovered from SMART config

* chore: remove accidentally committed test results, add to .gitignore

* refactor: load test config from testing/alpha/inferno-config.json

- Remove hardcoded values from smart-compliance-tests.yml
- Load client_id, test_user, ports from alpha config
- Remove hardcoded auth endpoints (discovered from SMART config)
- Use alpha as default test stage

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

* fix: use bun 1.3.5 in Inferno CI (#187)

* update

* Update

* update

* update

* update

* Update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* update

* fix: add Tailwind CSS platform-specific bindings to UI package

* 🔄 Update version to 0.0.1-alpha.202510192313.43d526c (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192324.9132e30 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510192332.fade5ff1 (alpha)

* update

* update

* update

* Update

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200023.0df686a2 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200031.f21f4bdb (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200040.a76d17c1 (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200100.87153a59 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200103.3d5677bc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510200107.59b0576a (alpha)

* update

* update

* 🔄 Update version to 0.0.1-alpha.202510200205.3df5db6a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510201116.dc54f88f (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510271951.64242ae4 (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510272033.5d9df7aa (alpha)

* update

* update

* refactor: migrate from openai SDK to Vercel AI SDK

- Remove openai package dependency, use only @ai-sdk/openai + ai
- Refactor assistant.ts to use streamText with tool() helper
- Refactor rag-tools.ts to use embed/embedMany for embeddings
- Update ChatMessage.tsx to use new token property names
- Configure bunfig.toml to allow packages <7 days old (minimumReleaseAge=0)
- Update dependencies: AI SDK, Elysia, Medplum, Radix UI, Tailwind, etc.
- Update Keycloak to 26.4.0 in docker-compose

Benefits:
- Unified AI SDK with better TypeScript types
- Cleaner API with automatic tool execution
- Removes redundant openai package
- Better streaming support

All tests passing (58/59, 1 flaky integration test unrelated to changes)

* chore: apply code formatting from pre-commit hooks

* chore: apply code formatting and finalize AI SDK migration

* 🔄 Update version to 0.0.1-alpha.202510272043.e17a02a3 (alpha)

* fix: pre-commit hook now stages all modified files

- Changed from 'git add **/package.json' to 'git add -u'
- This prevents the loop where line ending changes weren't being staged
- Ensures auto-formatted files are included in the commit

* 🔄 Update version to 0.0.1-alpha.202510272045.e469fe1a (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300142.c1fe77db (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202510300839.c978c06e (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511051116.e2d5e4cc (alpha)

* update

* 🔄 Update version to 0.0.1-alpha.202511141331.20cc2911 (alpha)

* Update

* 🔄 Update version to 0.0.1-alpha.202512261242.6b2a29a8 (alpha)

* feat: add SMART compliance tests CI workflow with Inferno

* 🔄 Update version to 0.0.1-alpha.202512271226.b948b11f (alpha)

* fix: improve Inferno CI workflow with realm import and Ruby setup

* 🔄 Update version to 0.0.1-alpha.202512271303.55df35ce (alpha)

* fix: clean node_modules before install in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271341.80e0c4c9 (alpha)

* fix: use bun 1.3.5 and clear bun cache in Inferno CI

* 🔄 Update version to 0.0.1-alpha.202512271344.a04f2342 (alpha)

* 🔄 Update version to 0.0.1-alpha.202512271415.afe5b928 (alpha)

* 🔄 Update version to 0.0.2-alpha.202512282152.29ef5d23 (alpha)

* feat(ci): integrate SMART compliance tests into testing strategy

- Refactored testing-strategy.yml to call smart-compliance-tests.yml as a reusable workflow
- SMART 2.2.0 compliance tests now run in parallel with basic integration tests
- Integration tests run against deployed services (health, metadata, OAuth, SMART config)
- Test summary aggregates results from both test types
- Updated beta and production inferno-config.json to match alpha config format
- All configs now use consistent structure with keycloak, backend, client sections
- Discord notifications reflect combined test results

* 🔄 Update version to 0.0.2-alpha.202512282208.dbefdc5f (alpha)

* fix(ci): seed FHIR resources for fhirUser claim and commit test reports

- Add Seed FHIR Test Resources step to create Practitioner/example-practitioner
- Create Patient/test-patient for launch/patient scope testing
- Add Commit Test Report step to save results to testing/{stage}/report/
- Add permissions: contents: write for pushing reports
- Create report directories with .gitkeep files
- Remove unused testing/database/init-inferno.sql

This should fix 2 of the 7 failing tests:
- smart_openid_fhir_user_claim
- smart_cors_openid_fhir_user_claim

Remaining expected failures:
- 2 TLS tests (no HTTPS in CI)
- 3 Unknown test parsing issues

* 🔄 Update version to 0.0.2-alpha.202512282230.4aec5d94 (alpha)

* fix(ci): checkout develop branch before pushing test report

The workflow runs on detached HEAD from tag, need to checkout develop to push

* 🔄 Update version to 0.0.2-alpha.202512282238.beee0974 (alpha)

* fix(ci): add rebase and retry logic for test report push

Fixes race condition where version update commits could overwrite test report

* 🔄 Update version to 0.0.2-alpha.202512282249.129c7cda (alpha)

* fix(ci): use GitHub App token for pushing test reports

Branch protection rules were rejecting push from workflow.
Now using the same GitHub App token as other release workflows.

* 🔄 Update version to 0.0.2-alpha.202512282310.7e8acd87 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20560874569

* fix(smart): convert relative fhirUser to absolute URL in token response

- Modified oauth.ts to convert relative fhirUser references (e.g., 'Practitioner/123')
  to absolute URLs per SMART App Launch 2.2.0 spec requirements
- Enhanced inferno-oauth-automation.js to capture detailed failure messages
  including result_message, outputs, and HTTP request/response details
- This helps diagnose the smart_openid_fhir_user_claim test failure

The fhirUser claim in the token response body now includes the full FHIR server
base URL, constructed from the first configured FHIR server endpoint.

* 🔄 Update version to 0.0.2-alpha.202512290159.ce05f5f0 (alpha)

* chore(testing): update alpha SMART compliance report [skip ci]

Test Suite:
Passed: 26
Failed: 6
Run: https://github.com/quotentiroler/proxy-smart/actions/runs/20562890723

* Update

* update

* update

* update

* update

* update

* Update

* Update

---------





* Update

* Update

---------







---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: quotentiroler <quotentiroler@users.noreply.github.com>
Co-authored-by: quotentiroler <max.nussbaumer@maxhealth.tech>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants