From 96c1d048893c9c1f140fbc892a4c8ddf221a57b5 Mon Sep 17 00:00:00 2001 From: Safi Date: Thu, 7 May 2026 12:09:46 +0100 Subject: [PATCH] bump version to 0.7.9, update README and CHANGELOG Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 2 +- README.md | 4 ++-- graphify/security.py | 7 +++++-- pyproject.toml | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3dd5d56a..7bad52b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Full release notes with details on each version: [GitHub Releases](https://github.com/safishamsi/graphify/releases) -## 0.7.9 (unreleased) +## 0.7.9 (2026-05-07) - Feat: TypeScript extraction parity -- interface, enum, type alias, and module-level const nodes extracted; new_expression emits calls edges; parity with Java/C# class_types (#708) - Feat: Quarto (`.qmd`) file support -- routed through existing Markdown extractor; Quarto executable code blocks (` ```{python} `) extracted as code nodes (#761) diff --git a/README.md b/README.md index 1c7dd0d8..b0db8b63 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ Uninstall with the matching command (e.g. `graphify claude uninstall`). | Type | Extensions | |------|-----------| | Code (28 languages) | `.py .ts .js .jsx .tsx .go .rs .java .c .cpp .rb .cs .kt .scala .php .swift .lua .luau .zig .ps1 .ex .exs .m .jl .vue .svelte .groovy .gradle .sql .f .F .f90 .F90 .f95 .F95 .f03 .F03 .f08 .F08` | -| Docs | `.md .mdx .html .txt .rst .yaml .yml` | +| Docs | `.md .mdx .qmd .html .txt .rst .yaml .yml` | | Office | `.docx .xlsx` (requires `pip install graphifyy[office]`) | | Google Workspace | `.gdoc .gsheet .gslides` (opt-in; requires `gws` auth and `--google-workspace`; Sheets need `pip install graphifyy[google]`) | | PDFs | `.pdf` | @@ -289,7 +289,7 @@ graphify kiro install / uninstall graphify antigravity install / uninstall graphify extract ./docs # headless LLM extraction for CI (no IDE needed) -graphify extract ./docs --backend gemini # explicit backend: gemini, kimi, claude, openai, or ollama +graphify extract ./docs --backend gemini # explicit backend: gemini, kimi, claude, openai, ollama, or bedrock graphify extract ./docs --backend gemini --model gemini-3.1-pro-preview graphify extract ./docs --backend ollama # local Ollama (set OLLAMA_BASE_URL / OLLAMA_MODEL) graphify extract ./docs --google-workspace # export .gdoc/.gsheet/.gslides via gws before extraction diff --git a/graphify/security.py b/graphify/security.py index 42c08fd1..cf1904d7 100644 --- a/graphify/security.py +++ b/graphify/security.py @@ -19,6 +19,9 @@ _MAX_TEXT_BYTES = 10_485_760 # 10 MB hard cap for HTML / text # AWS metadata, link-local, and common cloud metadata endpoints _BLOCKED_HOSTS = {"metadata.google.internal", "metadata.google.com"} +# RFC 6598 Shared Address Space (CGN) -- is_private misses this on Python <3.11 +_CGN_NETWORK = ipaddress.ip_network("100.64.0.0/10") + # --------------------------------------------------------------------------- # URL validation @@ -54,7 +57,7 @@ def validate_url(url: str) -> str: for info in infos: addr = info[4][0] ip = ipaddress.ip_address(addr) - if ip.is_private or ip.is_reserved or ip.is_loopback or ip.is_link_local: + if ip.is_private or ip.is_reserved or ip.is_loopback or ip.is_link_local or ip in _CGN_NETWORK: raise ValueError( f"Blocked private/internal IP {addr} (resolved from '{hostname}'). " f"Got: {url!r}" @@ -85,7 +88,7 @@ def _ssrf_guarded_socket(): ip = ipaddress.ip_address(addr) except ValueError: continue - if ip.is_private or ip.is_reserved or ip.is_loopback or ip.is_link_local: + if ip.is_private or ip.is_reserved or ip.is_loopback or ip.is_link_local or ip in _CGN_NETWORK: raise OSError( f"SSRF blocked: IP {addr} resolved from '{host}' is private/reserved" ) diff --git a/pyproject.toml b/pyproject.toml index 840448a6..4b65d923 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "graphifyy" -version = "0.7.8" +version = "0.7.9" description = "AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph" readme = "README.md" license = { file = "LICENSE" }