A

AI agent console

BrandApp provider

live

12

open runs

live

64%

credit load

live

8

approved

live

5

EAV bases

Runbook coverage20%
onlineanthropic/claude-sonnet-4.5

Launch reliability agent

AgentOps is connected to BrandApp AI, EAV records, deployment notes, and the approval queue. Pick a runbook or ask for a status sweep.

What is blocking the spring launches right now?

Three launches are blocked: two are waiting on legal copy and one is missing a BrandApp EAV segment mapping. Owners are assigned on all three. I drafted a guarded patch you can review in the Approval gate before any EAV write runs.

tool guarded
Launch Reliabilitybrandapp.ai

Checks release notes, BrandApp EAV records, credits, and approval state before changing customer-facing data.

지침
Never execute a destructive tool without explicit approval.
{
  "entity": "string",
  "status": "string"
}
{
  "tone": "string",
  "locale": "string"
}
{
  "auditId": "string",
  "reason": "string"
}
출력
Safe actions queued. No write tools executed.

Agent memory

3 facts

Guardrail

success

Writes require approvalToken; destructive tools stay draft-only.

Launch context

info

3 blockers: legal copy, owner note, missing segment.

Credit policy

warning

Cap image variants while credit load stays above 60%.

Approval gate

Owner approval required before the write tool can update EAV.

approval pending

Guarded patch preview

The agent can preview the EAV mutation but cannot write yet.

draft patch

launch.status

patch

Blocked to Ready

owner_note

patch

Needs copy review to Legal copy approved; launch can proceed

eav.segment

patch

missing to vip-spring-2026

Audit packet

Bundle approval, model route, source list, memory, EAV diff, and rollback chain.

export ready

agentops-audit-2026-06-19.json

approvalToken hash · model route · sources · rollback chain

Eval suite

Run guardrail, EAV mutation, source, and rollback replay checks.

ready

release-gate.agentops

approval policy · source grounding · EAV mutation · replay

Release gate

Export the audit packet and pass evals before release can open.

blocked
audit packetpending
eval suitepending

Run history

2 events

Guard policy loaded

success

Write tools require approvalToken before EAV mutation.

Last runbook passed

info

Blocked launch sweep completed 4 minutes ago.

Loaded BrandApp context

5 entities, 12 active launch records

Checked credit budget

64% monthly usage, no hard limit risk

Prepare guarded write

Owner approval required before the write tool can update EAV.

status:blocked owner:* launch
  • Spring collection launch
  • Referral reminder
  • VIP early access

매개변수

json
{
  "entity": "launches",
  "status": "blocked",
  "runbook": "Summarize blocked launches"
}

결과

json
{
  "count": 3,
  "approval": "pending",
  "riskyWrite": true,
  "patch": "draft",
  "next": "request_owner_approval"
}
Summarize blockers
Prepare owner approval
Write approved patch
Prepare rollback packet
Open release gate
33K / 128K tokens
33K 토큰128K
입력 토큰18K
출력 토큰2.2K
추론 토큰7K
캐시 토큰5.1K
BrandApp launch recordslaunches.eav
Current credit ledgerai-credits.json
Agent route(새 탭에서 열림)
Terminal
$ POST /api/agent provider=brandapp.ai status=streaming model=anthropic/claude-sonnet-4.5 audit=idle release=blocked
테스트 결과
116ms2 통과
tool approval policy12ms
EAV read route18ms
EAV write mutation21ms
rollback audit15ms
audit packet11ms
eval suite17ms
release gate13ms
write guard9ms
// app/api/agent/route.ts
import { createBrandappProvider } from "@reopt-ai/brandapp-sdk/ai-provider";
import {
  convertToModelMessages,
  createUIMessageStreamResponse,
  streamText,
  toUIMessageStream,
} from "ai";

let brandapp: ReturnType<typeof createBrandappProvider> | undefined;

function getBrandapp() {
  brandapp ??= createBrandappProvider({
    clientId: process.env.BRANDAPP_CLIENT_ID!,
    clientSecret: process.env.BRANDAPP_CLIENT_SECRET!,
    brandappId: process.env.BRANDAPP_ID!,
  });
  return brandapp;
}

export async function POST(req: Request) {
  const {
    messages,
    model = "anthropic/claude-sonnet-4.5",
    approvalToken,
  } = await req.json();
  const mode = approvalToken ? "approved write mode" : "read-only mode";
  const result = streamText({
    model: getBrandapp()(model),
    instructions:
      "You are an operations agent. Never write EAV without approvalToken. " +
      "Current mode: " + mode,
    messages: await convertToModelMessages(messages),
  });
  return createUIMessageStreamResponse({
    stream: toUIMessageStream({ stream: result.stream }),
  });
}
reopt design exampleDemo screen, not a live serviceTemplates

Example notes

This screen is a reopt design example shaped like a standalone app, not a live service.

Components and usageInstall in your project

Use this in your project

Open the component guide above for live examples and imports, then follow the installation guide to connect styles and theming.

Connect your own service

Review authentication, API and storage behavior before connecting your own environment. Supported actions and sample data differ by example.