Commit Graph

27 Commits

Author SHA1 Message Date
lukaszraczylo 1ae8035470 feat(graph): add observation graph with hybrid vector storage
- [x] Add golangci.yml configuration with fieldalignment linter
- [x] Implement observation graph structure with edge detection
- [x] Add LEANN-inspired hybrid vector storage with hub threshold
- [x] Implement graph-aware search with selective recomputation
- [x] Add auto-tuner for dynamic hub threshold adjustment
- [x] Add graph and vector metrics tracking and reporting
- [x] Extend configuration for graph parameters
- [x] Add graph rebuild background service with periodic updates
- [x] Add HTTP endpoints for graph stats and vector metrics
- [x] Update UI with advanced metrics sidebar panel
- [x] Implement AST-aware code chunking for Go, Python, TypeScript
2026-01-07 18:51:40 +00:00
lukaszraczylo 4f4b4ac70f feat(chunking): add AST-aware code chunking for Go, Python, TypeScript
- [x] Add language-specific chunkers with AST parsing (Go, Python, TypeScript)
- [x] Implement chunking manager to dispatch files to appropriate chunkers
- [x] Integrate code chunks into vector sync for semantic search
- [x] Add tree-sitter dependency for Python/TypeScript parsing
- [x] Reorder struct fields for consistency across codebase
- [x] Rename error variables to follow Go conventions (err → unmarshalErr, etc.)
- [x] Add code chunk metadata to vector documents (language, symbol name, line ranges)
- [x] Update worker service to initialize chunking pipeline with all three languages
2026-01-07 13:19:58 +00:00
lukaszraczylo f79782a008 Release dec 2025 (#15)
* Resolves issue #13

- Switched model to bge-small-en-v1.5
- Added lazy re-embedding
- Added model version tracking per vector
- Added conversion of vectors to the new model

* Add lfs support to the workflow.

* Implements importance scoring with decay + voting #6

* Resolves issue #5 by marking observations as superseeded and scheduled for deletion

* Implement pattern detection #7

* Improve injections and observations accuracy

- Session start: Recent observations for project context (recency-based)
- User prompt: Semantically relevant observations (similarity-based with threshold)

* Added two stage retrieval with bi and cross encoder #8

* Implement query expansion and reformulation #9

* Knowledge graph and relationships ( resolves #4 )

- File Overlap Detection: Detects relationships when observations modify/read the same files
- Concept Overlap Detection: Detects relationships based on shared semantic concepts
- Type Progression Detection: Infers relationships from natural observation type progressions (e.g., discovery → bugfix = "fixes")
- Temporal Proximity Detection: Detects relationships between observations in the same session within 5 minutes
- Narrative Mention Detection: Detects explicit relationship language in narratives (e.g., "fixes", "depends on", "supersedes")

* Add visualisation of the relations to the dashboard.

* fixup! Add visualisation of the relations to the dashboard.

* Update documentation with new settings and screenshots.
2025-12-19 17:57:11 +00:00
lukaszraczylo ed8b5e92e1 Display only current project statistics in statusline. (#3) 2025-12-19 02:17:30 +00:00
lukaszraczylo 7e2e4d7b6b Further improvements to the coverage. 2025-12-19 02:17:29 +00:00
lukaszraczylo c259bb1d18 Increase test coverage to 45.6% 2025-12-19 02:17:28 +00:00
lukaszraczylo 4add030bed Increase tests coverage. 2025-12-19 02:17:28 +00:00
lukaszraczylo 2098a38d64 Add restart command, fix post-update restarts as well. 2025-12-19 02:17:27 +00:00
lukaszraczylo cbf6f533f3 Prevent endless loops during connectivity issues. 2025-12-19 02:17:25 +00:00
lukaszraczylo 9a2f66d37c Don't store system / agent summaries. 2025-12-19 02:17:23 +00:00
lukaszraczylo 4440fd0afb Fixes onnx version mismatch, vectordb not liking it and dashboard
Fixes summaries not being generated and timeline showing all observations
despite of project filter being applied.
2025-12-19 02:17:22 +00:00
lukaszraczylo 48e54a6773 Dynamically download ONNX libraries from microshit's website. 2025-12-19 02:17:14 +00:00
lukaszraczylo 02169677a9 Release local embeddings and local sqlite-vec without need for chroma. 2025-12-19 02:17:14 +00:00
lukaszraczylo 6e4c132651 Move from chroma to sqlitevec with local embedding 2025-12-19 02:17:13 +00:00
lukaszraczylo 6a685a79c2 Additional abstractions for both sqlite and chroma. 2025-12-19 02:17:12 +00:00
lukaszraczylo c40fa7317b Dashboard and sdk processor improvements. 2025-12-19 02:17:12 +00:00
lukaszraczylo cded6bb532 Improvements to the queue processing. 2025-12-19 02:17:11 +00:00
lukaszraczylo 0af10165c6 Move SDK processing to async queue. 2025-12-19 02:17:10 +00:00
lukaszraczylo bc4e9e66ae Add the statusline. Fix the installation. 2025-12-19 02:17:09 +00:00
lukaszraczylo be4a7c19d0 Fix the issue with hanging browser tab. 2025-12-19 02:17:08 +00:00
lukaszraczylo 38b3786942 HTTP and SSE dead client fix
Fix 1: HTTP Server timeouts (service.go)
  - Added IdleTimeout: 120s - closes idle keep-alive connections
  - Added ReadTimeout: 30s - prevents hung connections waiting for request data

  Fix 2: SSE dead client cleanup (broadcaster.go) - This was the real leak
  - Bug: When Write() failed on a disconnected client, it just logged and continued - the dead client stayed in the clients map forever
  - Effect: Dead clients accumulated and every Broadcast() call would try (and fail) to write to them
  - Fix: Now tracks failed writes and removes dead clients from the map

  The SSE bug was likely the main cause. Every time a browser tab closed or connection dropped, the client stayed registered. On each broadcast (processing status updates happen frequently), it would try to write to dead connections, fail, but never clean up.
2025-12-19 02:17:07 +00:00
lukaszraczylo 816af36dd3 Startup and update sequence
1. Version mismatch restart loop (pkg/hooks/worker.go):
    - Added versionsCompatible() and extractBaseVersion() functions
    - Hooks no longer restart worker when base versions match (e.g., v0.3.5-dirty ≈ v0.3.5-2-gca711a8-dirty)
2. Auto-update detection (internal/update/update.go):
    - isNewerVersion() now extracts base version before comparing
    - No longer always reports updates for dirty/dev builds
3. Non-blocking ChromaDB sync (internal/worker/handlers.go):
    - SyncUserPrompt now runs in a goroutine with 10-second timeout
    - /api/sessions/init responds immediately without waiting for ChromaDB
2025-12-19 02:17:06 +00:00
lukaszraczylo 7a6182bb3b Fix autoupdate, add healtcheck status to the dashboard 2025-12-19 02:17:05 +00:00
lukaszraczylo 9c7fcbc64c Hotfix: Auto update capability. 2025-12-19 02:17:04 +00:00
lukaszraczylo 7f9a28743e Add placeholder for the build to progress. 2025-12-19 02:17:03 +00:00
lukaszraczylo 85e1dfa7f3 Release to the world. 2025-12-19 02:17:02 +00:00
lukaszraczylo d7c20cea54 Initial commit 2025-12-19 02:17:02 +00:00