Gemini is often the cheaper available quota for low-stakes semantic graph extraction, while OpenAI is a useful fallback. Extend the direct extraction backend registry, CLI validation, docs, and tests so headless extraction can use GEMINI_API_KEY, GOOGLE_API_KEY, or OPENAI_API_KEY without changing the existing Claude and Kimi paths. Constraint: Gemini supports OpenAI-compatible chat completions at the Google generative-language endpoint Rejected: Native google-genai integration | higher dependency and response-shape churn for the same chat-completions path Confidence: medium Scope-risk: moderate Directive: Keep backend detection explicit and test every accepted API-key environment variable before adding new providers Tested: uv run --directory vendor/graphify pytest tests/test_llm_backends.py tests/test_chunking.py -q Not-tested: Live Gemini/OpenAI API calls; no GEMINI_API_KEY or OPENAI_API_KEY present in this environment
76 lines
2.5 KiB
TOML
76 lines
2.5 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "graphifyy"
|
|
version = "0.7.5"
|
|
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" }
|
|
keywords = ["claude", "claude-code", "codex", "opencode", "cursor", "gemini", "aider", "kiro", "pi", "knowledge-graph", "rag", "graphrag", "obsidian", "community-detection", "tree-sitter", "leiden", "llm"]
|
|
requires-python = ">=3.10"
|
|
dependencies = [
|
|
"networkx",
|
|
"datasketch",
|
|
"rapidfuzz",
|
|
"tree-sitter>=0.23.0",
|
|
"tree-sitter-python",
|
|
"tree-sitter-javascript",
|
|
"tree-sitter-typescript",
|
|
"tree-sitter-go",
|
|
"tree-sitter-rust",
|
|
"tree-sitter-java",
|
|
"tree-sitter-c",
|
|
"tree-sitter-cpp",
|
|
"tree-sitter-ruby",
|
|
"tree-sitter-c-sharp",
|
|
"tree-sitter-kotlin",
|
|
"tree-sitter-scala",
|
|
"tree-sitter-php",
|
|
"tree-sitter-swift",
|
|
"tree-sitter-lua",
|
|
"tree-sitter-zig",
|
|
"tree-sitter-powershell",
|
|
"tree-sitter-elixir",
|
|
"tree-sitter-objc",
|
|
"tree-sitter-julia",
|
|
"tree-sitter-verilog",
|
|
"tree-sitter-fortran",
|
|
]
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/safishamsi/graphify"
|
|
Repository = "https://github.com/safishamsi/graphify"
|
|
Issues = "https://github.com/safishamsi/graphify/issues"
|
|
|
|
[project.optional-dependencies]
|
|
mcp = ["mcp"]
|
|
neo4j = ["neo4j"]
|
|
pdf = ["pypdf", "markdownify"]
|
|
watch = ["watchdog"]
|
|
svg = ["matplotlib"]
|
|
leiden = ["graspologic; python_version < '3.13'"]
|
|
office = ["python-docx", "openpyxl"]
|
|
video = ["faster-whisper", "yt-dlp"]
|
|
kimi = ["openai", "tiktoken"]
|
|
gemini = ["openai", "tiktoken"]
|
|
openai = ["openai", "tiktoken"]
|
|
sql = ["tree-sitter-sql"]
|
|
all = ["mcp", "neo4j", "pypdf", "markdownify", "watchdog", "graspologic; python_version < '3.13'", "python-docx", "openpyxl", "faster-whisper", "yt-dlp", "matplotlib", "openai", "tiktoken", "tree-sitter-sql"]
|
|
|
|
[project.scripts]
|
|
graphify = "graphify.__main__:main"
|
|
|
|
[tool.uv]
|
|
# Install via: uv tool install graphifyy
|
|
# Run without installing: uvx graphifyy install
|
|
package = true
|
|
|
|
[tool.setuptools]
|
|
packages = ["graphify"]
|
|
include-package-data = false
|
|
|
|
[tool.setuptools.package-data]
|
|
graphify = ["skill.md", "skill-codex.md", "skill-opencode.md", "skill-aider.md", "skill-copilot.md", "skill-claw.md", "skill-windows.md", "skill-droid.md", "skill-trae.md", "skill-kiro.md", "skill-vscode.md", "skill-pi.md"]
|