Commit History
-
Aurelius improvement pass: domain-aware recs, finance/research surfaces, 2D graph Running
murtaza-2007658d200
-
fix: correct Gemini model name (gemini-2.0-flash, not 3.1)
murtaza-2007 +1: Claude Sonnet 4.6gemini-3.1-flash does not exist — Google's naming is 1.5/2.0/2.5. All LLM explain/summary calls were returning reason:"error" because the API 404'd on the model id. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>bc32a44
-
Add optional Gemini AI layer (additive, fallback-first)
murtaza-2007 +1: Claude Fable 5New core/llm.py is the entire LLM footprint: an httpx Gemini client (gemini-3.1-flash by default, GEMINI_MODEL-overridable) whose functions never raise — they return {available/ok, reason, text} so "the LLM said X" and "the LLM is unavailable" are ordinary data. The model only narrates already-computed graph evidence (prompt builders take relate/discover/ exposure/path output), never inventing facts. Fallback machinery (the load-bearing requirement): no key -> reason "no_key" with zero network calls; a soft per-minute budget (GEMINI_RPM) short-circuits before we could cause a 429; an upstream 429/5xx trips a cooldown during which no calls are made; timeouts/errors are swallowed. The LLM is deliberately kept OUT of the search hot loop (would exhaust free-tier quota in one multi-step search). Endpoints (server.py) — all lazy, GET, IP-rate-limited, always 200 with {available, reason}, never 500 for an LLM issue: /api/llm/status, /api/explain/{path,compare,discover,entity}, /api/news/sum…19c6bad
-
Redesign 3D graph: minimal look + reliable auto-framing camera
murtaza-2007 +1: Claude Fable 5The graph read as shabby because the camera never framed it: the library's zoomToFit/getGraphBbox is broken in this page (reported a +/-3-unit bbox for a +/-120-unit layout and moved nothing), so every search ended as a small off-center cluster at the default camera distance. Auto-framing is now computed manually from graphData() positions and driven by a persistent setInterval damper that eases the camera with instant cameraPosition steps - immune to background-tab rAF throttling (which also silently disabled the library's animated moves), glides when visible, snaps when hidden. The camera re-frames on a throttle every engine tick, so it keeps zooming out as the graph grows, re-centers as the layout drifts, and yields the moment the user grabs the controls (Fit view resumes tracking). Two more camera bugs fixed: the stream-driven panToNode could slip past its running-guard when `found` landed inside its 200ms delay, silently disabling auto-framing mid-glide (now 2D-only); and the 2D …bbd0469
-
Make Finance a real relationship explorer; integrate news; add Biology
murtaza-2007 +1: Claude Fable 5Finance product surface: - Compare panel — the headline feature. Two entities -> connection strength, plain-language "why they're connected" (direct/2-hop/shared neighbours/similarity from /api/relate), an overlaid normalized price chart with client-computed correlation, and a hand-off to the pathfinder. Backed by new /api/node (stored features incl. ~120d price series) and /api/exposure (weighted 1-/2-hop event propagation with the strongest chain as evidence). - Per-source example chips under the hero picker so no one faces an empty box; finance-only controls gated by source. News integrated into Finance, not standalone: - News source is now hidden=True (registered + queryable, dropped from the picker). News/Discussion overlay toggles fold coverage onto the focused company via /api/news/entity, with lexicon sentiment tone. - news_intel gains a RedditConnector and HackerNewsConnector (Reddit's public JSON 403s unauthenticated; HN via keyless Algolia is the reliabl…19c84c2 -
Merge branch 'deploy-config-fixes'
murtaza-2007complete aurelius rebuild.dd091ae -
Merge hf/main: drop stale search.py (superseded by core/navigator.py)
murtaza-2007adc4a66 -
Add relationship lenses and kind-based coloring to the 3D explorer
murtaza-2007 +1: Claude Fable 5The one graph view now doubles as the dedicated explorers: a lens dropdown (finance: ownership & holdings / supply chain / competition / correlation & macro / leadership / sector & geography; news: co-mentions / article links) keeps only that family of typed edges visible — path edges always anchor the view — and hides nodes the lens orphans. /api/neighbors now returns each node's kind (company/etf/sector/ executive/country/macro/...) from stored features; expanded nodes are colored by kind in the 3D view (visual clustering) and show it in the hover tooltip. Expanded nodes stay bright after the search cloud dims. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>590ff18 -
Rebuild Aurelius as a multi-source graph intelligence engine
murtaza-2007 +1: Claude Fable 5Engine (core/ + adapters/): source-agnostic GraphNavigator behind the GraphSource protocol; six adapters (Wikipedia/OpenAlex/GitHub live, Finance/News/Biomed from a SQLite graph+vector store with a pgvector-shaped interface); node2vec structural embeddings fused with text; relate() + discover() hidden-connection mining; /api/neighbors with typed edge evidence for progressive expansion. Finance: heterogeneous typed graph (companies, ETFs, sectors, executives, countries, macro indicators) with supply-chain, ownership, competition, holdings and computed correlation edges; date-aligned correlation across trading calendars (the positional tail-alignment bug collapsed macro correlations to ~0). News Intelligence (news_intel/): standalone domain-agnostic subsystem — connector abstraction (NewsAPI/GDELT), deduplicated raw-article store, Fetch->Clean->Extract->Embed->Relate->Update graph->Index pipeline, evolving story clustering, explained ranking, /api/news/* service endpoints, optional sch…75ce203
-
Update search.py
Verified signature**0.05*g(n)**97c472f
-
Update config.py
Verified signature255d1d9 -
Update config.py
murtaza-2007Unverified signature76f1b37 -
Merge pull request #6 from murtaza-2007/deploy-config-fixes
murtaza-2007Unverified signatureRewrite About for first-time readers; fix mobile UI; glow the About b…d137a9d -
Remove em dashes from user-facing text for a more natural tone
murtaza-2007 +1: Claude Sonnet 4.6Swap em dashes for semicolons, commas, or rephrased clauses across the About modal, legend, export header, and WebSocket error message. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>983a902 -
Rewrite About for first-time readers; fix mobile UI; glow the About button
murtaza-2007 +1: Claude Opus 4.8- About modal: rewrite the four "How it works" cards in plain language a reader new to these algorithms can follow (best-first search, embeddings, search-from-both-ends, escaping dead ends). Shorten the comparison panel to two rows. Add a "Where this is going" note framing this as a demo of Aurelius with a deployable tool as the longer-term goal. - About button (hero + topbar): amber tint, border, and glow/pulse so it reads as clickable instead of a static label; slightly larger on phones. - Mobile graph-page topbar: restructure the wrapping control row into a tidy stacked search form (logo + Reset/About row, full-width FROM, centered swap, full-width TO, full-width Find Path); raise collapse max-height so the taller form isn't clipped. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>6cabdc4 -
Merge pull request #5 from murtaza-2007/deploy-config-fixes
murtaza-2007Unverified signatureHarden security before public launch8e80add -
Harden security before public launch
murtaza-2007 +1: Claude Opus 4.8Restrict the public backend's attack surface and add frontend defenses ahead of making the Vercel deployment public. No search behavior changes. Backend (server.py, config.py): - Restrict CORS from "*" to an allowlist of known frontend origins (ALLOWED_ORIGINS, env-overridable); add an explicit Origin check on the WebSocket handshake (CORS middleware does not cover WS). - Add abuse limits: concurrency cap (MAX_CONCURRENT_SEARCHES), per-connection wall-clock timeout (MAX_SEARCH_SECONDS), and input-length cap (MAX_QUERY_LEN). - Stop leaking exception text to clients; log server-side, send generic message. - Disable auto-exposed API docs (/docs, /redoc, /openapi.json). - Add baseline security-header middleware on JSON responses. Frontend (app.js): - Add escHtml() and apply to the three innerHTML title sinks (autocomplete, scores card, modal path) as defense-in-depth XSS hardening. Deployment (vercel.json): - Add CSP scoped to the resources actually loaded (d3/cdnjs, Google Font…d6382b1 -
Merge pull request #4 from murtaza-2007/deploy-config-fixes
murtaza-2007Unverified signatureSwitch frontend to Hugging Face Spaces backend, retire Render67f2692 -
Point frontend at Hugging Face Spaces backend, retire Render
murtaza-2007fb44bb6
-
Merge pull request #3 from murtaza-2007/deploy-config-fixes
murtaza-2007Unverified signatureAdd Dockerfile + README for container deployment (Hugging Face Spaces)e2dc197 -
Add Dockerfile + README for container deployment (Hugging Face Spaces)
murtaza-2007Enables deploying the backend to any always-on container host with more RAM than Render's 512MB free tier. Dockerfile installs CPU-only torch first (avoids the ~2GB CUDA wheels), runs as UID 1000 with a writable HOME so sentence-transformers can cache the model, and binds port 7860. README carries Hugging Face Spaces config in its frontmatter.3396318 -
Merge pull request #2 from murtaza-2007/deploy-config-fixes
murtaza-2007Unverified signatureCap torch thread pool to 1 to reduce memory footprint on Render free …63469cd -
Cap torch thread pool to 1 to reduce memory footprint on Render free tier
murtaza-2007Render's free tier is a single throttled vCPU; torch's default thread pool spawns one thread per logical core it detects, each holding its own memory arena. Capping to 1 avoids wasting RAM on threads with no extra cores to run on, which was contributing to OOM restarts.3ba4732
-
Merge pull request #1 from murtaza-2007/deploy-config-fixes
murtaza-2007Unverified signatureDeploy config fixes3962990 -
Add cold-start loading hint and fix Vercel/Render deploy follow-ups
murtaza-2007Render free-tier cold starts can take well past 10s before /api/health responds, leaving the loading screen silent with no indication anything is happening. Adds a hint that fades in after 10s of polling ("Just a bit longer — the algorithm is waking up.") and clears cleanly once the backend responds.86b7741 -
Point frontend at production backend, add MIT license, expand .gitignore
murtaza-2007Frontend and backend are deployed on separate domains (Vercel + Render), so AC_BACKEND needs to be a fixed URL rather than the dynamic window.location.hostname trick used for local/LAN dev. Also adds an MIT LICENSE file and expands .gitignore to cover Python venvs, editor settings, and OS cruft.32cf0ee -
Initial commit
murtaza-20072bd66df