e426186e46
- Added `ROBOMP_ISSUE_INDEX_SYNC_SECONDS` configuration and lifecycle-managed issue indexing through startup/shutdown hooks. - Added issue/PR index tables with FTS5 triggers plus upsert and keyword/filter search helpers for indexed records. - Added GitHub backend/proxy support for `IssueIndexEntry` and issue-index page retrieval, including webhook ingestion and periodic watermark-driven sync. - Updated `gh_search_issues` to prefer local index queries when synchronized and added `search_commits` host tool with query modes and validation.
118 lines
7.9 KiB
TOML
118 lines
7.9 KiB
TOML
[fetch_pr]
|
|
description = "Fetch the inbound PR premise and changed-file list for review. Review-mode only."
|
|
|
|
[classify_pr]
|
|
description = "Classify and rank an incoming PR, apply triaged/review labels, and persist the rank. Review-mode only."
|
|
|
|
[classify_pr.parameters]
|
|
rank = "Required review verdict label: one of `review:p0..p3`."
|
|
type = "Exactly one PR type: feat, fix, docs, refactor, perf, test, chore, ci, or build."
|
|
area = "Zero or more functional labels. Unknown values are dropped silently; omit when none apply."
|
|
provider = "Only when provider-scoped; format `provider:<name>`. Omit otherwise."
|
|
rationale = "One sentence explaining what the PR changes and why it earns this rank."
|
|
|
|
[pr_review_comment]
|
|
description = "Stage one inline PR review comment in sqlite. Does not call GitHub until submit_pr_review. Review-mode only."
|
|
|
|
[pr_review_comment.parameters]
|
|
path = "Changed file path to comment on."
|
|
line = "Line number in the PR diff."
|
|
body = "Markdown body for one concrete finding."
|
|
side = "`RIGHT` for added/changed lines, `LEFT` for removed lines. Defaults to `RIGHT`."
|
|
start_line = "Optional first line for a multi-line comment range."
|
|
start_side = "Optional side for start_line; `RIGHT` or `LEFT`."
|
|
|
|
[submit_pr_review]
|
|
description = "Submit one GitHub PR review with all staged inline comments. Always posts event=`COMMENT`; never approves or requests changes. Review-mode only."
|
|
|
|
[submit_pr_review.parameters]
|
|
body = "Markdown review summary. Required even when there are no inline comments."
|
|
event = "Ignored except for schema compatibility; the orchestrator always sends `COMMENT`."
|
|
|
|
[gh_post_comment]
|
|
description = "Post a comment on the inbound thread (PR for PR conversations/reviews, originating issue otherwise). Pass `number` ONLY to post elsewhere."
|
|
|
|
[gh_post_comment.parameters]
|
|
body = "Markdown comment body."
|
|
number = "Optional issue/PR override. Defaults to the inbound thread."
|
|
|
|
[gh_push_branch]
|
|
description = "Push the workspace branch to origin. Pre-publish gate (when the repo defines them): `bun run fix` → amend any formatter diff into your HEAD commit → `bun check`. On `bun check` failure, fix the cause and retry. Pre-existing breakage on `main` against the same paths NOT caused by your diff → retry with `skip_checks=true` and document the bypass in the follow-up comment. Dirty-tree gate runs unconditionally. Commit messages carrying shell-literal `\\n` escapes are rewritten to real newlines before the push."
|
|
|
|
[gh_push_branch.parameters]
|
|
branch = "Optional branch override; defaults to the workspace branch."
|
|
skip_checks = "Bypass `bun run fix` + `bun check`. Use ONLY after verifying (e.g. `git diff origin/<default>..HEAD` against the failing paths) the failure exists on `main` and is NOT caused by your diff. Dirty-tree gate still runs — commit everything first."
|
|
|
|
[gh_open_pr]
|
|
description = "Open a PR from the workspace branch using the four-section body template. Same pre-publish gate as `gh_push_branch`: `bun run fix` → amend formatter diff into HEAD → `bun check`. On failure, fix and retry. Pre-existing `main` breakage NOT caused by your diff → `skip_checks=true` and document the bypass in the PR's `## Verification` section."
|
|
|
|
[gh_open_pr.parameters]
|
|
body = "Markdown body. MUST contain the four template sections in order: `## Repro`, `## Cause`, `## Fix`, `## Verification`."
|
|
base = "Optional base branch override (default: repo default)."
|
|
skip_checks = "Bypass `bun run fix` + `bun check`. Use ONLY after verifying the failure exists on `main` and is NOT caused by your diff. When set, document in `## Verification` (e.g. ``Skipped pre-publish gate: `bun check` fails on `main` due to <link>``). Dirty-tree gate still runs."
|
|
|
|
[gh_request_review]
|
|
description = "Request reviewers and/or add assignees on the open PR."
|
|
|
|
[repro_record]
|
|
description = "Persist a reproduction transcript (command, output, exit code) for the issue."
|
|
|
|
[repro_record.parameters]
|
|
reproduced = "True when the recorded run demonstrates the bug."
|
|
|
|
[mark_unable_to_reproduce]
|
|
description = "Ask the reporter for missing reproduction details, mark the issue `needs_info`, and keep the session resumable for the next reply."
|
|
|
|
[abort_task]
|
|
description = "Irrecoverably abandon this task WITHOUT posting any visible message. Use ONLY for orchestrator/environment defects you cannot work around (broken filesystem permissions, missing system tools, corrupted git metadata, harness bugs). NEVER for normal workflow problems: failed builds and unclear maintainer requests use `gh_post_comment`; missing reporter reproduction details use `mark_unable_to_reproduce`. `reason` is audit-only and NEVER shown to the reporter."
|
|
|
|
[abort_task.parameters]
|
|
reason = "Internal diagnosis for the operator. Concrete, specific, blameless. NEVER shown to the reporter."
|
|
|
|
[fetch_issue_thread]
|
|
description = "Refetch the originating issue and its comments. Use sparingly."
|
|
|
|
[gh_search_issues]
|
|
description = "Search issues AND pull requests in the current repo. Served from a local index of every issue/PR (webhook-fed, periodically reconciled), so calls are free — search liberally during triage to find duplicates and already-merged fixes before classifying."
|
|
|
|
[gh_search_issues.parameters]
|
|
query = "GitHub issue-search syntax: bare keywords plus qualifiers like `is:pr`, `is:closed`, `is:merged`, `label:bug`, `author:<login>`. NEVER include a `repo:` qualifier — scope is applied automatically."
|
|
limit = "Max results, 1-20. Default 10."
|
|
|
|
[search_commits]
|
|
description = "Search the default branch's commit history. `mode=message` greps commit messages (case-insensitive regex); `mode=patch` finds commits whose diff adds/removes the literal query string — use it to check whether the broken code path was already touched by a fix."
|
|
|
|
[search_commits.parameters]
|
|
query = "Regex for `mode=message`; literal string for `mode=patch`."
|
|
mode = "`message` (default) searches commit messages; `patch` pickaxe-searches diff content."
|
|
paths = "Optional path filters (files or directories) to narrow the walk."
|
|
limit = "Max commits, 1-30. Default 10."
|
|
|
|
[set_issue_labels]
|
|
description = "Append labels to the originating issue/PR. NEVER removes existing labels."
|
|
|
|
[set_issue_labels.parameters]
|
|
number = "Optional override; defaults to the originating issue."
|
|
|
|
[classify_issue]
|
|
description = "First triage step. Classify the issue, apply labels on GitHub, pick the workflow branch (bug → repro+fix+PR, question → reply only, etc.). MUST be called before any other `gh_*` action on a new issue."
|
|
|
|
[classify_issue.parameters]
|
|
primary = "Exactly one primary classification."
|
|
priority = "REQUIRED when `primary=='bug'`; one of `prio:p0..p3`. Omit the field for any other primary — orchestrator silently drops stray values."
|
|
functional = "Zero or more functional labels. Unknown values dropped silently; omit the field when none apply."
|
|
provider = "Only when provider-scoped; format `provider:<name>`. Omit otherwise."
|
|
platform = "Only when platform materially affects reproduction; one of `platform:linux|macos|windows|wsl`. Omit otherwise."
|
|
rationale = "One sentence explaining the classification."
|
|
branch_slug = "Kebab-case slug, 1-50 chars `[a-z0-9-]`, no leading/trailing/double hyphen. Replaces the auto-generated slug in the working branch name. Provide for `bug`/`documentation`. Omit for non-PR workflows (`question`, `enhancement`, `proposal`, `wontfix`, `invalid`, `duplicate`)."
|
|
|
|
[classify_issue.next_steps]
|
|
bug = "reproduce → diagnose → fix → PR"
|
|
wontfix = "post one gh_post_comment explaining the design rationale or upstream cause and what evidence would change the assessment; no repro, no PR; the maintainer decides whether to close"
|
|
documentation = "fix the docs and open a PR using the four-section template"
|
|
question = "answer in a single gh_post_comment; no PR, no repro"
|
|
enhancement = "post one thoughtful gh_post_comment on feasibility/scope; no PR"
|
|
proposal = "post one thoughtful gh_post_comment on feasibility/scope; no PR"
|
|
invalid = "post one explanatory gh_post_comment; no further action"
|
|
duplicate = "post one explanatory gh_post_comment; no further action"
|