@pcircle/memesh 2.10.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp.json +2 -5
- package/README.md +48 -248
- package/dist/cli/view.d.ts +3 -0
- package/dist/cli/view.d.ts.map +1 -0
- package/dist/cli/view.js +484 -0
- package/dist/cli/view.js.map +1 -0
- package/dist/db.d.ts +5 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +80 -0
- package/dist/db.js.map +1 -0
- package/dist/index.d.ts +3 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -33
- package/dist/index.js.map +1 -1
- package/dist/knowledge-graph.d.ts +48 -0
- package/dist/knowledge-graph.d.ts.map +1 -0
- package/dist/knowledge-graph.js +186 -0
- package/dist/knowledge-graph.js.map +1 -0
- package/dist/mcp/server.d.ts +1 -25
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +33 -319
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +93 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +183 -0
- package/dist/mcp/tools.js.map +1 -0
- package/hooks/hooks.json +1 -41
- package/package.json +8 -91
- package/plugin.json +5 -8
- package/scripts/hooks/post-commit.js +132 -299
- package/scripts/hooks/session-start.js +84 -629
- package/.claude-plugin/plugin.json +0 -15
- package/README.de.md +0 -212
- package/README.es.md +0 -212
- package/README.fr.md +0 -212
- package/README.id.md +0 -212
- package/README.ja.md +0 -212
- package/README.ko.md +0 -212
- package/README.th.md +0 -212
- package/README.vi.md +0 -212
- package/README.zh-CN.md +0 -212
- package/README.zh-TW.md +0 -286
- package/dist/cli/config.d.ts +0 -36
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js +0 -398
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/credentials.d.ts +0 -12
- package/dist/cli/credentials.d.ts.map +0 -1
- package/dist/cli/credentials.js +0 -44
- package/dist/cli/credentials.js.map +0 -1
- package/dist/cli/daemon.d.ts +0 -3
- package/dist/cli/daemon.d.ts.map +0 -1
- package/dist/cli/daemon.js +0 -413
- package/dist/cli/daemon.js.map +0 -1
- package/dist/cli/dashboard.d.ts +0 -2
- package/dist/cli/dashboard.d.ts.map +0 -1
- package/dist/cli/dashboard.js +0 -300
- package/dist/cli/dashboard.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -188
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/login.d.ts +0 -4
- package/dist/cli/login.d.ts.map +0 -1
- package/dist/cli/login.js +0 -230
- package/dist/cli/login.js.map +0 -1
- package/dist/cli/logout.d.ts +0 -3
- package/dist/cli/logout.d.ts.map +0 -1
- package/dist/cli/logout.js +0 -23
- package/dist/cli/logout.js.map +0 -1
- package/dist/cli/setup-wizard.d.ts +0 -18
- package/dist/cli/setup-wizard.d.ts.map +0 -1
- package/dist/cli/setup-wizard.js +0 -267
- package/dist/cli/setup-wizard.js.map +0 -1
- package/dist/cli/stats.d.ts +0 -34
- package/dist/cli/stats.d.ts.map +0 -1
- package/dist/cli/stats.js +0 -479
- package/dist/cli/stats.js.map +0 -1
- package/dist/cli/tutorial.d.ts +0 -27
- package/dist/cli/tutorial.d.ts.map +0 -1
- package/dist/cli/tutorial.js +0 -430
- package/dist/cli/tutorial.js.map +0 -1
- package/dist/cloud/MeMeshCloudClient.d.ts +0 -88
- package/dist/cloud/MeMeshCloudClient.d.ts.map +0 -1
- package/dist/cloud/MeMeshCloudClient.js +0 -177
- package/dist/cloud/MeMeshCloudClient.js.map +0 -1
- package/dist/cloud/index.d.ts +0 -3
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js +0 -2
- package/dist/cloud/index.js.map +0 -1
- package/dist/config/index.d.ts +0 -61
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -105
- package/dist/config/index.js.map +0 -1
- package/dist/config/models.d.ts +0 -47
- package/dist/config/models.d.ts.map +0 -1
- package/dist/config/models.js +0 -57
- package/dist/config/models.js.map +0 -1
- package/dist/config/simple-config.d.ts +0 -35
- package/dist/config/simple-config.d.ts.map +0 -1
- package/dist/config/simple-config.js +0 -246
- package/dist/config/simple-config.js.map +0 -1
- package/dist/core/AgentRegistry.d.ts +0 -31
- package/dist/core/AgentRegistry.d.ts.map +0 -1
- package/dist/core/AgentRegistry.js +0 -281
- package/dist/core/AgentRegistry.js.map +0 -1
- package/dist/core/CheckpointDetector.d.ts +0 -25
- package/dist/core/CheckpointDetector.d.ts.map +0 -1
- package/dist/core/CheckpointDetector.js +0 -67
- package/dist/core/CheckpointDetector.js.map +0 -1
- package/dist/core/GitCommandParser.d.ts +0 -11
- package/dist/core/GitCommandParser.d.ts.map +0 -1
- package/dist/core/GitCommandParser.js +0 -43
- package/dist/core/GitCommandParser.js.map +0 -1
- package/dist/core/HealthCheck.d.ts +0 -39
- package/dist/core/HealthCheck.d.ts.map +0 -1
- package/dist/core/HealthCheck.js +0 -219
- package/dist/core/HealthCheck.js.map +0 -1
- package/dist/core/HookIntegration.d.ts +0 -47
- package/dist/core/HookIntegration.d.ts.map +0 -1
- package/dist/core/HookIntegration.js +0 -275
- package/dist/core/HookIntegration.js.map +0 -1
- package/dist/core/MCPToolInterface.d.ts +0 -120
- package/dist/core/MCPToolInterface.d.ts.map +0 -1
- package/dist/core/MCPToolInterface.js +0 -376
- package/dist/core/MCPToolInterface.js.map +0 -1
- package/dist/core/MistakePatternManager.d.ts +0 -31
- package/dist/core/MistakePatternManager.d.ts.map +0 -1
- package/dist/core/MistakePatternManager.js +0 -137
- package/dist/core/MistakePatternManager.js.map +0 -1
- package/dist/core/ResourceMonitor.d.ts +0 -32
- package/dist/core/ResourceMonitor.d.ts.map +0 -1
- package/dist/core/ResourceMonitor.js +0 -243
- package/dist/core/ResourceMonitor.js.map +0 -1
- package/dist/core/ServiceLocator.d.ts +0 -10
- package/dist/core/ServiceLocator.d.ts.map +0 -1
- package/dist/core/ServiceLocator.js +0 -30
- package/dist/core/ServiceLocator.js.map +0 -1
- package/dist/core/TestOutputParser.d.ts +0 -20
- package/dist/core/TestOutputParser.d.ts.map +0 -1
- package/dist/core/TestOutputParser.js +0 -144
- package/dist/core/TestOutputParser.js.map +0 -1
- package/dist/core/types.d.ts +0 -66
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -11
- package/dist/core/types.js.map +0 -1
- package/dist/db/ConnectionPool.d.ts +0 -50
- package/dist/db/ConnectionPool.d.ts.map +0 -1
- package/dist/db/ConnectionPool.js +0 -569
- package/dist/db/ConnectionPool.js.map +0 -1
- package/dist/db/IDatabaseAdapter.d.ts +0 -25
- package/dist/db/IDatabaseAdapter.d.ts.map +0 -1
- package/dist/db/IDatabaseAdapter.js +0 -2
- package/dist/db/IDatabaseAdapter.js.map +0 -1
- package/dist/db/QueryCache.d.ts +0 -46
- package/dist/db/QueryCache.d.ts.map +0 -1
- package/dist/db/QueryCache.js +0 -232
- package/dist/db/QueryCache.js.map +0 -1
- package/dist/db/adapters/BetterSqlite3Adapter.d.ts +0 -15
- package/dist/db/adapters/BetterSqlite3Adapter.d.ts.map +0 -1
- package/dist/db/adapters/BetterSqlite3Adapter.js +0 -127
- package/dist/db/adapters/BetterSqlite3Adapter.js.map +0 -1
- package/dist/embeddings/EmbeddingService.d.ts +0 -23
- package/dist/embeddings/EmbeddingService.d.ts.map +0 -1
- package/dist/embeddings/EmbeddingService.js +0 -131
- package/dist/embeddings/EmbeddingService.js.map +0 -1
- package/dist/embeddings/InMemoryVectorAdapter.d.ts +0 -15
- package/dist/embeddings/InMemoryVectorAdapter.d.ts.map +0 -1
- package/dist/embeddings/InMemoryVectorAdapter.js +0 -58
- package/dist/embeddings/InMemoryVectorAdapter.js.map +0 -1
- package/dist/embeddings/ModelManager.d.ts +0 -18
- package/dist/embeddings/ModelManager.d.ts.map +0 -1
- package/dist/embeddings/ModelManager.js +0 -84
- package/dist/embeddings/ModelManager.js.map +0 -1
- package/dist/embeddings/SqliteVecAdapter.d.ts +0 -15
- package/dist/embeddings/SqliteVecAdapter.d.ts.map +0 -1
- package/dist/embeddings/SqliteVecAdapter.js +0 -107
- package/dist/embeddings/SqliteVecAdapter.js.map +0 -1
- package/dist/embeddings/VectorExtension.d.ts +0 -17
- package/dist/embeddings/VectorExtension.d.ts.map +0 -1
- package/dist/embeddings/VectorExtension.js +0 -107
- package/dist/embeddings/VectorExtension.js.map +0 -1
- package/dist/embeddings/VectorSearchAdapter.d.ts +0 -17
- package/dist/embeddings/VectorSearchAdapter.d.ts.map +0 -1
- package/dist/embeddings/VectorSearchAdapter.js +0 -2
- package/dist/embeddings/VectorSearchAdapter.js.map +0 -1
- package/dist/embeddings/index.d.ts +0 -9
- package/dist/embeddings/index.d.ts.map +0 -1
- package/dist/embeddings/index.js +0 -7
- package/dist/embeddings/index.js.map +0 -1
- package/dist/errors/ErrorClassifier.d.ts +0 -60
- package/dist/errors/ErrorClassifier.d.ts.map +0 -1
- package/dist/errors/ErrorClassifier.js +0 -415
- package/dist/errors/ErrorClassifier.js.map +0 -1
- package/dist/errors/index.d.ts +0 -63
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -127
- package/dist/errors/index.js.map +0 -1
- package/dist/i18n/index.d.ts +0 -9
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/index.js +0 -78
- package/dist/i18n/index.js.map +0 -1
- package/dist/i18n/locales/en.d.ts +0 -3
- package/dist/i18n/locales/en.d.ts.map +0 -1
- package/dist/i18n/locales/en.js +0 -32
- package/dist/i18n/locales/en.js.map +0 -1
- package/dist/i18n/locales/index.d.ts +0 -5
- package/dist/i18n/locales/index.d.ts.map +0 -1
- package/dist/i18n/locales/index.js +0 -5
- package/dist/i18n/locales/index.js.map +0 -1
- package/dist/i18n/locales/ja.d.ts +0 -3
- package/dist/i18n/locales/ja.d.ts.map +0 -1
- package/dist/i18n/locales/ja.js +0 -30
- package/dist/i18n/locales/ja.js.map +0 -1
- package/dist/i18n/locales/zh-CN.d.ts +0 -3
- package/dist/i18n/locales/zh-CN.d.ts.map +0 -1
- package/dist/i18n/locales/zh-CN.js +0 -30
- package/dist/i18n/locales/zh-CN.js.map +0 -1
- package/dist/i18n/locales/zh-TW.d.ts +0 -3
- package/dist/i18n/locales/zh-TW.d.ts.map +0 -1
- package/dist/i18n/locales/zh-TW.js +0 -30
- package/dist/i18n/locales/zh-TW.js.map +0 -1
- package/dist/i18n/types.d.ts +0 -11
- package/dist/i18n/types.d.ts.map +0 -1
- package/dist/i18n/types.js +0 -3
- package/dist/i18n/types.js.map +0 -1
- package/dist/integrations/session-memory/SessionContextInjector.d.ts +0 -30
- package/dist/integrations/session-memory/SessionContextInjector.d.ts.map +0 -1
- package/dist/integrations/session-memory/SessionContextInjector.js +0 -192
- package/dist/integrations/session-memory/SessionContextInjector.js.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryIngester.d.ts +0 -15
- package/dist/integrations/session-memory/SessionMemoryIngester.d.ts.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryIngester.js +0 -229
- package/dist/integrations/session-memory/SessionMemoryIngester.js.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryParser.d.ts +0 -16
- package/dist/integrations/session-memory/SessionMemoryParser.d.ts.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryParser.js +0 -271
- package/dist/integrations/session-memory/SessionMemoryParser.js.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryPipeline.d.ts +0 -20
- package/dist/integrations/session-memory/SessionMemoryPipeline.d.ts.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryPipeline.js +0 -60
- package/dist/integrations/session-memory/SessionMemoryPipeline.js.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryWatcher.d.ts +0 -27
- package/dist/integrations/session-memory/SessionMemoryWatcher.d.ts.map +0 -1
- package/dist/integrations/session-memory/SessionMemoryWatcher.js +0 -145
- package/dist/integrations/session-memory/SessionMemoryWatcher.js.map +0 -1
- package/dist/integrations/session-memory/index.d.ts +0 -9
- package/dist/integrations/session-memory/index.d.ts.map +0 -1
- package/dist/integrations/session-memory/index.js +0 -6
- package/dist/integrations/session-memory/index.js.map +0 -1
- package/dist/integrations/session-memory/types.d.ts +0 -74
- package/dist/integrations/session-memory/types.d.ts.map +0 -1
- package/dist/integrations/session-memory/types.js +0 -22
- package/dist/integrations/session-memory/types.js.map +0 -1
- package/dist/knowledge-graph/ContentHasher.d.ts +0 -4
- package/dist/knowledge-graph/ContentHasher.d.ts.map +0 -1
- package/dist/knowledge-graph/ContentHasher.js +0 -8
- package/dist/knowledge-graph/ContentHasher.js.map +0 -1
- package/dist/knowledge-graph/KGSearchEngine.d.ts +0 -37
- package/dist/knowledge-graph/KGSearchEngine.d.ts.map +0 -1
- package/dist/knowledge-graph/KGSearchEngine.js +0 -257
- package/dist/knowledge-graph/KGSearchEngine.js.map +0 -1
- package/dist/knowledge-graph/index.d.ts +0 -64
- package/dist/knowledge-graph/index.d.ts.map +0 -1
- package/dist/knowledge-graph/index.js +0 -681
- package/dist/knowledge-graph/index.js.map +0 -1
- package/dist/knowledge-graph/types.d.ts +0 -38
- package/dist/knowledge-graph/types.d.ts.map +0 -1
- package/dist/knowledge-graph/types.js +0 -2
- package/dist/knowledge-graph/types.js.map +0 -1
- package/dist/management/UninstallManager.d.ts +0 -23
- package/dist/management/UninstallManager.d.ts.map +0 -1
- package/dist/management/UninstallManager.js +0 -186
- package/dist/management/UninstallManager.js.map +0 -1
- package/dist/management/index.d.ts +0 -3
- package/dist/management/index.d.ts.map +0 -1
- package/dist/management/index.js +0 -2
- package/dist/management/index.js.map +0 -1
- package/dist/mcp/BuddyCommands.d.ts +0 -24
- package/dist/mcp/BuddyCommands.d.ts.map +0 -1
- package/dist/mcp/BuddyCommands.js +0 -423
- package/dist/mcp/BuddyCommands.js.map +0 -1
- package/dist/mcp/ClaudeMdReloader.d.ts +0 -37
- package/dist/mcp/ClaudeMdReloader.d.ts.map +0 -1
- package/dist/mcp/ClaudeMdReloader.js +0 -92
- package/dist/mcp/ClaudeMdReloader.js.map +0 -1
- package/dist/mcp/HumanInLoopUI.d.ts +0 -23
- package/dist/mcp/HumanInLoopUI.d.ts.map +0 -1
- package/dist/mcp/HumanInLoopUI.js +0 -92
- package/dist/mcp/HumanInLoopUI.js.map +0 -1
- package/dist/mcp/ProgressReporter.d.ts +0 -14
- package/dist/mcp/ProgressReporter.d.ts.map +0 -1
- package/dist/mcp/ProgressReporter.js +0 -22
- package/dist/mcp/ProgressReporter.js.map +0 -1
- package/dist/mcp/SamplingClient.d.ts +0 -32
- package/dist/mcp/SamplingClient.d.ts.map +0 -1
- package/dist/mcp/SamplingClient.js +0 -63
- package/dist/mcp/SamplingClient.js.map +0 -1
- package/dist/mcp/ServerInitializer.d.ts +0 -40
- package/dist/mcp/ServerInitializer.d.ts.map +0 -1
- package/dist/mcp/ServerInitializer.js +0 -147
- package/dist/mcp/ServerInitializer.js.map +0 -1
- package/dist/mcp/SessionBootstrapper.d.ts +0 -13
- package/dist/mcp/SessionBootstrapper.d.ts.map +0 -1
- package/dist/mcp/SessionBootstrapper.js +0 -82
- package/dist/mcp/SessionBootstrapper.js.map +0 -1
- package/dist/mcp/StdinBufferManager.d.ts +0 -11
- package/dist/mcp/StdinBufferManager.d.ts.map +0 -1
- package/dist/mcp/StdinBufferManager.js +0 -62
- package/dist/mcp/StdinBufferManager.js.map +0 -1
- package/dist/mcp/ToolDefinitions.d.ts +0 -44
- package/dist/mcp/ToolDefinitions.d.ts.map +0 -1
- package/dist/mcp/ToolDefinitions.js +0 -445
- package/dist/mcp/ToolDefinitions.js.map +0 -1
- package/dist/mcp/ToolRouter.d.ts +0 -27
- package/dist/mcp/ToolRouter.d.ts.map +0 -1
- package/dist/mcp/ToolRouter.js +0 -179
- package/dist/mcp/ToolRouter.js.map +0 -1
- package/dist/mcp/daemon/DaemonBootstrap.d.ts +0 -33
- package/dist/mcp/daemon/DaemonBootstrap.d.ts.map +0 -1
- package/dist/mcp/daemon/DaemonBootstrap.js +0 -155
- package/dist/mcp/daemon/DaemonBootstrap.js.map +0 -1
- package/dist/mcp/daemon/DaemonLockManager.d.ts +0 -47
- package/dist/mcp/daemon/DaemonLockManager.d.ts.map +0 -1
- package/dist/mcp/daemon/DaemonLockManager.js +0 -417
- package/dist/mcp/daemon/DaemonLockManager.js.map +0 -1
- package/dist/mcp/daemon/DaemonProtocol.d.ts +0 -127
- package/dist/mcp/daemon/DaemonProtocol.d.ts.map +0 -1
- package/dist/mcp/daemon/DaemonProtocol.js +0 -452
- package/dist/mcp/daemon/DaemonProtocol.js.map +0 -1
- package/dist/mcp/daemon/DaemonSocketServer.d.ts +0 -71
- package/dist/mcp/daemon/DaemonSocketServer.d.ts.map +0 -1
- package/dist/mcp/daemon/DaemonSocketServer.js +0 -384
- package/dist/mcp/daemon/DaemonSocketServer.js.map +0 -1
- package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts +0 -67
- package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts.map +0 -1
- package/dist/mcp/daemon/GracefulShutdownCoordinator.js +0 -206
- package/dist/mcp/daemon/GracefulShutdownCoordinator.js.map +0 -1
- package/dist/mcp/daemon/IpcTransport.d.ts +0 -42
- package/dist/mcp/daemon/IpcTransport.d.ts.map +0 -1
- package/dist/mcp/daemon/IpcTransport.js +0 -231
- package/dist/mcp/daemon/IpcTransport.js.map +0 -1
- package/dist/mcp/daemon/StdioProxyClient.d.ts +0 -84
- package/dist/mcp/daemon/StdioProxyClient.d.ts.map +0 -1
- package/dist/mcp/daemon/StdioProxyClient.js +0 -574
- package/dist/mcp/daemon/StdioProxyClient.js.map +0 -1
- package/dist/mcp/daemon/VersionManager.d.ts +0 -35
- package/dist/mcp/daemon/VersionManager.d.ts.map +0 -1
- package/dist/mcp/daemon/VersionManager.js +0 -169
- package/dist/mcp/daemon/VersionManager.js.map +0 -1
- package/dist/mcp/daemon/index.d.ts +0 -9
- package/dist/mcp/daemon/index.d.ts.map +0 -1
- package/dist/mcp/daemon/index.js +0 -9
- package/dist/mcp/daemon/index.js.map +0 -1
- package/dist/mcp/handlers/BuddyHandlers.d.ts +0 -18
- package/dist/mcp/handlers/BuddyHandlers.d.ts.map +0 -1
- package/dist/mcp/handlers/BuddyHandlers.js +0 -179
- package/dist/mcp/handlers/BuddyHandlers.js.map +0 -1
- package/dist/mcp/handlers/BuddyRecordMistake.d.ts +0 -17
- package/dist/mcp/handlers/BuddyRecordMistake.d.ts.map +0 -1
- package/dist/mcp/handlers/BuddyRecordMistake.js +0 -147
- package/dist/mcp/handlers/BuddyRecordMistake.js.map +0 -1
- package/dist/mcp/handlers/HookToolHandler.d.ts +0 -10
- package/dist/mcp/handlers/HookToolHandler.d.ts.map +0 -1
- package/dist/mcp/handlers/HookToolHandler.js +0 -92
- package/dist/mcp/handlers/HookToolHandler.js.map +0 -1
- package/dist/mcp/handlers/MemoryToolHandler.d.ts +0 -21
- package/dist/mcp/handlers/MemoryToolHandler.d.ts.map +0 -1
- package/dist/mcp/handlers/MemoryToolHandler.js +0 -433
- package/dist/mcp/handlers/MemoryToolHandler.js.map +0 -1
- package/dist/mcp/handlers/ResourceHandlers.d.ts +0 -3
- package/dist/mcp/handlers/ResourceHandlers.d.ts.map +0 -1
- package/dist/mcp/handlers/ResourceHandlers.js +0 -133
- package/dist/mcp/handlers/ResourceHandlers.js.map +0 -1
- package/dist/mcp/handlers/SystemToolHandler.d.ts +0 -14
- package/dist/mcp/handlers/SystemToolHandler.d.ts.map +0 -1
- package/dist/mcp/handlers/SystemToolHandler.js +0 -224
- package/dist/mcp/handlers/SystemToolHandler.js.map +0 -1
- package/dist/mcp/handlers/ToolHandlers.d.ts +0 -26
- package/dist/mcp/handlers/ToolHandlers.d.ts.map +0 -1
- package/dist/mcp/handlers/ToolHandlers.js +0 -41
- package/dist/mcp/handlers/ToolHandlers.js.map +0 -1
- package/dist/mcp/handlers/index.d.ts +0 -7
- package/dist/mcp/handlers/index.d.ts.map +0 -1
- package/dist/mcp/handlers/index.js +0 -7
- package/dist/mcp/handlers/index.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -5
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -3
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/resources/ResourceRegistry.d.ts +0 -23
- package/dist/mcp/resources/ResourceRegistry.d.ts.map +0 -1
- package/dist/mcp/resources/ResourceRegistry.js +0 -26
- package/dist/mcp/resources/ResourceRegistry.js.map +0 -1
- package/dist/mcp/resources/URITemplateHandler.d.ts +0 -8
- package/dist/mcp/resources/URITemplateHandler.d.ts.map +0 -1
- package/dist/mcp/resources/URITemplateHandler.js +0 -29
- package/dist/mcp/resources/URITemplateHandler.js.map +0 -1
- package/dist/mcp/resources/best-practices.md +0 -53
- package/dist/mcp/resources/buddy-do-skill.md +0 -84
- package/dist/mcp/resources/ccb-complete-guide.md +0 -247
- package/dist/mcp/resources/examples.md +0 -47
- package/dist/mcp/resources/handlers/AgentStatusHandler.d.ts +0 -7
- package/dist/mcp/resources/handlers/AgentStatusHandler.d.ts.map +0 -1
- package/dist/mcp/resources/handlers/AgentStatusHandler.js +0 -41
- package/dist/mcp/resources/handlers/AgentStatusHandler.js.map +0 -1
- package/dist/mcp/resources/handlers/TaskLogsHandler.d.ts +0 -7
- package/dist/mcp/resources/handlers/TaskLogsHandler.d.ts.map +0 -1
- package/dist/mcp/resources/handlers/TaskLogsHandler.js +0 -35
- package/dist/mcp/resources/handlers/TaskLogsHandler.js.map +0 -1
- package/dist/mcp/resources/quick-reference.md +0 -71
- package/dist/mcp/resources/usage-guide.md +0 -74
- package/dist/mcp/schemas/OutputSchemas.d.ts +0 -437
- package/dist/mcp/schemas/OutputSchemas.d.ts.map +0 -1
- package/dist/mcp/schemas/OutputSchemas.js +0 -215
- package/dist/mcp/schemas/OutputSchemas.js.map +0 -1
- package/dist/mcp/server-bootstrap.d.ts +0 -3
- package/dist/mcp/server-bootstrap.d.ts.map +0 -1
- package/dist/mcp/server-bootstrap.js +0 -391
- package/dist/mcp/server-bootstrap.js.map +0 -1
- package/dist/mcp/tools/add-observations.d.ts +0 -48
- package/dist/mcp/tools/add-observations.d.ts.map +0 -1
- package/dist/mcp/tools/add-observations.js +0 -64
- package/dist/mcp/tools/add-observations.js.map +0 -1
- package/dist/mcp/tools/buddy-do.d.ts +0 -15
- package/dist/mcp/tools/buddy-do.d.ts.map +0 -1
- package/dist/mcp/tools/buddy-do.js +0 -191
- package/dist/mcp/tools/buddy-do.js.map +0 -1
- package/dist/mcp/tools/buddy-help.d.ts +0 -13
- package/dist/mcp/tools/buddy-help.d.ts.map +0 -1
- package/dist/mcp/tools/buddy-help.js +0 -44
- package/dist/mcp/tools/buddy-help.js.map +0 -1
- package/dist/mcp/tools/buddy-remember.d.ts +0 -24
- package/dist/mcp/tools/buddy-remember.d.ts.map +0 -1
- package/dist/mcp/tools/buddy-remember.js +0 -304
- package/dist/mcp/tools/buddy-remember.js.map +0 -1
- package/dist/mcp/tools/create-entities.d.ts +0 -66
- package/dist/mcp/tools/create-entities.d.ts.map +0 -1
- package/dist/mcp/tools/create-entities.js +0 -224
- package/dist/mcp/tools/create-entities.js.map +0 -1
- package/dist/mcp/tools/create-relations.d.ts +0 -60
- package/dist/mcp/tools/create-relations.d.ts.map +0 -1
- package/dist/mcp/tools/create-relations.js +0 -84
- package/dist/mcp/tools/create-relations.js.map +0 -1
- package/dist/mcp/tools/generate-tests.d.ts +0 -11
- package/dist/mcp/tools/generate-tests.d.ts.map +0 -1
- package/dist/mcp/tools/generate-tests.js +0 -19
- package/dist/mcp/tools/generate-tests.js.map +0 -1
- package/dist/mcp/tools/health-check.d.ts +0 -10
- package/dist/mcp/tools/health-check.d.ts.map +0 -1
- package/dist/mcp/tools/health-check.js +0 -37
- package/dist/mcp/tools/health-check.js.map +0 -1
- package/dist/mcp/tools/memesh-agent-register.d.ts +0 -20
- package/dist/mcp/tools/memesh-agent-register.d.ts.map +0 -1
- package/dist/mcp/tools/memesh-agent-register.js +0 -80
- package/dist/mcp/tools/memesh-agent-register.js.map +0 -1
- package/dist/mcp/tools/memesh-cloud-sync.d.ts +0 -30
- package/dist/mcp/tools/memesh-cloud-sync.d.ts.map +0 -1
- package/dist/mcp/tools/memesh-cloud-sync.js +0 -257
- package/dist/mcp/tools/memesh-cloud-sync.js.map +0 -1
- package/dist/mcp/tools/memesh-metrics.d.ts +0 -13
- package/dist/mcp/tools/memesh-metrics.d.ts.map +0 -1
- package/dist/mcp/tools/memesh-metrics.js +0 -193
- package/dist/mcp/tools/memesh-metrics.js.map +0 -1
- package/dist/mcp/tools/recall-memory.d.ts +0 -31
- package/dist/mcp/tools/recall-memory.d.ts.map +0 -1
- package/dist/mcp/tools/recall-memory.js +0 -31
- package/dist/mcp/tools/recall-memory.js.map +0 -1
- package/dist/mcp/validation.d.ts +0 -76
- package/dist/mcp/validation.d.ts.map +0 -1
- package/dist/mcp/validation.js +0 -106
- package/dist/mcp/validation.js.map +0 -1
- package/dist/memory/AutoMemoryRecorder.d.ts +0 -35
- package/dist/memory/AutoMemoryRecorder.d.ts.map +0 -1
- package/dist/memory/AutoMemoryRecorder.js +0 -164
- package/dist/memory/AutoMemoryRecorder.js.map +0 -1
- package/dist/memory/AutoTagger.d.ts +0 -9
- package/dist/memory/AutoTagger.d.ts.map +0 -1
- package/dist/memory/AutoTagger.js +0 -149
- package/dist/memory/AutoTagger.js.map +0 -1
- package/dist/memory/BuiltInRules.d.ts +0 -54
- package/dist/memory/BuiltInRules.d.ts.map +0 -1
- package/dist/memory/BuiltInRules.js +0 -161
- package/dist/memory/BuiltInRules.js.map +0 -1
- package/dist/memory/EnhancedRetrieval.d.ts +0 -22
- package/dist/memory/EnhancedRetrieval.d.ts.map +0 -1
- package/dist/memory/EnhancedRetrieval.js +0 -63
- package/dist/memory/EnhancedRetrieval.js.map +0 -1
- package/dist/memory/EntityTypes.d.ts +0 -14
- package/dist/memory/EntityTypes.d.ts.map +0 -1
- package/dist/memory/EntityTypes.js +0 -19
- package/dist/memory/EntityTypes.js.map +0 -1
- package/dist/memory/MemorySearchEngine.d.ts +0 -17
- package/dist/memory/MemorySearchEngine.d.ts.map +0 -1
- package/dist/memory/MemorySearchEngine.js +0 -88
- package/dist/memory/MemorySearchEngine.js.map +0 -1
- package/dist/memory/MistakePatternEngine.d.ts +0 -15
- package/dist/memory/MistakePatternEngine.d.ts.map +0 -1
- package/dist/memory/MistakePatternEngine.js +0 -99
- package/dist/memory/MistakePatternEngine.js.map +0 -1
- package/dist/memory/PreventionHook.d.ts +0 -28
- package/dist/memory/PreventionHook.d.ts.map +0 -1
- package/dist/memory/PreventionHook.js +0 -21
- package/dist/memory/PreventionHook.js.map +0 -1
- package/dist/memory/ProactiveRecaller.d.ts +0 -26
- package/dist/memory/ProactiveRecaller.d.ts.map +0 -1
- package/dist/memory/ProactiveRecaller.js +0 -96
- package/dist/memory/ProactiveRecaller.js.map +0 -1
- package/dist/memory/ProjectAutoTracker.d.ts +0 -80
- package/dist/memory/ProjectAutoTracker.d.ts.map +0 -1
- package/dist/memory/ProjectAutoTracker.js +0 -386
- package/dist/memory/ProjectAutoTracker.js.map +0 -1
- package/dist/memory/ProjectMemoryCleanup.d.ts +0 -17
- package/dist/memory/ProjectMemoryCleanup.d.ts.map +0 -1
- package/dist/memory/ProjectMemoryCleanup.js +0 -57
- package/dist/memory/ProjectMemoryCleanup.js.map +0 -1
- package/dist/memory/ProjectMemoryManager.d.ts +0 -19
- package/dist/memory/ProjectMemoryManager.d.ts.map +0 -1
- package/dist/memory/ProjectMemoryManager.js +0 -62
- package/dist/memory/ProjectMemoryManager.js.map +0 -1
- package/dist/memory/SmartMemoryQuery.d.ts +0 -9
- package/dist/memory/SmartMemoryQuery.d.ts.map +0 -1
- package/dist/memory/SmartMemoryQuery.js +0 -66
- package/dist/memory/SmartMemoryQuery.js.map +0 -1
- package/dist/memory/UnifiedMemoryStore.d.ts +0 -27
- package/dist/memory/UnifiedMemoryStore.d.ts.map +0 -1
- package/dist/memory/UnifiedMemoryStore.js +0 -536
- package/dist/memory/UnifiedMemoryStore.js.map +0 -1
- package/dist/memory/UserPreferenceEngine.d.ts +0 -18
- package/dist/memory/UserPreferenceEngine.d.ts.map +0 -1
- package/dist/memory/UserPreferenceEngine.js +0 -117
- package/dist/memory/UserPreferenceEngine.js.map +0 -1
- package/dist/memory/config/semantic-groups.d.ts +0 -9
- package/dist/memory/config/semantic-groups.d.ts.map +0 -1
- package/dist/memory/config/semantic-groups.js +0 -22
- package/dist/memory/config/semantic-groups.js.map +0 -1
- package/dist/memory/index.d.ts +0 -16
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/index.js +0 -12
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/types/index.d.ts +0 -7
- package/dist/memory/types/index.d.ts.map +0 -1
- package/dist/memory/types/index.js +0 -4
- package/dist/memory/types/index.js.map +0 -1
- package/dist/memory/types/memory-scope.d.ts +0 -27
- package/dist/memory/types/memory-scope.d.ts.map +0 -1
- package/dist/memory/types/memory-scope.js +0 -67
- package/dist/memory/types/memory-scope.js.map +0 -1
- package/dist/memory/types/pattern-types.d.ts +0 -66
- package/dist/memory/types/pattern-types.d.ts.map +0 -1
- package/dist/memory/types/pattern-types.js +0 -2
- package/dist/memory/types/pattern-types.js.map +0 -1
- package/dist/memory/types/preference-types.d.ts +0 -28
- package/dist/memory/types/preference-types.d.ts.map +0 -1
- package/dist/memory/types/preference-types.js +0 -2
- package/dist/memory/types/preference-types.js.map +0 -1
- package/dist/memory/types/unified-memory.d.ts +0 -29
- package/dist/memory/types/unified-memory.d.ts.map +0 -1
- package/dist/memory/types/unified-memory.js +0 -21
- package/dist/memory/types/unified-memory.js.map +0 -1
- package/dist/prompts/templates/PromptTemplates.d.ts +0 -11
- package/dist/prompts/templates/PromptTemplates.d.ts.map +0 -1
- package/dist/prompts/templates/PromptTemplates.js +0 -942
- package/dist/prompts/templates/PromptTemplates.js.map +0 -1
- package/dist/prompts/templates/index.d.ts +0 -2
- package/dist/prompts/templates/index.d.ts.map +0 -1
- package/dist/prompts/templates/index.js +0 -2
- package/dist/prompts/templates/index.js.map +0 -1
- package/dist/skills/SkillManager.d.ts +0 -33
- package/dist/skills/SkillManager.d.ts.map +0 -1
- package/dist/skills/SkillManager.js +0 -153
- package/dist/skills/SkillManager.js.map +0 -1
- package/dist/skills/index.d.ts +0 -3
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/skills/index.js +0 -2
- package/dist/skills/index.js.map +0 -1
- package/dist/telemetry/TelemetryCollector.d.ts +0 -19
- package/dist/telemetry/TelemetryCollector.d.ts.map +0 -1
- package/dist/telemetry/TelemetryCollector.js +0 -62
- package/dist/telemetry/TelemetryCollector.js.map +0 -1
- package/dist/telemetry/TelemetryStore.d.ts +0 -20
- package/dist/telemetry/TelemetryStore.d.ts.map +0 -1
- package/dist/telemetry/TelemetryStore.js +0 -127
- package/dist/telemetry/TelemetryStore.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -8
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -33
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/sanitization.d.ts +0 -6
- package/dist/telemetry/sanitization.d.ts.map +0 -1
- package/dist/telemetry/sanitization.js +0 -180
- package/dist/telemetry/sanitization.js.map +0 -1
- package/dist/telemetry/types.d.ts +0 -73
- package/dist/telemetry/types.d.ts.map +0 -1
- package/dist/telemetry/types.js +0 -16
- package/dist/telemetry/types.js.map +0 -1
- package/dist/tools/TestGenerator.d.ts +0 -8
- package/dist/tools/TestGenerator.d.ts.map +0 -1
- package/dist/tools/TestGenerator.js +0 -54
- package/dist/tools/TestGenerator.js.map +0 -1
- package/dist/types/AgentClassification.d.ts +0 -30
- package/dist/types/AgentClassification.d.ts.map +0 -1
- package/dist/types/AgentClassification.js +0 -19
- package/dist/types/AgentClassification.js.map +0 -1
- package/dist/types/Checkpoint.d.ts +0 -12
- package/dist/types/Checkpoint.d.ts.map +0 -1
- package/dist/types/Checkpoint.js +0 -13
- package/dist/types/Checkpoint.js.map +0 -1
- package/dist/types/toonify.d.ts +0 -91
- package/dist/types/toonify.d.ts.map +0 -1
- package/dist/types/toonify.js +0 -18
- package/dist/types/toonify.js.map +0 -1
- package/dist/ui/AsciiProgressBar.d.ts +0 -29
- package/dist/ui/AsciiProgressBar.d.ts.map +0 -1
- package/dist/ui/AsciiProgressBar.js +0 -130
- package/dist/ui/AsciiProgressBar.js.map +0 -1
- package/dist/ui/AttributionManager.d.ts +0 -19
- package/dist/ui/AttributionManager.d.ts.map +0 -1
- package/dist/ui/AttributionManager.js +0 -107
- package/dist/ui/AttributionManager.js.map +0 -1
- package/dist/ui/Dashboard.d.ts +0 -24
- package/dist/ui/Dashboard.d.ts.map +0 -1
- package/dist/ui/Dashboard.js +0 -135
- package/dist/ui/Dashboard.js.map +0 -1
- package/dist/ui/LoadingIndicator.d.ts +0 -53
- package/dist/ui/LoadingIndicator.d.ts.map +0 -1
- package/dist/ui/LoadingIndicator.js +0 -211
- package/dist/ui/LoadingIndicator.js.map +0 -1
- package/dist/ui/MetricsStore.d.ts +0 -15
- package/dist/ui/MetricsStore.d.ts.map +0 -1
- package/dist/ui/MetricsStore.js +0 -131
- package/dist/ui/MetricsStore.js.map +0 -1
- package/dist/ui/ProgressIndicator.d.ts +0 -35
- package/dist/ui/ProgressIndicator.d.ts.map +0 -1
- package/dist/ui/ProgressIndicator.js +0 -177
- package/dist/ui/ProgressIndicator.js.map +0 -1
- package/dist/ui/ProgressRenderer.d.ts +0 -24
- package/dist/ui/ProgressRenderer.d.ts.map +0 -1
- package/dist/ui/ProgressRenderer.js +0 -143
- package/dist/ui/ProgressRenderer.js.map +0 -1
- package/dist/ui/ResponseFormatter.d.ts +0 -57
- package/dist/ui/ResponseFormatter.d.ts.map +0 -1
- package/dist/ui/ResponseFormatter.js +0 -513
- package/dist/ui/ResponseFormatter.js.map +0 -1
- package/dist/ui/UIEventBus.d.ts +0 -38
- package/dist/ui/UIEventBus.d.ts.map +0 -1
- package/dist/ui/UIEventBus.js +0 -173
- package/dist/ui/UIEventBus.js.map +0 -1
- package/dist/ui/accessibility.d.ts +0 -28
- package/dist/ui/accessibility.d.ts.map +0 -1
- package/dist/ui/accessibility.js +0 -97
- package/dist/ui/accessibility.js.map +0 -1
- package/dist/ui/design-tokens.d.ts +0 -36
- package/dist/ui/design-tokens.d.ts.map +0 -1
- package/dist/ui/design-tokens.js +0 -94
- package/dist/ui/design-tokens.js.map +0 -1
- package/dist/ui/index.d.ts +0 -8
- package/dist/ui/index.d.ts.map +0 -1
- package/dist/ui/index.js +0 -6
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/theme.d.ts +0 -313
- package/dist/ui/theme.d.ts.map +0 -1
- package/dist/ui/theme.js +0 -198
- package/dist/ui/theme.js.map +0 -1
- package/dist/ui/types.d.ts +0 -146
- package/dist/ui/types.d.ts.map +0 -1
- package/dist/ui/types.js +0 -16
- package/dist/ui/types.js.map +0 -1
- package/dist/utils/ILogger.d.ts +0 -7
- package/dist/utils/ILogger.d.ts.map +0 -1
- package/dist/utils/ILogger.js +0 -2
- package/dist/utils/ILogger.js.map +0 -1
- package/dist/utils/MinHeap.d.ts +0 -15
- package/dist/utils/MinHeap.d.ts.map +0 -1
- package/dist/utils/MinHeap.js +0 -69
- package/dist/utils/MinHeap.js.map +0 -1
- package/dist/utils/PathResolver.d.ts +0 -13
- package/dist/utils/PathResolver.d.ts.map +0 -1
- package/dist/utils/PathResolver.js +0 -77
- package/dist/utils/PathResolver.js.map +0 -1
- package/dist/utils/RateLimiter.d.ts +0 -28
- package/dist/utils/RateLimiter.d.ts.map +0 -1
- package/dist/utils/RateLimiter.js +0 -115
- package/dist/utils/RateLimiter.js.map +0 -1
- package/dist/utils/SystemResources.d.ts +0 -40
- package/dist/utils/SystemResources.d.ts.map +0 -1
- package/dist/utils/SystemResources.js +0 -216
- package/dist/utils/SystemResources.js.map +0 -1
- package/dist/utils/errorHandler.d.ts +0 -49
- package/dist/utils/errorHandler.d.ts.map +0 -1
- package/dist/utils/errorHandler.js +0 -397
- package/dist/utils/errorHandler.js.map +0 -1
- package/dist/utils/index.d.ts +0 -17
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -15
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/json.d.ts +0 -13
- package/dist/utils/json.d.ts.map +0 -1
- package/dist/utils/json.js +0 -95
- package/dist/utils/json.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -16
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -125
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/lru-cache.d.ts +0 -47
- package/dist/utils/lru-cache.d.ts.map +0 -1
- package/dist/utils/lru-cache.js +0 -239
- package/dist/utils/lru-cache.js.map +0 -1
- package/dist/utils/memory.d.ts +0 -20
- package/dist/utils/memory.d.ts.map +0 -1
- package/dist/utils/memory.js +0 -53
- package/dist/utils/memory.js.map +0 -1
- package/dist/utils/money.d.ts +0 -10
- package/dist/utils/money.d.ts.map +0 -1
- package/dist/utils/money.js +0 -25
- package/dist/utils/money.js.map +0 -1
- package/dist/utils/pathValidation.d.ts +0 -2
- package/dist/utils/pathValidation.d.ts.map +0 -1
- package/dist/utils/pathValidation.js +0 -62
- package/dist/utils/pathValidation.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -4
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js +0 -28
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/requestId.d.ts +0 -4
- package/dist/utils/requestId.d.ts.map +0 -1
- package/dist/utils/requestId.js +0 -17
- package/dist/utils/requestId.js.map +0 -1
- package/dist/utils/retry.d.ts +0 -20
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js +0 -226
- package/dist/utils/retry.js.map +0 -1
- package/dist/utils/safeMath.d.ts +0 -11
- package/dist/utils/safeMath.d.ts.map +0 -1
- package/dist/utils/safeMath.js +0 -92
- package/dist/utils/safeMath.js.map +0 -1
- package/dist/utils/toonify-adapter.d.ts +0 -77
- package/dist/utils/toonify-adapter.d.ts.map +0 -1
- package/dist/utils/toonify-adapter.js +0 -282
- package/dist/utils/toonify-adapter.js.map +0 -1
- package/dist/utils/tracing/TraceContext.d.ts +0 -23
- package/dist/utils/tracing/TraceContext.d.ts.map +0 -1
- package/dist/utils/tracing/TraceContext.js +0 -127
- package/dist/utils/tracing/TraceContext.js.map +0 -1
- package/dist/utils/tracing/index.d.ts +0 -2
- package/dist/utils/tracing/index.d.ts.map +0 -1
- package/dist/utils/tracing/index.js +0 -2
- package/dist/utils/tracing/index.js.map +0 -1
- package/dist/utils/tracing/middleware.d.ts +0 -15
- package/dist/utils/tracing/middleware.d.ts.map +0 -1
- package/dist/utils/tracing/middleware.js +0 -49
- package/dist/utils/tracing/middleware.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -12
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -87
- package/dist/utils/validation.js.map +0 -1
- package/scripts/health-check.js +0 -255
- package/scripts/hooks/README.md +0 -230
- package/scripts/hooks/__tests__/hook-test-harness.js +0 -218
- package/scripts/hooks/__tests__/hooks.test.js +0 -267
- package/scripts/hooks/__tests__/post-tool-use-recall.test.js +0 -192
- package/scripts/hooks/__tests__/session-start-recall.test.js +0 -86
- package/scripts/hooks/hook-utils.js +0 -899
- package/scripts/hooks/post-tool-use-recall-utils.js +0 -74
- package/scripts/hooks/post-tool-use.js +0 -895
- package/scripts/hooks/pre-tool-use.js +0 -491
- package/scripts/hooks/session-start-recall-utils.js +0 -40
- package/scripts/hooks/stop.js +0 -673
- package/scripts/hooks/subagent-stop.js +0 -184
- package/scripts/hooks/templates/planning-template.md +0 -46
- package/scripts/postinstall-lib.js +0 -242
- package/scripts/postinstall-new.js +0 -191
- package/skills/comprehensive-code-review/SKILL.md +0 -276
|
@@ -1,681 +0,0 @@
|
|
|
1
|
-
import { promises as fsPromises, existsSync, mkdirSync } from 'fs';
|
|
2
|
-
import { NotFoundError, ValidationError } from '../errors/index.js';
|
|
3
|
-
import { SimpleDatabaseFactory } from '../config/simple-config.js';
|
|
4
|
-
import { logger } from '../utils/logger.js';
|
|
5
|
-
import { QueryCache } from '../db/QueryCache.js';
|
|
6
|
-
import { safeJsonParse, safeJsonStringify } from '../utils/json.js';
|
|
7
|
-
import { getDataPath, getDataDirectory } from '../utils/PathResolver.js';
|
|
8
|
-
import { validateNonEmptyString } from '../utils/validation.js';
|
|
9
|
-
import { KGSearchEngine } from './KGSearchEngine.js';
|
|
10
|
-
import { ContentHasher } from './ContentHasher.js';
|
|
11
|
-
const MAX_ENTITY_NAME_LENGTH = 512;
|
|
12
|
-
const VALID_RELATION_TYPE_PATTERN = /^[a-zA-Z_][a-zA-Z0-9_-]*$/;
|
|
13
|
-
import { CONTROL_CHAR_PATTERN } from './KGSearchEngine.js';
|
|
14
|
-
export class KnowledgeGraph {
|
|
15
|
-
db;
|
|
16
|
-
queryCache;
|
|
17
|
-
vectorEnabled = false;
|
|
18
|
-
vectorAdapter = null;
|
|
19
|
-
vectorInitPromise = null;
|
|
20
|
-
pendingEmbeddings = new Set();
|
|
21
|
-
searchEngine;
|
|
22
|
-
constructor(_dbPath, db) {
|
|
23
|
-
this.db = db;
|
|
24
|
-
this.queryCache = new QueryCache({
|
|
25
|
-
maxSize: 1000,
|
|
26
|
-
defaultTTL: 5 * 60 * 1000,
|
|
27
|
-
debug: false,
|
|
28
|
-
});
|
|
29
|
-
this.searchEngine = new KGSearchEngine({
|
|
30
|
-
db: this.db,
|
|
31
|
-
getVectorAdapter: () => this.vectorAdapter,
|
|
32
|
-
isVectorEnabled: () => this.vectorEnabled,
|
|
33
|
-
getVectorInitPromise: () => this.vectorInitPromise,
|
|
34
|
-
getEntity: (name) => this.getEntity(name),
|
|
35
|
-
queryCache: this.queryCache,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
validateEntityName(name) {
|
|
39
|
-
validateNonEmptyString(name, 'Entity name');
|
|
40
|
-
if (name.length > MAX_ENTITY_NAME_LENGTH) {
|
|
41
|
-
throw new ValidationError(`Entity name exceeds maximum length of ${MAX_ENTITY_NAME_LENGTH} characters (got ${name.length})`, {
|
|
42
|
-
component: 'KnowledgeGraph',
|
|
43
|
-
method: 'validateEntityName',
|
|
44
|
-
nameLength: name.length,
|
|
45
|
-
maxLength: MAX_ENTITY_NAME_LENGTH,
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
if (CONTROL_CHAR_PATTERN.test(name)) {
|
|
49
|
-
throw new ValidationError('Entity name must not contain control characters', {
|
|
50
|
-
component: 'KnowledgeGraph',
|
|
51
|
-
method: 'validateEntityName',
|
|
52
|
-
name: name.slice(0, 100),
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
validateRelationType(relationType) {
|
|
57
|
-
validateNonEmptyString(relationType, 'Relation type');
|
|
58
|
-
if (!VALID_RELATION_TYPE_PATTERN.test(relationType)) {
|
|
59
|
-
throw new ValidationError(`Relation type must contain only alphanumeric characters, underscores, and hyphens, ` +
|
|
60
|
-
`and must start with a letter or underscore. Got: "${relationType}"`, {
|
|
61
|
-
component: 'KnowledgeGraph',
|
|
62
|
-
method: 'validateRelationType',
|
|
63
|
-
relationType,
|
|
64
|
-
pattern: VALID_RELATION_TYPE_PATTERN.source,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
static async create(dbPath) {
|
|
69
|
-
const defaultPath = getDataPath('knowledge-graph.db');
|
|
70
|
-
const resolvedPath = dbPath || defaultPath;
|
|
71
|
-
const dataDir = getDataDirectory();
|
|
72
|
-
try {
|
|
73
|
-
await fsPromises.access(dataDir);
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
await fsPromises.mkdir(dataDir, { recursive: true });
|
|
77
|
-
}
|
|
78
|
-
const db = SimpleDatabaseFactory.getInstance(resolvedPath);
|
|
79
|
-
const instance = new KnowledgeGraph(resolvedPath, db);
|
|
80
|
-
instance.initialize();
|
|
81
|
-
logger.info(`[KnowledgeGraph] Initialized at: ${resolvedPath}`);
|
|
82
|
-
return instance;
|
|
83
|
-
}
|
|
84
|
-
static createSync(dbPath) {
|
|
85
|
-
const defaultPath = getDataPath('knowledge-graph.db');
|
|
86
|
-
const resolvedPath = dbPath || defaultPath;
|
|
87
|
-
const dataDir = getDataDirectory();
|
|
88
|
-
if (!existsSync(dataDir)) {
|
|
89
|
-
mkdirSync(dataDir, { recursive: true });
|
|
90
|
-
}
|
|
91
|
-
const db = SimpleDatabaseFactory.getInstance(resolvedPath);
|
|
92
|
-
const instance = new KnowledgeGraph(resolvedPath, db);
|
|
93
|
-
instance.initialize();
|
|
94
|
-
logger.info(`[KnowledgeGraph] Initialized at: ${resolvedPath}`);
|
|
95
|
-
return instance;
|
|
96
|
-
}
|
|
97
|
-
initialize() {
|
|
98
|
-
const schema = `
|
|
99
|
-
-- Entities table
|
|
100
|
-
CREATE TABLE IF NOT EXISTS entities (
|
|
101
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
102
|
-
name TEXT NOT NULL UNIQUE,
|
|
103
|
-
type TEXT NOT NULL, -- Maps to TypeScript 'entityType' field
|
|
104
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
105
|
-
metadata JSON
|
|
106
|
-
);
|
|
107
|
-
|
|
108
|
-
-- Observations table
|
|
109
|
-
CREATE TABLE IF NOT EXISTS observations (
|
|
110
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
111
|
-
entity_id INTEGER NOT NULL,
|
|
112
|
-
content TEXT NOT NULL,
|
|
113
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
114
|
-
FOREIGN KEY (entity_id) REFERENCES entities(id) ON DELETE CASCADE
|
|
115
|
-
);
|
|
116
|
-
|
|
117
|
-
-- Relations table
|
|
118
|
-
CREATE TABLE IF NOT EXISTS relations (
|
|
119
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
120
|
-
from_entity_id INTEGER NOT NULL,
|
|
121
|
-
to_entity_id INTEGER NOT NULL,
|
|
122
|
-
relation_type TEXT NOT NULL,
|
|
123
|
-
metadata JSON,
|
|
124
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
125
|
-
FOREIGN KEY (from_entity_id) REFERENCES entities(id) ON DELETE CASCADE,
|
|
126
|
-
FOREIGN KEY (to_entity_id) REFERENCES entities(id) ON DELETE CASCADE,
|
|
127
|
-
UNIQUE(from_entity_id, to_entity_id, relation_type)
|
|
128
|
-
);
|
|
129
|
-
|
|
130
|
-
-- Tags table
|
|
131
|
-
CREATE TABLE IF NOT EXISTS tags (
|
|
132
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
133
|
-
entity_id INTEGER NOT NULL,
|
|
134
|
-
tag TEXT NOT NULL,
|
|
135
|
-
FOREIGN KEY (entity_id) REFERENCES entities(id) ON DELETE CASCADE
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
-- Indexes for performance
|
|
139
|
-
CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(type);
|
|
140
|
-
CREATE INDEX IF NOT EXISTS idx_entities_name ON entities(name);
|
|
141
|
-
CREATE INDEX IF NOT EXISTS idx_entities_type_created ON entities(type, created_at);
|
|
142
|
-
|
|
143
|
-
CREATE INDEX IF NOT EXISTS idx_observations_created ON observations(created_at);
|
|
144
|
-
CREATE INDEX IF NOT EXISTS idx_observations_entity_created ON observations(entity_id, created_at);
|
|
145
|
-
|
|
146
|
-
CREATE INDEX IF NOT EXISTS idx_relations_from ON relations(from_entity_id);
|
|
147
|
-
CREATE INDEX IF NOT EXISTS idx_relations_to ON relations(to_entity_id);
|
|
148
|
-
CREATE INDEX IF NOT EXISTS idx_relations_type ON relations(relation_type);
|
|
149
|
-
CREATE INDEX IF NOT EXISTS idx_relations_from_type ON relations(from_entity_id, relation_type);
|
|
150
|
-
CREATE INDEX IF NOT EXISTS idx_relations_to_type ON relations(to_entity_id, relation_type);
|
|
151
|
-
CREATE INDEX IF NOT EXISTS idx_relations_created ON relations(created_at);
|
|
152
|
-
|
|
153
|
-
CREATE INDEX IF NOT EXISTS idx_tags_tag ON tags(tag);
|
|
154
|
-
CREATE INDEX IF NOT EXISTS idx_tags_entity ON tags(entity_id);
|
|
155
|
-
CREATE INDEX IF NOT EXISTS idx_tags_entity_tag ON tags(entity_id, tag);
|
|
156
|
-
`;
|
|
157
|
-
this.db.exec(schema);
|
|
158
|
-
const fts5Schema = `
|
|
159
|
-
-- FTS5 virtual table for entities full-text search
|
|
160
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
|
|
161
|
-
name,
|
|
162
|
-
observations,
|
|
163
|
-
content='',
|
|
164
|
-
tokenize='unicode61 remove_diacritics 1'
|
|
165
|
-
);
|
|
166
|
-
`;
|
|
167
|
-
this.db.exec(fts5Schema);
|
|
168
|
-
this.db.exec(`
|
|
169
|
-
CREATE TABLE IF NOT EXISTS embedding_hashes (
|
|
170
|
-
entity_name TEXT PRIMARY KEY,
|
|
171
|
-
hash TEXT NOT NULL
|
|
172
|
-
);
|
|
173
|
-
`);
|
|
174
|
-
this.runMigrations();
|
|
175
|
-
this.initVectorSearch();
|
|
176
|
-
}
|
|
177
|
-
initVectorSearch() {
|
|
178
|
-
this.vectorInitPromise = import('../embeddings/SqliteVecAdapter.js')
|
|
179
|
-
.then(({ SqliteVecAdapter }) => {
|
|
180
|
-
const adapter = new SqliteVecAdapter();
|
|
181
|
-
adapter.loadExtension(this.db);
|
|
182
|
-
adapter.createVectorTable(this.db, 384);
|
|
183
|
-
this.vectorAdapter = adapter;
|
|
184
|
-
this.vectorEnabled = true;
|
|
185
|
-
logger.info('[KG] Vector search enabled (sqlite-vec loaded)');
|
|
186
|
-
})
|
|
187
|
-
.catch((error) => {
|
|
188
|
-
this.vectorEnabled = false;
|
|
189
|
-
logger.debug('[KG] Vector search unavailable, using FTS5-only search', {
|
|
190
|
-
error: error instanceof Error ? error.message : String(error),
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
runMigrations() {
|
|
195
|
-
try {
|
|
196
|
-
const tableInfo = this.db.pragma('table_info(entities)');
|
|
197
|
-
const hasContentHash = tableInfo.some((col) => col.name === 'content_hash');
|
|
198
|
-
if (!hasContentHash) {
|
|
199
|
-
logger.info('[KG] Running migration: Adding content_hash column to entities table');
|
|
200
|
-
this.db.exec(`
|
|
201
|
-
ALTER TABLE entities ADD COLUMN content_hash TEXT;
|
|
202
|
-
`);
|
|
203
|
-
this.db.exec(`
|
|
204
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_entities_content_hash
|
|
205
|
-
ON entities(content_hash)
|
|
206
|
-
WHERE content_hash IS NOT NULL;
|
|
207
|
-
`);
|
|
208
|
-
logger.info('[KG] Migration complete: content_hash column added with unique index');
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
logger.error('[KG] Migration failed:', {
|
|
213
|
-
error: error instanceof Error ? error.message : String(error),
|
|
214
|
-
});
|
|
215
|
-
throw error;
|
|
216
|
-
}
|
|
217
|
-
try {
|
|
218
|
-
const ftsCount = this.db.prepare('SELECT COUNT(*) as count FROM entities_fts').get().count;
|
|
219
|
-
const entityCount = this.db.prepare('SELECT COUNT(*) as count FROM entities').get().count;
|
|
220
|
-
if (ftsCount === 0 && entityCount > 0) {
|
|
221
|
-
logger.info('[KG] Running migration: Populating FTS5 index from existing entities');
|
|
222
|
-
const CHUNK_SIZE = 500;
|
|
223
|
-
const MAX_OBSERVATIONS_PER_ENTITY = 500;
|
|
224
|
-
const MAX_OBSERVATION_LENGTH = 2000;
|
|
225
|
-
const MAX_TOTAL_LENGTH = 500000;
|
|
226
|
-
const insertStmt = this.db.prepare(`
|
|
227
|
-
INSERT INTO entities_fts(rowid, name, observations)
|
|
228
|
-
SELECT
|
|
229
|
-
e.id,
|
|
230
|
-
e.name,
|
|
231
|
-
COALESCE(
|
|
232
|
-
SUBSTR(
|
|
233
|
-
(SELECT GROUP_CONCAT(SUBSTR(content, 1, ?), ' ') FROM (
|
|
234
|
-
SELECT content FROM observations o
|
|
235
|
-
WHERE o.entity_id = e.id
|
|
236
|
-
ORDER BY o.created_at DESC
|
|
237
|
-
LIMIT ?
|
|
238
|
-
)),
|
|
239
|
-
1,
|
|
240
|
-
?
|
|
241
|
-
),
|
|
242
|
-
''
|
|
243
|
-
)
|
|
244
|
-
FROM entities e
|
|
245
|
-
WHERE e.id > ? AND e.id <= ?
|
|
246
|
-
`);
|
|
247
|
-
const idRange = this.db.prepare('SELECT MIN(id) as minId, MAX(id) as maxId FROM entities').get();
|
|
248
|
-
let processedCount = 0;
|
|
249
|
-
for (let startId = idRange.minId - 1; startId < idRange.maxId; startId += CHUNK_SIZE) {
|
|
250
|
-
const endId = startId + CHUNK_SIZE;
|
|
251
|
-
const result = insertStmt.run(MAX_OBSERVATION_LENGTH, MAX_OBSERVATIONS_PER_ENTITY, MAX_TOTAL_LENGTH, startId, endId);
|
|
252
|
-
processedCount += result.changes;
|
|
253
|
-
}
|
|
254
|
-
logger.info(`[KG] Migration complete: Populated FTS5 index with ${processedCount} entities`);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
catch (error) {
|
|
258
|
-
logger.error('[KG] FTS5 population migration failed:', {
|
|
259
|
-
error: error instanceof Error ? error.message : String(error),
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
escapeLikePattern(pattern) {
|
|
264
|
-
return this.searchEngine.escapeLikePattern(pattern);
|
|
265
|
-
}
|
|
266
|
-
searchFTS5(query, limit) {
|
|
267
|
-
return this.searchEngine.searchFTS5(query, limit);
|
|
268
|
-
}
|
|
269
|
-
prepareFTS5Query(query) {
|
|
270
|
-
return this.searchEngine.prepareFTS5Query(query);
|
|
271
|
-
}
|
|
272
|
-
createEntity(entity, skipEmbedding = false) {
|
|
273
|
-
this.validateEntityName(entity.name);
|
|
274
|
-
try {
|
|
275
|
-
if (entity.contentHash) {
|
|
276
|
-
const existing = this.db
|
|
277
|
-
.prepare('SELECT name FROM entities WHERE content_hash = ?')
|
|
278
|
-
.get(entity.contentHash);
|
|
279
|
-
if (existing && existing.name !== entity.name) {
|
|
280
|
-
logger.info(`[KG] Deduplicated: content_hash match, using existing entity ${existing.name}`);
|
|
281
|
-
return existing.name;
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
const result = this.db.transaction(() => {
|
|
285
|
-
const stmt = this.db.prepare(`
|
|
286
|
-
INSERT INTO entities (name, type, metadata, content_hash)
|
|
287
|
-
VALUES (?, ?, json(?), ?)
|
|
288
|
-
ON CONFLICT(name) DO UPDATE SET
|
|
289
|
-
type = excluded.type,
|
|
290
|
-
metadata = excluded.metadata,
|
|
291
|
-
content_hash = excluded.content_hash
|
|
292
|
-
`);
|
|
293
|
-
stmt.run(entity.name, entity.entityType, safeJsonStringify(entity.metadata || {}, '{}'), entity.contentHash || null);
|
|
294
|
-
const actualEntity = this.db
|
|
295
|
-
.prepare('SELECT id FROM entities WHERE name = ?')
|
|
296
|
-
.get(entity.name);
|
|
297
|
-
const actualId = actualEntity.id;
|
|
298
|
-
this.db.prepare('DELETE FROM observations WHERE entity_id = ?').run(actualId);
|
|
299
|
-
this.db.prepare('DELETE FROM tags WHERE entity_id = ?').run(actualId);
|
|
300
|
-
if (entity.observations && entity.observations.length > 0) {
|
|
301
|
-
const obsStmt = this.db.prepare(`
|
|
302
|
-
INSERT INTO observations (entity_id, content)
|
|
303
|
-
VALUES (?, ?)
|
|
304
|
-
`);
|
|
305
|
-
for (const obs of entity.observations) {
|
|
306
|
-
obsStmt.run(actualId, obs);
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
if (entity.tags && entity.tags.length > 0) {
|
|
310
|
-
const tagStmt = this.db.prepare(`
|
|
311
|
-
INSERT INTO tags (entity_id, tag)
|
|
312
|
-
VALUES (?, ?)
|
|
313
|
-
`);
|
|
314
|
-
for (const tag of entity.tags) {
|
|
315
|
-
tagStmt.run(actualId, tag);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
const observationsText = entity.observations ? entity.observations.join(' ') : '';
|
|
319
|
-
const existingFtsContent = this.db
|
|
320
|
-
.prepare('SELECT name, observations FROM entities_fts WHERE rowid = ?')
|
|
321
|
-
.get(actualId);
|
|
322
|
-
if (existingFtsContent) {
|
|
323
|
-
this.db.prepare(`
|
|
324
|
-
INSERT INTO entities_fts(entities_fts, rowid, name, observations)
|
|
325
|
-
VALUES('delete', ?, ?, ?)
|
|
326
|
-
`).run(actualId, existingFtsContent.name, existingFtsContent.observations);
|
|
327
|
-
}
|
|
328
|
-
this.db.prepare(`
|
|
329
|
-
INSERT INTO entities_fts(rowid, name, observations)
|
|
330
|
-
VALUES (?, ?, ?)
|
|
331
|
-
`).run(actualId, entity.name, observationsText);
|
|
332
|
-
return entity.name;
|
|
333
|
-
})();
|
|
334
|
-
this.queryCache.invalidatePattern(/^entities:/);
|
|
335
|
-
if (this.vectorEnabled && !skipEmbedding) {
|
|
336
|
-
this.generateEmbeddingAsync(entity.name, entity.observations);
|
|
337
|
-
}
|
|
338
|
-
logger.info(`[KG] Created entity: ${entity.name} (type: ${entity.entityType})`);
|
|
339
|
-
return result;
|
|
340
|
-
}
|
|
341
|
-
catch (error) {
|
|
342
|
-
if (error instanceof Error &&
|
|
343
|
-
error.message.includes('UNIQUE constraint failed') &&
|
|
344
|
-
error.message.includes('content_hash')) {
|
|
345
|
-
const existing = this.db
|
|
346
|
-
.prepare('SELECT name FROM entities WHERE content_hash = ?')
|
|
347
|
-
.get(entity.contentHash);
|
|
348
|
-
if (existing) {
|
|
349
|
-
logger.warn(`[KG] Race condition detected: content_hash conflict, using existing entity ${existing.name}`);
|
|
350
|
-
return existing.name;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
throw error;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
createEntitiesBatch(entities) {
|
|
357
|
-
const results = [];
|
|
358
|
-
if (entities.length === 0) {
|
|
359
|
-
return results;
|
|
360
|
-
}
|
|
361
|
-
const transaction = this.db.transaction(() => {
|
|
362
|
-
for (const entity of entities) {
|
|
363
|
-
try {
|
|
364
|
-
this.createEntity({
|
|
365
|
-
name: entity.name,
|
|
366
|
-
entityType: entity.entityType,
|
|
367
|
-
observations: entity.observations,
|
|
368
|
-
tags: entity.tags,
|
|
369
|
-
metadata: entity.metadata,
|
|
370
|
-
contentHash: entity.contentHash,
|
|
371
|
-
}, true);
|
|
372
|
-
results.push({ name: entity.name, success: true });
|
|
373
|
-
}
|
|
374
|
-
catch (error) {
|
|
375
|
-
results.push({
|
|
376
|
-
name: entity.name,
|
|
377
|
-
success: false,
|
|
378
|
-
error: error instanceof Error ? error.message : String(error),
|
|
379
|
-
});
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
});
|
|
383
|
-
transaction();
|
|
384
|
-
this.queryCache.invalidatePattern(/^entities:/);
|
|
385
|
-
this.queryCache.invalidatePattern(/^stats:/);
|
|
386
|
-
if (this.vectorEnabled) {
|
|
387
|
-
this.generateBatchEmbeddingsAsync(entities, results);
|
|
388
|
-
}
|
|
389
|
-
return results;
|
|
390
|
-
}
|
|
391
|
-
createRelation(relation) {
|
|
392
|
-
this.validateEntityName(relation.from);
|
|
393
|
-
this.validateEntityName(relation.to);
|
|
394
|
-
this.validateRelationType(relation.relationType);
|
|
395
|
-
const getEntityId = this.db.prepare('SELECT id FROM entities WHERE name = ?');
|
|
396
|
-
const fromEntity = getEntityId.get(relation.from);
|
|
397
|
-
const toEntity = getEntityId.get(relation.to);
|
|
398
|
-
if (!fromEntity) {
|
|
399
|
-
throw new NotFoundError(`Entity not found: ${relation.from}`, 'entity', relation.from, { relationContext: 'from entity in relation creation' });
|
|
400
|
-
}
|
|
401
|
-
if (!toEntity) {
|
|
402
|
-
throw new NotFoundError(`Entity not found: ${relation.to}`, 'entity', relation.to, { relationContext: 'to entity in relation creation' });
|
|
403
|
-
}
|
|
404
|
-
const stmt = this.db.prepare(`
|
|
405
|
-
INSERT INTO relations (from_entity_id, to_entity_id, relation_type, metadata)
|
|
406
|
-
VALUES (?, ?, ?, json(?))
|
|
407
|
-
ON CONFLICT(from_entity_id, to_entity_id, relation_type) DO UPDATE SET
|
|
408
|
-
metadata = excluded.metadata
|
|
409
|
-
`);
|
|
410
|
-
stmt.run(fromEntity.id, toEntity.id, relation.relationType, safeJsonStringify(relation.metadata || {}, '{}'));
|
|
411
|
-
this.queryCache.invalidatePattern(/^relations:/);
|
|
412
|
-
this.queryCache.invalidatePattern(/^trace:/);
|
|
413
|
-
logger.info(`[KG] Created relation: ${relation.from} -[${relation.relationType}]-> ${relation.to}`);
|
|
414
|
-
}
|
|
415
|
-
searchEntities(query) {
|
|
416
|
-
return this.searchEngine.searchEntities(query);
|
|
417
|
-
}
|
|
418
|
-
getEntity(name) {
|
|
419
|
-
this.validateEntityName(name);
|
|
420
|
-
const row = this.db.prepare(`
|
|
421
|
-
SELECT e.*,
|
|
422
|
-
(SELECT json_group_array(content) FROM observations o WHERE o.entity_id = e.id) as observations_json,
|
|
423
|
-
(SELECT json_group_array(tag) FROM tags t WHERE t.entity_id = e.id) as tags_json
|
|
424
|
-
FROM entities e
|
|
425
|
-
WHERE e.name = ?
|
|
426
|
-
`).get(name);
|
|
427
|
-
if (!row)
|
|
428
|
-
return null;
|
|
429
|
-
return {
|
|
430
|
-
id: row.id,
|
|
431
|
-
name: row.name,
|
|
432
|
-
entityType: row.type,
|
|
433
|
-
observations: safeJsonParse(row.observations_json, []).filter(value => value),
|
|
434
|
-
tags: safeJsonParse(row.tags_json, []).filter(value => value),
|
|
435
|
-
metadata: row.metadata ? safeJsonParse(row.metadata, {}) : {},
|
|
436
|
-
createdAt: new Date(row.created_at)
|
|
437
|
-
};
|
|
438
|
-
}
|
|
439
|
-
traceRelations(entityName, depth = 2) {
|
|
440
|
-
this.validateEntityName(entityName);
|
|
441
|
-
const cacheKey = `trace:${entityName}:${depth}`;
|
|
442
|
-
const cached = this.queryCache.get(cacheKey);
|
|
443
|
-
if (cached) {
|
|
444
|
-
return cached;
|
|
445
|
-
}
|
|
446
|
-
const getEntityId = this.db.prepare('SELECT id FROM entities WHERE name = ?');
|
|
447
|
-
const entity = getEntityId.get(entityName);
|
|
448
|
-
if (!entity) {
|
|
449
|
-
return null;
|
|
450
|
-
}
|
|
451
|
-
const relationRows = this.db.prepare(`
|
|
452
|
-
SELECT
|
|
453
|
-
e1.name as from_name,
|
|
454
|
-
e2.name as to_name,
|
|
455
|
-
r.relation_type,
|
|
456
|
-
r.metadata
|
|
457
|
-
FROM relations r
|
|
458
|
-
JOIN entities e1 ON r.from_entity_id = e1.id
|
|
459
|
-
JOIN entities e2 ON r.to_entity_id = e2.id
|
|
460
|
-
WHERE r.from_entity_id = ? OR r.to_entity_id = ?
|
|
461
|
-
`).all(entity.id, entity.id);
|
|
462
|
-
const relations = new Array(relationRows.length);
|
|
463
|
-
for (let i = 0; i < relationRows.length; i++) {
|
|
464
|
-
const r = relationRows[i];
|
|
465
|
-
relations[i] = {
|
|
466
|
-
from: r.from_name,
|
|
467
|
-
to: r.to_name,
|
|
468
|
-
relationType: r.relation_type,
|
|
469
|
-
metadata: r.metadata ? safeJsonParse(r.metadata, {}) : {}
|
|
470
|
-
};
|
|
471
|
-
}
|
|
472
|
-
const result = {
|
|
473
|
-
entity: entityName,
|
|
474
|
-
relations,
|
|
475
|
-
depth
|
|
476
|
-
};
|
|
477
|
-
this.queryCache.set(cacheKey, result);
|
|
478
|
-
return result;
|
|
479
|
-
}
|
|
480
|
-
getStats() {
|
|
481
|
-
const cacheKey = 'stats:all';
|
|
482
|
-
const cached = this.queryCache.get(cacheKey);
|
|
483
|
-
if (cached) {
|
|
484
|
-
return cached;
|
|
485
|
-
}
|
|
486
|
-
const totalEntities = this.db
|
|
487
|
-
.prepare('SELECT COUNT(*) as count FROM entities')
|
|
488
|
-
.get();
|
|
489
|
-
const totalRelations = this.db
|
|
490
|
-
.prepare('SELECT COUNT(*) as count FROM relations')
|
|
491
|
-
.get();
|
|
492
|
-
const byType = this.db
|
|
493
|
-
.prepare('SELECT type, COUNT(*) as count FROM entities GROUP BY type')
|
|
494
|
-
.all();
|
|
495
|
-
const entitiesByType = {};
|
|
496
|
-
byType.forEach(row => {
|
|
497
|
-
entitiesByType[row.type] = row.count;
|
|
498
|
-
});
|
|
499
|
-
const result = {
|
|
500
|
-
totalEntities: totalEntities.count,
|
|
501
|
-
totalRelations: totalRelations.count,
|
|
502
|
-
entitiesByType
|
|
503
|
-
};
|
|
504
|
-
this.queryCache.set(cacheKey, result, 60 * 1000);
|
|
505
|
-
return result;
|
|
506
|
-
}
|
|
507
|
-
deleteEntity(name) {
|
|
508
|
-
this.validateEntityName(name);
|
|
509
|
-
const result = this.db.transaction(() => {
|
|
510
|
-
const entity = this.db.prepare('SELECT id FROM entities WHERE name = ?')
|
|
511
|
-
.get(name);
|
|
512
|
-
if (!entity) {
|
|
513
|
-
return { changes: 0 };
|
|
514
|
-
}
|
|
515
|
-
const existingFts = this.db.prepare('SELECT name, observations FROM entities_fts WHERE rowid = ?').get(entity.id);
|
|
516
|
-
if (existingFts) {
|
|
517
|
-
this.db.prepare(`
|
|
518
|
-
INSERT INTO entities_fts(entities_fts, rowid, name, observations)
|
|
519
|
-
VALUES('delete', ?, ?, ?)
|
|
520
|
-
`).run(entity.id, existingFts.name, existingFts.observations);
|
|
521
|
-
}
|
|
522
|
-
if (this.vectorEnabled && this.vectorAdapter) {
|
|
523
|
-
try {
|
|
524
|
-
this.vectorAdapter.deleteEmbedding(this.db, name);
|
|
525
|
-
}
|
|
526
|
-
catch (error) {
|
|
527
|
-
logger.warn('[KG] Failed to delete embedding during entity removal', {
|
|
528
|
-
entity: name,
|
|
529
|
-
error: error instanceof Error ? error.message : String(error),
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
try {
|
|
534
|
-
this.db.prepare('DELETE FROM embedding_hashes WHERE entity_name = ?').run(name);
|
|
535
|
-
}
|
|
536
|
-
catch {
|
|
537
|
-
}
|
|
538
|
-
const stmt = this.db.prepare('DELETE FROM entities WHERE name = ?');
|
|
539
|
-
return stmt.run(name);
|
|
540
|
-
})();
|
|
541
|
-
this.queryCache.invalidatePattern(/^entities:/);
|
|
542
|
-
this.queryCache.invalidatePattern(/^relations:/);
|
|
543
|
-
this.queryCache.invalidatePattern(/^trace:/);
|
|
544
|
-
this.queryCache.invalidatePattern(/^stats:/);
|
|
545
|
-
logger.info(`[KG] Deleted entity: ${name}`);
|
|
546
|
-
return result.changes > 0;
|
|
547
|
-
}
|
|
548
|
-
generateEmbeddingAsync(entityName, observations) {
|
|
549
|
-
if (!this.vectorAdapter)
|
|
550
|
-
return;
|
|
551
|
-
const text = [entityName, ...(observations || [])].join(' ');
|
|
552
|
-
const adapter = this.vectorAdapter;
|
|
553
|
-
const newHash = ContentHasher.hashEmbeddingSource(entityName, observations || []);
|
|
554
|
-
try {
|
|
555
|
-
const existing = this.db
|
|
556
|
-
.prepare('SELECT hash FROM embedding_hashes WHERE entity_name = ?')
|
|
557
|
-
.get(entityName);
|
|
558
|
-
if (existing && existing.hash === newHash) {
|
|
559
|
-
logger.debug(`[KG] Embedding hash unchanged, skipping: ${entityName}`);
|
|
560
|
-
return;
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
catch {
|
|
564
|
-
}
|
|
565
|
-
const task = (async () => {
|
|
566
|
-
try {
|
|
567
|
-
const { LazyEmbeddingService } = await import('../embeddings/EmbeddingService.js');
|
|
568
|
-
const service = await LazyEmbeddingService.get();
|
|
569
|
-
const embedding = await service.encode(text);
|
|
570
|
-
adapter.insertEmbedding(this.db, entityName, embedding);
|
|
571
|
-
this.db.prepare('INSERT OR REPLACE INTO embedding_hashes (entity_name, hash) VALUES (?, ?)').run(entityName, newHash);
|
|
572
|
-
logger.debug(`[KG] Embedding generated for: ${entityName}`);
|
|
573
|
-
}
|
|
574
|
-
catch (error) {
|
|
575
|
-
logger.warn('[KG] Embedding generation failed', {
|
|
576
|
-
entity: entityName,
|
|
577
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
578
|
-
});
|
|
579
|
-
}
|
|
580
|
-
})();
|
|
581
|
-
this.pendingEmbeddings.add(task);
|
|
582
|
-
task.finally(() => this.pendingEmbeddings.delete(task));
|
|
583
|
-
}
|
|
584
|
-
generateBatchEmbeddingsAsync(entities, results) {
|
|
585
|
-
if (!this.vectorAdapter)
|
|
586
|
-
return;
|
|
587
|
-
const adapter = this.vectorAdapter;
|
|
588
|
-
const toEmbed = [];
|
|
589
|
-
for (let i = 0; i < entities.length; i++) {
|
|
590
|
-
if (!results[i]?.success)
|
|
591
|
-
continue;
|
|
592
|
-
const entity = entities[i];
|
|
593
|
-
const newHash = ContentHasher.hashEmbeddingSource(entity.name, entity.observations);
|
|
594
|
-
try {
|
|
595
|
-
const existing = this.db
|
|
596
|
-
.prepare('SELECT hash FROM embedding_hashes WHERE entity_name = ?')
|
|
597
|
-
.get(entity.name);
|
|
598
|
-
if (existing && existing.hash === newHash) {
|
|
599
|
-
logger.debug(`[KG] Batch: embedding hash unchanged, skipping: ${entity.name}`);
|
|
600
|
-
continue;
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
catch {
|
|
604
|
-
}
|
|
605
|
-
toEmbed.push({
|
|
606
|
-
name: entity.name,
|
|
607
|
-
text: [entity.name, ...entity.observations].join(' '),
|
|
608
|
-
hash: newHash,
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
if (toEmbed.length === 0)
|
|
612
|
-
return;
|
|
613
|
-
const task = (async () => {
|
|
614
|
-
try {
|
|
615
|
-
const { LazyEmbeddingService } = await import('../embeddings/EmbeddingService.js');
|
|
616
|
-
const service = await LazyEmbeddingService.get();
|
|
617
|
-
const embeddings = await service.encodeBatch(toEmbed.map(e => e.text));
|
|
618
|
-
for (let i = 0; i < toEmbed.length; i++) {
|
|
619
|
-
try {
|
|
620
|
-
adapter.insertEmbedding(this.db, toEmbed[i].name, embeddings[i]);
|
|
621
|
-
this.db.prepare('INSERT OR REPLACE INTO embedding_hashes (entity_name, hash) VALUES (?, ?)').run(toEmbed[i].name, toEmbed[i].hash);
|
|
622
|
-
}
|
|
623
|
-
catch (error) {
|
|
624
|
-
logger.warn('[KG] Batch embedding insert failed', {
|
|
625
|
-
entity: toEmbed[i].name,
|
|
626
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
627
|
-
});
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
logger.debug(`[KG] Batch embeddings generated for ${toEmbed.length} entities`);
|
|
631
|
-
}
|
|
632
|
-
catch (error) {
|
|
633
|
-
logger.warn('[KG] Batch embedding generation failed', {
|
|
634
|
-
count: toEmbed.length,
|
|
635
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
636
|
-
});
|
|
637
|
-
}
|
|
638
|
-
})();
|
|
639
|
-
this.pendingEmbeddings.add(task);
|
|
640
|
-
task.finally(() => this.pendingEmbeddings.delete(task));
|
|
641
|
-
}
|
|
642
|
-
async semanticSearch(query, options = {}) {
|
|
643
|
-
return this.searchEngine.semanticSearch(query, options);
|
|
644
|
-
}
|
|
645
|
-
async hybridSearch(query, options = {}) {
|
|
646
|
-
return this.searchEngine.hybridSearch(query, options);
|
|
647
|
-
}
|
|
648
|
-
isVectorSearchEnabled() {
|
|
649
|
-
return this.vectorEnabled;
|
|
650
|
-
}
|
|
651
|
-
async close() {
|
|
652
|
-
if (this.pendingEmbeddings.size > 0) {
|
|
653
|
-
logger.debug(`[KG] Waiting for ${this.pendingEmbeddings.size} pending embedding tasks...`);
|
|
654
|
-
await Promise.allSettled([...this.pendingEmbeddings]);
|
|
655
|
-
}
|
|
656
|
-
this.queryCache.destroy();
|
|
657
|
-
this.db.close();
|
|
658
|
-
logger.info('[KG] Database connection and cache closed');
|
|
659
|
-
}
|
|
660
|
-
transaction(fn) {
|
|
661
|
-
try {
|
|
662
|
-
const transactionFn = this.db.transaction(fn);
|
|
663
|
-
return transactionFn();
|
|
664
|
-
}
|
|
665
|
-
catch (error) {
|
|
666
|
-
logger.error('[KG] Transaction failed and rolled back:', {
|
|
667
|
-
error: error instanceof Error ? error.message : String(error),
|
|
668
|
-
stack: error instanceof Error ? error.stack : undefined,
|
|
669
|
-
});
|
|
670
|
-
throw error;
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
getCacheStats() {
|
|
674
|
-
return this.queryCache.getStats();
|
|
675
|
-
}
|
|
676
|
-
clearCache() {
|
|
677
|
-
this.queryCache.clear();
|
|
678
|
-
logger.info('[KG] Cache cleared manually');
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
//# sourceMappingURL=index.js.map
|