Skip to content

docs: Connect agent — frontend implementation plan#2066

Open
Tanya-atatakai wants to merge 51 commits into
stagingfrom
feat/connect-agent
Open

docs: Connect agent — frontend implementation plan#2066
Tanya-atatakai wants to merge 51 commits into
stagingfrom
feat/connect-agent

Conversation

@Tanya-atatakai

Copy link
Copy Markdown
Contributor

Summary

Exploration + phased implementation plan for adding the Connect agent to Pearl, produced via /explore-frontend-codebase. Plan only — no product code.

Doc: docs/explorations/connect-agent-plan.md.

What Connect is

  • New agent connect; one instance per chain (Polygon, Base, Gnosis), all grouped under a single Connect sidebar entry.
  • Setup: pick a chain (one-per-chain, occupied chains disabled) → see that chain's funding requirements → Select agent (creates the service) → 3-step intro (placeholders) → fund via transfer/bridge only.
  • No staking: created with staking_program_id:"no_staking" + use_staking:false; staking-select screen skipped.

Key decisions captured

  • Multi-chain identity: relax the shared agent matcher to home_chain ∈ supportedChains so all Connect instances group under one type (the chain-equality check is the sole blocker; a different on-chain name wouldn't avoid it).
  • Service creation on the "Select agent" click (connect-gated; single-chain template clone), bypassing staking-select.
  • Funding methods: on-ramp:false + bridge-onboarding:true → transfer+bridge only.
  • no_staking hazards flagged (useCompleteAgentSetup, useStartService lookup) with fixes located.

Phases (each = one PR)

  1. Everything up to "Select agent" (creation disabled): registration + multi-chain grouping + SelectChain screen.
  2. Enable creation (no_staking + use_staking:false) + skip staking + funding methods + intro.
  3. Running agent: main page with agent-info + agent-wallet sections only (no performance/staking); on run call the local agent server's POST /session, surface errors with a Retry.

Open questions

None. External deps (agent minted + middleware readiness) gate PR2's end-to-end create; PR3 opens with a short main-page exploration.

🤖 Generated with Claude Code

Tanya-atatakai and others added 2 commits July 13, 2026 19:43
Exploration + phased plan for adding the Connect agent (one instance
per chain grouped under one sidebar entry, chain-select setup, no
staking, transfer/bridge funding, on-demand session on run).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… grouping, chain selector)

Phase 1 of the Connect agent: everything up to (but not including) service
creation. The "Select agent" button is rendered but disabled.

Registration
- Add `Connect` to AgentMap and fill it into every exhaustive map
  (AGENT_CONFIG, X402_ENABLED_FLAGS, FEATURES_CONFIG, onboardingStepsMap,
  AGENT_UI_RELEASES, serviceApi union, PearlStore, BACKEND_BOUND_KEYS).
- New abstract ConnectService (no_staking; staking methods are safe stubs).
- New CONNECT_SERVICE_TEMPLATE (Polygon/Base/Gnosis, staking_program_id
  "no_staking"). Hash / release / agent id are clearly-commented PLACEHOLDERs
  pending the external Connect package.
- Placeholder onboarding copy/images and agent icon.

Multi-chain grouping
- Shared matcher `matchesAgentConfig` (+ `isServiceOfAgent` alias): matches
  `home_chain in supportedChains` for multi-chain agents; strict equality for
  single-chain agents (behaviour unchanged).
- `getServiceEvmChainId` resolves the chain per-instance for name generation;
  single-chain agents are unaffected.

Chain selector (on the Select Agent page)
- The operating-chain selector + per-chain funding requirements live inside the
  funding-requirements step of AgentOnboarding (not a separate screen). Chains
  already in use are disabled ("Already added"). The "Select agent" button is
  present but disabled (creation lands in PR2).
- Connect is pinned to the top of the agent list.
- Onboarding right panel: fixed-height card, content on top, slide-nav +
  Select-agent button pinned to the bottom.

