Skip to content

Show separate identity cards and prevent duplicate imports - #225

Merged
loganj merged 2 commits into
mainfrom
feat/agent-relay-reader
Sep 29, 2026
Merged

loganj merged 2 commits into
mainfrom
feat/agent-relay-reader

Conversation

@loganj

@loganj loganj commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

🤖

Summary

  • Show each saved agent identity on its own card. Two identities can use the same profile without becoming one card.
  • Show a short key suffix only when visible names are ambiguous. Keep the full public key in the card details. Show profiles with no identity separately.
  • Reject a second import of the same identity, even when it targets another community. Prevent overlapping imports from accessing credentials at the same time.
  • Finish an incomplete imported agent with Use here. It confirms the owner's community through a signed request and leaves the agent stopped until you press Start. (This was Finish incomplete imported-agent setup with Use here #226, which is now merged into this branch.)

Details

  • The existing Agents library uses the new cards in this branch. No later branch is needed to display them.
  • Import protection lasts from preparation through credential access and the final save. Cancellation or failure releases it so the user can retry.
  • Repair team import from main still works. A saved agent that is missing its team instructions can be repaired from the same source. Every other already-held key stays excluded, in any community.
  • Based on main. Discover saved relay agents without changing the page #224 is merged.

Screenshots

Captured from the browser test fixture at this PR's head.

Each identity gets its own card. Two identities with the same name show a short key suffix; a profile with no identity is listed separately

Each identity gets its own card. Two identities with the same name show a short key suffix; a profile with no identity is listed separately

An incomplete import offers Use here; Start stays disabled until then

An incomplete import offers Use here; Start stays disabled until then

After Use here confirms the community, the agent is set up and stays stopped until you press Start

After Use here confirms the community, the agent is set up and stays stopped until you press Start

@loganj
loganj force-pushed the feat/agents-identity-tiles branch from e6a96c4 to 8e857be Compare September 24, 2026 17:16
@loganj
loganj force-pushed the feat/agent-relay-reader branch 2 times, most recently from 129a378 to cf5bae6 Compare September 24, 2026 19:51
@loganj
loganj force-pushed the feat/agents-identity-tiles branch from 8e857be to 2beebdc Compare September 24, 2026 19:51
@loganj loganj changed the title Add an owner-scoped relay agent inventory reader Retain partial agent inventory through local failures and relay access changes Sep 24, 2026
@loganj
loganj force-pushed the feat/agent-relay-reader branch from cf5bae6 to c47f7ab Compare September 24, 2026 19:58
@loganj loganj changed the title Retain partial agent inventory through local failures and relay access changes Separate owner-confirmed agent setup from inventory discovery Sep 24, 2026
@loganj
loganj force-pushed the feat/agent-relay-reader branch from c47f7ab to b1e77fe Compare September 24, 2026 20:11
@loganj
loganj force-pushed the feat/agents-identity-tiles branch 2 times, most recently from 8bcaefc to 6be3d14 Compare September 24, 2026 21:34
@loganj
loganj force-pushed the feat/agent-relay-reader branch 2 times, most recently from 745aaf9 to cd4172f Compare September 24, 2026 22:52
@loganj
loganj force-pushed the feat/agents-identity-tiles branch from 6be3d14 to 2d98f43 Compare September 24, 2026 22:52
@loganj loganj changed the title Separate owner-confirmed agent setup from inventory discovery Show separate identity cards and prevent duplicate imports Sep 24, 2026
@loganj
loganj force-pushed the feat/agents-identity-tiles branch from 2d98f43 to e1c37cd Compare September 25, 2026 13:52
@loganj
loganj force-pushed the feat/agent-relay-reader branch from cd4172f to a7151f5 Compare September 25, 2026 13:52
@loganj
loganj force-pushed the feat/agents-identity-tiles branch from e1c37cd to 6e27ec7 Compare September 25, 2026 14:01
@loganj
loganj force-pushed the feat/agent-relay-reader branch from a7151f5 to 0d2b922 Compare September 25, 2026 14:01
@loganj
loganj marked this pull request as ready for review September 25, 2026 14:18
@loganj
loganj requested review from a team, comp615 and wesbillman as code owners September 25, 2026 14:18
Comment thread src/bundled/agents/AgentLibrary.tsx

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a P3, approving

