Skip to content

feat(ai-controllers): add fetchFrontPageItem to fetch a market overview front page by id#9394

Merged
joaosantos15 merged 2 commits into
mainfrom
feat/ai-controllers-front-page-item
Jul 7, 2026
Merged

feat(ai-controllers): add fetchFrontPageItem to fetch a market overview front page by id#9394
joaosantos15 merged 2 commits into
mainfrom
feat/ai-controllers-front-page-item

Conversation

@joaosantos15

@joaosantos15 joaosantos15 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Explanation

The What's Happening / market overview feature (AiDigestController.fetchMarketOverview()) only ever returns the latest items from GET /market-overview. Older items drop out of that report, so there is currently no way for a client to render a specific older item.

The digest API added a new endpoint:

GET /market-overview/front-page/:id      # :id is a UUID

It returns a single "front page" row whose item shares the exact same schema as an individual market overview item (a trend entry), plus call-to-action copy. This PR adds first-class support for it in @metamask/ai-controllers.

References

  • Consumed by an upcoming metamask-mobile deep-link feature that renders an older ("outdated") What's Happening item in the carousel.

Changelog

@metamask/ai-controllers

  • ADDED: AiDigestController.fetchFrontPageItem(id) and AiDigestService.fetchFrontPageItem(id), which fetch a single market overview front page by id from GET /market-overview/front-page/:id, exposed via the AiDigestController:fetchFrontPageItem messenger action.
  • ADDED: MarketOverviewFrontPage and MarketOverviewItem types.

Details

  • AiDigestService.fetchFrontPageItem mirrors fetchMarketOverview: it validates the response with superstruct (reusing MarketOverviewTrendStruct for item), normalizes missing caip19 to [], returns null on 404, and throws on other non-OK responses or an invalid schema.
  • AiDigestController.fetchFrontPageItem is a thin pass-through (no caching — a single item by id does not need the report cache) that throws on an empty id.
  • The messenger action type file was regenerated via messenger-action-types:generate.

Checklist

  • Tests added/updated (100% coverage for the package)
  • Changelog updated
  • yarn lint, build, and yarn validate:changelog pass

Note

Low Risk
Additive read-only API client and controller method following existing fetchMarketOverview patterns; no auth, persistence, or caching behavior changes beyond new exports.

Overview
Adds support for loading a single What's Happening / market overview front page by UUID when it is no longer in the latest fetchMarketOverview report (e.g. deep links).

AiDigestService.fetchFrontPageItem(id) calls GET /market-overview/front-page/:id (URL-encoded id), validates with superstruct (reusing the market-overview trend schema for item), normalizes missing caip19 on related assets to [], returns null on 404, and throws on other errors or invalid payloads. AiDigestController.fetchFrontPageItem delegates to the service with no controller cache, rejects empty ids, and is exposed as AiDigestController:fetchFrontPageItem.

New public types MarketOverviewFrontPage and MarketOverviewItem are exported; DigestService and package changelog are updated. Market overview normalization is refactored to share normalizeItemRelatedAssets between report and front-page responses.

Reviewed by Cursor Bugbot for commit 8980fa5. Bugbot is set up for automated code reviews on this repo. Configure here.

…ew front page by id

Adds `AiDigestController.fetchFrontPageItem(id)` and the underlying
`AiDigestService.fetchFrontPageItem`, which fetch a single market overview
"front page" by id from `GET /market-overview/front-page/:id`. The endpoint
returns one item sharing the same schema as an individual market overview
item, so clients can render an older item that has dropped out of the latest
`/market-overview` report.

- Expose the method via the `AiDigestController:fetchFrontPageItem` messenger
  action.
- Add `MarketOverviewFrontPage` and `MarketOverviewItem` types.
- Validate and normalize the response (missing `caip19` -> `[]`) with
  superstruct, mirroring `fetchMarketOverview`.