Out of scope (PR2/PR3): service creation, no_staking create-path fixes,
funding-method changes, running/main page, /session.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The plan originally described a separate `SelectChain` screen. The implemented
(and reviewed) flow puts the chain selector + funding requirements inside the
funding-requirements step of the existing Select Agent page (AgentOnboarding →
FundingRequirementStep), with the "Select agent" button on that same page.
Update §3, §4, §7, §8, §9 and §11 to reflect this — no separate screen/route.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@atepem atepem 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.

Review: Connect agent — frontend implementation plan

What it is: Docs-only PR adding docs/explorations/connect-agent-plan.md — a phased frontend plan for the new "Connect" agent (one instance per chain across Polygon/Base/Gnosis, no staking, transfer/bridge funding only). No product code.

Accuracy — verified against the branch ✅

Every load-bearing claim was checked against the checkout:

  • The two no_staking hazards are real and the line references are exact: useStartService.ts:63-67 throws when the STAKING_PROGRAMS lookup misses, and useCompleteAgentSetup.ts:96 returns 'invalid_contract' for no_staking.
  • The multi-chain analysis is correct: isServiceOfAgent (frontend/utils/service.ts:187-192) matches servicePublicId + strict home_chain === middlewareHomeChainId, so the chain-equality check is indeed the sole grouping blocker.
  • getServiceConfigIdsOf exists in ServicesProvider.tsx:83; StakedAgentService, AgentMap, X402_ENABLED_FLAGS, BACKEND_BOUND_KEYS, and all named files/hooks exist. The AgentConfig field names (requiresSetup, hasExternalFunds, doesChatUiRequireApiKey, additionalRequirements) all match types/Agent.ts. The "no Select wrapper in @/components/ui" claim is correct, and useInitialFundingRequirements(agentType) currently takes no chain param as the plan implies.

Zero stale references found — unusually trustworthy handoff doc.

Issues worth addressing

  1. Phase-ordering gap (main finding): the useStartService fix is deferred to PR 3, but PR 2 enables creation, setup completion, and funding, and the setup flow ends at Main. Between PR 2 and PR 3, a user can have a funded Connect agent whose start button throws Staking program not found. Either pull the useStartService guard into PR 2, or state explicitly that Connect stays behind isAgentEnabled: false (or staging-only) until PR 3 lands.
  2. Hidden dependency on the multi-instance migration: the ElectronApi.ts row says isInitialFunded becomes a per-service Record<string, boolean> — that's the in-flight migration described in docs/features/multi-instance-agents.md. The plan should say whether Connect PR 1 depends on that migration landing first, does it itself, or works with the boolean meanwhile. As written it silently assumes the migrated shape.
  3. isAgentEnabled missing from the file-change table: it appears only in the §10 checklist. Given finding 1, the config/agents.ts row should state the intended enable/disable value per phase.
  4. Product-risk note, not a blocker: §8/§12 lock in funding amounts "raw — do NOT add safe-creation/deployment gas." If that's a confirmed product decision, fine, but a user funding exactly POL 15 may not cover safe deployment gas — worth one sentence naming who confirmed it.

Style / conventions

  • New docs/explorations/ directory: repo convention (CLAUDE.md) is docs/features/ for feature docs — an explorations dir for pre-implementation plans is a reasonable distinction, but consider adding a line to CLAUDE.md's Key File Locations, and plan to graduate this into docs/features/connect.md once built.
  • Repetition: "the chain selector lives on the Select Agent page, NOT a separate screen" is restated five times (§3, §4×2, §7, §8). One authoritative statement in §8 plus a pointer would read better.

Verdict

Approve with minor changes. The plan is technically accurate end-to-end and the phasing is sound. Fix finding 1 (start-path breakage window between PR 2 and PR 3) before merging — it's the one thing an implementer following the doc literally would ship broken; the rest is polish.

🤖 Generated with Claude Code

Tanya-atatakai and others added 11 commits July 14, 2026 12:10
…t and slide-switch scroll

- Update Connect onboarding copy, images, template, and Service types.
- Pin Connect intro images to 366px (styles.imageHeight per step).
- Fix a transient horizontal scrollbar during slide transitions by clipping
  overflow-x on the onboarding content region.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Builds on Phase 1 (creation was disabled). Enables the Connect create flow