@loganj
loganj force-pushed the feat/agent-relay-reader branch from 0d2b922 to 657ea06 Compare September 25, 2026 19:15
@loganj
loganj force-pushed the feat/agents-identity-tiles branch from 6e27ec7 to 336b31e Compare September 25, 2026 19:15

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord automated source review via Wes’s account — non-blocking COMMENT review.

Reviewed head 657ea06871cf38c6fbdf393085cb541fec413459 against base/merge-base 336b31ede9b52c0a30788d71eca0fa13481c3f0d. This is a bounded follow-up to the earlier source review, after comparing actual code changes: rechecked the prior import finding, the per-identity card integration, reservation lifetime, and the removal of the obsolete grouping helper and its test callers.

One actionable P2 is attached inline. No additional actionable defects found in the reviewed follow-up scope.

Validation: pinned Git source and relevant callers/test source inspected; extracted bytes verified against Git blobs; git diff --check passed. No PR code, tests, builds, installs, app launches, credentials, or live imports were executed/accessed. CI was not assessed in this cycle; native concurrency, rendered UI, and human acceptance remain unverified. This is not an approval or merge authorization.

Comment thread crates/agent-controller/src/import.rs Outdated
@loganj
loganj force-pushed the feat/agent-relay-reader branch from 657ea06 to cc4b36f Compare September 25, 2026 19:38
@loganj
loganj force-pushed the feat/agents-identity-tiles branch from 336b31e to 6f722c5 Compare September 25, 2026 19:38
Base automatically changed from feat/agents-identity-tiles to main September 26, 2026 13:44
@loganj
loganj force-pushed the feat/agent-relay-reader branch from c83127e to 4ab4fab Compare September 26, 2026 14:57

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord’s automated source review (via Wes’s account)

