Commit graph

69 commits

Author SHA1 Message Date
Güneş Bizim
897d4cbfef feat(laravel): add Laravel framework path detection and entry point scoring
- Add Laravel route/controller/job/listener/middleware/provider/policy/model
  path patterns with appropriate multipliers (1.5–3.0)
- Add 'laravel' entry to FRAMEWORK_AST_PATTERNS for documentation
- Add PHP ENTRY_POINT_PATTERNS: RESTful methods, __invoke, handle, boot, etc.
- Add PHP/Laravel test file detection (Test.php, Spec.php, tests/feature/, tests/unit/)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 01:04:49 +03:00
Güneş Bizim
136e83e76d feat(php): add PHP/PSR-4 import resolution with composer.json support
- Add .php, .phtml to EXTENSIONS array
- Add ComposerConfig interface and loadComposerConfig() (mirrors TsconfigPaths pattern)
- Add resolvePhpImport() with PSR-4 longest-match resolution + suffix fallback
- Wire PHP handling into processImports() and processImportsFromExtracted()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 01:04:39 +03:00
Güneş Bizim
33e32672a7 feat(php): add PHP tree-sitter queries for all PHP constructs
Add PHP_QUERIES covering: namespaces, classes, interfaces, traits,
enums (PHP 8.1), functions, methods, use-statement imports, function/
method/static/nullsafe calls, and heritage (extends, implements, trait use).
Trait query captures enclosing class name to satisfy parse-worker heritage logic.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 01:04:32 +03:00
Güneş Bizim
14e41a2fa0 feat(php): register PHP tree-sitter grammar in parser loader and parse worker
- Import PHP from tree-sitter-php and use PHP.php_only in languageMap
- Add anonymous_function_creation_expression to FUNCTION_NODE_TYPES
- Add PHP export detection (public modifier / top-level = exported)
- Add PHP built-in functions to BUILT_INS to reduce call graph noise

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 01:04:06 +03:00
Güneş Bizim
6be9b5c9bb feat(php): install tree-sitter-php dependency
Add tree-sitter-php ^0.23.0 to gitnexus/package.json. Package exports
{ php, php_only } grammars; we use php_only for pure PHP files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 01:03:57 +03:00
Güneş Bizim
2ae293aa28 feat(php): add PHP to SupportedLanguages enum and file extension detection
Uncomment PHP = 'php' in both CLI and web SupportedLanguages enums.
Add .php, .phtml, .php3/.4/.5/.8 extension detection to getLanguageFromFilename()
in both packages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 01:03:44 +03:00
abhigyanpatwari
dc66bb83ef fix(analyze): replace nonexistent bar.log with origLog
SingleBar from cli-progress doesn't have a .log() method (that's
MultiBar-only), causing a crash when any code calls console.log
during the pipeline.

Fixes #53
Thanks to @TranDatk for reporting in #56.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 11:05:32 +05:30
Paul Robello
aa12d17504 refactor(api): use executeCypher directly in buildGraph
Add public executeCypher(repoName, query) method to LocalBackend,
bypassing the callTool string dispatch and resolving the repo handle
directly. Update buildGraph in api.ts to call it instead of going
through callTool('cypher', ...) on every query.
2026-02-23 07:23:46 -08:00
Paul Robello
884b6265cf fix: address PR review — CORS, search quality, and embedding flags
- Add https://gitnexus.vercel.app to CORS allowed origins so the
  deployed site can connect to the local backend server.
- Replace naive createHttpTextSearch (substring matching via Cypher)
  with createHttpHybridSearch that calls /api/search for full
  BM25 + semantic + RRF hybrid search on the server.
- Set isEmbeddingReady to false in backend mode (no local embedder),
  which also fixes {{QUERY_VECTOR}} handling — the existing error
  path in tools.ts now correctly returns a helpful message.