and fixes issues found in manual testing.

Creation
- "Select agent" now creates a single-chain Connect service on the chosen
  chain via useCreateConnectService: clones CONNECT_SERVICE_TEMPLATE with
  home_chain=selected + pruned configurations, staking_program_id "no_staking".
- Services.createService sends use_staking:false only for no_staking (gated;
  other agents unaffected). ConfigurationTemplate.use_staking added.
- useCompleteAgentSetup no longer bounces no_staking agents to SelectStaking.
- Bypasses SelectStaking; routes straight to funding (transfer + bridge).
- ServicesProvider resolves a multi-chain agent's home chain per selected
  instance.

Matcher sweep (fixes "Agent not found" for non-Gnosis Connect instances)
- Relaxed 9 inline strict matchers to matchesAgentConfig: PearlWalletProvider,
  useService.getAgentTypeOf, AgentWalletProvider, AutoRun getAgentFromService,
  ReleaseNotesPage, SetupWelcome, both migrations, useStakingRewardsOf
  (also skips no_staking agents — no staking rewards).

UI
- Chain selector shows the sidebar "You own 1" pill for occupied chains;
  "Select agent" hidden once every supported chain has an instance.
- Funding screen centered; Back button returns no_staking agents to
  AgentOnboarding (not SelectStaking).

Tests: Phase-1 tests updated to new behavior + Phase-2 coverage
(useCreateConnectService, Services use_staking, useStakingRewardsOf skip,
matcher multi-chain resolution, button-hide, back-button). Full suite green.

Known follow-ups: template env vars (SAFE_CONTRACT_ADDRESSES, FUND_REQUIREMENTS),
agentIds=161, dead Select.Option label; CI check_service_templates carve-out
tracked on the Phase-1 PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… id, dead prop

- matchesAgentConfig: compare middleware-chain values so an unknown home_chain
  returns false instead of throwing (asEvmChainId). Matcher is now total.
- CONNECT_SERVICE_TEMPLATE: add SAFE_CONTRACT_ADDRESSES + FUND_REQUIREMENTS env
  vars (COMPUTED); agent_id = 161 (Olas blueprint 161).
- AGENT_CONFIG[Connect].agentIds = [161].
- Drop dead Select.Option label prop in ConnectChainSelect.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat(connect): Connect agent — Phase 1 (registration, grouping, chain selector; creation disabled)
…ion)

Reflect shipped reality (inline chain selector, matcher sweep) and insert a
new PR 3 (Beta tag on Select Agent + sidebar; exclude Connect from AutoRun),
independent of the running-agent phase (now PR 4).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…onnect from auto-run

- Add AgentConfig.isBeta and AgentConfig.isExcludedFromAutoRun, both set on Connect.
- New shared BetaTag ui component, rendered in the SelectAgent list and in
  AgentGroupHeader (covers the sidebar tree and the auto-run popover).
- New getAutoRunExcludedByConfig util merged into the auto-run blocked set:
  Connect instances are never auto-seeded, includeInstance no-ops, and the
  popover "+" button is disabled with reason "Not available in auto-run".
- Tests: Beta tag rendering (SelectAgent, AgentTreeMenu), util unit tests,
  provider-level seeding/include-block coverage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Remove no-op `use_staking` field/body gating (middleware derives it from
  `staking_program_id`) from ConfigurationTemplate + createService, and drop
  the two tests asserting the removed body behavior.
