Integrate Context-Engine RAG service for enhanced LLM responses

Backend:
- Created context-engine/client.ts - HTTP client for Context-Engine API
- Created context-engine/service.ts - Lifecycle management of Context-Engine sidecar
- Created context-engine/index.ts - Module exports
- Created server/routes/context-engine.ts - API endpoints for status/health/query

Integration:
- workspaces/manager.ts: Trigger indexing when workspace becomes ready (non-blocking)
- index.ts: Initialize ContextEngineService on server start (lazy mode)
- ollama-cloud.ts: Inject RAG context into chat requests when available

Frontend:
- model-selector.tsx: Added Context-Engine status indicator
  - Green dot = Ready (RAG enabled)
  - Blue pulsing dot = Indexing
  - Red dot = Error
  - Hidden when Context-Engine not running

All operations are non-blocking with graceful fallback when Context-Engine is unavailable.
This commit is contained in:
Gemini AI
2025-12-24 22:20:13 +04:00
Unverified
parent e17e7cd32e
commit 743d0367e2
9 changed files with 805 additions and 15 deletions

View File

@@ -19,6 +19,7 @@ import { createLogger } from "./logger"
import { getUserConfigPath } from "./user-data"
import { launchInBrowser } from "./launcher"
import { startReleaseMonitor } from "./releases/release-monitor"
import { initializeContextEngineService, shutdownContextEngineService } from "./context-engine"
const require = createRequire(import.meta.url)
@@ -140,6 +141,16 @@ async function main() {
logger: logger.child({ component: "instance-events" }),
})
// Initialize Context-Engine service (lazy start - starts when first workspace opens)
const contextEngineService = initializeContextEngineService(
{
lazyStart: true,
port: 8000,
host: "localhost",
},
logger.child({ component: "context-engine" })
)
const serverMeta: ServerMeta = {
httpBaseUrl: `http://${options.host}:${options.port}`,
eventsUrl: `/api/events`,
@@ -211,6 +222,13 @@ async function main() {
logger.error({ err: error }, "Workspace manager shutdown failed")
}
try {
await shutdownContextEngineService()
logger.info("Context-Engine shutdown complete")
} catch (error) {
logger.error({ err: error }, "Context-Engine shutdown failed")
}
releaseMonitor.stop()
logger.info("Exiting process")