mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 00:08:55 +00:00
## Summary Follow-up to #12652 that makes the **E2E Council** workflow correct and pleasant for real use, after the first live dry-run triages exposed gaps. v1 scope is unchanged: **OSS-only, manual-first, dry-run** (only Job 1 triage runs; Jobs 2–4 are gated scaffolds). ## Changes **Trigger is strictly PR-bound** - Removed the free-form `oss_branch` input (it let you generate tests detached from a PR, and dispatching from `main` diffed main-against-itself = nothing). - `pr_number` is now **required** for manual dispatch and accepts a **number, `#123`, or a full PR URL** (normalized to an integer). - A test is only ever generated for a PR. No PR ⇒ no run (empty/missing diff fails fast with a clear message). **`/e2e` is an exact match** - Triggers only when the comment body is exactly `/e2e`. `Generate /e2e`, `/e2e please`, etc. do **not** fire anything (the job's `if` is false → no reaction, no comment, no run). **Agent discovery fixed (the important one)** - The first live run logged `agent "e2e-ci-triage" not found. Falling back to default agent` — OpenCode does not auto-discover agents nested under `.opencode/agents/<subdir>/`. It only worked by luck (the default agent read the spec file). - Fixed by registering all six agents in `opencode.jsonc` under the `agent` key with `prompt: "{file:...}"`. **Confirmed working** on the next run (`> e2e-ci-triage · deepseek-v4-pro`, no fallback). **Immediate user feedback on a run** - Posts a 👀 reaction on the `/e2e` comment and an "⏳ triage in progress…" comment within seconds, then **edits that same comment in place** with the decision (no second comment). Runs with `always()` so a failed/empty run still updates it (never stuck on "in progress"). **Form/docs polish** - Decluttered the Run-workflow form (short input labels; full guidance lives in the workflow header). ## Verified live (dry-run triages on this PR) - OpenCode installs (v1.17.7); DeepSeek model `deepseek/deepseek-v4-pro` works. - Secure path confirmed: PR read as a **diff via API**, no untrusted PR-head checkout. - Triage decisions correct + conservative (CI-only change → skip). - Agent discovery fix confirmed (named agent loads as the system prompt). ## Not in scope (still scaffolds) Jobs 2–4 (generate → heal → PR-back). Build those once the triage gate is trusted over a dry-run period. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
58 lines
2.0 KiB
JSON
58 lines
2.0 KiB
JSON
{
|
|
// OpenCode configuration for the e2e_ci_council_of_agents pipeline.
|
|
// Used by .github/workflows/e2e-council.yml to run the CI test-generation agents on DeepSeek.
|
|
// Docs: https://opencode.ai/docs/ — verify provider shape against current docs at build time.
|
|
"$schema": "https://opencode.ai/config.json",
|
|
|
|
"provider": {
|
|
"deepseek": {
|
|
"npm": "@ai-sdk/openai-compatible",
|
|
"name": "DeepSeek",
|
|
"options": {
|
|
"baseURL": "https://api.deepseek.com",
|
|
"apiKey": "{env:DEEPSEEK_API_KEY_E2E}"
|
|
},
|
|
"models": {
|
|
"deepseek-v4-pro": {
|
|
"name": "DeepSeek-V4-Pro",
|
|
"limit": { "context": 1048576, "output": 262144 }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
// Default model for runs that don't pass --model explicitly.
|
|
// The workflow passes --model deepseek/deepseek-v4-pro per agent invocation.
|
|
"model": "deepseek/deepseek-v4-pro",
|
|
|
|
// Register the CI agents explicitly so `--agent e2e-ci-*` resolves deterministically.
|
|
// OpenCode does NOT auto-discover agents nested in .opencode/agents/<subdir>/ (the first CI
|
|
// run fell back to the default agent), so we point each name at its prompt file here.
|
|
"agent": {
|
|
"e2e-ci-triage": {
|
|
"mode": "primary",
|
|
"prompt": "{file:./.opencode/agents/e2e_ci_council_of_agents/e2e-ci-triage.md}"
|
|
},
|
|
"e2e-ci-analyst": {
|
|
"mode": "primary",
|
|
"prompt": "{file:./.opencode/agents/e2e_ci_council_of_agents/e2e-ci-analyst.md}"
|
|
},
|
|
"e2e-ci-architect": {
|
|
"mode": "primary",
|
|
"prompt": "{file:./.opencode/agents/e2e_ci_council_of_agents/e2e-ci-architect.md}"
|
|
},
|
|
"e2e-ci-engineer": {
|
|
"mode": "primary",
|
|
"prompt": "{file:./.opencode/agents/e2e_ci_council_of_agents/e2e-ci-engineer.md}"
|
|
},
|
|
"e2e-ci-sentinel": {
|
|
"mode": "primary",
|
|
"prompt": "{file:./.opencode/agents/e2e_ci_council_of_agents/e2e-ci-sentinel.md}"
|
|
},
|
|
"e2e-ci-healer": {
|
|
"mode": "primary",
|
|
"prompt": "{file:./.opencode/agents/e2e_ci_council_of_agents/e2e-ci-healer.md}"
|
|
}
|
|
}
|
|
}
|