No new actionable findings in this bounded rebase follow-up. Reviewed head 4ab4fab63462c6bace4f7b88d03aa4e17c37c805 against base 401fb8d301a310ea7d12fc1a59c51bf1907c2078, comparing the feature patch with previously covered code at c83127e644d587fccb8e1935e8211ba8c9aba9a4 (source-tree equivalent to reviewed #226 head 3e749fdb8a8e4ec60f9246091017f8850a427423).

  • The prior duplicate-import UI finding remains fixed. The app-wide snapshot filters keys held in another community, while an exact saved identity reappears only for its missing team-instruction repair (AgentImport.tsx:71–81; AgentControlPanel.tsx:184–209). I checked the different-community regression and the repair/retry component cases.
  • The rebase preserves the separate native repair path before rejecting duplicate new imports. Repairs bypass credential acquisition and reach the revision-checked atomic Store::import operation; the shared import reservation remains held through commit and releases on failure/drop (import.rs:154–202,235–294; store.rs:29–40,279–302). The existing native regression checks preservation of edited settings and a concurrent Stop, without credential reads.
  • Use here still reaches the registered/allowed native command, and incomplete setup clears both enabled and start-on-launch intent. The changed IPC test resets the prior mock implementation before checking this command. Both PR commits contain DCO sign-off trailers.

This follow-up covers the changed import/repair integration and prior fixes; it does not reopen unrelated areas or dismiss earlier reviews.

Validation limits: source-only inspection of immutable GitHub blobs, verified against pinned trees; no dirty working-tree inputs. Tests were read, not run. No builds, app launches, credential access, live import/setup operations, or CI checks were performed. Native/runtime behavior and human acceptance remain unverified. This non-blocking COMMENT is not an approval or merge authorization.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord’s automated source review (via Wes’s account)

No new actionable findings in this bounded rebase/integration follow-up. Reviewed head 0d03666592da43d8496a97dd58a9750c1a21a7e7 against base 1d19153276b93ef733fe5e8ead888fc528fc00e3, comparing actual source changes with previously reviewed head 4ab4fab63462c6bace4f7b88d03aa4e17c37c805 (prior review).

  • The prior duplicate-import fix remains intact: app-wide managed keys exclude a second import across communities, while the exact saved identity remains eligible for missing-team repair (AgentImport.tsx:71–81; AgentControlPanel.tsx:202–211).
  • Use here still matches the registered/allowed native command and its {id, resolution} arguments. Incomplete identities remain excluded from shared runnable choices and start-on-launch selection.
  • Traced the inherited Goose-install restart integration through src-tauri/src/agents.rs:591–656 and crates/agent-controller/src/runtime.rs:604–680: setup is checked before credential access, checked again before action, and required before launch. harness_setup.rs:259–282 selects enabled agents that failed specifically because Goose is missing, not stopped imports. Mantis’s independent native lane was reconciled against these source paths.
  • Separated inherited base changes (including installer, npub rendering, and broker logging/rate limiting) from this PR’s changes. The previously reviewed reservation/Use here internals and broker resolution route are unchanged; no new evidence justified reopening them. Both PR commits retain DCO sign-offs.

Validation limits: immutable GitHub source extracts verified against pinned Git blobs; no dirty working-tree inputs. Tests and callers were read, not run. No builds, installs, app launches, credential access, or live import/setup operations. A single CI snapshot showed JavaScript, browser measurements, Semgrep, zizmor and DCO successful; Rust/tool integration and all six browser journey shards were still in progress; Windows native validation was skipped. CI was not watched or re-polled. Native/runtime behavior, rendered UI and human acceptance remain unverified.

This non-blocking COMMENT is not an approval or merge authorization.

@loganj
loganj force-pushed the feat/agent-relay-reader branch from 0d03666 to f92f6a9 Compare September 28, 2026 16:43
@loganj
loganj marked this pull request as draft September 28, 2026 19:04
@loganj
loganj force-pushed the feat/agent-relay-reader branch 4 times, most recently from 46f7751 to d3efcb6 Compare September 28, 2026 21:28
@loganj
loganj marked this pull request as ready for review September 28, 2026 21:45
@loganj
loganj force-pushed the feat/agent-relay-reader branch from d3efcb6 to 88acd23 Compare September 28, 2026 21:48

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Star Lord’s automated source review (via Wes’s account)

No new actionable findings in this bounded integration follow-up. Reviewed head 88acd23a85d62357ae6dd4116415586c372d2d5c against base ea7ddb81aebd6da9dd832378aa19df1bff8d7ac2, comparing the actual feature delta with previously reviewed head 0d03666592da43d8496a97dd58a9750c1a21a7e7 and its base (prior review). This is not a fresh review reopening unchanged areas.

  • Identity-card integration: the per-identity inventory survives the inherited layout/header changes. The public-key disclosure now uses the shared popover with an identity-specific accessible name (AgentCard.tsx:203–230). Updated component and browser assertions check the exact npubs and Escape focus restoration (AgentCard.test.tsx; AgentLibrary.test.tsx; tests/browser/agents.spec.mjs:8–22). I inspected error/retry transitions separately; rendered keyboard behavior remains unverified.
  • Import/setup integration: the native reservation, duplicate-key rejection and Use here feature changes are unchanged relative to their respective bases. The existing app-wide key exclusion and exact missing-team-repair exception remain in AgentImport.tsx:71–81, with all saved agents supplied by AgentControlPanel.tsx:204. Inherited default resolution clones settings rather than changing identity/setup state (agent_defaults.rs:160–170). Incomplete imports are still checked before credential access and launch (runtime.rs:684–708, 754–777); save/default restarts select only running, enabled agents (agents.rs:634–713). Use here clears enabled/start-on-launch intent when completing setup (store.rs:220–264).
  • Public materials: confirmed the repository is public and inspected the description and all three attached images. I found no internal coordination links, workspace identifiers, personal information or secrets in those displayed materials; the images show fixture-style labels and reserved example URLs. This inspection is not proof the screenshots were captured at the stated head.
  • Both PR commits retain DCO sign-offs. No source changes were made.

Validation limits: 207 immutable source extracts were checked against their pinned Git blob hashes; no dirty working-tree inputs. Source, callers and tests were read, not executed. No builds, installs, app launches, credential access or live import/setup operations. One hosted CI snapshot showed Semgrep, zizmor, browser measurements and DCO successful; JavaScript, Rust/tool integration and all six browser journey shards were in progress; Windows native validation was skipped. No CI polling. Native/runtime behavior, live accessibility and human acceptance remain unverified.

This non-blocking COMMENT is not an approval or merge authorization.

@loganj
loganj force-pushed the feat/agent-relay-reader branch from 88acd23 to 0eaf93d Compare September 29, 2026 01:18
Larry and others added 2 commits September 28, 2026 23:06
…orts

Signed-off-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Signed-off-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
@loganj
loganj force-pushed the feat/agent-relay-reader branch from 0eaf93d to ef58e9e Compare September 29, 2026 03:09
@loganj
loganj merged commit 61da266 into main Sep 29, 2026
16 checks passed
@loganj
loganj deleted the feat/agent-relay-reader branch September 29, 2026 14:53
johnmatthewtennant pushed a commit that referenced this pull request Sep 29, 2026
…t-update-drafts

* commit '0a4982797f38164d75e3e8f48e58fabb9dd59e66': (66 commits)
  Show saved local and relay inventory while retaining existing import controls (#286)
  feat(channels): edit channel details with confirmed saves (#369)
  test(channels): discover the hoverable width for activity corners (#416)
  Fix flaky WebKit menu focus browser test (#409)
  Test Goose connections and fix Pi test false failures (#383)
  feat: open threads with verified newest-first windows (#154)
  Add agent conversation context selection (#382)
  test: keep behavioral coverage without cosmetic matrices (#410)
  Fix reading position and composer caret on channel return (#411)
  fix(channels): prevent clipped activity rows and remove separators (#377)
  ci: publish signed macOS updater artifacts in prereleases (#387)
  feat(messages): add jump to latest controls (#374)
  Align reply summaries with message content (#408)
  Add centered thinking pills to agent avatars (#351)
  Keep focus where the user moved it when a menu finishes closing (#355)
  Browse legacy identities without a destination and review text before cloning (#285)
  Show separate identity cards and prevent duplicate imports (#225)
  Polish message and thread spacing, grouping, and typography (#364)
  Remove the Away avatar badge stroke (#395)
  fix(profiles): hide activity on human profiles (#391)
  ...

Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>
johnmatthewtennant pushed a commit that referenced this pull request Sep 29, 2026
* origin/main: (25 commits)
  Show saved local and relay inventory while retaining existing import controls (#286)
  feat(channels): edit channel details with confirmed saves (#369)
  test(channels): discover the hoverable width for activity corners (#416)
  Fix flaky WebKit menu focus browser test (#409)
  Test Goose connections and fix Pi test false failures (#383)
  feat: open threads with verified newest-first windows (#154)
  Add agent conversation context selection (#382)
  test: keep behavioral coverage without cosmetic matrices (#410)
  Fix reading position and composer caret on channel return (#411)
  fix(channels): prevent clipped activity rows and remove separators (#377)
  ci: publish signed macOS updater artifacts in prereleases (#387)
  feat(messages): add jump to latest controls (#374)
  Align reply summaries with message content (#408)
  Add centered thinking pills to agent avatars (#351)
  Keep focus where the user moved it when a menu finishes closing (#355)
  Browse legacy identities without a destination and review text before cloning (#285)
  Show separate identity cards and prevent duplicate imports (#225)
  Polish message and thread spacing, grouping, and typography (#364)
  Remove the Away avatar badge stroke (#395)
  fix(profiles): hide activity on human profiles (#391)
  ...

Signed-off-by: Sol <49aa1f65411fd096d2e2ec144f1e7aa36fdc76d1b907cfdf7be000c66f9d3b8e@buzz.block.builderlab.xyz>

# Conflicts:
#	src/bundled/agents/AgentsPage.test.tsx
#	src/bundled/agents/AgentsPage.tsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants