Files
orca/src/shared/linear/priority-label.ts
T
Brennan Benson 3fca1d1648 fix(linear): unbound list-issues by default, surface truncation, bind cursor workspace (#15824)
Fixes STA-5076.

list-issues capped at 50 by default and hard-clamped at 250, with hasMore buried
under result.meta and no stderr warning for --json, so a page that stopped early
read as a complete answer. Omitting --limit now walks Linear's pages until they
run out (meta.limit is null), and --limit <n> is the only cap, paging past
Linear's 250-per-request maximum to reach it. result.truncated sits next to
result.issues and is set only when a cap actually held results back; human output
prints "truncated: showing N".

The read still has to fit the CLI's 60s RPC budget, so a 20s wall-clock deadline
and a 200-page ceiling stop the walk early and report truncated with a
continuation cursor rather than failing the command.

Also:
- issued --cursor values bind the resolved workspace, so call -> nextCursor ->
  call works without --workspace; raw Linear cursors still need one and now carry
  nextSteps
- issued cursors whose payload smuggles back `all` or an empty workspace are
  rejected at decode, since either would widen the read past the bound workspace
- JSON issue rows carry priorityLabel (none/urgent/high/medium/low), matching
  orca linear priority set
- truncated and priorityLabel are optional on the wire, so a host that predates
  either is not read as "complete"; readers fall back to meta.hasMore
- the truncation line prints the rows actually rendered, so a remote result with
  no meta.returned cannot print "showing undefined"
2026-08-21 14:28:55 -07:00

18 lines
484 B
TypeScript

export const LINEAR_PRIORITY_LABELS = {
0: 'none',
1: 'urgent',
2: 'high',
3: 'medium',
4: 'low'
} as const
export type LinearPriorityLabel =
(typeof LINEAR_PRIORITY_LABELS)[keyof typeof LINEAR_PRIORITY_LABELS]
export function linearPriorityLabel(priority: number | null | undefined): LinearPriorityLabel {
if (priority === 1 || priority === 2 || priority === 3 || priority === 4) {
return LINEAR_PRIORITY_LABELS[priority]
}
return LINEAR_PRIORITY_LABELS[0]
}