Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
8c79030
feat: add AI Research Tools page under Learn menu
nesanders May 29, 2026
4d27dfd
feat: add parallel embedding backfill script with exponential backoff
nesanders May 30, 2026
91fbbd2
feat: add Dockerfile and Next.js proxy rewrite for MCP server Cloud R…
nesanders May 31, 2026
5c36346
feat: add per-token rate limiting and Cloud Run deployment for dev
nesanders May 31, 2026
1a3f9e8
feat: implement Option B proxy — Next.js API route forwards to privat…
nesanders May 31, 2026
0e5a55a
feat: implement B1 — Firebase Function proxy for MCP server
nesanders May 31, 2026
30d8d4f
fix: set MCP_SERVER_URL env var for mcpProxy function on dev
nesanders May 31, 2026
b027b17
fix: resolve full proxy chain for Firebase Function → Cloud Run MCP. …
nesanders Jun 1, 2026
bbce16f
chore: remove debug logging from mcpProxy function
nesanders Jun 1, 2026
9340796
docs: polish AI Research Tools user guide
nesanders Jun 1, 2026
8aa78a7
chore: update lockfiles after google-auth-library install
nesanders Jun 1, 2026
4f45cec
chore: ignore .gcloudignore
nesanders Jun 1, 2026
3704e9e
style: apply Prettier formatting
nesanders Jun 2, 2026
c5a753a
chore: gitignore CLAUDE.md (local dev notes)
nesanders Jun 2, 2026
5c5a5d3
chore: merge upstream/main, resolve functions/yarn.lock conflict
nesanders Jun 2, 2026
18682b0
docs: update implementation plan with current architecture and auth f…
nesanders Jun 3, 2026
c32d74c
style: apply Prettier formatting to implementation_plan.md
nesanders Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -92,3 +92,5 @@ cert.txt
# local MCP server config (contains auth tokens)
.mcp.json
mcp-server/create-agent-key.ts
.gcloudignore
CLAUDE.md
3 changes: 3 additions & 0 deletions components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
NavbarLinkBallotQuestions,
DESKTOP_NAV_ITEM_CLASS,
NavbarLinkAI,
NavbarLinkAiTools,
NavbarLinkBills,
NavbarLinkHearings,
NavbarLinkEditProfile,
Expand Down Expand Up @@ -92,6 +93,7 @@ const MobileNav: React.FC<React.PropsWithChildren<unknown>> = () => {
<NavbarLinkEffective handleClick={closeNav} />
<NavbarLinkProcess handleClick={closeNav} />
<NavbarLinkWhyUse handleClick={closeNav} />
<NavbarLinkAiTools handleClick={closeNav} />
</NavDropdown>
</Nav>
)
Expand Down Expand Up @@ -270,6 +272,7 @@ const DesktopNav: React.FC<React.PropsWithChildren<unknown>> = () => {
<NavbarLinkEffective />
<NavbarLinkProcess />
<NavbarLinkWhyUse />
<NavbarLinkAiTools />
</Dropdown.Menu>
</Dropdown>
</div>
Expand Down
20 changes: 20 additions & 0 deletions components/NavbarComponents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,26 @@ export const Avatar = () => {
)
}

export const NavbarLinkAiTools: React.FC<
React.PropsWithChildren<{
handleClick?: any
other?: any
}>
> = ({ handleClick, other }) => {
const isMobile = useMediaQuery("(max-width: 768px)")
const { t } = useTranslation(["common", "auth"])
return (
<NavbarDropdownLink
className={isMobile ? "navLink-primary" : ""}
href="/learn/ai-tools"
handleClick={handleClick}
other={other}
>
{t("navigation.aiTools")}
</NavbarDropdownLink>
)
}

export const NavbarLinkAI: React.FC<
React.PropsWithChildren<{
handleClick?: any
Expand Down
21 changes: 21 additions & 0 deletions components/about/MapleAI/MapleAI.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { useTranslation } from "next-i18next"
import { Container, Row, Col } from "../../bootstrap"
import { Internal } from "../../links"
import {
MemberItem,
Divider,
Expand Down Expand Up @@ -184,6 +185,26 @@ const MapleAI = () => {
</SectionContainer>
</Col>
</Row>
<Row>
<Col className="py-3">
<SectionContainer>
<SectionTitle className="p-2">
Use AI to research MAPLE data
</SectionTitle>
<DescrContainer className="py-3 px-4">
You can connect AI chat tools like Claude directly to MAPLE's
database of bills, testimony, and ballot questions. Ask questions
in plain English and get real-time answers drawn from the full
legislative record.
</DescrContainer>
<DescrContainer className="pb-3 px-4">
<Internal href="/learn/ai-tools">
Learn how to set up AI research tools with your MAPLE account →
</Internal>
</DescrContainer>
</SectionContainer>
</Col>
</Row>
</Container>
)
}
Expand Down
Loading
Loading