@joaosantos15 joaosantos15 requested review from a team as code owners July 6, 2026 13:41
@joaosantos15

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@7.5.3-preview-8980fa5
@metamask-previews/accounts-controller@39.0.4-preview-8980fa5
@metamask-previews/address-book-controller@7.1.2-preview-8980fa5
@metamask-previews/ai-controllers@0.7.0-preview-8980fa5
@metamask-previews/analytics-controller@1.2.1-preview-8980fa5
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-8980fa5
@metamask-previews/announcement-controller@8.1.0-preview-8980fa5
@metamask-previews/app-metadata-controller@2.0.1-preview-8980fa5
@metamask-previews/approval-controller@9.0.2-preview-8980fa5
@metamask-previews/assets-controller@10.0.1-preview-8980fa5
@metamask-previews/assets-controllers@109.3.0-preview-8980fa5
@metamask-previews/authenticated-user-storage@3.0.0-preview-8980fa5
@metamask-previews/base-controller@9.1.0-preview-8980fa5
@metamask-previews/base-data-service@0.1.3-preview-8980fa5
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-8980fa5
@metamask-previews/bridge-controller@77.3.2-preview-8980fa5
@metamask-previews/bridge-status-controller@74.0.2-preview-8980fa5
@metamask-previews/build-utils@3.0.4-preview-8980fa5
@metamask-previews/chain-agnostic-permission@1.6.2-preview-8980fa5
@metamask-previews/chomp-api-service@3.1.0-preview-8980fa5
@metamask-previews/claims-controller@0.5.3-preview-8980fa5
@metamask-previews/client-controller@1.0.1-preview-8980fa5
@metamask-previews/client-utils@0.0.0-preview-8980fa5
@metamask-previews/compliance-controller@2.1.0-preview-8980fa5
@metamask-previews/composable-controller@12.0.1-preview-8980fa5
@metamask-previews/config-registry-controller@0.4.1-preview-8980fa5
@metamask-previews/connectivity-controller@0.2.0-preview-8980fa5
@metamask-previews/controller-utils@12.3.0-preview-8980fa5
@metamask-previews/core-backend@6.5.0-preview-8980fa5
@metamask-previews/delegation-controller@3.0.2-preview-8980fa5
@metamask-previews/earn-controller@12.2.2-preview-8980fa5
@metamask-previews/eip-5792-middleware@3.0.4-preview-8980fa5
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-8980fa5
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-8980fa5
@metamask-previews/ens-controller@19.1.5-preview-8980fa5
@metamask-previews/eth-block-tracker@15.0.1-preview-8980fa5
@metamask-previews/eth-json-rpc-middleware@23.1.3-preview-8980fa5
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-8980fa5
@metamask-previews/foundryup@1.0.1-preview-8980fa5
@metamask-previews/gas-fee-controller@26.2.4-preview-8980fa5
@metamask-previews/gator-permissions-controller@4.2.2-preview-8980fa5
@metamask-previews/geolocation-controller@0.1.3-preview-8980fa5
@metamask-previews/java-tron-up@1.0.0-preview-8980fa5
@metamask-previews/json-rpc-engine@10.5.0-preview-8980fa5
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-8980fa5
@metamask-previews/keyring-controller@27.1.0-preview-8980fa5
@metamask-previews/local-node-utils@1.0.0-preview-8980fa5
@metamask-previews/logging-controller@8.0.2-preview-8980fa5
@metamask-previews/message-manager@14.1.2-preview-8980fa5
@metamask-previews/messenger@2.0.0-preview-8980fa5
@metamask-previews/messenger-cli@0.2.0-preview-8980fa5
@metamask-previews/money-account-balance-service@2.1.2-preview-8980fa5
@metamask-previews/money-account-controller@0.3.3-preview-8980fa5
@metamask-previews/money-account-upgrade-controller@2.2.1-preview-8980fa5
@metamask-previews/multichain-account-service@11.1.0-preview-8980fa5
@metamask-previews/multichain-api-middleware@4.0.0-preview-8980fa5
@metamask-previews/multichain-network-controller@3.2.1-preview-8980fa5
@metamask-previews/multichain-transactions-controller@7.1.1-preview-8980fa5
@metamask-previews/name-controller@9.1.2-preview-8980fa5
@metamask-previews/network-controller@34.0.0-preview-8980fa5
@metamask-previews/network-enablement-controller@5.4.1-preview-8980fa5
@metamask-previews/notification-services-controller@24.3.0-preview-8980fa5
@metamask-previews/passkey-controller@2.0.1-preview-8980fa5
@metamask-previews/permission-controller@13.1.1-preview-8980fa5
@metamask-previews/permission-log-controller@5.1.0-preview-8980fa5
@metamask-previews/perps-controller@9.2.0-preview-8980fa5
@metamask-previews/phishing-controller@17.2.0-preview-8980fa5
@metamask-previews/platform-api-docs@0.0.0-preview-8980fa5
@metamask-previews/polling-controller@16.0.8-preview-8980fa5
@metamask-previews/preferences-controller@23.1.0-preview-8980fa5
@metamask-previews/profile-metrics-controller@4.0.1-preview-8980fa5
@metamask-previews/profile-sync-controller@28.2.0-preview-8980fa5
@metamask-previews/ramps-controller@15.0.0-preview-8980fa5
@metamask-previews/rate-limit-controller@7.0.1-preview-8980fa5
@metamask-previews/react-data-query@0.2.1-preview-8980fa5
@metamask-previews/remote-feature-flag-controller@4.2.2-preview-8980fa5
@metamask-previews/sample-controllers@5.0.3-preview-8980fa5
@metamask-previews/seedless-onboarding-controller@10.0.3-preview-8980fa5
@metamask-previews/selected-network-controller@26.1.5-preview-8980fa5
@metamask-previews/shield-controller@5.1.2-preview-8980fa5
@metamask-previews/signature-controller@39.2.7-preview-8980fa5
@metamask-previews/smart-transactions-controller@24.2.4-preview-8980fa5
@metamask-previews/snap-account-service@1.0.0-preview-8980fa5
@metamask-previews/social-controllers@2.3.1-preview-8980fa5
@metamask-previews/solana-test-validator-up@1.0.0-preview-8980fa5
@metamask-previews/stellar-quickstart-up@0.0.0-preview-8980fa5
@metamask-previews/storage-service@1.0.2-preview-8980fa5
@metamask-previews/subscription-controller@6.2.0-preview-8980fa5
@metamask-previews/transaction-controller@68.2.2-preview-8980fa5
@metamask-previews/transaction-pay-controller@23.17.4-preview-8980fa5
@metamask-previews/user-operation-controller@41.2.6-preview-8980fa5
@metamask-previews/wallet@6.0.0-preview-8980fa5
@metamask-previews/wallet-cli@0.0.0-preview-8980fa5

@joaosantos15 joaosantos15 added this pull request to the merge queue Jul 7, 2026
Merged via the queue into main with commit 5b66616 Jul 7, 2026
413 checks passed
@joaosantos15 joaosantos15 deleted the feat/ai-controllers-front-page-item branch July 7, 2026 12:44
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.

2 participants