Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
68edecb
docs: add DITA architecture documentation and preview tools
Mar 15, 2026
b455a93
fix: give Planner GeoProcessingToolset(include_arcpy=True) for dynami…
Mar 15, 2026
af55c60
docs: add multimodal semantic fusion architecture design
Mar 16, 2026
549d984
feat: v12.0 extensible platform — custom skills, user tools, multi-ag…
Mar 18, 2026
08f6451
docs: sync README and GitHub about with v12.0 extensible platform
Mar 18, 2026
017c1c5
docs: add Agent-Skill-Tool architecture relationship guide
Mar 18, 2026
ebfb978
docs: add TUI terminal interface architecture design
Mar 18, 2026
740fa96
docs: add five-layer memory architecture guide
Mar 18, 2026
ef19135
docs: add complete agent inventory with hierarchy diagrams
Mar 18, 2026
325ff90
docs: add complete skill inventory with domain grouping
Mar 18, 2026
bb4b395
docs: add complete tool inventory — 143+ tools across 23 toolsets
Mar 18, 2026
c6066db
chore: bump CLI and TUI version strings to v12.0
Mar 18, 2026
4ea93c9
feat: add system status, bot management, and A2A sections to admin da…
Mar 18, 2026
faa4ebc
feat: security hardening, model config UI, admin dashboard models tab
Mar 18, 2026
69181dc
feat: skill bundles UI, API refactoring, eval thresholds, security fixes
Mar 19, 2026
babec9e
feat: GraphRAG UI, thread safety, global callback removal
Mar 19, 2026
bf2050b
feat: Python sandbox (Phase 2), React Context (F-1), GraphRAG UI
Mar 19, 2026
8ed59fd
feat: workflow live status, SEC-4 prompt injection hardening
Mar 19, 2026
226104c
ref: S-4 MCP route extraction, ADK list_skills_in_dir adoption
Mar 19, 2026
4e65906
ref: extract KB routes to api/kb_routes.py, adopt list_skills_in_dir
Mar 19, 2026
4371d99
docs: add comprehensive security architecture document
Mar 19, 2026
5ce3716
fix: remove Context Provider to fix React infinite re-render (#310)
Mar 19, 2026
0ec5b70
fix: restore MCP handlers, add missing table init for bundles/templates
Mar 19, 2026
43b33d1
feat: v12.1 — data lineage tracking, industry templates, API modulari…
Mar 19, 2026
af5457f
docs: add DITA technical guides, A2A capabilities, planner v7.1.3, mi…
Mar 19, 2026
fc32c19
feat: v12.2 — semantic data discovery with vector embeddings, KG asse…
Mar 20, 2026
aedf4e5
feat: v13.0-v14.0 — virtual data layer, MCP Server v2.0, rating/clone…
Mar 20, 2026
5d69cee
feat: v14.0 — marketplace gallery, rating/clone system, workflow chec…
Mar 20, 2026
444fc1a
feat: v14.0 — heatmap layer, measurement tools, 3D layer control
Mar 20, 2026
e98b996
feat: v14.0 — DRL scenario templates, memory search API, complete v14…
Mar 20, 2026
85a84be
feat: v14.1 — smart follow-ups, versioning, agent registry, DRL confi…
Mar 20, 2026
c83663a
docs: mark v14.0 and v14.1 as completed in roadmap
Mar 20, 2026
290980b
feat: v14.2 — analysis chains, circuit breaker, skill approval, DRL t…
Mar 20, 2026
425c454
feat: v14.3 — multi-language, NSGA-II, A2A lifecycle, plugin system, …
Mar 20, 2026
0e0ee2c
docs: v14.3 technical review rewrite ch21, update README/README_en to…
Mar 20, 2026
d9fbb4c
docs: Add enterprise architecture document with 8 views
Mar 21, 2026
898bc44
feat: v14.3.1 — Ch21 audit fixes, DataPanel refactor, roadmap update
Mar 21, 2026
2e2d83e
fix: restore missing seed_builtin_templates() def — fixes /api/templa…
Mar 21, 2026
eed90b6
fix: debug session — templates 500, kb imports, user_lang, panel rede…
Mar 21, 2026
679a0d2
feat: v14.4 — GovernanceToolset (7 tools), ChartToolset (9 ECharts to…
Mar 21, 2026
2375729
docs: v14.4 README update, roadmap refresh with observability + v14.5…
Mar 21, 2026
95cf906
feat: v14.5 — connector plugin architecture, WMS/ArcGIS connectors, D…
Mar 21, 2026
8cf1306
docs: v14.5 README update — connector plugin arch, Data Standard Regi…
Mar 21, 2026
9c00cbd
feat: v14.5 — governance deepening (standard-aware QC, Gap Matrix, ba…
Mar 22, 2026
47c0142
feat: v14.5 — Agent Observability Phase 1 (25+ Prometheus metrics, HT…
Mar 22, 2026
05ecceb
feat: v14.5 — parameter re-run, workflow breakpoint/resume, memory se…
Mar 22, 2026
3742763
docs: v14.5 release — README refresh with full-stack governance upgra…
Mar 22, 2026
9245c3f
feat: v14.5 P2 — 3D basemap sync, Leaflet.Draw, DXF/DWG support, data…
Mar 22, 2026
77a0cc6
docs: v14.5 final release — roadmap checklist complete, all 7 directi…
Mar 22, 2026
e42e9ce
feat: v15.0 — Agent Observability Phase 2-4 (OpenTelemetry tracing, d…
Mar 22, 2026
149c456
feat: v15.0 — data security (PII classification, masking, RLS policie…
Mar 22, 2026
dcd6d15
feat: v15.0 — data distribution & feedback (request/approval, packagi…
Mar 22, 2026
65f537f
feat: v15.0 — connector expansion (DatabaseConnector + ObjectStorageC…
Mar 22, 2026
605d2f0
feat: v15.0 — data versioning (version snapshots, rollback, increment…
Mar 22, 2026
8a83452
feat: v15.0 — Skill deepening (Pipeline pattern multi-source-fusion, …
Mar 22, 2026
1212983
feat: v15.0 — Spark distributed compute (SparkGateway + 3-tier routin…
Mar 22, 2026
4364e64
docs: v15.0 release — README + roadmap + GitHub About finalized
Mar 22, 2026
0230b9f
feat: v15.0 cleanup — roadmap sync, data model recommender, tags/usag…
Mar 22, 2026
e6e243e
feat: World Model Tech Preview (Plan D) — AlphaEarth + LatentDynamics…
Mar 22, 2026
42708fc
fix: L2 normalization to prevent manifold drift in autoregressive inf…
Mar 22, 2026
b3a0377
docs: add Phase 1 validation results — temporal holdout, multi-step d…
Mar 22, 2026
6c2ecd4
feat: P0+P1+P2 world model improvements — 15 training areas, terrain …
Mar 22, 2026
43c5586
feat: V2 review improvements — dilated conv, multi-step loss, change-…
Mar 22, 2026
668837b
feat: file management, data lake, surveying QC, AgentOps enhancements
Mar 22, 2026
f3965bb
docs: v15.1 README update — AgentOps maturity, data lake, surveying QC
Mar 23, 2026
6125316
docs: add SCI paper manuscript — Geospatial World Modeling via Frozen…
Mar 23, 2026
ae18adf
docs: add English and Chinese Word manuscripts for world model paper
Mar 23, 2026
ade2062
docs: address reviewer comments — ablation study, scenario paradox fi…
Mar 23, 2026
e1cb676
feat: world model demo integration, intent routing fixes, NL2SQL tool…
Mar 24, 2026
5482e88
fix: load_admin_boundary SQLAlchemy text() wrapper for read_postgis
Mar 24, 2026
bb48421
fix: cap sampleRectangle grid to 64x64 to stay within GEE 262144 pixe…
Mar 24, 2026
f6bd39b
chore: remove world model paper files from repo, add to .gitignore
Mar 24, 2026
3de8e05
docs: v15.2 README — World Model, NL2SQL, map timeline, satellite bas…
Mar 24, 2026
6440fae
feat: pgvector embedding cache for AlphaEarth world model
Mar 24, 2026
d1de23f
feat: three-angle causal inference system (A: GeoFM, B: LLM, C: World…
Mar 25, 2026
575d024
docs: v15.3 README — three-angle causal inference, origin vision image
Mar 25, 2026
1240a2c
docs: refresh code statistics report for v15.3
Mar 25, 2026
c87b814
docs: update roadmap to v15.3 — world model, causal inference, backlo…
Mar 25, 2026
700b729
feat: clear 3 roadmap backlog items — DRL weight UI, field mapping, M…
Mar 25, 2026
4857a32
feat: v15.4 platform maturity, DRL enhancements, productization, Skil…
Mar 26, 2026
f8abe45
feat: v15.5 — causal inference paper, world model R2 response, DRL-Wo…
Mar 26, 2026
4170635
docs: v15.5 README — DRL Dreamer integration, thesis topics image, up…
Mar 26, 2026
258c5ad
feat: v15.6 — Dreamer deepening (embedding obs + dream planner + late…
Mar 26, 2026
6e7b1c5
feat: v15.7 — Surveying QC Agent system (defect taxonomy, SLA workflo…
Mar 26, 2026
5ed6e00
feat: v15.7 QC frontend tabs, Docker Compose, DB migration execution
Mar 26, 2026
1038c6a
feat: arcgis-mcp dual-engine — basic arcpy + DL (arcgis.learn 2.4.2)
Mar 26, 2026
71f3a5b
enhance: QcMonitorTab + AlertsTab — dark theme, stat cards, collapsib…
Mar 26, 2026
4666c9e
feat: E2E QC test (107K buildings, 8s) + demo script for leadership p…
Mar 26, 2026
15ce474
feat: 4 product-specific QC workflow templates + dashboard API
Mar 26, 2026
47f431c
feat: QcMonitorTab dashboard — real-time stats + recent reviews + wor…
Mar 26, 2026
0a2b541
chore: remove client-facing docs from repo, sanitize test paths
Mar 27, 2026
7922350
docs: v15.7 README — surveying QC system, ArcGIS DL dual-engine, 4 su…
Mar 27, 2026
f40c7e6
chore: remove papers from repo + gitignore all paper/doc artifacts
Mar 27, 2026
7a33c85
feat: add 3 database migrations for BCG platform enhancements
Mar 28, 2026
1838119
feat: add ModelGateway with task-aware routing
Mar 28, 2026
3399d8b
feat: add ContextManager with pluggable providers
Mar 28, 2026
83073ce
feat: add EvalScenario framework with SurveyingQC
Mar 28, 2026
8807149
feat: add PromptRegistry with DB fallback
Mar 28, 2026
3e3b3da
feat: Phase 3 integration - 8 API endpoints + module enhancements
Mar 28, 2026
72c60a6
docs: Phase 4 - BCG platform documentation complete
Mar 28, 2026
7417322
docs: update README to v15.8 with BCG platform capabilities
Mar 28, 2026
7eb6a37
fix: workflow execution context - await instead of create_task
Mar 28, 2026
c189f3e
fix: metadata_manager SQL - replace ::jsonb casts with CAST() for SQL…
Mar 28, 2026
fe4feb2
fix: workflow report output + file matching
Mar 28, 2026
90d3f7b
fix: register uploaded files in data_catalog for LLM tool discovery
Mar 28, 2026
c00d83a
fix(TD-005): workflow step context injection for data continuity
Mar 28, 2026
3af6bd2
fix(TD-001): unify data asset tables — single source of truth
Mar 29, 2026
0254dc6
fix(TD-003,TD-006): auto-migration runner + non-blocking workflows
Mar 29, 2026
2909eb9
docs: refresh roadmap v15.3 → v15.8
Mar 29, 2026
bb2646d
feat(v15.9): complete 7 roadmap tasks - UI enhancements and tooling
Mar 29, 2026
34e9d9c
docs: update README for v15.9 release
Mar 29, 2026
046bdca
chore: add PDF and MP4 files to .gitignore
Mar 29, 2026
20203ff
feat(v16.0): complete SIGMOD 2026 L3 autonomous agent capabilities
Apr 1, 2026
3e31637
docs: update README to v16.0 - SIGMOD 2026 L3 autonomous capabilities
Apr 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .chainlit/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
name = "Data Agent"
user_env = []
duration = 0
watch_ignore = ["data_agent/uploads/**", "data_agent/downloads/**", "*.log", "*.db"]

[features]
prompt_playground = true
Expand All @@ -25,7 +26,7 @@ generated_by = "0.7.700"

[features.spontaneous_file_upload]
enabled = true
accept = ["text/csv", "application/zip", ".shp", ".shx", ".dbf"]
accept = ["text/csv", "application/zip", "application/x-zip-compressed", "application/octet-stream", ".zip", ".shp", ".shx", ".dbf", ".prj", ".cpg", ".geojson", ".gpkg", ".kml", ".kmz", ".tif", ".tiff", ".xlsx", ".xls", ".json", ".dwg", ".dxf", ".obj", ".stl"]
max_size_mb = 500

# Starters
Expand Down
Binary file not shown.
150 changes: 150 additions & 0 deletions .github/workflows/cd-production.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# =============================================================================
# CD Pipeline — Production Deployment (Gated)
#
# Phase 3 of 3-phase CI/CD (per Google AgentOps whitepaper)
# Requires:
# 1. Staging validation passed (cd-staging.yml)
# 2. Manual approval from Product Owner (GitHub Environment protection)
#
# Supports canary rollout via CANARY_WEIGHT variable.
# =============================================================================
name: CD - Production

on:
workflow_dispatch:
inputs:
canary_weight:
description: 'Canary traffic weight (0-100, 0=skip canary)'
required: false
default: '10'
skip_eval:
description: 'Skip pre-deploy evaluation'
required: false
default: 'false'

jobs:
# ---------------------------------------------------------------------------
# Gate 1: Final evaluation before production
# ---------------------------------------------------------------------------
pre-deploy-eval:
name: Pre-Deploy Evaluation
if: ${{ github.event.inputs.skip_eval != 'true' }}
runs-on: ubuntu-latest
services:
postgres:
image: postgis/postgis:16-3.4
env:
POSTGRES_DB: gis_agent
POSTGRES_USER: postgres
POSTGRES_PASSWORD: prod_eval_password
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- run: pip install -r requirements.txt
- name: Run evaluation suite
env:
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
POSTGRES_DATABASE: gis_agent
POSTGRES_USER: postgres
POSTGRES_PASSWORD: prod_eval_password
run: python data_agent/run_evaluation.py --num-runs 3
- name: Check evaluation verdict
run: |
if [ -f eval_results/eval_summary.json ]; then
VERDICT=$(python -c "import json; d=json.load(open('eval_results/eval_summary.json')); print(d.get('overall_pass', False))")
if [ "$VERDICT" != "True" ]; then
echo "❌ Evaluation FAILED. Blocking production deployment."
exit 1
fi
echo "✅ Evaluation PASSED."
fi

# ---------------------------------------------------------------------------
# Gate 2: Manual approval (Product Owner sign-off)
# ---------------------------------------------------------------------------
approval:
name: Production Approval
needs: pre-deploy-eval
if: always() && (needs.pre-deploy-eval.result == 'success' || needs.pre-deploy-eval.result == 'skipped')
runs-on: ubuntu-latest
environment: production # GitHub Environment with required reviewers
steps:
- name: Approved for production
run: echo "✅ Production deployment approved."

# ---------------------------------------------------------------------------
# Deploy: Canary → Full rollout
# ---------------------------------------------------------------------------
deploy:
name: Deploy to Production
needs: approval
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Build Docker image
run: |
docker build -t gis-data-agent:${{ github.sha }} .
docker tag gis-data-agent:${{ github.sha }} gis-data-agent:latest
echo "Built image: gis-data-agent:${{ github.sha }}"

- name: Canary deployment
if: ${{ github.event.inputs.canary_weight != '0' }}
run: |
echo "🐤 Canary deployment with ${{ github.event.inputs.canary_weight }}% traffic"
echo "In production, this would:"
echo " 1. Deploy new version alongside current"
echo " 2. Route ${{ github.event.inputs.canary_weight }}% traffic to new version"
echo " 3. Monitor error rates and latency for 15 minutes"
echo " 4. If healthy, proceed to full rollout"
echo " 5. If unhealthy, automatic rollback"
echo ""
echo "Implementation options:"
echo " - Cloud Run: gcloud run services update-traffic --to-revisions=NEW=${{ github.event.inputs.canary_weight }}"
echo " - K8s: kubectl apply -f k8s/canary-ingress.yaml"
echo " - Docker: CANARY_WEIGHT=${{ github.event.inputs.canary_weight }} docker compose -f docker-compose.prod.yml up -d"

- name: Full rollout
run: |
echo "🚀 Full production rollout"
echo "Image: gis-data-agent:${{ github.sha }}"
echo "Commit: ${{ github.sha }}"
echo ""
echo "docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d"

- name: Record deployment
run: |
echo "📝 Deployment record:"
echo " Version: ${{ github.sha }}"
echo " Time: $(date -u +%Y-%m-%dT%H:%M:%SZ)"
echo " Deployer: ${{ github.actor }}"
echo " Canary: ${{ github.event.inputs.canary_weight }}%"

# ---------------------------------------------------------------------------
# Post-deploy smoke test
# ---------------------------------------------------------------------------
smoke-test:
name: Post-Deploy Smoke Test
needs: deploy
runs-on: ubuntu-latest
steps:
- name: Health check
run: |
echo "🔍 Running smoke tests against production..."
echo " - Health endpoint: GET /health/live"
echo " - Readiness: GET /health/ready"
echo " - API response: GET /api/capabilities"
echo ""
echo "In production, these would be real HTTP checks."
echo "If any fail, trigger automatic rollback."
161 changes: 161 additions & 0 deletions .github/workflows/cd-staging.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
# =============================================================================
# CD Pipeline — Staging Deployment + Evaluation
#
# Triggered: After merge to main (post CI pass)
# Phase 2 of 3-phase CI/CD (per Google AgentOps whitepaper)
# =============================================================================
name: CD - Staging

on:
push:
branches: [main]
workflow_dispatch:

jobs:
deploy-staging:
name: Deploy to Staging
runs-on: ubuntu-latest
services:
postgres:
image: postgis/postgis:16-3.4
env:
POSTGRES_DB: gis_agent_staging
POSTGRES_USER: postgres
POSTGRES_PASSWORD: staging_password
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'

- name: Install dependencies
run: |
pip install -r requirements.txt
pip install pytest

- name: Run full test suite (staging validation)
env:
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
POSTGRES_DATABASE: gis_agent_staging
POSTGRES_USER: postgres
POSTGRES_PASSWORD: staging_password
DEPLOY_ENV: staging
run: |
python -m pytest data_agent/ \
--ignore=data_agent/test_knowledge_agent.py \
-q --tb=short --junitxml=staging-test-results.xml

- name: Upload staging test results
uses: actions/upload-artifact@v4
if: always()
with:
name: staging-test-results
path: staging-test-results.xml

evaluate-staging:
name: Agent Evaluation (Staging)
needs: deploy-staging
runs-on: ubuntu-latest
if: ${{ vars.GOOGLE_API_KEY != '' || secrets.GOOGLE_API_KEY != '' }}
services:
postgres:
image: postgis/postgis:16-3.4
env:
POSTGRES_DB: gis_agent_staging
POSTGRES_USER: postgres
POSTGRES_PASSWORD: staging_password
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U postgres"
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- uses: actions/checkout@v4

- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: '3.13'

- name: Install dependencies
run: pip install -r requirements.txt

- name: Run agent evaluation
env:
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
GOOGLE_GENAI_USE_VERTEXAI: ${{ vars.GOOGLE_GENAI_USE_VERTEXAI }}
GOOGLE_CLOUD_PROJECT: ${{ vars.GOOGLE_CLOUD_PROJECT }}
GOOGLE_CLOUD_LOCATION: ${{ vars.GOOGLE_CLOUD_LOCATION || 'global' }}
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
POSTGRES_DATABASE: gis_agent_staging
POSTGRES_USER: postgres
POSTGRES_PASSWORD: staging_password
DEPLOY_ENV: staging
run: |
python data_agent/run_evaluation.py --num-runs 2 2>&1 | tee eval-output.log
echo "Evaluation complete"

- name: Record eval results to history
if: always()
env:
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
POSTGRES_DATABASE: gis_agent_staging
POSTGRES_USER: postgres
POSTGRES_PASSWORD: staging_password
run: |
python -c "
from data_agent.eval_history import ensure_eval_table, record_eval_result
import json, os
ensure_eval_table()
summary_path = 'eval_results/eval_summary.json'
if os.path.exists(summary_path):
with open(summary_path) as f:
s = json.load(f)
for pipeline, verdict in s.get('pipeline_verdicts', {}).items():
record_eval_result(
pipeline=pipeline,
overall_score=s.get('pass_rate', 0),
pass_rate=s.get('pass_rate', 0),
verdict=verdict,
)
print(f'Recorded eval results: {s.get(\"pipeline_verdicts\", {})}')
"

- name: Upload evaluation results
uses: actions/upload-artifact@v4
if: always()
with:
name: staging-eval-results
path: |
eval_results/
eval-output.log

staging-approval:
name: Staging Sign-off
needs: [deploy-staging, evaluate-staging]
runs-on: ubuntu-latest
if: always() && needs.deploy-staging.result == 'success'
environment: staging # Requires manual approval in GitHub
steps:
- name: Staging validated
run: |
echo "✅ Staging validation complete."
echo "Tests: ${{ needs.deploy-staging.result }}"
echo "Eval: ${{ needs.evaluate-staging.result }}"
echo "Ready for production deployment."
38 changes: 38 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,41 @@ data_agent/eval_results/
/enhanced_*
/reprojected_*
/features_enhanced_*

# World model paper (private, not for sharing)
docs/world_model_paper.tex
docs/world_model_paper_en.docx
docs/world_model_paper_cn.docx
docs/fig_architecture.png
docs/world-model-technical-report.md
docs/world-model-technical-review*.md
docs/reviewer_comments*.md
scripts/generate_paper_docx.py
scripts/generate_architecture_fig.py
scripts/ablation_study.py
scripts/ablation_results/

# Benchmark generated data and results
benchmarks/data/
benchmarks/benchmark_results.json

# Papers and client-facing documents — NEVER commit
docs/*paper*.tex
docs/*paper*.docx
docs/*paper*.pdf
docs/*paper*.md
docs/*paper*_cn.*
docs/*paper*_en.*
docs/*paper*_response*
docs/generate_*_paper*
docs/technical_paper_*
docs/surveying_qc_demo_script.*
docs/surveying_qc_agent_design.*

# PDF and video files — NEVER commit (may contain sensitive data)
*.pdf
*.mp4
*.avi
*.mov
*.wmv
!docs/dita/out/pdf-css-html5/data-agent-user-guide.pdf
Loading