- useCreateConnectService: wrap resolveFundingRoute in its own try/catch
  (fall back to FundYourAgent instead of throwing so a failed funding-route
  lookup can't trigger a duplicate create on retry), and add an occupancy
  guard so an already-occupied chain selects the existing instance instead of
  creating a second one. Covered by new tests.
- connect.ts: set release version v0.1.0-rc1 (service_version +
  agent_release.version), rename repo to `connect`, DRY the per-chain configs
  via a shared COMMON_CONFIG, and point nft/image at the newly pinned Connect
  NFT (bafybeidldvcrd7exlqwutoa5fj7nh6mjrkh7w6tuuwofwdifavvezj6g2e).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nnect-agent-phase2

# Conflicts:
#	docs/explorations/connect-agent-plan.md
feat(connect): Phase 2 — enable service creation (no_staking) + fixes
Connect instances no longer appear in the popover's "Excluded from
auto-run" section as blocked rows — getExcludedInstances takes a
hiddenInstances param and drops them entirely. Selected-instance live
eligibility can no longer overwrite the config block.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n sections)

Phase 4 of the Connect agent: once a Connect service is deployed, launch and
manage its local Claude Code session, and adapt the main page for a no-staking
agent.

- Session launch: `ConnectService.startSession()` POSTs to the local agent
  server (`AGENT_SERVER_URL`/session), never throws — reachable responses vs.
  transport errors are both mapped to a typed `ConnectSessionResult`.
- `useConnectSession`: auto-launches once per run when the local server is
  ready (healthcheck populated), with retry/dismiss and reset-on-stop.
- `ConnectSessionAlert`: surfaces the two failure states (Claude not installed
  → download; launch failed → retry) under AgentInfo.
- Config-driven main page: `hasStaking`/`hasPerformance` on AgentConfig gate the
  Staking/Performance sections and stop `useServiceDeployment` gating
  deployability on staking-details for no_staking agents; `useStartService`
  skips the staking-program lookup for `no_staking`.
- Housekeeping (from review): centralise the local agent server URL as
  `AGENT_SERVER_URL` (Profile iframe + session), add `CLAUDE_DOWNLOAD_URL`,
  inline the connect template funding constants, pin `agent_id` 116.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tanya-atatakai and others added 10 commits July 16, 2026 14:41
feat(connect): [VLOP-98] Beta tag + exclude Connect from auto-run
…A gas

The agent-select funding card under-reported vs the transfer amount: the
middleware doubles the agent-EOA native requirement on first deployment (one-off
ERC8004 registration gas, applied to every agent), but the FE card counted it
once. Mirror that doubling so the card matches the transfer.

- `getNativeInitialGasRequirement`: agent-EOA native × 2 (with a note that the
  middleware doubling is planned to become additive), and drop the now-redundant
  ~0 `AGENT_DEPLOYMENT_GAS_REQUIREMENT_WEI` placeholder.
- Connect template: retune agent-EOA gas to a 50-tx + 2× volatility model —
  Gnosis 2→0.05, Base 0.0002→0.0005, Polygon 30→8; and set cost_of_bond 2→1.
- Update `useInitialFundingRequirements` tests to the doubled totals.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…aunch

- Classify on HTTP status + `launched`, not `harness` (which the server always
  sends, so it can't discriminate): unreachable or non-2xx → retryable
  `launch-failed`; a well-formed `200 {launched:false}` → `not-installed`. Read
  the server message from `error` (200) or `detail` (4xx/5xx) and surface it in
  the alert (no longer dead weight).
- Launch via a React Query keyed by `service_config_id` (staleTime/gcTime
  Infinity) so it POSTs once per run and is not relaunched when the alert
  unmounts/remounts across navigation; the cache is cleared on stop so the next
  run launches again. No new provider.
- Gate the alert on `isRunning` so a result resolving right after the agent
  stops can't surface a stale alert.
- Update types + tests to the new result shape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nnect-agent-phase-running

# Conflicts:
#	frontend/config/agents.ts
…s, onboarding copy

- Show a blue info alert under the Connect agent: idle nudges the user to
  start the agent to initiate a Claude Code session; running points at the
  agent profile for new sessions. Sized to match sibling agent alerts.
- Surface config-excluded (Connect) instances in the auto-run popover's
  'Excluded from auto-run' section as permanently blocked rows with a
  hover/click tooltip explaining Connect is not autonomous.
- Refresh the Connect onboarding intro copy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ity strip

When the Connect agent is running but its Claude Code session failed to
launch, the AgentActivity strip shows 'Your agent is running. Start a new
session from the agent profile.' (info styling) instead of the default
activity content. The in-card running info alert stays hidden whenever a
launch error exists so the notice is never duplicated after dismissing
the error.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…3j85)

