Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 1 | /** |
| 2 | * Pieces of the teams pages: a team in a list, and its badges. | |
| 3 | */ | |
| 4 | import { EyeOff, UsersRound } from "lucide-react"; | |
| The site no longer has g1t's own agents. g1t is where the coding agents you already use do their work, so the Agents mode is gone from the rail, with every page under /<workspace>/-/agents: personas, faces, skills, abilities, routines, computers, sessions and agent spend. Customize (skills, connectors, plugins, marketplaces), the context hub, model providers, the AI Gateway page, the Spend page and pill, Ask g1t, and the repository's Agents, Plans and agent settings pages go too, and their addresses now answer 404. | 5 | import { Link, useOutletContext } from "react-router"; |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 6 | |
| 7 | import { type Team, teamHandle } from "@g1t/contracts"; | |
| 8 | ||
| 9 | import { teamCounts, teamPath } from "../lib/teams"; | |
| 10 | import { Badge } from "./ui/badge"; | |
| 11 | ||
| The site no longer has g1t's own agents. g1t is where the coding agents you already use do their work, so the Agents mode is gone from the rail, with every page under /<workspace>/-/agents: personas, faces, skills, abilities, routines, computers, sessions and agent spend. Customize (skills, connectors, plugins, marketplaces), the context hub, model providers, the AI Gateway page, the Spend page and pill, Ask g1t, and the repository's Agents, Plans and agent settings pages go too, and their addresses now answer 404. | 12 | /** What each page of a team gets from the team's layout: the team. */ |
| 13 | export type TeamContext = { team: Team }; | |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 14 | |
| 15 | /** The team whose page this is. */ | |
| 16 | export function useTeam(): Team { | |
| 17 | return useOutletContext<TeamContext>().team; | |
| 18 | } | |
| 19 | ||
| 20 | /** Secret, and the viewer's place in the team. */ | |
| 21 | export function TeamBadges({ team }: { team: Pick<Team, "visibility" | "viewer_role"> }) { | |
| 22 | return ( | |
| 23 | <> | |
| 24 | {team.visibility === "secret" && ( | |
| 25 | <Badge> | |
| 26 | <EyeOff size={10} /> | |
| 27 | Secret | |
| 28 | </Badge> | |
| 29 | )} | |
| 30 | {team.viewer_role === "maintainer" && <Badge tone="accent">Maintainer</Badge>} | |
| 31 | {team.viewer_role === "member" && <Badge>Member</Badge>} | |
| 32 | </> | |
| 33 | ); | |
| 34 | } | |
| 35 | ||
| 36 | /** One team in a list: its name, handle, what it is for, and how big it is. */ | |
| The site no longer has g1t's own agents. g1t is where the coding agents you already use do their work, so the Agents mode is gone from the rail, with every page under /<workspace>/-/agents: personas, faces, skills, abilities, routines, computers, sessions and agent spend. Customize (skills, connectors, plugins, marketplaces), the context hub, model providers, the AI Gateway page, the Spend page and pill, Ask g1t, and the repository's Agents, Plans and agent settings pages go too, and their addresses now answer 404. | 37 | export function TeamRow({ team, children }: { team: Team; children?: React.ReactNode }) { |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 38 | return ( |
| 39 | <li className="flex flex-wrap items-start gap-3 px-4 py-3 transition-colors hover:bg-surface/60 sm:flex-nowrap"> | |
| 40 | <span className="mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-md bg-raised text-muted ring-1 ring-line"> | |
| 41 | <UsersRound size={14} /> | |
| 42 | </span> | |
| 43 | <div className="min-w-0 grow basis-48"> | |
| 44 | <div className="flex flex-wrap items-center gap-x-2 gap-y-1"> | |
| 45 | <Link to={teamPath(team.workspace, team.slug)} prefetch="intent" className="font-medium hover:underline"> | |
| 46 | {team.name} | |
| 47 | </Link> | |
| 48 | <span className="font-mono text-xs text-faint">{teamHandle(team)}</span> | |
| 49 | <TeamBadges team={team} /> | |
| 50 | </div> | |
| 51 | {team.description && <p className="mt-0.5 line-clamp-2 text-sm text-muted">{team.description}</p>} | |
| 52 | <p className="mt-1 text-xs text-faint"> | |
| The site no longer has g1t's own agents. g1t is where the coding agents you already use do their work, so the Agents mode is gone from the rail, with every page under /<workspace>/-/agents: personas, faces, skills, abilities, routines, computers, sessions and agent spend. Customize (skills, connectors, plugins, marketplaces), the context hub, model providers, the AI Gateway page, the Spend page and pill, Ask g1t, and the repository's Agents, Plans and agent settings pages go too, and their addresses now answer 404. | 53 | {teamCounts(team)} |
| Teams and CODEOWNERS, labels and milestones, dependency updates, the security suite, and a clearer top bar | 54 | {team.parent && ( |
| 55 | <> | |
| 56 | {" · in "} | |
| 57 | <Link to={teamPath(team.workspace, team.parent.slug)} className="hover:text-fg hover:underline"> | |
| 58 | {team.parent.name} | |
| 59 | </Link> | |
| 60 | </> | |
| 61 | )} | |
| 62 | </p> | |
| 63 | </div> | |
| 64 | {children} | |
| 65 | </li> | |
| An agent is on teams the way a person is: through team membership, with no team or department of its own. Add it to teams when you create it, from its profile or from the team's page; the Agents sidebar groups agents by the teams they're on, with those on none last; what an agent is told about its teammates, team budgets, skills reach, Spend's By team and the People pages all read memberships. Agents with an old team name matching a team are moved onto it once; the rest are left off a team. Templates name a role only. The agents, teams and people guides say how. | 66 | ); |
| 67 | } |