feat(panels): AI Market Implications — LLM trade signals from live world state (#2146) (#2165)

* fix(intelligence): use camelCase field names for ListMarketImplicationsResponse

* fix(bootstrap): register marketImplications in cache-keys.ts and add hydration consumer

* chore: stage all market-implications feature files for proto freshness check

* feat(market-implications): add LLM routing env vars for market implications stage

* fix(market-implications): move types to services layer to fix boundary violation

* fix: add list-market-implications gateway tier entry

* fix(market-implications): add health.js entries + i18n tooltip key

- api/health.js: add marketImplications to BOOTSTRAP_KEYS
  ('intelligence:market-implications:v1') and SEED_META
  (seed-meta:intelligence:market-implications, maxStaleMin=150 = 2x
  the 75min TTL, matching gold standard)
- en.json: add components.marketImplications.infoTooltip which was
  referenced in MarketImplicationsPanel but missing from locales

* fix(market-implications): wire CMD+K entry and panels.marketImplications i18n key

- commands.ts: add panel:market-implications command with trade/signal
  keywords so the panel appears in CMD+K search
- en.json: add panels.marketImplications used by UnifiedSettings panel
  toggle display and SearchModal label resolution
This commit is contained in:
Elie Habib
2026-03-24 08:01:47 +04:00
committed by GitHub
parent b4e514a4f4
commit a1c3c1d684
22 changed files with 657 additions and 2 deletions

View File

@@ -555,6 +555,32 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
/api/intelligence/v1/list-market-implications:
get:
tags:
- IntelligenceService
summary: ListMarketImplications
description: ListMarketImplications returns AI-generated trade-implication cards from live world state.
operationId: ListMarketImplications
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/ListMarketImplicationsResponse'
"400":
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
default:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
@@ -1615,3 +1641,39 @@ components:
format: double
description: Tone or volume value at this point.
description: GdeltTimelinePoint is a single data point in a tone or volume timeline.
ListMarketImplicationsRequest:
type: object
ListMarketImplicationsResponse:
type: object
properties:
cards:
type: array
items:
$ref: '#/components/schemas/MarketImplicationCard'
degraded:
type: boolean
emptyReason:
type: string
generatedAt:
type: string
MarketImplicationCard:
type: object
properties:
ticker:
type: string
name:
type: string
direction:
type: string
timeframe:
type: string
confidence:
type: string
title:
type: string
narrative:
type: string
riskCaveat:
type: string
driver:
type: string