Skip to content

feat: cut over to ExtraToast/agents published images#657

Merged
jorisjonkers-dev-agents[bot] merged 7 commits into
mainfrom
feat/agents-cutover
Jun 11, 2026
Merged

feat: cut over to ExtraToast/agents published images#657
jorisjonkers-dev-agents[bot] merged 7 commits into
mainfrom
feat/agents-cutover

Conversation

@jorisjonkers-dev-agents

Copy link
Copy Markdown
Contributor

Summary

assistant-api, assistant-ui, agent-gateway, and agent-runner have been extracted to the ExtraToast/agents repo and published to ghcr.io/extratoast/agents/*. This PR removes those service source trees from this repo and wires the cluster to consume the published images instead.

Service removal

  • services/assistant-api/, services/assistant-ui/, services/agent-gateway/, services/agent-runner/ deleted.
  • settings.gradle.kts drops :services:assistant-api and :services:agent-gateway.
  • pnpm-workspace.yaml drops services/assistant-ui.
  • package.json removes the dead generate:assistant-client script.
  • dependabot.yml removes the assistant-api and assistant-ui docker entries.

New Flux manifests

  • platform/cluster/flux/apps/stateless/agents-api/ — Frankfurt deployment + Enschede WS replica, ServiceMonitor, PDB, namespace, all in agents-system.
  • platform/cluster/flux/apps/stateless/agents-ui/ — deployment + PDB in agents-system.
  • Old stateless/assistant-api/ and stateless/assistant-ui/ removed.
  • agents/rbac/agents-api-role.yaml replaces assistant-api-role.yaml.

Rename: assistant → agents (cluster-wide)

  • fleet.yamlservice_intent, placement_intent, exposure_intent, access_intent, ingress_intent, kubernetes_backends all updated. Render outputs (ingressroutes, catalog ConfigMaps) regenerated.
  • ServicePermission.ASSISTANTAGENTS (subdomains agents / agents-ws).
  • RegisteredClients: buildAssistantApiClientbuildAgentsApiClient, clientId assistant-apiagents-api.
  • AuthorizationServerConfig, ServicePermissionTest, ForwardAuthIntegrationTest, JooqUserRepositoryIntegrationTest, IntegrationTestBase updated.
  • app-ui serviceRegistry: permission AGENTS, icon agents.svg, URL agents.
  • make-admin.sh grant row updated.

Infrastructure renames

  • Postgres: assistant_db/assistant_user/assistant_passwordagents_db/agents_user/agents_password in init-script-configmap.yaml, deployment.yaml Vault template, infra/docker/postgres/init-databases.sh, and docker-compose.ci.yml.
  • Vault postgres secret keys assistant.user/assistant.passwordagents.user/agents.password.
  • bootstrap-auth.sh: Vault KV policy, K8s auth role, database dynamic-creds role all renamed to agents-api.
  • Gatus endpoints (agents-api, agents-ui, agents-ws), Alloy CORS/log config, alert rules (auth-api|agents-api), Grafana dashboard tags and filenames updated.
  • auth-api deployment CORS list: assistant.jorisjonkers.devagents.jorisjonkers.dev.
  • Prometheus scrape configs updated to agents-api.
  • setup-dev-dns.sh updated to agents.$DOMAIN.

CI

  • ci.yml and build-and-publish.yml — assistant-api, agent-runner, assistant-ui path filters and matrix entries removed.
  • crac-train.yml — assistant-api matrix entry removed.
  • system-tests.yml — assistant-api/assistant-ui removed from default changed-services and build matrix; -Dtest.assistant-api.url dropped.
  • contract-validate.yml — rewritten to validate only knowledge-api OpenAPI spec.
  • prod-smoke.ymlAGENTS_API_URL, agents.jorisjonkers.dev.
  • vault-bootstrap-validate.ymlagents.user=ci_agents_parent, required policies list updated.
  • System tests updated throughout to agents.jorisjonkers.test.

Test plan

  • Platform validation suite: 51/51 pass (4 pre-existing agent-kit doctor failures unaffected)
  • CI: Platform Validate, auth-api Kotlin, app-ui typecheck/lint
  • kubectl kustomize platform/cluster/flux/clusters/production (CI gate)
  • After merge: flux reconcile kustomization apps --timeout=120s, verify agents-api and agents-ui rollout in agents-system

assistant-api, assistant-ui, agent-gateway, and agent-runner source
directories are deleted from this repo. The services are now built and
published independently at ghcr.io/extratoast/agents/*.

Deployment changes:
- New Flux manifests under platform/cluster/flux/apps/stateless/agents-api/
  and agents-ui/ point at the published images in agents-system namespace.
- Old stateless/assistant-api/ and assistant-ui/ manifests removed.
- agents/rbac/agents-api-role.yaml replaces assistant-api-role.yaml.
- fleet.yaml updated: assistant→agents throughout (service_intent,
  placement_intent, exposure_intent, access_intent, ingress_intent).
- Render outputs regenerated (ingressroutes, catalog ConfigMaps).

Auth & service alignment:
- ServicePermission.ASSISTANT → AGENTS (subdomain: agents / agents-ws).
- RegisteredClients: buildAssistantApiClient → buildAgentsApiClient,
  clientId assistant-api → agents-api.
- AuthorizationServerConfig, ServicePermissionTest, ForwardAuthIntegrationTest,
  JooqUserRepositoryIntegrationTest updated to match.
- app-ui serviceRegistry: permission AGENTS, icon agents.svg.
- make-admin.sh grant row updated.

Infrastructure renames:
- Postgres: assistant_db/user/password → agents_db/user/password
  (init-script-configmap, deployment Vault template, docker init script).
- Vault bootstrap-auth.sh: policy, K8s auth role, DB role all renamed.
- Vault postgres secret keys assistant.user/password → agents.user/password.
- Gatus endpoints, Alloy CORS/log config, alert rules, Grafana dashboard
  tags, priority-class comments updated.
- docker-compose.yml and docker-compose.ci.yml updated to use published images.
- prometheus.yml / prometheus.dev.yml job names updated.
- CI workflows (ci.yml, build-and-publish.yml, crac-train.yml,
  system-tests.yml, contract-validate.yml, prod-smoke.yml,
  vault-bootstrap-validate.yml) trimmed / renamed for agents.
- pre-commit-check.sh and setup-dev-dns.sh updated.
- System tests and auth-api integration tests updated to agents URLs.
- dependabot.yml drops assistant-api and assistant-ui docker entries.
- package.json removes dead generate:assistant-client script.
@jorisjonkers-dev-agents jorisjonkers-dev-agents Bot added the enhancement New feature or request label Jun 11, 2026
@jorisjonkers-dev-agents jorisjonkers-dev-agents Bot added the allow-migration-change Deliberate migration deletion/edit reviewed and approved label Jun 11, 2026
personal-stack-agents[bot] added 6 commits June 11, 2026 10:13
Frontend unit tests: ASSISTANT → AGENTS in serviceRegistry.test.ts and
AppsGrid.test.ts (SERVICE_ASSISTANT role matched nothing after the rename,
producing 15 cards instead of 16).

Lint/format: prettier --write on all platform/tests/*.js files to satisfy
the root-level format:check.

Platform validate: gatus-endpoints-configmap.yaml had app-ui ordered before
agents-* entries; render re-orders to strict alphabetical, so align the
committed file.

Agent-kit doctor: render-agent-kit.py read services/agent-runner/entrypoint.sh
to derive allowed MCP profiles, but that file was deleted as part of the
cutover. Remove the entrypoint cross-check; validate claude vs codex ConfigMap
profile sets directly instead. All 55 platform tests pass locally.

Migration guard: add allow-migration-change label to the PR so the guard
downgrades the assistant-api migration deletions to a warning (deliberate
service retirement, not an accidental edit).
…radle.kts

The auth-api and knowledge-api Dockerfiles pre-copied every service's
build.gradle.kts for the Gradle dependency layer. The agents cut-over
removed services/assistant-api and services/agent-gateway, so those COPY
lines failed with 'not found'. settings.gradle.kts no longer includes
those projects, so the lines are obsolete.
The agents stack (agents-api, agents-ui) is now built and deployed from
ExtraToast/agents, not from this repo. CI has no credentials to pull
ghcr.io/extratoast/agents/* images, so the compose stack failed on
startup before any test could run.

Changes:
- docker-compose.ci.yml: disable agents-api and agents-ui via
  `profiles: [disabled]` so the CI compose stack starts without them
- Delete agents-only test files: AssistantChatFlowTest,
  SessionsChatFlowTest, ProjectsFlowTest, RepositoriesFlowTest,
  CrossServiceSystemTest
- Strip agents-api/agents-ui entries from parameterized suites:
  HealthCheckSystemTest, HealthSmokeSystemTest, TraefikSystemTest,
  TraefikHealthCheckSystemTest, SecurityHeadersSystemTest
- Remove agents legs from cross-service Playwright tests:
  CrossAppSessionTest, LogoutFlowTest, ProtectedPageRedirectTest,
  MainSiteServiceLaunchTest
- Remove unused agentsBaseUrl from TestHelper and ASSISTANT_UI_URL
  from PlaywrightTestBase
- Add services/system-tests/README.md noting that agents e2e coverage
  now lives in ExtraToast/agents

Platform Tests: the "installed hooks stay silent when disabled or
unauthenticated" EPIPE failure is a pre-existing flakiness in the
agent-kit-manifest test suite (write to a closing child stdin), not a
regression from this cutover. Passes locally; rerun if it fires in CI.
agents-api no longer runs in the personal-stack system-test stack (it is
an external service from ExtraToast/agents), so its Flyway migrations are
not applied here and the agents_db 'conversation' table check failed the
stack bring-up. Verify only the databases owned by services that still run
in this stack.
agents-api/agents-ui are external (ExtraToast/agents) and not started in
the personal-stack system-test compose, so the route readiness checks for
agents.* never pass. Drop them; the remaining checks cover the services
this stack runs.
The auth-api ServicePermission enum entry was renamed ASSISTANT->AGENTS in
the cut-over; AdminApiSystemTest still granted/expected ASSISTANT, so the
grant was dropped and the assertion failed.
@jorisjonkers-dev-agents jorisjonkers-dev-agents Bot merged commit 1c590b8 into main Jun 11, 2026
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

allow-migration-change Deliberate migration deletion/edit reviewed and approved enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant