GitHub inbox: add an automation rule from any item so similar items are handled on Autopilot
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #13231 di @atomantic — integrata
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Problem
Agent rules cover only three notification kinds (GITHUB_AGENT_RULE_KINDS: review-request, security-alert, issue-activity) and one action, start an agent or don't. They are created only from the Automations tab. While going through the inbox, the operator wants to tap Add automation rule on any item and have every similar item handled the same way on Autopilot. Examples: "every default-branch CI failure in this repo → mark done", "every subscribed issue in this repo → resolve with agent".
Learned rules (github_notification_rules, keyed on repo × reason × actor) already do part of this, but only by inference from Done/Mute taps. They need two matching corrections before they quiet anything, and they cannot start an agent.
Decision
Extend agent rules into automation rules and let them be created from a row.
- Kinds (
GITHUB_AGENT_RULE_KINDS,RULE_KINDS/threadAgentKindinlib/githubNotificationTriage.js,AGENT_RULE_KINDSingithubTriageLabels.js): addci-failure,own-pr,mention,releaseandotherto the existing three.threadAgentKindstays the single classifier and is derived from reason and subject type only. - Action replaces the
agent: booleanfield:action: 'agent' | 'done' | 'mute' | 'leave'. Storedagent: true/falserules are read asagent/leave. Coerce on read; validate on write. Agent rules keep their provider/model/effort pin. - Apply: Autopilot runs
agentrules through the lane selection from the generic resolve-with-agent issue. Assist and Autopilot applydoneandmuterules as automation actions (undoable, logged). The rules never override the suspect, security-alert or invitation pins (PINNED_RULES), and anagentrule on an outside thread still routes only to screened lanes. - From a row: the row's overflow gets Add automation rule…, which opens the rule form prefilled with this thread's kind and repo. "All repos" is one click away. The form shows how many open threads the rule would match right now, and offers "Apply to these N now" on save.
- Parity guard:
CANDIDATE_SQLingithubNotificationAutopilot.jsis a hand-written SQL mirror ofagentHandoff+agentRuleScope. Add a table-driven test that runs one fixture per kind × action through both the JS planner and the SQL candidate query (DB test), and fails on any disagreement. Without it, a kind added in JS silently never runs on Autopilot.
Affected files
server/lib/validation.js: the rule schema (action, the new kinds; legacyagentstill accepted).server/lib/githubNotificationTriage.js:threadAgentKind,matchAgentRule,agentRuleScope,autopilotHandoff, a newruleAction.server/services/githubNotificationAutopilot.js:CANDIDATE_SQL, rule-driven done/mute.server/services/githubNotificationAssist.js: applying done/mute rules.client/src/components/github/GitHubAgentRules.jsx,GitHubInboxTab.jsx,githubTriageLabels.js.server/services/githubNotifications.db.test.js: the parity test.
Acceptance criteria
- From an inbox row, the operator can save "CI failures in repo X → done". The next Autopilot or Assist run marks every matching open thread done, as undoable automation events.
- A stored legacy
{ agent: true }rule still hands off exactly as before. - A
donerule never acts on a suspect thread or a security alert. - The JS/SQL parity test goes red when a kind is added to
threadAgentKindwithoutCANDIDATE_SQL(verified by breaking it once).
model:heavy / effort:high: a schema change with a legacy-read contract, plus a JS↔SQL invariant that has to stay mirrored.
The agent action on kinds with no lane today depends on #13191; the done / mute actions can ship first.
- Lingua principale
- JavaScript
- Stelle
- 38
- Fork
- 32
- Merge medio
- 41m
- PR unite (30g)
- 991
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di atomantic/PortOS
-
bug effort:low model:light plan planner:gpt-6-1-sol
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
area:ci bug effort:high model:heavy plan planner:gpt-6-1-sol tests
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
bug effort:high model:heavy plan planner:gpt-6-1-sol
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
I maintainer di solito rispondono entro 1 giorno
-
Isolate Vitest filesystem module caches across linked worktreesForse già presa @atomantic l’ha presa oggi. Apertabug effort:high model:medium
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
atomantic/PortOS#13402 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug effort:high model:medium plan planner:gpt-6-1-sol
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di atomantic/PortOS
Issue simili
-
CloudredirectAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
[ordering-review] workshop order graph: 1 confirmed ordering problem, 3 cycles are false positivesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
githubnext/gh-aw-workshop#4943 ·
I maintainer di solito rispondono entro 1 giorno
-
[guide] Public Sector User Group page names wrong Slack channelForse già presa @hivecommons-hive l’ha presa oggi. Apertaagent/guide documentation hive/claimed-by-guide stage/040-covered-by-pr
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
cncf/endusers#1874 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Leonxlnx/taste-skill#164 ·
I maintainer di solito rispondono entro 1 giorno