Skip to content
Merged

Dev #21

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
dc12ba6
feat(api): add JVSPATIAL_DOCS_DISABLED + per-path docs CSP
eldonm May 9, 2026
a3964ab
upd: added ability to customize entity name nofr nodes regardless of …
eldonm May 12, 2026
3a6526c
docs: replace legacy SPEC with authoritative technical contract
eldonm May 17, 2026
cac1e89
docs: add PRD capturing product context and decision boundaries
eldonm May 17, 2026
2993e8a
docs: refresh docs index and add ROADMAP
eldonm May 17, 2026
b93f165
docs: add agent entry points (CLAUDE.md + AGENTS.md)
eldonm May 17, 2026
9cbad13
docs: add per-subpackage READMEs for in-context discovery
eldonm May 17, 2026
8b0b120
docs: add foundation audit (150 findings across 5 dimensions)
eldonm May 17, 2026
c7b412b
fix: Wave 1 audit remediation β€” identity, walker protection, async, s…
eldonm May 17, 2026
495ccdd
docs(changelog): document Wave 1 audit remediation
eldonm May 17, 2026
8eaa993
fix: Wave 2 audit remediation β€” async I/O, subclass chains, auth race…
eldonm May 17, 2026
a648614
docs(changelog): document Wave 2 audit remediation
eldonm May 17, 2026
809fe2e
fix: Wave 3 audit remediation β€” env allowlist, CORS warn, txn honesty…
eldonm May 17, 2026
0b3b326
docs(changelog): document Wave 3 audit remediation
eldonm May 17, 2026
66a93bd
fix: Wave 4 audit remediation β€” false-async cleanup, sqlite cross-loo…
eldonm May 17, 2026
6d53b48
docs(changelog): document Wave 4 audit remediation
eldonm May 17, 2026
980a9fc
fix: Wave 5 audit remediation β€” Windows-reserved names, fail-closed d…
eldonm May 17, 2026
40fd5df
docs(changelog): document Wave 5 audit remediation
eldonm May 17, 2026
da42357
fix(api): resolve PEP 563 forward refs in _find_request_parameter
eldonm May 17, 2026
bf6dcfd
upd: updated docs
eldonm May 20, 2026
7488cc8
upd: AUTHORS, README
eldonm May 25, 2026
fbdcf18
fix: various indexing optimizations
eldonm May 25, 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
22 changes: 16 additions & 6 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@
# Default: API built with jvspatial framework
# JVSPATIAL_API_DESCRIPTION=API built with jvspatial framework

# Unpublish documentation surface in production.
# When truthy, /docs, /redoc, /openapi.json, and /docs/oauth2-redirect
# are not registered (return 404 β€” no Swagger HTML, no OpenAPI JSON).
# Truthy values: 1, true, yes, on (case-insensitive). Default: published.
# JVSPATIAL_DOCS_DISABLED=1

# -----------------------------------------------------------------------------
# CORS CONFIGURATION
# -----------------------------------------------------------------------------
Expand All @@ -85,19 +91,23 @@
# JVSPATIAL_CORS_ENABLED=true

# CORS allowed origins (comma-separated)
# Default: *
# Default: http://localhost:5173,http://127.0.0.1:5173,http://localhost:3000,
# http://127.0.0.1:3000,http://localhost:8000,http://127.0.0.1:8000
# Examples:
# - Single origin: https://example.com
# - Multiple origins: https://example.com,https://app.example.com
# JVSPATIAL_CORS_ORIGINS=*
# Setting "*" or any wildcard entry triggers a startup WARNING β€” wildcards
# are rarely correct in production. Set cors_allow_wildcard=True on
# CORSConfig to silence the warning when intentional.
# JVSPATIAL_CORS_ORIGINS=https://example.com

# CORS allowed methods (comma-separated)
# Default: *
# JVSPATIAL_CORS_METHODS=*
# Default: GET,POST,PUT,PATCH,DELETE,OPTIONS
# JVSPATIAL_CORS_METHODS=GET,POST,PUT,PATCH,DELETE,OPTIONS

# CORS allowed headers (comma-separated)
# Default: *
# JVSPATIAL_CORS_HEADERS=*
# Default: Content-Type,Authorization,X-API-Key
# JVSPATIAL_CORS_HEADERS=Content-Type,Authorization,X-API-Key

# -----------------------------------------------------------------------------
# DATABASE COLLECTION NAMES
Expand Down
57 changes: 57 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# AGENTS.md β€” Multi-agent compatibility shim

This file exists so AI coding assistants that follow the `AGENTS.md` convention (Codex, Cursor, Aider, Continue, OpenHands, and others) find the same guidance as Claude Code.

**The canonical agent guide is [CLAUDE.md](CLAUDE.md).** Treat it as authoritative.

This file does not duplicate that content; agents that read this file should read [CLAUDE.md](CLAUDE.md) instead.

---

## Quick orientation

If you cannot follow the link to `CLAUDE.md`, here is the minimum:

- **What this repo is**: `jvspatial`, an async-first Python library for graph-based persistence with FastAPI integration. See [README.md](README.md) and [PRD.md](PRD.md).
- **Where the contract lives**: [SPEC.md](SPEC.md). Every claim cites a `file:line`. If your edit changes a contract, update SPEC in the same commit.
- **How docs are organized**: [docs/md/README.md](docs/md/README.md) is the index. PRD / SPEC / ROADMAP / CLAUDE live at the repo root.
- **Forward direction**: [ROADMAP.md](ROADMAP.md) β€” current focus areas, known gaps, out-of-scope.
- **What changed recently**: [CHANGELOG.md](CHANGELOG.md).

---

## Non-negotiable invariants (summary)

Full list in [CLAUDE.md Β§ Non-negotiable invariants](CLAUDE.md#non-negotiable-invariants). Top items:

1. Async-only I/O. No sync wrappers.
2. `hmac.compare_digest` for every secret comparison.
3. `__entity_name__` honors per-subclass override; do not assemble IDs from `cls.__name__`.
4. Serverless detection precedence: explicit config β†’ current Server config β†’ `SERVERLESS_MODE` env β†’ auto-detect.
5. Stability tiers in [docs/md/stability.md](docs/md/stability.md) are binding. Public names live in `jvspatial.__all__`; underscore modules are internal.
6. CORS/CSP/docs defaults fail closed; do not weaken without a security review.

---

## Run the dev loop

```bash
pip install -e '.[dev,test]'
pre-commit install
pytest -q
pre-commit run --all-files
```

Tests are async (`pytest-asyncio` auto mode). Benchmarks are skipped by default β€” run with `pytest tests/benchmarks --benchmark-only`.

---

## Editor / agent-tool specific notes

This section is the only place where agent-tool-specific guidance lives. Keep it short; cross-link to CLAUDE.md for everything else.

- **Cursor / Continue**: `.cursor/` directory is gitignored except for committed rules. There are no committed `.cursorrules`; this file plus CLAUDE.md is the full agent contract.
- **Aider**: `--read CLAUDE.md` to load the canonical guide on session start.
- **Codex / OpenHands**: this file is loaded as agent instructions; read CLAUDE.md for full details.

Any agent-specific quirk worth recording goes here, with a one-line rationale. If a quirk grows beyond a line, promote it into CLAUDE.md and reference back.
Loading
Loading