diff --git a/.claude/settings.local.json b/.claude/settings.local.json deleted file mode 100644 index ac9d961b6..000000000 --- a/.claude/settings.local.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "permissions": { - "allow": [ - "Bash(python:*)", - "Bash(python3:*)", - "Bash(grep:*)", - "Bash(find:*)", - "Bash(rg:*)", - "Bash(git add:*)", - "Bash(git pull:*)", - "Bash(git push:*)", - "Bash(git submodule:*)", - "Bash(git commit:*)", - "Bash(git fetch:*)", - "Bash(git merge:*)", - "Bash(git remote:*)", - "Bash(git status:*)", - "Bash(git log:*)", - "Bash(echo:*)", - "Bash(cd:*)", - "Bash(ls:*)", - "Bash(rm:*)", - "Bash(curl:*)", - "Bash(gh:*)", - "Bash(./git.sh:*)", - "Bash(yarn build)", - "Bash(git rm:*)", - "Bash(git checkout:*)", - "Bash(awk:*)", - "Bash(node:*)", - "Bash(lsof:*)", - "Bash(xargs kill:*)", - "Bash(cat:*)", - "WebSearch", - "Bash(cargo check:*)", - "Bash(cargo build:*)", - "Bash(claude:*)", - "Bash(npm update:*)", - "Bash(npm audit:*)", - "Bash(npm install:*)", - "Bash(npm run build:*)", - "WebFetch(domain:raw.githubusercontent.com)", - "WebFetch(domain:www.ars.usda.gov)", - "Bash(for dir in cv/*/)", - "Bash(do [ -f \"$dir/index.html\" ])", - "Bash(done)", - "Bash(while read dir)", - "Bash(do [ -d \"cv/$dir\" ]:*)", - "Bash([ -f \"cv/$dir/detailed.json\" ])", - "Bash([ -d \"cv/$dir\" ])", - "Bash(git config:*)", - "WebFetch(domain:en.wikipedia.org)" - ], - "deny": [ - "Read(../**)" - ] - } -} diff --git a/.github/workflows/vector_db_sync.yml b/.github/workflows/vector_db_sync.yml index 669fb6b87..97b297213 100644 --- a/.github/workflows/vector_db_sync.yml +++ b/.github/workflows/vector_db_sync.yml @@ -34,7 +34,8 @@ jobs: env: PINECONE_API_KEY: ${{ secrets.PINECONE_API_KEY }} VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }} - run: python chat/ingestion/vector_db_sync.py --skip-on-missing-keys + # community-forecasting contains heavy assets that we do not want to index in this webroot workflow. + run: python chat/ingestion/vector_db_sync.py --skip-on-missing-keys --skip-paths community-forecasting - name: Error summary if: always() diff --git a/.gitignore b/.gitignore index a2f8b0c2f..d090e11e5 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ env/* .env.* !.env.example *.env +env # Logs *.log @@ -25,6 +26,7 @@ pids *.seed *.pid.lock __pycache__ +.~lock.*# # Coverage reports are used for local dev and test by tools like: # Jest (JavaScript testing framework), Istanbul/nyc (JavaScript/Node.js) and @@ -93,27 +95,34 @@ community-data community-timelines community-zipcodes contributors +core +core10 coreutilities cv data-commons -data-pipeline data-pipeline-garage *nuclear display explore +host inspire membersense modelearth.github.io +net +net10 nisar +outtakes panels photos products-data products-big-files-to-delete +project reality.streamlit* recycling -requests resources +seasons setup +space storm swarmui trade-data @@ -121,5 +130,7 @@ topojson useeio useeio-json useeio.js +webhook +workflow wiki zip \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index 37405874d..8f8b1e9d1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,69 +1,92 @@ -[submodule "docker"] - path = docker - url = https://github.com/modelearth/docker -[submodule "localsite"] - path = localsite - url = https://github.com/ModelEarth/localsite -[submodule "team"] - path = team - url = https://github.com/ModelEarth/team -[submodule "feed"] - path = feed - url = https://github.com/modelearth/feed -[submodule "swiper"] - path = swiper - url = https://github.com/modelearth/swiper -[submodule "home"] - path = home - url = https://github.com/ModelEarth/home -[submodule "cloud"] - path = cloud - url = https://github.com/modelearth/cloud +[submodule "airports"] + path = airports + url = https://github.com/modelearth/airports +[submodule "better-auth"] + path = better-auth + url = https://github.com/modelearth/better-auth [submodule "chat"] path = chat url = https://github.com/modelearth/chat +[submodule "cloud"] + path = cloud + url = https://github.com/modelearth/cloud +[submodule "cms"] + path = cms + url = https://github.com/ModelEarth/cms + upstream = https://github.com/sveltia/sveltia-cms.git + upstream-policy = merge-if-clean [submodule "codechat"] path = codechat url = https://github.com/modelearth/codechat +[submodule "community-forecasting"] + path = community-forecasting + url = https://github.com/modelearth/community-forecasting [submodule "comparison"] path = comparison url = https://github.com/modelearth/comparison +[submodule "data-pipeline"] + path = data-pipeline + url = https://github.com/ModelEarth/data-pipeline.git [submodule "desktop"] path = desktop url = https://github.com/ModelEarth/desktop.git -[submodule "grid"] - path = grid - url = https://github.com/modelearth/grid -[submodule "realitystream"] - path = realitystream - url = https://github.com/modelearth/realitystream -[submodule "streamlit"] - path = streamlit - url = https://github.com/modelearth/streamlit -[submodule "products"] - path = products - url = https://github.com/modelearth/products -[submodule "projects"] - path = projects - url = https://github.com/modelearth/projects +[submodule "docker"] + path = docker + url = https://github.com/modelearth/docker +[submodule "engage"] + path = engage + url = https://github.com/modelearth/engage [submodule "exiobase"] path = exiobase url = https://github.com/modelearth/exiobase -[submodule "trade"] - path = trade - url = https://github.com/modelearth/trade +[submodule "feed"] + path = feed + url = https://github.com/modelearth/feed +[submodule "grid"] + path = grid + url = https://github.com/modelearth/grid +[submodule "home"] + path = home + url = https://github.com/ModelEarth/home [submodule "io"] path = io url = https://github.com/modelearth/io +[submodule "localsite"] + path = localsite + url = https://github.com/ModelEarth/localsite +[submodule "montage"] + path = montage + url = https://github.com/ModelEarth/montage.git +[submodule "products"] + path = products + url = https://github.com/modelearth/products [submodule "profile"] path = profile url = https://github.com/modelearth/profile +[submodule "projects"] + path = projects + url = https://github.com/modelearth/projects +[submodule "realitystream"] + path = realitystream + url = https://github.com/modelearth/realitystream [submodule "reports"] path = reports url = https://github.com/modelearth/reports -[submodule "community-forecasting"] - path = community-forecasting - url = https://github.com/modelearth/community-forecasting -[submodule "better-auth"] - path = better-auth - url = https://github.com/modelearth/better-auth +[submodule "requests"] + path = requests + url = https://github.com/modelearth/requests +[submodule "sanity"] + path = sanity + url = https://github.com/ModelEarth/sanity.git +[submodule "streamlit"] + path = streamlit + url = https://github.com/modelearth/streamlit +[submodule "swiper"] + path = swiper + url = https://github.com/modelearth/swiper +[submodule "team"] + path = team + url = https://github.com/ModelEarth/team +[submodule "trade"] + path = trade + url = https://github.com/modelearth/trade diff --git a/.siterepos b/.siterepos index 5050bd742..2173be305 100644 --- a/.siterepos +++ b/.siterepos @@ -1,12 +1,18 @@ +[siterepo "project"] + path = project + url = https://github.com/modelearth/project [siterepo "community"] path = community url = https://github.com/modelearth/community -[siterepo "data-pipeline"] - path = data-pipeline - url = https://github.com/modelearth/data-pipeline -[siterepo "trade-data"] - path = trade-data - url = https://github.com/modelearth/trade-data +[siterepo "cv"] + path = cv + url = https://github.com/modelearth/cv [siterepo "nisar"] path = nisar - url = https://github.com/modelearth/nisar \ No newline at end of file + url = https://github.com/modelearth/nisar +[siterepo "space"] + path = space + url = https://github.com/modelearth/space +[siterepo "workflow"] + path = workflow + url = https://github.com/modelearth/workflow \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index e1abd2de9..a83114428 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,14 +1,15 @@ # AGENTS.md -This is the equivalent to `CLAUDE.md`. +This `AGENTS.md` is the equivalent to `CLAUDE.md`. -Use a modern, clean response design that has rounded corners on boarderless panels. +Use a modern, clean responsive design that has rounded corners on boarderless panels. Each new panel should use the "Panel Menu Toggle System" from localsite/js/localsite.js to place a cirlce icon in its upper right with options for Expand, Close, etc. Include .dark mode css. Set responsive layouts based on parent div widths rather than browser width. When possible, reuse common css from localsite/css/base.css Primary guidance files: - `/localsite/AGENTS.md` - `/team/AGENTS.md` +- `/host/net/NET.md` Submodule overview: - `codechat/README.md` @@ -24,20 +25,32 @@ Key standards (from linked AGENTS files): - "push team" → push only team submodule changes - "push" or "push all" → push webroot + all submodules via `./git.sh push` -Claude Code sessions: -- Session history: `~/.claude/history.jsonl` (JSONL format with sessionId, timestamp, display, project) -- Use Python or `jq` to parse efficiently; avoid multiple `awk` attempts on macOS +CLI assistant sessions (Claude, Codex, etc): +- Use the session store for the active CLI tool. Do not assume Claude by default. +- Claude session history: `~/.claude/history.jsonl` (JSONL format with sessionId, timestamp, display, project) +- Codex session history: `~/.codex/history.jsonl` (JSONL format with session_id, ts, text) +- For future CLIs, detect and use their native session/history location and restore command. +- Use Python or `jq` to parse efficiently; avoid multiple `awk` attempts on macOS. Start commands: - `start server` — starts Python HTTP server and Python backend (not Flask) (`desktop/install/quickstart.sh`) -- `start rust` — Rust API server (from `team` repo) +- `start rust` — Team Repo API (Actix Rust) (from `team` repo, port 8081) +- `start net` — shared .NET host using `host/net/net.sh` and `host/net/NET.md` guidance - `start flask` — starts both `cloud` and `pipeline` - `start cloud` — Flask for `cloud/run` (RealityStream), local + deploy to Google Cloud - `start pipeline` — Flask for `data-pipeline/admin` +- `start art` — Arts Engine Axum Rust API (`cargo run --manifest-path requests/engine/rust-api/Cargo.toml`, port 8082) +- `start chat` — Node unified server for chat + mounted `sanity/` Next.js site (`node chat/server.mjs`, port 8888); first run: `pnpm --prefix chat install` and `bun --cwd sanity install` - `start html` — bare bones without Python (not needed if you ran `start server`) +.NET / C#: +- `host/net/NET.md` provides guidance for local .NET and C# work in this webroot. +- .NET settings reside in `docker/.env` rather than XML-only local config. + Ports: - `8887` — Python HTTP server (`desktop/install/quickstart.sh`) -- `8081` — Rust API server (from `team` repo) +- `8081` — Team Repo API (Actix Rust) (from `team` repo) +- `8004` — legacy .NET 4.x site for `net/` and `core/` +- `8010` — shared .NET 10 host (`host/net/`, serves the webroot outside `net/` and `core/`) - `5001` — Data-Pipeline Flask server - `8100` — Cloud/run Flask server diff --git a/CLAUDE.md b/CLAUDE.md index 5d11e0d8c..2f5cc4d57 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,4 +2,6 @@ "push" always invokes the "./git.sh push" command. +Never include AI attribution or credit lines (Co-Authored-By, Generated by, etc.) in commit messages or PR descriptions. + The CLAUDE.md instructions reside in team/AGENTS.md, localsite/AGENTS.md, data-pipeline/AGENTS.md, and cloud/AGENTS.md \ No newline at end of file diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 000000000..279ee2eb4 --- /dev/null +++ b/PLAN.md @@ -0,0 +1,5 @@ +# Plan + +When adding a new page, use the following index.html starter: + +https://raw.githubusercontent.com/ModelEarth/localsite/refs/heads/main/start/template/index.html \ No newline at end of file diff --git a/PRD.md b/PRD.md index a90733665..8b96a8ba6 100644 --- a/PRD.md +++ b/PRD.md @@ -4,7 +4,7 @@ PartnerTools CRM is a high-performance, cost-efficient Customer Relationship Management platform. It aims to replace expensive Salesforce per-user licensing with a JAMstack architecture powered by a Rust API. -By leveraging the Salesforce -like SuiteCRM SQL table structure aligned with the Microsoft Common Data Model (CDM), the system ensures data interoperability across agencies while reducing infrastructure costs. The platform focuses on speed, type safety, and "write-once, deploy-everywhere" web standards. +By leveraging the Salesforce -like [SuiteCRM SQL](https://model.earth/profile/crm/) table structure aligned with the Microsoft Common Data Model (CDM), the system ensures data interoperability across agencies while reducing infrastructure costs. The platform focuses on speed, type safety, and "write-once, deploy-everywhere" web standards. ## 2. Problem Statement @@ -102,4 +102,4 @@ Phase 1 (Core): Rust API development; implementation of accounts and contacts sc Phase 2 (Frontend): JAMstack UI deployment; basic CRUD features. -Phase 3 (Analytics): Integration of FinOps dashboards for real-time financial transparency. \ No newline at end of file +Phase 3 (Analytics): Integration of FinOps dashboards for real-time financial transparency. diff --git a/README.md b/README.md index 56e5f1467..8e60a38a6 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,16 @@ -