You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Wire the Intent Brief into the Pre-PR path. In Pre-PR mode the orchestrator prompts the reviewer for optional Work Item / Confluence URLs (comma-separated; Enter to skip). The Intent Checker sub-agent routes each URL by path (/browse/ → Jira, /wiki/ → Confluence), invokes scripts/atlassian-fetch.mjs to retrieve content, branches Work Items by type (Story → description + ACs; Bug → repro + expected/actual), self-deduplicates across sources, and emits a structured intentCheck block that the summary renderer surfaces at the top of the preview with per-AC verdicts.
Per ADR-0004 (hard-stop) and US 30 (empty intent OK):
A link that promises intent but is unreachable → hard-stop with a clear message pointing at the relevant setup wizard.
No links pasted → preview proceeds with the Intent Check block omitted (legitimate state).
Motto: the Intent Checker is a single LLM agent trusted to deduplicate and consolidate across sources — no orchestrator → sub-agents → synthesizer pipeline.
Acceptance criteria
scripts/atlassian-fetch.mjs exists, uses Node's built-in global fetch (Node 22+), reads credentials via scripts/lib/credentials.mjs (file + env-var override), routes by URL path, fetches Jira issues + Confluence pages via their REST APIs, parses Story vs Bug structure, extracts Confluence page text + linked Confluence URLs from issue bodies.
agents/intent-checker.md exists with distinct name + colour, receives [{ id, type, url, raw }] plus pasted URLs, calls atlassian-fetch.mjs via Bash, emits a structured Intent Brief plus per-AC verdicts (addressed / partially addressed / unaddressed) — no Bot Signature footer.
Orchestrator in Pre-PR mode prompts: "Optional Work Item URLs (Jira/ADO Boards) and Confluence URLs, comma-separated. Press Enter to skip." Enter → skip cleanly (US 20).
Intent Brief is broadcast verbatim as a preamble to every aspect agent in the fan-out batch.
review-summary-renderer.mjs accepts an optional intentCheck field and renders it between the Notices block and the Severity sections per PRD §10.
Hard-stop: when a fetched Work Item promises a Confluence page and the page is unreachable (network or 4xx), the orchestrator aborts with a message naming the URL and the setup command to run. No partial preview emitted.
tests/atlassian-fetch.test.mjs covers URL routing (Jira vs Confluence), credential resolution (file vs env vars), Story-vs-Bug response parsing, AC extraction, Confluence excerpt extraction, with fetch stubbed.
Parent
docs/issues/unic-pr-review/PRD.mdWhat to build
Wire the Intent Brief into the Pre-PR path. In Pre-PR mode the orchestrator prompts the reviewer for optional Work Item / Confluence URLs (comma-separated; Enter to skip). The Intent Checker sub-agent routes each URL by path (
/browse/→ Jira,/wiki/→ Confluence), invokesscripts/atlassian-fetch.mjsto retrieve content, branches Work Items by type (Story → description + ACs; Bug → repro + expected/actual), self-deduplicates across sources, and emits a structuredintentCheckblock that the summary renderer surfaces at the top of the preview with per-AC verdicts.Per ADR-0004 (hard-stop) and US 30 (empty intent OK):
Motto: the Intent Checker is a single LLM agent trusted to deduplicate and consolidate across sources — no orchestrator → sub-agents → synthesizer pipeline.
Acceptance criteria
scripts/atlassian-fetch.mjsexists, uses Node's built-in globalfetch(Node 22+), reads credentials viascripts/lib/credentials.mjs(file + env-var override), routes by URL path, fetches Jira issues + Confluence pages via their REST APIs, parses Story vs Bug structure, extracts Confluence page text + linked Confluence URLs from issue bodies.agents/intent-checker.mdexists with distinct name + colour, receives[{ id, type, url, raw }]plus pasted URLs, callsatlassian-fetch.mjsvia Bash, emits a structured Intent Brief plus per-AC verdicts (addressed/partially addressed/unaddressed) — no Bot Signature footer.review-summary-renderer.mjsaccepts an optionalintentCheckfield and renders it between the Notices block and the Severity sections per PRD §10.tests/atlassian-fetch.test.mjscovers URL routing (Jira vs Confluence), credential resolution (file vs env vars), Story-vs-Bug response parsing, AC extraction, Confluence excerpt extraction, withfetchstubbed.Blocked by