Repository navigation
feat(agents): Kenny's agent page on the new Agents page - #913
Conversation
049f175 to
75b9408
Compare
2128dfe to
65527a8
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 65527a828f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const bringOver = () => setFrame({ view: "browse", side: "porting" }); | ||
| const ready = types.length > 0 && snapshot.status === "ready"; | ||
| // Importing gives an agent a key here, so a hosted type cannot take one. | ||
| const runnable = types.filter((type) => !type.remote); |
There was a problem hiding this comment.
Exclude agent types without execution handlers
runnable only excludes hosted types, so Builderlab—which src/bundled/builderlab/README.md explicitly says has no execution handler yet—is offered by the new Browse importer. Selecting it makes agents.port create a locally custodied agent and reports success, but the resulting agent has no run callback and cannot execute; its shared instructions are also discarded because Builderlab has no adopt. Filter on actual local import/execution capability or keep this adapter out until its migration is implemented.
AGENTS.md reference: AGENTS.md:L92-L99
Useful? React with 👍 / 👎.
| @media (max-width: 540px) { | ||
| .identity { | ||
| height: 48.5rem; | ||
| } |
There was a problem hiding this comment.
Make the narrow create card fit the dialog viewport
At widths up to 540px this forces the card to 48.5rem (776px), although Buzz supports windows as small as 480×400. AgentCreateDialog also selects bodyLayout="flex", whose shared dialog recipe applies overflow: hidden to the body, so the oversized card cannot scroll and its lower avatar choices or instruction editor are clipped at common narrow/short sizes. Bound the card to the available viewport and give the content an owned scroll region instead of increasing its fixed height.
AGENTS.md reference: AGENTS.md:L46-L51
Useful? React with 👍 / 👎.
wesbillman
left a comment
There was a problem hiding this comment.
Changes needed: keep Browse's import dialog open while its write is pending (inline). I also confirm the existing create-dialog clipping issue as P2 and the instructions-loss concern as a P3 mismatch with the new unconditional promise; the Builderlab execution limitation itself predates this PR.
Star Lord's automated source review via Wes's account. Head 65527a828f8dede6f4eff60d4e936ad6483048c5; base 63c39eee701d2fe9dc7daa59cf4e076e58f188da. No tests, app or browser execution. The current-head CI snapshot contains JavaScript and browser failures; causes unverified. Binary avatar media was not visually inspected.
| <Dialog | ||
| open={!!selected} | ||
| onOpenChange={(open) => { | ||
| if (!open) setSelected(undefined); | ||
| }} |
There was a problem hiding this comment.
P2: Keep pending imports attached to their dialog
Close and Escape still clear selected while ImportShared.run is awaiting agents.port: its pending flag never reaches Dialog.preventClose. Closing unmounts the only error state without cancelling the write, so a rejected import loses its failure/retry feedback. Reopening the same card also mounts a fresh enabled Import button, allowing another import while the first is still creating a new identity (service.ts:871–875).
Lift/share pending state with the dialog and set preventClose until settlement, preserving the error in place. This follows DESIGN.md's pending-operation/recovery contract (167–170, 893–899). Add a deferred-import test covering Close/Escape while pending and retry after rejection.
Kenny's 49 Berd pack avatars from #827. The posters are bundled, so the picker and the New agent tile work offline. The transparent animations (WebM for Chromium, alpha HEVC for WebKit) stream from the catalog's versioned CDN URLs, which are cached as immutable. Until they play, or when they can't, the poster shows instead. A chosen avatar is saved as its versioned poster URL. Co-authored-by: klopez4212 <klopez4212@gmail.com> Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-authored-by: ART <ea39c1c8acf57180161ef4ba4ed68abf8589f5291956b909a5aa991fc66664ca@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
…vatar editing From Kenny's #827: SurfaceButton for artwork tiles, and an AvatarEditor that can show its picker inline with a dotted squircle trigger and put its Done action where the host says. Combobox.Control takes a leading icon. New shared recipes, both proposed in DESIGN.md: `Combobox.Control appearance="chip"` reads as a label until hovered or opened, and `Input appearance="title"` sets a value as a title with no field around it. Adds the OpenAI logo icon. Co-authored-by: klopez4212 <klopez4212@gmail.com> Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
An agent type can give a `Create` view: it gets the new agent's starting config, from its defaults, and reports changes. The app keeps the key, name and picture around it. `agents.create` takes the name, picture and config together; the picture is set before the profile is first published, and a failure to set it doesn't lose the agent. Shared parts for types' Create views and settings tabs, after Kenny's #827: a model picker that lists the type's models and takes any ID typed in, compact as a chip in the dialog's corner; and instructions, a plain field in settings and, in the dialog, a preview that opens into an editor over the card. Co-authored-by: klopez4212 <klopez4212@gmail.com> Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
…owse Brings the look of Kenny's #827 to the new Agents page: - Tabs for Your agents, Import and Browse. - Your agents is a grid of cards, with the type's mark and summary under each name; pack avatars animate. Selecting one still peeks beside the grid and Enter or a double-click still opens it. The New agent tile leads the grid. - New agent opens Kenny's create dialog: the big avatar, chosen from the packs or an image, and the name, with the type choice in the corner. The chosen type's Create view fills in the rest, such as its model beside the type and its instructions below the name. - Import is Bring over, as cards that each import as the chosen type. - Browse lists the agents shared in the community, read-only, with a details view. Co-authored-by: klopez4212 <klopez4212@gmail.com> Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
… controls Both types give a Create view: the compact model chip beside the type, and instructions below the name. Their Settings tabs use the shared model picker, which also takes a model ID typed in, and the shared instructions field. Codex's tabs move to JSX with the design-system controls, laid out like Claude Code's, keeping its catalog check, thinking choice and strings. Co-authored-by: klopez4212 <klopez4212@gmail.com> Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
- The Create agent dialog opens on the Name field. - A hosted agent's picture that fails to save no longer fails its create. - Browse starts over from the first page in another community. - Add/Edit instructions is named by its visible text, and leaving the editor returns focus to it. - Avatar artwork in cards and tiles is decorative; the avatar choices use SurfaceButton and its shared focus ring. - "No agents yet" waits for the agent list to load. - Use image offers only an uploaded image, with no source tabs, and Done with no image keeps the avatar it had. - Drop the unused inline image editor, retired-avatar check and the hot-reload copy of the pack representatives. Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
Co-authored-by: ART <ea39c1c8acf57180161ef4ba4ed68abf8589f5291956b909a5aa991fc66664ca@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
- Browse's details dialog is wide, with the agent's portrait, its model with the model icon, and who shared it by their profile (the npub is on hover). The instructions scroll in their own panel. - Import in the dialog makes a new agent of the chosen type through `agents.port`, with a new "shared" source: a new key with the shared name and picture, and its instructions carried to the type's `adopt`, the same path that imports an earlier system's agents. - Import cards show only where an agent comes from. Its npub and community are on hover, and the npub shows only to tell apart agents of the same name. Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
The new Agents page titles itself with a tab, so the page-level "Agents" heading these journeys waited for is gone. The page's region keeps the name. Co-authored-by: claude00 <fb8b76a01257932b8ca35060862c29bd09b2137638573731c2d5074fc02c5385@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Bradley Axen <baxen@squareup.com>
65527a8 to
7074895
Compare
wesbillman
left a comment
There was a problem hiding this comment.
Changes still needed: this update leaves the prior P2 pending-import dismissal, P2 create-dialog clipping, and P3 instructions-preservation promise findings unchanged.
No new finding in the four heading-to-region selector replacements: they target the named Agents page section and retain the surrounding navigation/sidebar assertions. No duplicate inline comments added.
Star Lord's automated source follow-up via Wes's account. Head 707489546df8835781805be703bf9844ab7198fd; base dd360ca3c7674cedf44b8775596f153331456607. Current-head CI required is green. No tests, app or browser execution; visual/native behavior and binary avatar media remain unverified.
Ports the Codex tab's Install Codex and Sign in setup to the JSX tabs from #913, which replaced tabs.ts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Salman Mohammed <smohammed@squareup.com>
Brings Kenny's agent visual overhaul (#827, built on the old agents page) to the new Agents page. Stacked on #870.
What changes
Create, which renders below the name. It can also put compact controls in the corner (CreateCorner) and take over the card for longer edits (useCreateCard().edit, which drives Back / Done editing). The config it returns is passed toagents.create({ type, name, picture, config }).ModelPicker(a chip in the corner) andAgentInstructions(examples plus Add instructions, which takes over the card). Their settings tabs use the same controls.SurfaceButtonfor artwork choices.Combobox.Control appearance="chip"andInput appearance="title", so feature CSS never restyles shared controls.AvatarEditor.catalog.jsonare bundled. The WebM/HEVC animations (~220 MB) stream from Berd's versioned CloudFront URLs, which are cached as immutable, and the poster shows until they play or when they can't (offline, reduced motion, errors). Tauri CSPmedia-srcallows that CDN origin. The videos are not in git history.Decisions (from baxen)
Known gaps
Testing
bin/pnpm checkpasses.bin/pnpm vitest runpasses: 587 files, 8352 tests.tests/browseravatar specs: avatar-loading failed 1 of 3 repeats with a 5px shift. It renders onlyAvatarand globals, so it's likely flaky.🤖 Generated with Claude Code