- Set isBM25Ready to true (available via server's hybrid search).
- Removes the Cypher injection bug (wrong escape char) since the
  function that contained it was replaced entirely.
2026-02-22 17:14:56 -08:00
Paul Robello
68e631826f feat(web): wire agent/chat through HTTP in backend mode
Add HTTP wrapper functions (executeQuery, textSearch) to the ingestion
worker and a new initializeBackendAgent method that creates the agent
with HTTP-backed tool closures instead of local KuzuDB. useAppState
detects backend mode and routes agent initialization accordingly.
2026-02-22 17:14:18 -08:00
Paul Robello
0407624171 fix: address final code review issues
- Fix field name mismatch in /api/repo (repoPath -> path)
- Add setProgress(null) on successful backend repo load
- Prevent DropZone tab auto-switch from re-triggering
- Make isDatabaseReady() return true in backend mode
- Increase fetchGraph timeout to 60s for large repos
- Replace dynamic import with static import for runCypherQuery
2026-02-22 17:14:18 -08:00
Paul Robello
a711a1c258 docs: update READMEs for local backend mode 2026-02-22 17:14:18 -08:00
Paul Robello
c722605d87 fix(serve): address code review - security, error handling, CORS 2026-02-22 17:14:18 -08:00
Paul Robello
49a2461d59 refactor(serve): rewrite API server to use LocalBackend for multi-repo support
Replace direct single-repo KuzuDB access with LocalBackend, the same
backend the MCP server uses. The serve command now works with ALL
indexed repos via the global registry instead of only the CWD repo.

New/updated endpoints:
- GET /api/repos (list all indexed repos)
- GET /api/repo?name=X (repo metadata)
- GET /api/graph?repo=X (full knowledge graph)
- POST /api/query (raw Cypher via backend)
- POST /api/search (process-grouped search via backend)
- GET /api/file?repo=X&path=Y (file read with path traversal protection)
- GET /api/processes?repo=X, /api/process?repo=X&name=Y
- GET /api/clusters?repo=X, /api/cluster?repo=X&name=Y
2026-02-22 17:14:18 -08:00
abhigyanpatwari
8df9b6eaf0 chore: bump gitnexus to v1.2.8 2026-02-23 04:12:02 +05:30
abhigyanpatwari
5ce36d0d88 fix: disable embeddings by default, fix segfault on macOS/Linux
Embeddings (ONNX Runtime) caused segfaults on macOS (#38) and CUDA
install failures on Linux (#40). Since embeddings only power semantic
vector search in query() and BM25 + graph traversal already provide
strong retrieval, disable embeddings by default with minimal quality
impact.

Changes:
- Replace --skip-embeddings with --embeddings opt-in flag
- Remove disposeEmbedder() call (ONNX native cleanup segfaults)
- Add process.exit(0) when embeddings are used to bypass ONNX atexit hooks
- Suppress ONNX session warnings via logSeverityLevel
- Fix progress bar duplication by routing console output through bar.log()
- Add elapsed time indicator for long-running phases

Fixes #38
Fixes #40
2026-02-23 03:47:34 +05:30
abhigyanpatwari
122e5ff8c2 chore: bump gitnexus to v1.2.7
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:13:02 +05:30
abhigyanpatwari
b898c45a9c Merge branch 'linux_stress_test' 2026-02-21 17:12:38 +05:30
abhigyanpatwari
61c7551bf0 feat: MCP hot-reload — discover newly indexed repos without restart
listRepos() now re-reads ~/.gitnexus/registry.json on every call.
resolveRepo() retries with a registry refresh on cache miss.
Extracted refreshRepos() from init() for reuse. All callers updated
with await for the new async signatures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:07:57 +05:30
abhigyanpatwari
6e8674e1f4 docs: remove architecture docs and deep implementation details from markdown files 2026-02-21 13:00:09 +05:30
abhigyanpatwari
c1561f5821 fix: worker pool robustness — timeout, exit handler, 512KB guards, error reporting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:24:48 +05:30
abhigyanpatwari
42473d67df fixed MCP concurrency issue with connection pool on kuzu 2026-02-17 16:31:05 +05:30
abhigyanpatwari
ccf38129e6 repowiki CLI command implemented 2026-02-17 02:25:07 +05:30
abhigyanpatwari
664101dc60 simplify: remove incremental graph pipeline, keep only embedding cache
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 01:13:37 +05:30
abhigyanpatwari
15a323a727 chore: revert test whitespace change in embedder.ts
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 01:05:27 +05:30
abhigyanpatwari
7f373c1432 test: whitespace change for incremental query test
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 01:03:47 +05:30
abhigyanpatwari
223b1c6338 perf: hybrid incremental - workerData fast path + cross-file edge preservation
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 01:01:14 +05:30
abhigyanpatwari
abc18da655 fix: use canonical DEFINES rel IDs and remove dead code in loadExistingGraph
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:49:19 +05:30
abhigyanpatwari
9feae692a5 fix: use full import/call/heritage resolution in incremental mode for cross-file correctness
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:47:05 +05:30
abhigyanpatwari
30ad089e9c fix: exclude CONTAINS rels from preloaded data to avoid duplicates
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:44:14 +05:30
abhigyanpatwari
de98efec6a fix: include uncommitted working tree changes in incremental diff detection
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:40:03 +05:30
abhigyanpatwari
f8ac2a6a2e test: add comment to git.ts for incremental test
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 00:32:34 +05:30
abhigyanpatwari
bcde561a0e Fix Claude Code hooks: correct settings path, matcher format, and hook script
- Hook config goes in ~/.claude/settings.json (not hooks.json)
- Matcher uses string format ("Grep|Glob|Bash") per new Claude Code schema
- Rename gitnexus-hook.js → gitnexus-hook.cjs for CommonJS compatibility
- Fix setup.ts: correct hook filename and timeout (8000ms instead of 10ms)
- Bump to v1.1.9 and publish to npm

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 13:05:36 +05:30
abhigyanpatwari
18a5263396 logging global registry 2026-02-13 22:39:12 +05:30
abhigyanpatwari
49925a6cfe fixed resource count multiplying issue ( using resource templates now ) 2026-02-13 21:28:36 +05:30
abhigyanpatwari
ef25cc1b5f agent md experiments 2026-02-07 23:39:16 +05:30
abhigyanpatwari
99766d9cd2 MCP and cli fixes 2026-02-07 06:21:21 +05:30
abhigyanpatwari
0943df9feb gitnexus wal cleanup preventing reindexing issue fixed 2026-02-06 06:35:15 +05:30
abhigyanpatwari
e9bf45c05c test: add FTS live test file 2026-02-05 07:24:53 +05:30
abhigyanpatwari
139d3ccabd resources implemented and agents.md and skills updated to use it 2026-02-05 05:13:48 +05:30
abhigyanpatwari
ba9d7489a4 implemented skills, CLI and MCP merged into /gitnexus 2026-02-04 04:55:09 +05:30
abhigyanpatwari
a53130e82e fix: move typescript to dependencies, add prepare script for production builds 2026-02-04 03:52:49 +05:30
abhigyanpatwari
d07e790e74 fix: clean command --force flag, hide debug logs in production 2026-02-04 03:06:19 +05:30
abhigyanpatwari
d0ba992316 feat: improved AI context - full inline content in AGENTS.md and CLAUDE.md with markers for updates 2026-02-04 02:50:51 +05:30
abhigyanpatwari
e2215c1ff9 feat: analyze command auto-finds git root when run from subdirectory 2026-02-04 02:30:16 +05:30
abhigyanpatwari
0c99dbabb1 chore: cleanup empty csv directory after kuzu load 2026-02-04 01:40:59 +05:30
abhigyanpatwari
04b0527f95 feat: auto-generate AI context files after analyze (AGENTS.md, .cursorrules, .windsurfrules) 2026-02-04 01:29:09 +05:30
abhigyanpatwari
a940e09a40 feat: merge gitnexus-mcp into gitnexus package - unified CLI+MCP 2026-02-04 01:12:41 +05:30
abhigyanpatwari
ae56ea1608 standalone MCP working 2026-02-03 04:53:10 +05:30
abhigyanpatwari
8c07bd913b CLI implemented, UI connection to CLI works 2026-02-02 06:08:06 +05:30