openhands / src /mocks /automations.mock.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
5f40163 verified
Raw History Blame Contribute Delete
5.98 kB
import type { AutomationsResponse } from "#/types/automation";
/**
* Mock automations data matching the AutomationResponse schema from the backend.
*
* Backend schema fields: id, user_id, org_id, name, trigger (JSONB),
* tarball_path, setup_script_path, entrypoint, timeout, enabled,
* last_triggered_at, created_at, updated_at.
*
* The frontend Automation type only uses a subset of these fields.
* Additional backend fields are included here for API fidelity.
*/
const now = new Date().toISOString();
const daysAgo = (days: number) =>
new Date(Date.now() - days * 86_400_000).toISOString();
export const MOCK_AUTOMATIONS_RESPONSE: AutomationsResponse = {
automations: [
{
id: "a1000000-0000-0000-0000-000000000001",
name: "PR Triage Digest",
trigger: {
type: "cron",
schedule: "0 9 * * 1-5",
schedule_human: "Weekdays at 09:00",
},
enabled: true,
repository: "acme/frontend-app",
model: "triage-fast",
timeout: 600,
created_at: daysAgo(90),
updated_at: now,
prompt:
"Review newly opened pull requests in acme/frontend-app, identify risky changes, summarize likely impact, and prepare a concise digest with priority ordering for the engineering review channel.",
branch: "main",
plugins: ["GitHub", "Slack", "Linear"],
notification: "Slack digest to #eng-reviews",
timezone: "America/Los_Angeles",
last_triggered_at: daysAgo(0),
},
{
id: "a1000000-0000-0000-0000-000000000002",
name: "Nightly Security Pass",
trigger: {
type: "cron",
schedule: "30 1 * * *",
schedule_human: "Daily at 01:30",
},
enabled: true,
repository: "acme/backend-api",
model: "security-careful",
timeout: 900,
created_at: daysAgo(60),
updated_at: now,
prompt:
"Scan the acme/backend-api repository for known security vulnerabilities, outdated dependencies, and insecure code patterns. Produce a prioritized remediation summary.",
branch: "main",
plugins: ["GitHub"],
notification: "Email to security-team@acme.com",
timezone: "UTC",
last_triggered_at: daysAgo(0),
},
{
id: "a1000000-0000-0000-0000-000000000003",
name: "Docs Sync on Push",
trigger: {
type: "cron",
schedule: "*/5 * * * *",
schedule_human: "Runs on every push",
},
enabled: true,
repository: "acme/docs",
model: "docs-fast",
created_at: daysAgo(45),
updated_at: now,
prompt:
"Monitor acme/docs for new pushes. For each push, generate a changelog-ready summary of what changed and why.",
branch: "main",
plugins: ["GitHub", "Slack"],
notification: "Slack to #docs-updates",
timezone: "America/New_York",
last_triggered_at: daysAgo(1),
},
{
id: "a1000000-0000-0000-0000-000000000004",
name: "Release Readiness Review",
trigger: {
type: "cron",
schedule: "0 11 * * 5",
schedule_human: "Fridays at 11:00",
},
enabled: false,
repository: "acme/realtime-service",
model: "release-review",
created_at: daysAgo(80),
updated_at: now,
prompt:
"Compile a release readiness report: list open blockers, active incidents, and pending approvals for acme/realtime-service.",
branch: "release",
plugins: ["GitHub", "Linear"],
notification: "Slack to #releases",
timezone: "America/Chicago",
last_triggered_at: daysAgo(14),
},
{
id: "a1000000-0000-0000-0000-000000000005",
name: "Incident Webhook Summary",
trigger: {
type: "cron",
schedule: "0 */2 * * *",
schedule_human: "On incident webhook",
},
enabled: false,
repository: "acme/incident-service",
model: "incident-summary",
created_at: daysAgo(30),
updated_at: now,
prompt:
"Summarize incoming incident webhooks, categorize by severity, and post a digest to the on-call Slack channel.",
branch: "main",
plugins: ["Slack"],
notification: "Slack to #oncall",
timezone: "UTC",
last_triggered_at: null,
},
{
id: "a1000000-0000-0000-0000-000000000006",
name: "PR Review on Open",
trigger: {
type: "event",
source: "github",
on: "pull_request.opened",
filter: "repository.full_name == 'acme/frontend-app'",
},
enabled: true,
repository: "acme/frontend-app",
model: "review-fast",
timeout: 1800,
created_at: daysAgo(15),
updated_at: now,
prompt:
"When a new PR is opened, perform a thorough code review focusing on correctness, security, and performance. Post findings as inline comments.",
branch: "main",
plugins: ["GitHub"],
notification: "GitHub PR comment",
last_triggered_at: daysAgo(0),
// Template provenance, as the setup flow stores it. The other mock
// automations stay without one to exercise the no-statement path.
preset_metadata: {
template: { id: "github-pr-reviewer", version: "1.0.0", config: {} },
},
},
{
id: "a1000000-0000-0000-0000-000000000007",
name: "Release Notes Generator",
trigger: {
type: "event",
source: "github",
on: "release.published",
filter: "glob(release.tag_name, 'v*') && !release.prerelease",
},
enabled: true,
repository: "acme/backend-api",
model: "docs-fast",
created_at: daysAgo(10),
updated_at: now,
prompt:
"Generate comprehensive release notes from the commits since the last release. Include breaking changes, new features, and bug fixes.",
branch: "main",
plugins: ["GitHub"],
notification: "GitHub release body update",
last_triggered_at: daysAgo(3),
},
],
total: 7,
};