Fixes the yarn-audit CI gate: adm-zip <0.6.0 is flagged for a crafted-ZIP
4GB memory allocation DoS. Pearl only uses the creation-side API
(addLocalFile/writeZip in electron/features/logs.js), which is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Base is no longer supported by the Connect agent, and the agent's
`/funds-status` had no thresholds to compare balances against — the env var
was declared COMPUTED with an empty value, but nothing in the middleware
computes it (only SAFE_CONTRACT_ADDRESSES and STAKING_CHAIN are).

- Remove the Base `configurations` block, BASE_LEDGER_RPC and the Base
  entries in `supportedChains` / `additionalRequirements` / the Connect chain
  selector.
- Declare FUND_REQUIREMENTS as FIXED with the product thresholds — POL 15/3,
  USDC 5/1, xDAI 5/1 — i.e. 1/5 of the initial requirement, with the agent-EOA
  gas budget kept at the same ratio. Shape is `{chain: {agent|safe: {asset:
  threshold}}}` (roles, not addresses), per `pearl_connect/config.py`.
- Narrow the map to the instance's own chain in `useCreateConnectService`: the
  agent package ships a default RPC for every chain, so an unnarrowed map makes
  the agent report a deficit for an EOA on a chain it does not operate on.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The renderer runs on http://localhost:3000, so `POST 127.0.0.1:8716/session`
is cross-origin. The agent's server registers no CORS middleware on purpose —
its auth model relies on cross-origin requests failing (see
`pearl_connect/server/auth.py`) — so the call never returned a readable
response, and the JSON content-type header on a body-less POST forced a
preflight that 405s. `startSession` therefore always collapsed to
`{reachable:false}` and the UI showed the install/retry state.

Issue the request from Electron main instead: no origin, no preflight, and
the agent's no-CORS posture stays intact.

- `connect-start-session` IPC handler returning the normalized
  `{reachable, ok, launched, error}` result; AGENT_SERVER_URL moved to
  electron/constants.
- Expose `electronAPI.connect.startSession`; wire it through
  ElectronApiProvider and use it in `useConnectSession` (absent bridge →
  unreachable → retryable launch-failed).
- Drop `ConnectService.startSession` and its suite; the HTTP mapping now
  lives in main.js.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ning

feat(connect): PR4 — running agent (Claude Code session)
The audit gate fails on every branch: advisory 1123686 covers adm-zip <0.6.0,
where a crafted ZIP triggers a 4GB memory allocation. 0.6.0 is the first fixed
release.

Our only consumer is `electron/features/logs.js`, which writes support-log
archives (`addLocalFile` / `writeZip`) — unchanged in 0.6.0, engines `node >=14`.
The remaining `adm-zip@^0.4.16` in the lockfile is Hardhat's, dev-only, and
outside the production audit scope.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tanya-atatakai and others added 24 commits July 21, 2026 10:09
feat: [VLOP-101] Connect session alerts, auto-run exclusion rows, onboarding copy
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fixes HIGH advisory (quadratic CPU via YAML merge-key chains) flagged by
the audit gate in both the root and frontend trees.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Points the Connect service template at the v0.1.0-rc3 release (MCP /mcp/
handshake fix + token-paid mechs in restricted mode). Updates service_version
and agent_release.repository.version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… displays

- IntroductionStep: replace min-height (which stretched images whose
  natural height fell short, e.g. Connect's 920x732 assets in the About
  Agent modal) with a fixed height + object-fit: cover.
- next.config: serve images unoptimized — all assets are local Electron
  files, and the Next 15 dev optimizer 400s on widths outside its
  allow-list (e.g. w=192 for an 88px icon at 2x), blanking agent icons
  and the Pearl logo.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…strip

