opencode-config/.opencode/tools/post-docs-review.ts
Sergey f96acaaa75
fix(tools): drop hardcoded --repo in post-review/post-docs-review (#61)
* fix(tools): drop hardcoded --repo in post-review/post-docs-review

* fix(skills): sync run-pipeline templates to use review tools

* fix(agents): add tool failure handling to reviewer/docs-reviewer

* docs(adr): supersede ADR-019 with hardcoded repo removal note

* docs(handoff): scaffold handoff and ADR for PR

* docs(handoff): set PR number

* fix(ci): reformat post-review/post-docs-review test asserts for ruff format

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-25 03:55:50 +03:00

25 lines
No EOL
1.2 KiB
TypeScript

import { spawnSync } from "child_process"
import { tool } from "@opencode-ai/plugin"
const VERDICTS = ["APPROVE", "FIXED", "NO_CHANGES"] as const
type Verdict = typeof VERDICTS[number]
export default tool({
description: "Post docs review verdict as PR comment with deterministic heading. Docs-reviewer agent uses this instead of raw `gh pr comment` to guarantee `## Docs Review Summary` heading that pipeline-status.py parses.",
args: {
pr_number: tool.schema.number().describe("PR number to comment on"),
verdict: tool.schema.enum(VERDICTS).describe("Docs review verdict: APPROVE, FIXED, or NO_CHANGES"),
body: tool.schema.string().describe("Docs review body text (without heading — heading is auto-generated)"),
},
async execute(args, context) {
const comment = `## Docs Review Summary\n\n${args.body}\n\n### Verdict: ${args.verdict}`
const r = spawnSync("gh", ["pr", "comment", String(args.pr_number), "--body", comment], {
encoding: "utf-8",
cwd: context.worktree,
})
if (r.status !== 0) {
return `⚠️ post-docs-review failed for PR #${args.pr_number} (exit ${r.status}): ${r.stderr || r.stdout}`
}
return `Docs review posted on PR #${args.pr_number}: verdict=${args.verdict}`
},
})