@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
package/scripts/hooks/stop.js
DELETED
|
@@ -1,673 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Stop Hook - Claude Code Event-Driven Hooks
|
|
5
|
-
*
|
|
6
|
-
* Triggered when a Claude Code session ends (normal or forced termination).
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Analyzes current session's tool patterns and workflows
|
|
10
|
-
* - Generates recommendations for next session
|
|
11
|
-
* - Updates session context (quota, learned patterns)
|
|
12
|
-
* - Saves session key points to MeMesh
|
|
13
|
-
* - Cleans up old key points (>30 days retention)
|
|
14
|
-
* - Displays session summary with patterns and suggestions
|
|
15
|
-
* - Archives current session data
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import {
|
|
19
|
-
STATE_DIR,
|
|
20
|
-
MEMESH_DB_PATH,
|
|
21
|
-
THRESHOLDS,
|
|
22
|
-
readJSONFile,
|
|
23
|
-
writeJSONFile,
|
|
24
|
-
sqliteQuery,
|
|
25
|
-
sqliteBatch,
|
|
26
|
-
sqliteBatchEntity,
|
|
27
|
-
calculateDuration,
|
|
28
|
-
getDateString,
|
|
29
|
-
ensureDir,
|
|
30
|
-
logError,
|
|
31
|
-
} from './hook-utils.js';
|
|
32
|
-
import fs from 'fs';
|
|
33
|
-
import path from 'path';
|
|
34
|
-
|
|
35
|
-
// ============================================================================
|
|
36
|
-
// File Paths
|
|
37
|
-
// ============================================================================
|
|
38
|
-
|
|
39
|
-
const CURRENT_SESSION_FILE = path.join(STATE_DIR, 'current-session.json');
|
|
40
|
-
const RECOMMENDATIONS_FILE = path.join(STATE_DIR, 'recommendations.json');
|
|
41
|
-
const SESSION_CONTEXT_FILE = path.join(STATE_DIR, 'session-context.json');
|
|
42
|
-
const SESSIONS_ARCHIVE_DIR = path.join(STATE_DIR, 'sessions');
|
|
43
|
-
const LAST_SESSION_CACHE_FILE = path.join(STATE_DIR, 'last-session-summary.json');
|
|
44
|
-
|
|
45
|
-
// Ensure archive directory exists
|
|
46
|
-
if (!fs.existsSync(SESSIONS_ARCHIVE_DIR)) {
|
|
47
|
-
fs.mkdirSync(SESSIONS_ARCHIVE_DIR, { recursive: true });
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// ============================================================================
|
|
51
|
-
// Pattern Analysis
|
|
52
|
-
// ============================================================================
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Analyze tool patterns from session state
|
|
56
|
-
* @param {Object} sessionState - Current session state
|
|
57
|
-
* @returns {Array} Detected patterns
|
|
58
|
-
*/
|
|
59
|
-
function analyzeToolPatterns(sessionState) {
|
|
60
|
-
const patterns = [];
|
|
61
|
-
|
|
62
|
-
if (!sessionState.toolCalls || sessionState.toolCalls.length === 0) {
|
|
63
|
-
return patterns;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Count tool frequency
|
|
67
|
-
const toolFrequency = {};
|
|
68
|
-
sessionState.toolCalls.forEach(tc => {
|
|
69
|
-
toolFrequency[tc.toolName] = (toolFrequency[tc.toolName] || 0) + 1;
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
// Find most used tools
|
|
73
|
-
const mostUsedTools = Object.entries(toolFrequency)
|
|
74
|
-
.sort((a, b) => b[1] - a[1])
|
|
75
|
-
.slice(0, 3);
|
|
76
|
-
|
|
77
|
-
if (mostUsedTools.length > 0) {
|
|
78
|
-
patterns.push({
|
|
79
|
-
type: 'MOST_USED_TOOLS',
|
|
80
|
-
description: mostUsedTools.map(([tool, count]) => `${tool} (${count}x)`).join(', '),
|
|
81
|
-
severity: 'info',
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Check READ_BEFORE_EDIT compliance
|
|
86
|
-
let editWithoutRead = 0;
|
|
87
|
-
let editWithRead = 0;
|
|
88
|
-
|
|
89
|
-
for (let i = 0; i < sessionState.toolCalls.length; i++) {
|
|
90
|
-
const tool = sessionState.toolCalls[i];
|
|
91
|
-
if (tool.toolName === 'Edit') {
|
|
92
|
-
const recentReads = sessionState.toolCalls
|
|
93
|
-
.slice(Math.max(0, i - 5), i)
|
|
94
|
-
.filter(t => t.toolName === 'Read');
|
|
95
|
-
|
|
96
|
-
if (recentReads.length > 0) {
|
|
97
|
-
editWithRead++;
|
|
98
|
-
} else {
|
|
99
|
-
editWithoutRead++;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (editWithRead + editWithoutRead > 0) {
|
|
105
|
-
const compliance = (editWithRead / (editWithRead + editWithoutRead) * 100).toFixed(0);
|
|
106
|
-
patterns.push({
|
|
107
|
-
type: 'READ_BEFORE_EDIT_COMPLIANCE',
|
|
108
|
-
description: `READ_BEFORE_EDIT compliance: ${compliance}%`,
|
|
109
|
-
severity: compliance >= 80 ? 'info' : 'warning',
|
|
110
|
-
suggestion: compliance < 80 ? 'Read files before editing to avoid errors' : 'Good practice!',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// Detect Git workflow
|
|
115
|
-
const gitOps = sessionState.toolCalls.filter(tc =>
|
|
116
|
-
tc.toolName === 'Bash' && ['git add', 'git commit', 'git push', 'git branch'].some(cmd =>
|
|
117
|
-
tc.arguments?.command?.includes(cmd)
|
|
118
|
-
)
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
if (gitOps.length >= 3) {
|
|
122
|
-
patterns.push({
|
|
123
|
-
type: 'GIT_WORKFLOW',
|
|
124
|
-
description: `Executed ${gitOps.length} Git operations`,
|
|
125
|
-
severity: 'info',
|
|
126
|
-
suggestion: 'Consider loading devops-git-workflows skill next time',
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Detect frontend work
|
|
131
|
-
const frontendOps = sessionState.toolCalls.filter(tc =>
|
|
132
|
-
['Edit', 'Write', 'Read'].includes(tc.toolName) &&
|
|
133
|
-
['.tsx', '.jsx', '.vue', '.css'].some(ext => tc.arguments?.file_path?.endsWith(ext))
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
if (frontendOps.length >= 5) {
|
|
137
|
-
patterns.push({
|
|
138
|
-
type: 'FRONTEND_WORK',
|
|
139
|
-
description: `Modified ${frontendOps.length} frontend files`,
|
|
140
|
-
severity: 'info',
|
|
141
|
-
suggestion: 'Consider loading frontend-design skill next time',
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Detect slow operations
|
|
146
|
-
const slowOps = sessionState.toolCalls.filter(tc => tc.duration && tc.duration > THRESHOLDS.SLOW_EXECUTION);
|
|
147
|
-
if (slowOps.length > 0) {
|
|
148
|
-
patterns.push({
|
|
149
|
-
type: 'SLOW_OPERATIONS',
|
|
150
|
-
description: `${slowOps.length} tools took >5 seconds`,
|
|
151
|
-
severity: 'warning',
|
|
152
|
-
suggestion: 'Consider optimizing these operations or using faster alternatives',
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Detect failures
|
|
157
|
-
const failures = sessionState.toolCalls.filter(tc => tc.success === false);
|
|
158
|
-
if (failures.length > 0) {
|
|
159
|
-
patterns.push({
|
|
160
|
-
type: 'EXECUTION_FAILURES',
|
|
161
|
-
description: `${failures.length} tool executions failed`,
|
|
162
|
-
severity: 'error',
|
|
163
|
-
suggestion: 'Review and fix failure causes',
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return patterns;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// ============================================================================
|
|
171
|
-
// Recommendations
|
|
172
|
-
// ============================================================================
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Save recommendations for next session
|
|
176
|
-
* @param {Array} patterns - Detected patterns
|
|
177
|
-
* @param {Object} sessionState - Current session state
|
|
178
|
-
*/
|
|
179
|
-
function saveRecommendations(patterns, sessionState) {
|
|
180
|
-
const recommendations = readJSONFile(RECOMMENDATIONS_FILE, {
|
|
181
|
-
recommendedSkills: [],
|
|
182
|
-
detectedPatterns: [],
|
|
183
|
-
warnings: [],
|
|
184
|
-
lastUpdated: null,
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
// Add skill recommendations based on patterns
|
|
188
|
-
patterns.forEach(pattern => {
|
|
189
|
-
if (pattern.suggestion && pattern.suggestion.includes('skill')) {
|
|
190
|
-
const skillMatch = pattern.suggestion.match(/loading\s+(.+?)\s+skill/);
|
|
191
|
-
if (skillMatch) {
|
|
192
|
-
const skillName = skillMatch[1];
|
|
193
|
-
const existing = recommendations.recommendedSkills.find(s => s.name === skillName);
|
|
194
|
-
|
|
195
|
-
if (!existing) {
|
|
196
|
-
recommendations.recommendedSkills.push({
|
|
197
|
-
name: skillName,
|
|
198
|
-
reason: pattern.description,
|
|
199
|
-
priority: pattern.type.includes('GIT') || pattern.type.includes('FRONTEND') ? 'high' : 'medium',
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
// Keep only top 5 skills
|
|
207
|
-
recommendations.recommendedSkills = recommendations.recommendedSkills.slice(0, 5);
|
|
208
|
-
|
|
209
|
-
// Merge patterns with existing (keep last 10)
|
|
210
|
-
patterns.forEach(pattern => {
|
|
211
|
-
recommendations.detectedPatterns.unshift({
|
|
212
|
-
description: pattern.description,
|
|
213
|
-
suggestion: pattern.suggestion || '',
|
|
214
|
-
timestamp: new Date().toISOString(),
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
recommendations.detectedPatterns = recommendations.detectedPatterns.slice(0, 10);
|
|
218
|
-
|
|
219
|
-
// Add warnings from error/warning severity patterns
|
|
220
|
-
patterns.filter(p => p.severity === 'warning' || p.severity === 'error').forEach(pattern => {
|
|
221
|
-
if (pattern.suggestion) {
|
|
222
|
-
recommendations.warnings.unshift(pattern.suggestion);
|
|
223
|
-
} else {
|
|
224
|
-
recommendations.warnings.unshift(pattern.description);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
recommendations.warnings = recommendations.warnings.slice(0, 5);
|
|
228
|
-
|
|
229
|
-
recommendations.lastUpdated = new Date().toISOString();
|
|
230
|
-
|
|
231
|
-
writeJSONFile(RECOMMENDATIONS_FILE, recommendations);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// ============================================================================
|
|
235
|
-
// Session Context Update
|
|
236
|
-
// ============================================================================
|
|
237
|
-
|
|
238
|
-
/**
|
|
239
|
-
* Update session context (quota, patterns)
|
|
240
|
-
* @param {Object} sessionState - Current session state
|
|
241
|
-
* @returns {Object} Updated session context
|
|
242
|
-
*/
|
|
243
|
-
function updateSessionContext(sessionState) {
|
|
244
|
-
const sessionContext = readJSONFile(SESSION_CONTEXT_FILE, {
|
|
245
|
-
tokenQuota: { used: 0, limit: 200000 },
|
|
246
|
-
learnedPatterns: [],
|
|
247
|
-
lastSessionDate: null,
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
// Calculate total token usage from session
|
|
251
|
-
let totalTokens = 0;
|
|
252
|
-
if (sessionState.toolCalls) {
|
|
253
|
-
sessionState.toolCalls.forEach(tc => {
|
|
254
|
-
if (tc.tokenUsage) {
|
|
255
|
-
totalTokens += tc.tokenUsage;
|
|
256
|
-
}
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// Update quota
|
|
261
|
-
sessionContext.tokenQuota.used = Math.min(
|
|
262
|
-
sessionContext.tokenQuota.used + totalTokens,
|
|
263
|
-
sessionContext.tokenQuota.limit
|
|
264
|
-
);
|
|
265
|
-
|
|
266
|
-
// Add learned patterns
|
|
267
|
-
if (sessionState.patterns) {
|
|
268
|
-
sessionState.patterns.forEach(pattern => {
|
|
269
|
-
const existing = sessionContext.learnedPatterns.find(p => p.type === pattern.type);
|
|
270
|
-
if (!existing) {
|
|
271
|
-
sessionContext.learnedPatterns.push({
|
|
272
|
-
type: pattern.type,
|
|
273
|
-
count: pattern.count,
|
|
274
|
-
lastSeen: new Date().toISOString(),
|
|
275
|
-
});
|
|
276
|
-
} else {
|
|
277
|
-
existing.count += pattern.count;
|
|
278
|
-
existing.lastSeen = new Date().toISOString();
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
sessionContext.lastSessionDate = new Date().toISOString();
|
|
284
|
-
|
|
285
|
-
writeJSONFile(SESSION_CONTEXT_FILE, sessionContext);
|
|
286
|
-
|
|
287
|
-
return sessionContext;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
// ============================================================================
|
|
291
|
-
// MeMesh Memory Save
|
|
292
|
-
// ============================================================================
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Extract comprehensive key points from session for end summary
|
|
296
|
-
* @param {Object} sessionState - Current session state
|
|
297
|
-
* @param {Array} patterns - Analyzed patterns
|
|
298
|
-
* @returns {Array<string>} Key points
|
|
299
|
-
*/
|
|
300
|
-
function extractSessionKeyPoints(sessionState, patterns) {
|
|
301
|
-
const keyPoints = [];
|
|
302
|
-
|
|
303
|
-
if (!sessionState) {
|
|
304
|
-
return keyPoints;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
// 1. Session overview
|
|
308
|
-
const duration = calculateDuration(sessionState.startTime);
|
|
309
|
-
const toolCount = sessionState.toolCalls?.length || 0;
|
|
310
|
-
keyPoints.push(`[SESSION] Duration: ${duration}, Tools used: ${toolCount}`);
|
|
311
|
-
|
|
312
|
-
// 2. Files modified (task summary)
|
|
313
|
-
if (sessionState.toolCalls) {
|
|
314
|
-
const fileOps = {};
|
|
315
|
-
sessionState.toolCalls.forEach(tc => {
|
|
316
|
-
if (['Edit', 'Write'].includes(tc.toolName) && tc.arguments?.file_path) {
|
|
317
|
-
const filePath = tc.arguments.file_path;
|
|
318
|
-
fileOps[filePath] = (fileOps[filePath] || 0) + 1;
|
|
319
|
-
}
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
const modifiedFiles = Object.keys(fileOps);
|
|
323
|
-
if (modifiedFiles.length > 0) {
|
|
324
|
-
// Group by directory
|
|
325
|
-
const dirs = {};
|
|
326
|
-
modifiedFiles.forEach(f => {
|
|
327
|
-
const dir = path.dirname(f);
|
|
328
|
-
if (!dirs[dir]) dirs[dir] = [];
|
|
329
|
-
dirs[dir].push(path.basename(f));
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
const summary = Object.entries(dirs)
|
|
333
|
-
.map(([dir, files]) => {
|
|
334
|
-
const shortDir = dir.split('/').slice(-2).join('/');
|
|
335
|
-
return `${shortDir}: ${files.slice(0, 3).join(', ')}${files.length > 3 ? '...' : ''}`;
|
|
336
|
-
})
|
|
337
|
-
.slice(0, 3)
|
|
338
|
-
.join(' | ');
|
|
339
|
-
|
|
340
|
-
keyPoints.push(`[WORK] ${modifiedFiles.length} files modified: ${summary}`);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// 3. Git operations (commits = completed work)
|
|
345
|
-
if (sessionState.toolCalls) {
|
|
346
|
-
const gitCommits = sessionState.toolCalls.filter(tc =>
|
|
347
|
-
tc.toolName === 'Bash' && tc.arguments?.command?.includes('git commit')
|
|
348
|
-
);
|
|
349
|
-
if (gitCommits.length > 0) {
|
|
350
|
-
keyPoints.push(`[COMMIT] ${gitCommits.length} commit(s) made`);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
// 4. Problems encountered
|
|
355
|
-
if (sessionState.toolCalls) {
|
|
356
|
-
const failures = sessionState.toolCalls.filter(tc => tc.success === false);
|
|
357
|
-
if (failures.length > 0) {
|
|
358
|
-
const failedTools = [...new Set(failures.map(f => f.toolName))];
|
|
359
|
-
keyPoints.push(`[ISSUE] ${failures.length} failures: ${failedTools.join(', ')}`);
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
// 5. Detected patterns (learnings)
|
|
364
|
-
if (patterns && patterns.length > 0) {
|
|
365
|
-
const significantPatterns = patterns
|
|
366
|
-
.filter(p => p.severity === 'warning' || p.severity === 'error' || p.suggestion)
|
|
367
|
-
.slice(0, 3);
|
|
368
|
-
|
|
369
|
-
significantPatterns.forEach(p => {
|
|
370
|
-
if (p.suggestion) {
|
|
371
|
-
keyPoints.push(`[LEARN] ${p.description} -> ${p.suggestion}`);
|
|
372
|
-
} else {
|
|
373
|
-
keyPoints.push(`[NOTE] ${p.description}`);
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
// 6. Most used tools (work focus)
|
|
379
|
-
if (sessionState.toolCalls && sessionState.toolCalls.length > 5) {
|
|
380
|
-
const toolCounts = {};
|
|
381
|
-
sessionState.toolCalls.forEach(tc => {
|
|
382
|
-
toolCounts[tc.toolName] = (toolCounts[tc.toolName] || 0) + 1;
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
const topTools = Object.entries(toolCounts)
|
|
386
|
-
.sort((a, b) => b[1] - a[1])
|
|
387
|
-
.slice(0, 3)
|
|
388
|
-
.map(([tool, count]) => `${tool}(${count})`)
|
|
389
|
-
.join(', ');
|
|
390
|
-
|
|
391
|
-
keyPoints.push(`[FOCUS] Top tools: ${topTools}`);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
return keyPoints;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
/**
|
|
398
|
-
* Save session key points to MeMesh on session end.
|
|
399
|
-
* Uses sqliteBatchEntity for performance (3 spawns instead of N).
|
|
400
|
-
* @param {Object} sessionState - Current session state
|
|
401
|
-
* @param {Array} patterns - Analyzed patterns
|
|
402
|
-
* @returns {boolean} True if saved successfully
|
|
403
|
-
*/
|
|
404
|
-
function saveSessionKeyPointsOnEnd(sessionState, patterns) {
|
|
405
|
-
try {
|
|
406
|
-
if (!fs.existsSync(MEMESH_DB_PATH)) {
|
|
407
|
-
console.log('š§ MeMesh: Database not found, skipping memory save');
|
|
408
|
-
return false;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
const keyPoints = extractSessionKeyPoints(sessionState, patterns);
|
|
412
|
-
if (keyPoints.length === 0) {
|
|
413
|
-
return false;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
const entityName = `session_end_${Date.now()}`;
|
|
417
|
-
const startTime = new Date(sessionState.startTime);
|
|
418
|
-
const duration = Math.round((Date.now() - startTime.getTime()) / 1000 / 60);
|
|
419
|
-
|
|
420
|
-
const metadata = JSON.stringify({
|
|
421
|
-
duration: `${duration}m`,
|
|
422
|
-
toolCount: sessionState.toolCalls?.length || 0,
|
|
423
|
-
saveReason: 'session_end',
|
|
424
|
-
patternCount: patterns.length,
|
|
425
|
-
});
|
|
426
|
-
|
|
427
|
-
const today = getDateString();
|
|
428
|
-
const tags = ['session_end', 'auto_saved', today];
|
|
429
|
-
|
|
430
|
-
// Batch: entity + observations + tags in 2 process spawns (was ~10)
|
|
431
|
-
const entityId = sqliteBatchEntity(
|
|
432
|
-
MEMESH_DB_PATH,
|
|
433
|
-
{ name: entityName, type: 'session_keypoint', metadata },
|
|
434
|
-
keyPoints,
|
|
435
|
-
tags
|
|
436
|
-
);
|
|
437
|
-
|
|
438
|
-
if (entityId === null) {
|
|
439
|
-
return false;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
console.log(`š§ MeMesh: Saved ${keyPoints.length} key points to memory`);
|
|
443
|
-
return true;
|
|
444
|
-
} catch (error) {
|
|
445
|
-
console.error(`š§ MeMesh: Failed to save session key points: ${error.message}`);
|
|
446
|
-
return false;
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
/**
|
|
451
|
-
* Clean up old key points (older than retention period).
|
|
452
|
-
* Uses batch delete for performance.
|
|
453
|
-
*/
|
|
454
|
-
function cleanupOldKeyPoints() {
|
|
455
|
-
try {
|
|
456
|
-
if (!fs.existsSync(MEMESH_DB_PATH)) {
|
|
457
|
-
return;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
const cutoffDate = new Date();
|
|
461
|
-
cutoffDate.setDate(cutoffDate.getDate() - THRESHOLDS.RETENTION_DAYS);
|
|
462
|
-
const cutoffISO = cutoffDate.toISOString();
|
|
463
|
-
|
|
464
|
-
// Count old entries
|
|
465
|
-
const countResult = sqliteQuery(
|
|
466
|
-
MEMESH_DB_PATH,
|
|
467
|
-
'SELECT COUNT(*) FROM entities WHERE type = ? AND created_at < ?',
|
|
468
|
-
['session_keypoint', cutoffISO]
|
|
469
|
-
);
|
|
470
|
-
|
|
471
|
-
const oldCount = parseInt(countResult, 10) || 0;
|
|
472
|
-
|
|
473
|
-
if (oldCount > 0) {
|
|
474
|
-
// Batch delete: tags + entities in 2 statements (was N+2 spawns)
|
|
475
|
-
sqliteBatch(MEMESH_DB_PATH, [
|
|
476
|
-
{
|
|
477
|
-
query: `DELETE FROM tags WHERE entity_id IN (
|
|
478
|
-
SELECT id FROM entities WHERE type = ? AND created_at < ?
|
|
479
|
-
)`,
|
|
480
|
-
params: ['session_keypoint', cutoffISO],
|
|
481
|
-
},
|
|
482
|
-
{
|
|
483
|
-
query: 'DELETE FROM entities WHERE type = ? AND created_at < ?',
|
|
484
|
-
params: ['session_keypoint', cutoffISO],
|
|
485
|
-
},
|
|
486
|
-
]);
|
|
487
|
-
|
|
488
|
-
console.log(`š§ MeMesh: Cleaned up ${oldCount} expired memories (>${THRESHOLDS.RETENTION_DAYS} days)`);
|
|
489
|
-
}
|
|
490
|
-
} catch (error) {
|
|
491
|
-
console.error(`š§ MeMesh: Cleanup failed: ${error.message}`);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
// ============================================================================
|
|
496
|
-
// Session Cache (for fast startup)
|
|
497
|
-
// ============================================================================
|
|
498
|
-
|
|
499
|
-
/**
|
|
500
|
-
* Write session summary cache for fast recall on next startup.
|
|
501
|
-
* Session-start.js reads this instead of querying SQLite.
|
|
502
|
-
* @param {Object} sessionState - Current session state
|
|
503
|
-
* @param {Array} patterns - Analyzed patterns
|
|
504
|
-
*/
|
|
505
|
-
function writeSessionCache(sessionState, patterns) {
|
|
506
|
-
try {
|
|
507
|
-
const keyPoints = extractSessionKeyPoints(sessionState, patterns);
|
|
508
|
-
const startTime = new Date(sessionState.startTime);
|
|
509
|
-
const duration = Math.round((Date.now() - startTime.getTime()) / 1000 / 60);
|
|
510
|
-
|
|
511
|
-
const cache = {
|
|
512
|
-
savedAt: new Date().toISOString(),
|
|
513
|
-
duration: `${duration}m`,
|
|
514
|
-
toolCount: sessionState.toolCalls?.length || 0,
|
|
515
|
-
keyPoints,
|
|
516
|
-
};
|
|
517
|
-
|
|
518
|
-
writeJSONFile(LAST_SESSION_CACHE_FILE, cache);
|
|
519
|
-
} catch (error) {
|
|
520
|
-
logError('writeSessionCache', error);
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
// ============================================================================
|
|
525
|
-
// Session Archive
|
|
526
|
-
// ============================================================================
|
|
527
|
-
|
|
528
|
-
/**
|
|
529
|
-
* Archive current session
|
|
530
|
-
* @param {Object} sessionState - Current session state
|
|
531
|
-
*/
|
|
532
|
-
function archiveSession(sessionState) {
|
|
533
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
534
|
-
const archiveFile = path.join(SESSIONS_ARCHIVE_DIR, `session-${timestamp}.json`);
|
|
535
|
-
|
|
536
|
-
writeJSONFile(archiveFile, sessionState);
|
|
537
|
-
|
|
538
|
-
// Keep only last N sessions (configurable via THRESHOLDS)
|
|
539
|
-
try {
|
|
540
|
-
// Ensure directory exists before reading
|
|
541
|
-
ensureDir(SESSIONS_ARCHIVE_DIR);
|
|
542
|
-
|
|
543
|
-
const sessions = fs.readdirSync(SESSIONS_ARCHIVE_DIR)
|
|
544
|
-
.filter(f => f.startsWith('session-'))
|
|
545
|
-
.sort()
|
|
546
|
-
.reverse();
|
|
547
|
-
|
|
548
|
-
const maxSessions = THRESHOLDS.MAX_ARCHIVED_SESSIONS;
|
|
549
|
-
if (sessions.length > maxSessions) {
|
|
550
|
-
sessions.slice(maxSessions).forEach(f => {
|
|
551
|
-
try {
|
|
552
|
-
fs.unlinkSync(path.join(SESSIONS_ARCHIVE_DIR, f));
|
|
553
|
-
} catch (error) {
|
|
554
|
-
logError('archiveSession.unlink', error);
|
|
555
|
-
}
|
|
556
|
-
});
|
|
557
|
-
}
|
|
558
|
-
} catch (error) {
|
|
559
|
-
logError('archiveSession.readdir', error);
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
// ============================================================================
|
|
564
|
-
// Display Summary
|
|
565
|
-
// ============================================================================
|
|
566
|
-
|
|
567
|
-
/**
|
|
568
|
-
* Display session summary
|
|
569
|
-
* @param {Object} sessionState - Current session state
|
|
570
|
-
* @param {Array} patterns - Detected patterns
|
|
571
|
-
* @param {Object} sessionContext - Session context
|
|
572
|
-
*/
|
|
573
|
-
function displaySessionSummary(sessionState, patterns, sessionContext) {
|
|
574
|
-
console.log('\nš Session Summary\n');
|
|
575
|
-
|
|
576
|
-
// Duration
|
|
577
|
-
const duration = calculateDuration(sessionState.startTime);
|
|
578
|
-
console.log(`ā±ļø Duration: ${duration}`);
|
|
579
|
-
|
|
580
|
-
// Tool executions
|
|
581
|
-
const totalTools = sessionState.toolCalls?.length || 0;
|
|
582
|
-
const successTools = sessionState.toolCalls?.filter(t => t.success !== false).length || 0;
|
|
583
|
-
const failedTools = totalTools - successTools;
|
|
584
|
-
|
|
585
|
-
console.log(`š ļø Tool executions: ${totalTools} (success: ${successTools}, failed: ${failedTools})`);
|
|
586
|
-
|
|
587
|
-
// Detected patterns
|
|
588
|
-
if (patterns.length > 0) {
|
|
589
|
-
console.log('\n⨠Detected patterns:');
|
|
590
|
-
patterns.slice(0, 5).forEach(pattern => {
|
|
591
|
-
const emoji = pattern.severity === 'error' ? 'ā' : pattern.severity === 'warning' ? 'ā ļø' : 'ā
';
|
|
592
|
-
console.log(` ${emoji} ${pattern.description}`);
|
|
593
|
-
if (pattern.suggestion) {
|
|
594
|
-
console.log(` š” ${pattern.suggestion}`);
|
|
595
|
-
}
|
|
596
|
-
});
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
// Recommendations for next session
|
|
600
|
-
const recommendations = readJSONFile(RECOMMENDATIONS_FILE, { recommendedSkills: [] });
|
|
601
|
-
if (recommendations.recommendedSkills?.length > 0) {
|
|
602
|
-
console.log('\nš” Recommended for next session:');
|
|
603
|
-
recommendations.recommendedSkills.slice(0, 3).forEach(skill => {
|
|
604
|
-
console.log(` ⢠${skill.name} (${skill.reason})`);
|
|
605
|
-
});
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
// Quota status (guard against division by zero)
|
|
609
|
-
const quotaLimit = sessionContext.tokenQuota?.limit || 1;
|
|
610
|
-
const quotaUsed = sessionContext.tokenQuota?.used || 0;
|
|
611
|
-
const quotaPercentNum = (quotaUsed / quotaLimit) * 100;
|
|
612
|
-
const quotaEmoji = quotaPercentNum > 80 ? 'š“' : quotaPercentNum > 50 ? 'š”' : 'š¢';
|
|
613
|
-
console.log(`\n${quotaEmoji} Token quota: ${quotaPercentNum.toFixed(1)}% (${quotaUsed.toLocaleString()} / ${quotaLimit.toLocaleString()})`);
|
|
614
|
-
|
|
615
|
-
console.log('\nā
Session state saved\n');
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
// ============================================================================
|
|
619
|
-
// Main Stop Hook Logic
|
|
620
|
-
// ============================================================================
|
|
621
|
-
|
|
622
|
-
function stopHook() {
|
|
623
|
-
console.log('\nš Smart-Agents Session Ending...\n');
|
|
624
|
-
|
|
625
|
-
// Read current session state
|
|
626
|
-
const sessionState = readJSONFile(CURRENT_SESSION_FILE, {
|
|
627
|
-
startTime: new Date().toISOString(),
|
|
628
|
-
toolCalls: [],
|
|
629
|
-
patterns: [],
|
|
630
|
-
});
|
|
631
|
-
|
|
632
|
-
// Analyze patterns
|
|
633
|
-
const patterns = analyzeToolPatterns(sessionState);
|
|
634
|
-
|
|
635
|
-
// Save recommendations for next session
|
|
636
|
-
saveRecommendations(patterns, sessionState);
|
|
637
|
-
|
|
638
|
-
// Update session context
|
|
639
|
-
const sessionContext = updateSessionContext(sessionState);
|
|
640
|
-
|
|
641
|
-
// Archive session
|
|
642
|
-
archiveSession(sessionState);
|
|
643
|
-
|
|
644
|
-
// Save session key points to MeMesh
|
|
645
|
-
saveSessionKeyPointsOnEnd(sessionState, patterns);
|
|
646
|
-
|
|
647
|
-
// Write session cache for fast startup next time (1A.2)
|
|
648
|
-
writeSessionCache(sessionState, patterns);
|
|
649
|
-
|
|
650
|
-
// Clean up old key points (>30 days)
|
|
651
|
-
cleanupOldKeyPoints();
|
|
652
|
-
|
|
653
|
-
// Display summary
|
|
654
|
-
displaySessionSummary(sessionState, patterns, sessionContext);
|
|
655
|
-
|
|
656
|
-
// Clean up current session file
|
|
657
|
-
try {
|
|
658
|
-
fs.unlinkSync(CURRENT_SESSION_FILE);
|
|
659
|
-
} catch {
|
|
660
|
-
// Ignore if file doesn't exist
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
// ============================================================================
|
|
665
|
-
// Execute
|
|
666
|
-
// ============================================================================
|
|
667
|
-
|
|
668
|
-
try {
|
|
669
|
-
stopHook();
|
|
670
|
-
} catch (error) {
|
|
671
|
-
console.error('ā Stop hook error:', error.message);
|
|
672
|
-
process.exit(0); // Never block Claude Code on hook errors
|
|
673
|
-
}
|