Per design, 'Your agent is running. Start a new session from the agent
profile.' renders in the AgentActivity strip whenever the Connect agent
is running — not as an in-card alert. ConnectSessionAlert keeps only the
idle nudge and the launch-error alerts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
fix: [VLOP-104] intro image stretching + blank icons on 2x displays
Signed-off-by: OjusWiZard <ojuswimail@gmail.com>
Connect runs on Polygon and Gnosis, but its erc20Tokens config was a flat
[USDC] list. Since the Gnosis token config also defines USDC, the agent
wallet showed a USDC chip on Gnosis (at 0 balance) even though Connect uses
native xDAI there.

Make erc20Tokens accept a per-chain map for multi-chain agents and resolve
it by home chain in useAvailableAgentAssets. Single-chain agents keep flat
arrays (backward compatible). Connect -> { Polygon: [USDC] }.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The funding step's auto-advance gated the "setup complete" transition on
isTransferComplete, which only recognised SAFE_CREATED_TRANSFER_COMPLETED and
SAFE_EXISTS_ALREADY_FUNDED. When the master safe already exists on the chain
(e.g. the user already runs another agent there) and the funding sweep just
completes, the backend returns SAFE_EXISTS_TRANSFER_COMPLETED, which was
missing from both the SafeCreationStatus type and the check.

Result: the finishing-setup spinner closed, no completion or failure modal
fired, and the user was stranded on the funding page (chain-independent),
having to go back and click "Complete agent setup" manually.

Add SAFE_EXISTS_TRANSFER_COMPLETED to the type and treat it as complete.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The agent introduction slides forced eager loading via `priority`, so the
large Connect PNGs were preloaded up front, slowing the "Select agent" step.
Switch to loading="lazy" and compress the Connect intro assets.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Connect session alerts were the only alerts using `fullWidth`, whose
modifier drops the border radius and side borders, so the banner looked
detached inside the padded card. Rebuild them like the existing agent
alerts: the idle info nudge mirrors AgentRunningAlert (centered info alert),
and the launch-error states mirror AgentLowBalanceAlert (title, body and a
small button inside the message).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The intro slides used a fixed height + objectFit:cover, so when the box was
narrower than the image's aspect ratio (e.g. the 460px About Agent modal) the
sides were cropped — clipping the edge labels like "Your AI agent".

Scale to the container width at the image's natural aspect ratio (height:auto)
so the whole artwork always shows; imageHeight now caps the height on wide
containers and only letterboxes if that cap engages.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The start-agent session nudge and the "another agent is running" alert are
rendered by independent components, so both showed at once. Suppress the
Connect start-info nudge while another agent is running, so only the
running-agent alert shows; when nothing runs, only the start-info nudge shows.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The low-balance alert always said funds are needed to "meet staking
requirements", which is wrong for non-staking agents (e.g. Connect). Append
that clause only when the agent config has hasStaking.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: OjusWiZard <ojuswimail@gmail.com>
Resolves GHSA-m99w-x7hq-7vfj, GHSA-89xv-2m56-2m9x, GHSA-p9j2-gv94-2wf4
flagged by yarn audit in both trees.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add pUSD to Connect's per-chain erc20Tokens so the Agent Wallet lists it
on Polygon instances. Gnosis stays ERC20-free (native xDAI only). pUSD
already has a Polygon token config, and BalanceProvider reads balances
for every token in TOKEN_CONFIG, so amounts populate with no backend
change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@atepem
atepem force-pushed the feat/connect-agent branch from f447ba5 to 293ab9f Compare July 24, 2026 09:58
atepem and others added 2 commits July 24, 2026 11:51
… gate)

postcss <=8.5.11 (GHSA-6g55-p6wh-862q, advisory 1124252 — arbitrary file
read via attacker-controlled sourceMappingURL in CSS comments) was
failing the "yarn audit (both trees)" CI gate via next>postcss. Both
trees already pinned postcss to 8.5.10 via resolutions; bumped to
8.5.22 (fix landed in 8.5.12). audit:prod now green on both trees.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat: [VLOP-104] QA bundle — alert priority, low-balance copy, pUSD in agent wallet
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.

3 participants