Skip to content

Gui: Add IntentFrame Control Plane (port 9720) with operator UI and Docker test harness #56

Gui: Add IntentFrame Control Plane (port 9720) with operator UI and Docker test harness

Gui: Add IntentFrame Control Plane (port 9720) with operator UI and Docker test harness #56

Workflow file for this run

name: PR
on:
pull_request:
push:
branches:
- main
concurrency:
group: pr-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
unit-tests:
name: Unit tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.14"
- name: Install Python workspace
run: uv sync --all-packages
- name: Install script ref resolution tests
run: bash tests/install/test_ref_resolution.sh
- name: Hermes adapter unit tests
run: uv run --directory integrations/hermes/adapter python tests/test_adapter.py
- name: Hermes governance unit tests
run: |
uv run --directory integrations/hermes/shared python tests/test_governance.py
uv run --directory integrations/hermes/shared python tests/test_governance_template.py
- name: Backend validate adapter unit tests
run: |
uv run --package if-integration-backend python if-integration-backend/tests/test_validate_adapter.py
uv run --package if-integration-backend python if-integration-backend/tests/test_dynamic_bundle.py
- name: E2e bridge_test agent sync
run: uv run --package if-integration-backend python tests/agents/test_bridge_test_agent_sync.py
- name: Hermes plugin unit tests
run: |
uv run --with httpx --with pyyaml --package intentframe-integrations-cli python tests/hermes_plugin/test_gate.py
uv run --with httpx --with pyyaml --package intentframe-integrations-cli python tests/hermes_plugin/test_registry_hook.py
uv run --package intentframe-integrations-cli python tests/hermes_plugin/test_integrate.py
uv run --package intentframe-integrations-cli python tests/hermes_plugin/test_builtin_preload.py
- name: Integrations CLI unit tests
run: |
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_runtime_lifecycle.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_integration_pack.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_cli_start.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_adapter_lifecycle.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_hermes_install.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_pack_install.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_governance_edit.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_policy_contract.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_policy_manage.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_governance_runtime_contract.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_make_catalog_yaml.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_scoped_governance_yaml.py
uv run --package intentframe-integrations-cli python tests/intentframe_integrations/test_actions_manifest.py
- name: Control plane unit tests
run: |
uv run --package intentframe-control-plane python tests/intentframe_control_plane/test_lifecycle.py
uv run --package intentframe-control-plane python tests/intentframe_control_plane/test_read_models.py
uv run --package intentframe-control-plane python tests/intentframe_control_plane/test_server.py
- name: Hermes gateway unit tests
run: |
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_isolation.py
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_cli_runner.py
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_hermes_reference_contract.py
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_api_client.py
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_governed_tool_coverage.py
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_toolsets_contract.py
uv run --package intentframe-integrations-cli python tests/hermes_gateway/test_provider_request_contract.py
typescript:
name: TypeScript build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm
- name: Install and build
run: |
npm ci
npm run build
test -f if-integration-clients/typescript/dist/index.js
cd intentframe-control-plane/web && npm ci && npm run build
test -f ../src/intentframe_control_plane/static/index.html
docker-install:
name: Docker install (curl | bash)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install script bootstrap Docker test
run: bash tests/install/test_installer_bootstrap_docker.sh
- name: curl | bash install (GitHub ref)
env:
ORG: ${{ github.event.pull_request.head.repo.owner.login || github.repository_owner }}
REPO: ${{ github.event.pull_request.head.repo.name || github.event.repository.name }}
REF: ${{ github.head_ref || github.ref_name }}
run: bash tests/install/test_installer_curl_docker.sh