Add an AI budget section to the group settings page, gated by the
aibridge feature and the ai-gateway-cost-control experiment. Saves a
per-member monthly budget via the group AI budget endpoints alongside
the group patch: empty is uncapped (deletes the budget), 0 disables,
and any value >= 0 is accepted.
Closes AIGOV-294
Frontend for agent chat spend limiting on `/agents`.
## Changes
- add the limits management UI, API hooks, and validation for
deployment, group, and user overrides
- show spend limit status in Agents analytics and usage summaries
- surface limit-related chat errors consistently in the agent detail
experience
- add shared currency and usage-limit messaging helpers plus related
stories/tests
* feat: add groups column to members page in organizations
* fix: run 'make fmt'
* fix: stop displaying groups member is in for other organisations
* fix: run 'make fmt'
This is accomplished by using the members endpoint instead of the users
endpoint, and to that end the UserAutocomplete component has been
reworked to support either endpoint as separate components with a shared
base.
* Add Storybook for groups page
This ensures it is using the right endpoint for the add member dropdown.
* Add ability to mock react-query errors
* feat: route groups by name instead of id
* fix: update group navigation when name changes
* fix: update isLoading and error checking
* fix: fix format
* fix: update isLoading and error
* fix: cleanup
* wip: commit progress on code split-up
* wip: commit more progress
* wip: finish initial version of class implementation
* chore: update all import paths to go through client instance
* fix: remove temp comments
* refactor: smoooooooosh the API
* refactor: update import setup for tests
* chore: add query for a user's groups
* chore: integrate user groups into UI
* refactor: split UI card into separate component
* chore: enforce alt text for AvatarCard
* chore: add proper alt text support for Avatar
* fix: update props for Avatar call sites
* finish AccountPage changes
* wip: commit progress on AvatarCard
* fix: add better UI error handling
* fix: update theme setup for AvatarCard
* fix: update styling for AccountPage
* fix: make error message conditional
* chore: update styling for AvatarCard
* chore: finish AvatarCard
* fix: add maxWidth support to AvatarCard
* chore: update how no max width is defined
* chore: add AvatarCard stories
* fix: remove incorrect semantics for AvatarCard
* docs: add comment about flexbox behavior
* docs: add clarifying text about prop
* fix: fix grammar for singular groups
* refactor: split off AccountUserGroups and add story
* fix: differentiate mock groups more
* refactor: extract UserRoleCell into separate component
* wip: add placeholder Groups column
* fix: remove redundant css styles
* refactor: update EditRolesButton to use Sets to detect selections
* wip: commit progress for updated roles column
* wip: commit current role pill progress
* fix: update state sync logic
* chore: add groupsByUserId query options factory
* fix: update return value of select function
* chore: drill groups data down to cell component
* wip: commit current cell progress
* fix: remove redundant classes
* wip: commit current styling progress
* fix: update line height for CTA
* fix: update spacing
* chore: add tooltip for Groups column header
* fix: remove tsbuild file
* refactor: consolidate tooltip components
* fix: update font size defaults inside theme
* fix: expand hoverable/clickable area of groups cell
* fix: remove possible undefined cases from HelpTooltip
* chore: add popover functionality to groups
* wip: commit progress on groups tooltip
* fix: remove zero-height group name visual bug
* feat: get basic version of user group tooltips done
* perf: move sort order callback outside loop
* fix: update spacing for tooltip
* feat: make popovers entirely hover-based
* fix: disable scroll locking for popover
* docs: add comments explaining some pitfalls with Popover component
* refactor: simplify userRoleCell implementation
* feat: complete main feature
* fix: prevent scroll lock for role tooltips
* fix: change import to type import
* refactor: simplify how groups are clustered
* refactor: update UserRoleCell to use Popover
* refactor: remove unnecessary fragment
* chore: add id/aria support for Popover
* refactor: update UserGroupsCell to use Popover
* chore: redo visual design for UserGroupsCell
* fix: shrink UserGroupsCell text
* fix: update UsersTable test to include groups info