Rovo agent phase 2: bulk decisions, search, votes, starting approvals, reminders
Description
Why
Phase 1 (AP-2374) tells people in Rovo chat what waits for them and why, and records one decision at a time. People still open the app to decide a queue of approvals, search, vote, start an approval, see what is ahead or remind approvers. This ticket adds these to the agent in Jira and Confluence without new approval rules, speeds up single decisions and fixes defects in the app paths it uses.
What the user can do
Deciding in chat
-
One decision (one approval, one step, one person) takes one message: Rovo's review card is the only confirmation; a cancelled card records nothing. Moderator decisions, batches, starts and reminders are confirmed in a new message first. At most one of these per turn.
-
Preparing another single decision replaces the open one; its card then records nothing.
-
New setting "Decide without confirming" (off by default, needs "Decide in Rovo chat"): the user's own decision on one step that is not a vote is recorded with no card, through a second submit action labelled GET. On someone's behalf, moderator decisions, votes, batches, starts and reminders keep their confirmation; other agents are not affected. A warning says that injected text and automation rules can then decide for the user.
-
Approve goes to the approval step, consent to the consent step; several options left get a numbered list with the approval's ID and link; the agent never picks one.
-
An answer about one approval names every decision the user can make, approve or consent first, then reject, then abstain; one that needs a comment says how to give it ("reject: " works in one message).
-
Answers about one work item also give its work type, status, priority, assignee, reporter, due date and last update.
-
Starters: "What is waiting for my decision?", "Help me go through my pending approvals" (one at a time, most urgent first), "What happened with approvals today?" (in the user's time zone). Follow-up chips name the approval's ID; in a go-through they offer the decisions that need no comment and "Skip" with the approval.
-
"Decide in Rovo chat" off: lists, the go-through and a prepared decision say so and give the approval's link.
Several decisions at once
-
"Approve all my pending security reviews": up to 10 approvals from the pending list (when more, the agent says so), with one decision, one comment and optionally one person to decide for.
-
Each approval is checked as a single decision. One that cannot join is listed with its reason: a missing required comment, a decision that does not fit the step, more than one way to decide it, a vote, no longer waiting for the user or accepting decisions, or not visible.
-
Switch off (default): the agent says so and links to the app's Approvals page. On: Rovo's review card lists every approval; each decision is recorded on its own and reported as recorded, already recorded, not recorded with the reason, or not reached in time.
-
A batch is valid for 30 minutes. Submitting it again records nothing twice and continues where the last submit stopped; while one runs, another answers that it is still being recorded.
Search
-
Filters: project (Jira) or space key or id (Confluence), state, name, "approvals I take part in" or "I started", and a period or dates (at most a year) on the start or completion date, in the user's time zone.
-
The answer gives exact counts by state, the approval rate, the median time to completion, the on-time share and up to 20 approvals with their last decision (no comment text), naming the project or space, the period and time zone.
-
Only approvals the user may see are counted, one by one. A search covers at most the 1000 most recent work items or pages and says when more match. Too slow searches, or over 10,000 approvals the user takes part in, are stopped.
Votes and moderator decisions
-
A vote, also for a delegating group member, is cast by option numbers. The app checks the voting deadline, one vote per person and the selection.
-
The moderator or their delegate can approve, reject or abstain; the agent first states the votes so far and that the decision ends the vote.
-
Both follow "Decide in Rovo chat" and are never part of a batch.
Starting an approval
-
The agent lists the "New" tab's definitions for the work item or page, and says why a global definition, or one of that project or space, cannot be started there.
-
The app checks visibility, the app's view permission, the start permission, "Allow manual initiation of approvals", and the definition's work item types and labels. The agent mentions an approval of that definition already in progress.
-
Chat starts with the definition's defaults. New setting "Start approvals in Rovo chat", off by default: off, the agent links to the work item or page; on, the user confirms on Rovo's review card. A prepared start is valid for 30 minutes and starts at most one approval, marked "via Rovo".
What is still ahead
-
"Explain an approval" lists the steps not yet started, in order, with who each will ask (never a group's members), parallel groups as one stage with their rule, at most 15 stages, as a projection naming what can change it.
Reminders
-
The preview names the recipients by role as the app computes them, the channel and the default text; the user can send their own plain-text message (at most 2000 characters) instead.
-
The app's rules apply: "Allow sending email approval reminders" and the "Custom reminder" template on, the "Notify approver" permission, an approval in progress.
-
Rovo sends at most one reminder per approval within 4 hours while the same steps are active, and 10 per person within an hour.
Other agents and administration
-
New Rovo Studio tools: "Search approvals", "Prepare to start an approval", "Start an approval (other agents)", "Preview a reminder", "Send a reminder (other agents)". Votes use the existing decision tools; batches are not a tool.
-
"Decisions from other agents" becomes "Actions from other agents" (needs only "Approval Path in Rovo") and also gates other agents' starts and reminders; our agent's reminders need no switch.
-
The Rovo settings move to their own page,
Settings → Rovo(marked "New"), with a note on reminders and their limits. -
Every Rovo text names only its own product: the Jira app never mentions pages or spaces, the Confluence app never work items or projects.
Data sent to Atlassian's LLM
Phase 1's rules stay (minimal answers, no comment text in lists, free text as data). Added: search counts, rates, durations, names, links, states, dates, starters, current steps and last decisions; vote details and the steps still ahead; a work item's work type, status, priority, assignee and reporter names, due date and last update; definition names and descriptions and their approvals in progress; reminder recipients' names, external approvers' email addresses and the reminder text.
Fixes included
-
Manual reminders took recipients from the request, so a crafted one could email any address or mention any user. Now they are the approval's awaiting approvers.
-
External approvers got no manual reminder in Jira outside Slack and in some Confluence modes. Now by email.
-
Manual reminders were sent for archived and outdated approvals and after the decision deadline. Now refused.
-
The reminder dialog reported success when the template was off or nothing was queued. Now refused; a dialog that cannot load closes with the error.
-
Decisions that recorded nothing (not an approver, already decided, step not active, approval completed) were reported as made. Bulk decide, the panel and Slack now refuse them with the reason.
-
Bulk decide on a group step recorded a delegator's vote instead of the user's own; now the user's. An approval decidable only for several other people is left to the panel.
-
Bulk decide and quick approve offered vote steps to voters. Now only to the moderator or their delegate.
-
Comments over 1000 characters were cut silently. Fields now stop at 1000; the panel and bulk decide show a counter.
-
Vote options with a comma could not be voted from the panel; the selection is now sent as a list.
-
Options over 150 characters could not be voted from Slack; Slack now sends the position.
-
Votes after the deadline were dropped or refused misleadingly. Now refused, with the closing time in the app and Slack and the reason in Rovo.
-
Vote steps were named by their group in Rovo, engine messages and the creator reminder. Now by their own name.
-
Group step progress ignored abstentions and rejections in Rovo, Slack and the creator reminder. Now counted.
-
The server started approvals from the panel while manual starts were off. Now refused.
-
When Jira could not be reached, the work item type check was skipped. The start now fails and can be retried.
-
A panel start could request options its settings turn off (reminders, abstain, page version approval). Now only allowed ones; with reminders off, the interval no longer refuses a start.
-
Activity's person, group and email filters returned every event of a matching approval. Now they filter events.
-
Activity's date range showed events outside it; now it applies per event.
-
Project Activity showed only the viewer's own approvals, and non-administrators could not export their Activity.
-
Definition endpoints returned other projects' definitions (unmasked for project administrators) and custom page statuses to anyone. Now only the caller's project or space and global ones; webhook settings unmasked only for global or own-project administrators; duplicating a global definition needs a global administrator; custom statuses need the add or edit permission.
-
The "New" tab listed definitions whose start condition was archived. No longer.
-
A link in a manual reminder's text could notify a whole Slack channel. Only web links stay links.
-
The agent looked for a named pending approval only among the 50 most urgent. The name now narrows the whole list.
-
With "Show for Agents" on, any user with a Jira Service Management license saw the approvals of every service project in Rovo and the Web API without the view permission. Now only on work items where they are an agent (
SERVICEDESK_AGENT, only on sites with JSM).
Acceptance criteria
-
Our agent offers list, status, explain, search, decision, batch, start and reminder actions; other agents get them as tools, without batches.
-
A batch holds 1 to 10 approvals the user can see. An approval joins only if it would succeed as a single decision; every other one is listed with its reason.
-
Submitting a batch needs "Decide in Rovo chat" and the values on Rovo's review card. Each decision is recorded in its own transaction; a repeat records nothing twice. Only a user's latest prepared single decision is submitted.
-
A search counts only approvals the user may see (browse permission with issue security, page restrictions, the app's view permission); every count, rate and row is computed after that filter. Reading actions reuse an access check for up to 60 s; a decision, start or reminder always checks access again.
-
Search filters are validated strictly and never widen the search; the answer states its period and time zone; another person's approvals cannot be searched.
-
A vote is refused after the deadline, after that person voted, and for an invalid selection. Votes and moderator decisions are marked "via Rovo".
-
"Decide without confirming" is off by default; without the card only the user's own decision on a step that is not a vote is recorded, checked again on submit. "Start approvals in Rovo chat" is off by default. A start needs the start permission, manual starts on, and the same user's prepared start of that definition and work item or page within 30 minutes. It creates one approval.
-
Other agents remind only while "Actions from other agents" is on; they decide or start only while "Decide in Rovo chat" or "Start approvals in Rovo chat" is on as well.
-
The steps still ahead are listed in order, without group members; none once the approval is no longer in progress or past its decision deadline.
-
A reminder needs the reminder setting, the template, the "Notify approver" permission and an approval in progress. The recipients are the app's, and the 4-hour and hourly limits hold.
-
Each user has 60 Approval Path calls per minute; a search counts five, a batch one per approval. Each site runs at most two batch submits, starts or reminder sends at a time, and two searches.
-
The 24 fixes hold.
Constraints
-
Rovo cannot tell an agent run by an automation rule from a chat, so every write needs an administrator's opt-in (decisions, batches, starts) or a backend limit (reminders, rate limit).
-
Rovo builds the review card from the inputs and cannot customise it, so a batch's listing and a reminder's approval, work item or page and recipients are inputs, compared with what the app prepared.
-
Rovo retries after about 20 seconds; a long batch or start answers "still in progress" to a repeat.
Out of scope
-
Searching another person's approvals, and per-person analytics.
-
Changing start options, choosing reminder recipients, or formatting reminders from chat.
-
Deciding email steps, batches of votes, batches over 10, and batches for other agents.
-
Listing approvals that will reach the user later (AP-932).
-
Hiding webhook settings everywhere (own ticket).
Manual tester notes
On qa, with real Rovo chat, in Jira and Confluence.
-
Settings: "Start approvals in Rovo chat" is off; "Actions from other agents" needs no chat switch. Rovo Studio lists the five new tools and no batch tool; its "Send a reminder (other agents)" needs "Actions from other agents".
-
Chat decisions (switch on): "approve" with one option shows the card at once ("Decision: Approve", "Work item" (Confluence: "Page"), "Approval", "Step", "On behalf of" only for a delegator's option); cancelling gives "Nothing was recorded." (a go-through moves to the next approval). Prepare in two chats, confirm the first card: refused as replaced. Approval and consent steps: each decision picks its step. Self and a delegator: numbered options with ID and link. A reject needing a comment is said up front; "reject: reason" records it. Switch off: the list, the go-through and a decision say so and give the link.
-
Without confirming ("Decide without confirming" on): "approve" on the user's own step records with no card and quotes the summary; a vote, a moderator decision, a delegator's option and a batch still confirm. Turn the setting off between prepare and submit: the card appears. An automation rule running the agent may decide; check "via Rovo".
-
Starters: the go-through shows one approval at a time in list order ("First/Next pending approval:"), with the work item's details and every decision, no steps ahead; skip and stop work; chips offer the decisions without a comment and "Skip" with the approval (Rovo writes them, so they vary and may still offer one that needs a comment); over 20 pending, it continues with new ones only. "Today" reads "today (, time)". Chips (Rovo's own, so they vary) carry the ID and key or title. No agent names the other product; without a work item or page it asks for one.
-
Texts: dates read "29 Jul 2024, 13:05" in the user's time zone, waiting times in words, no ALL_CAPS values (states, roles, channels) in answers; the reminder card shows the approval and the work item or page.
-
Batches: five approvals (user step, group step, delegated slot, comment required on reject, vote); "reject all" without a comment excludes the last two. Switch off: a link to the Approvals page. On: an approval decided in the panel meanwhile is not recorded; confirming twice records nothing twice; 12 approvals: at most 10. With an HTTP step that answers after 15 seconds, note the time and any "not reached in time".
-
Search: counts match the app's list; removing browse permission on one work item lowers them after up to a minute, while a decision on it is refused at once; "KP" in capitals is refused when KP is not visible; "last month" in a time zone far from UTC; by completion date, an approval that ran out of time counts as late.
-
Votes: "1 and 3" in a multiple-choice poll; refused in a single-choice poll and after the deadline; for a delegator; as the moderator while voting is open, confirmed in a new message before the card.
-
JSM (a site with JSM, "Show for Agents" and the work item permissions on): an agent of service project A without "View approval path" sees A's portal approvals in Rovo and the Web API, none of service project B's when their Browse on B comes from a non-agent grant. A licensed customer of B, no agent, asking for their own request's status gets "cannot be found" (the portal grant does not reach the Jira API). A site without JSM works as before.
-
Starts: the list matches the "New" tab; similar names make the agent ask; no start permission, manual starts off, or no view permission is refused; confirming twice creates one approval; a failing start condition gives its message.
-
Steps still ahead: a parallel group, a group step, a field step and an AI step, in order; nothing after a rejection or the deadline.
-
Reminders: the preview matches the reminder dialog; again within 4 hours gives the next time; the 11th within an hour is refused; a Slack own message shows no backslashes; a Confluence page comment appears; the template turned off is refused.
-
Fixes: a crafted reminder request cannot reach another address; bulk decide names an approval archived after selecting; a group member with a delegation records their own vote; comment counters; a comma option from the panel and a long option from Slack; Activity person and date filters; a crafted panel start cannot turn on options the settings turn off; another project's definition is refused.