Skip to content

feat(agent): add evidence-backed DevOps chat - #352

Merged
hoalongnatsu merged 1 commit into
mainfrom
feature/update
Aug 30, 2026
Merged

feat(agent): add evidence-backed DevOps chat#352
hoalongnatsu merged 1 commit into
mainfrom
feature/update

Conversation

@hoalongnatsu

Copy link
Copy Markdown
Member

What does this PR do?

Adds an open-source DevOps/SRE assistant that can investigate the systems and
data sources connected to Versus through read-only tools.

The change includes:

  • DC2: generic system discovery and entity-inspection tools.
  • DC3: a dedicated Eino ADK chat agent and durable runtime.
  • The /agent/chat workspace that consumes the new runtime.

The assistant is not incident-scoped. An incident, service, or time range can be
attached as context, but the conversation remains open-ended.

Why?

Analyze can investigate one incident, but it cannot sustain a conversation or
answer broad questions such as:

  • What does Versus currently know about this system?
  • Which services have been active this week?
  • What is the current state of an incident, service, or learned pattern?
  • Which reliability, telemetry, runbook, dependency, or decision capabilities
    are available?
  • What evidence is missing before a conclusion can be made?

The new runtime gives the model durable, bounded, auditable context and generic
system tools rather than adding one tool per example question.

How to test

Go

cd versus-incident

gofmt -l pkg cmd                 # no output
go build ./...
go vet ./...
go test -race -p 1 ./...

For PostgreSQL-backed chat/CAS and scoped discovery tests:

TEST_POSTGRES_DSN='postgres://postgres:password@127.0.0.1:5432/versus_test?sslmode=disable' \
  go test -race -p 1 ./... -count=1 -timeout 1800s

UI

cd versus-incident/ui

npx tsc -b
npm run lint
npm test
npm run build
npm audit --audit-level=high
npm run e2e -- --grep chat

Manual

  1. Enable AI and start Versus.
  2. Open /agent/chat and create a conversation.
  3. Ask for a system overview, then inspect a service, incident, pattern, or prior
    analysis.
  4. Confirm tool progress streams live and the persisted transcript appears after
    reload.
  5. Attach a service, incident, or time range and confirm it grounds but does not
    constrain the conversation.
  6. Stop an active run and confirm the server-side run is cancelled and persisted
    as cancelled.
  7. Open the same session through two replicas and confirm only one active run is
    admitted.
  8. Disconnect the browser without pressing Stop; confirm the detached run still
    completes and persists.
  9. Confirm unavailable capabilities are stated explicitly with a safe setup
    action rather than being inferred as healthy or empty.

Type of change

  • Bug fix (non-breaking)
  • New feature (non-breaking)
  • Breaking change (tool/API behavior) — model-visible tool names were
    consolidated into the generic catalog below
  • Documentation only
  • Refactor — shared provider-neutral knowledge and chat runtime contracts
  • CI / build / chore

Checklist

  • go test ./... passes locally
  • go vet ./... is clean
  • Code is gofmt'd
  • Added or updated tests for the change
  • UI typecheck, lint, unit tests, build, and chat Playwright suite pass
  • No secrets, tokens, prompts, tool payloads, or raw backend errors are logged
  • New dependencies justified below
  • Enterprise compatibility build/tests pass

Comment thread ui/src/lib/api.ts Dismissed
@hoalongnatsu
hoalongnatsu merged commit 0013d7e into main Aug 30, 2026
7 checks passed
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