@intrect/openswarm 0.2.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/LICENSE +21 -0
- package/README.md +544 -0
- package/config.example.yaml +107 -0
- package/dist/adapters/base.d.ts +8 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +104 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +13 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +318 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +14 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +366 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/cryptoQuantAdapter.d.ts +85 -0
- package/dist/adapters/cryptoQuantAdapter.d.ts.map +1 -0
- package/dist/adapters/cryptoQuantAdapter.js +238 -0
- package/dist/adapters/cryptoQuantAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +17 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +47 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/processRegistry.d.ts +38 -0
- package/dist/adapters/processRegistry.d.ts.map +1 -0
- package/dist/adapters/processRegistry.js +147 -0
- package/dist/adapters/processRegistry.js.map +1 -0
- package/dist/adapters/streamBuffer.d.ts +59 -0
- package/dist/adapters/streamBuffer.d.ts.map +1 -0
- package/dist/adapters/streamBuffer.js +123 -0
- package/dist/adapters/streamBuffer.js.map +1 -0
- package/dist/adapters/types.d.ts +65 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/agents/agentBus.d.ts +160 -0
- package/dist/agents/agentBus.d.ts.map +1 -0
- package/dist/agents/agentBus.js +350 -0
- package/dist/agents/agentBus.js.map +1 -0
- package/dist/agents/agentPair.d.ts +210 -0
- package/dist/agents/agentPair.d.ts.map +1 -0
- package/dist/agents/agentPair.js +420 -0
- package/dist/agents/agentPair.js.map +1 -0
- package/dist/agents/auditor.d.ts +27 -0
- package/dist/agents/auditor.d.ts.map +1 -0
- package/dist/agents/auditor.js +237 -0
- package/dist/agents/auditor.js.map +1 -0
- package/dist/agents/cliStreamParser.d.ts +18 -0
- package/dist/agents/cliStreamParser.d.ts.map +1 -0
- package/dist/agents/cliStreamParser.js +156 -0
- package/dist/agents/cliStreamParser.js.map +1 -0
- package/dist/agents/documenter.d.ts +31 -0
- package/dist/agents/documenter.d.ts.map +1 -0
- package/dist/agents/documenter.js +285 -0
- package/dist/agents/documenter.js.map +1 -0
- package/dist/agents/index.d.ts +10 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +10 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/pairMetrics.d.ts +63 -0
- package/dist/agents/pairMetrics.d.ts.map +1 -0
- package/dist/agents/pairMetrics.js +231 -0
- package/dist/agents/pairMetrics.js.map +1 -0
- package/dist/agents/pairPipeline.d.ts +155 -0
- package/dist/agents/pairPipeline.d.ts.map +1 -0
- package/dist/agents/pairPipeline.js +793 -0
- package/dist/agents/pairPipeline.js.map +1 -0
- package/dist/agents/pairWebhook.d.ts +59 -0
- package/dist/agents/pairWebhook.d.ts.map +1 -0
- package/dist/agents/pairWebhook.js +242 -0
- package/dist/agents/pairWebhook.js.map +1 -0
- package/dist/agents/pipelineFormat.d.ts +11 -0
- package/dist/agents/pipelineFormat.d.ts.map +1 -0
- package/dist/agents/pipelineFormat.js +164 -0
- package/dist/agents/pipelineFormat.js.map +1 -0
- package/dist/agents/pipelineGuards.d.ts +23 -0
- package/dist/agents/pipelineGuards.d.ts.map +1 -0
- package/dist/agents/pipelineGuards.js +175 -0
- package/dist/agents/pipelineGuards.js.map +1 -0
- package/dist/agents/reviewer.d.ts +37 -0
- package/dist/agents/reviewer.d.ts.map +1 -0
- package/dist/agents/reviewer.js +213 -0
- package/dist/agents/reviewer.js.map +1 -0
- package/dist/agents/skillDocumenter.d.ts +23 -0
- package/dist/agents/skillDocumenter.d.ts.map +1 -0
- package/dist/agents/skillDocumenter.js +218 -0
- package/dist/agents/skillDocumenter.js.map +1 -0
- package/dist/agents/tester.d.ts +37 -0
- package/dist/agents/tester.d.ts.map +1 -0
- package/dist/agents/tester.js +308 -0
- package/dist/agents/tester.js.map +1 -0
- package/dist/agents/worker.d.ts +30 -0
- package/dist/agents/worker.d.ts.map +1 -0
- package/dist/agents/worker.js +128 -0
- package/dist/agents/worker.js.map +1 -0
- package/dist/automation/autonomousRunner.d.ts +123 -0
- package/dist/automation/autonomousRunner.d.ts.map +1 -0
- package/dist/automation/autonomousRunner.js +1082 -0
- package/dist/automation/autonomousRunner.js.map +1 -0
- package/dist/automation/ciWorker.d.ts +51 -0
- package/dist/automation/ciWorker.d.ts.map +1 -0
- package/dist/automation/ciWorker.js +282 -0
- package/dist/automation/ciWorker.js.map +1 -0
- package/dist/automation/conflictResolver.d.ts +29 -0
- package/dist/automation/conflictResolver.d.ts.map +1 -0
- package/dist/automation/conflictResolver.js +261 -0
- package/dist/automation/conflictResolver.js.map +1 -0
- package/dist/automation/dailyReporter.d.ts +26 -0
- package/dist/automation/dailyReporter.d.ts.map +1 -0
- package/dist/automation/dailyReporter.js +132 -0
- package/dist/automation/dailyReporter.js.map +1 -0
- package/dist/automation/index.d.ts +7 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +7 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/longRunningMonitor.d.ts +26 -0
- package/dist/automation/longRunningMonitor.d.ts.map +1 -0
- package/dist/automation/longRunningMonitor.js +231 -0
- package/dist/automation/longRunningMonitor.js.map +1 -0
- package/dist/automation/prOwnership.d.ts +18 -0
- package/dist/automation/prOwnership.d.ts.map +1 -0
- package/dist/automation/prOwnership.js +61 -0
- package/dist/automation/prOwnership.js.map +1 -0
- package/dist/automation/prProcessor.d.ts +62 -0
- package/dist/automation/prProcessor.d.ts.map +1 -0
- package/dist/automation/prProcessor.js +700 -0
- package/dist/automation/prProcessor.js.map +1 -0
- package/dist/automation/runnerExecution.d.ts +49 -0
- package/dist/automation/runnerExecution.d.ts.map +1 -0
- package/dist/automation/runnerExecution.js +663 -0
- package/dist/automation/runnerExecution.js.map +1 -0
- package/dist/automation/runnerState.d.ts +170 -0
- package/dist/automation/runnerState.d.ts.map +1 -0
- package/dist/automation/runnerState.js +495 -0
- package/dist/automation/runnerState.js.map +1 -0
- package/dist/automation/runnerTypes.d.ts +46 -0
- package/dist/automation/runnerTypes.d.ts.map +1 -0
- package/dist/automation/runnerTypes.js +5 -0
- package/dist/automation/runnerTypes.js.map +1 -0
- package/dist/automation/scheduler.d.ts +75 -0
- package/dist/automation/scheduler.d.ts.map +1 -0
- package/dist/automation/scheduler.js +394 -0
- package/dist/automation/scheduler.js.map +1 -0
- package/dist/cli/promptHandler.d.ts +13 -0
- package/dist/cli/promptHandler.d.ts.map +1 -0
- package/dist/cli/promptHandler.js +189 -0
- package/dist/cli/promptHandler.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +138 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/config.d.ts +308 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +529 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/eventHub.d.ts +194 -0
- package/dist/core/eventHub.d.ts.map +1 -0
- package/dist/core/eventHub.js +136 -0
- package/dist/core/eventHub.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/service.d.ts +27 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +438 -0
- package/dist/core/service.js.map +1 -0
- package/dist/core/traceCollector.d.ts +105 -0
- package/dist/core/traceCollector.d.ts.map +1 -0
- package/dist/core/traceCollector.js +141 -0
- package/dist/core/traceCollector.js.map +1 -0
- package/dist/core/types.d.ts +413 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/discord/discordCore.d.ts +104 -0
- package/dist/discord/discordCore.d.ts.map +1 -0
- package/dist/discord/discordCore.js +698 -0
- package/dist/discord/discordCore.js.map +1 -0
- package/dist/discord/discordHandlers.d.ts +86 -0
- package/dist/discord/discordHandlers.d.ts.map +1 -0
- package/dist/discord/discordHandlers.js +849 -0
- package/dist/discord/discordHandlers.js.map +1 -0
- package/dist/discord/discordPair.d.ts +6 -0
- package/dist/discord/discordPair.d.ts.map +1 -0
- package/dist/discord/discordPair.js +567 -0
- package/dist/discord/discordPair.js.map +1 -0
- package/dist/discord/index.d.ts +4 -0
- package/dist/discord/index.d.ts.map +1 -0
- package/dist/discord/index.js +11 -0
- package/dist/discord/index.js.map +1 -0
- package/dist/github/github.d.ts +236 -0
- package/dist/github/github.d.ts.map +1 -0
- package/dist/github/github.js +535 -0
- package/dist/github/github.js.map +1 -0
- package/dist/github/index.d.ts +2 -0
- package/dist/github/index.d.ts.map +1 -0
- package/dist/github/index.js +2 -0
- package/dist/github/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/analyzer.d.ts +36 -0
- package/dist/knowledge/analyzer.d.ts.map +1 -0
- package/dist/knowledge/analyzer.js +170 -0
- package/dist/knowledge/analyzer.js.map +1 -0
- package/dist/knowledge/gitInfo.d.ts +10 -0
- package/dist/knowledge/gitInfo.d.ts.map +1 -0
- package/dist/knowledge/gitInfo.js +134 -0
- package/dist/knowledge/gitInfo.js.map +1 -0
- package/dist/knowledge/graph.d.ts +45 -0
- package/dist/knowledge/graph.d.ts.map +1 -0
- package/dist/knowledge/graph.js +262 -0
- package/dist/knowledge/graph.js.map +1 -0
- package/dist/knowledge/graphqlExporter.d.ts +64 -0
- package/dist/knowledge/graphqlExporter.d.ts.map +1 -0
- package/dist/knowledge/graphqlExporter.js +333 -0
- package/dist/knowledge/graphqlExporter.js.map +1 -0
- package/dist/knowledge/index.d.ts +58 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +212 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/repository.d.ts +64 -0
- package/dist/knowledge/repository.d.ts.map +1 -0
- package/dist/knowledge/repository.js +250 -0
- package/dist/knowledge/repository.js.map +1 -0
- package/dist/knowledge/riskOnAnalyzer.d.ts +79 -0
- package/dist/knowledge/riskOnAnalyzer.d.ts.map +1 -0
- package/dist/knowledge/riskOnAnalyzer.js +243 -0
- package/dist/knowledge/riskOnAnalyzer.js.map +1 -0
- package/dist/knowledge/scanner.d.ts +14 -0
- package/dist/knowledge/scanner.d.ts.map +1 -0
- package/dist/knowledge/scanner.js +350 -0
- package/dist/knowledge/scanner.js.map +1 -0
- package/dist/knowledge/store.d.ts +23 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +86 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/knowledge/types.d.ts +288 -0
- package/dist/knowledge/types.d.ts.map +1 -0
- package/dist/knowledge/types.js +111 -0
- package/dist/knowledge/types.js.map +1 -0
- package/dist/linear/index.d.ts +3 -0
- package/dist/linear/index.d.ts.map +1 -0
- package/dist/linear/index.js +3 -0
- package/dist/linear/index.js.map +1 -0
- package/dist/linear/linear.d.ts +160 -0
- package/dist/linear/linear.d.ts.map +1 -0
- package/dist/linear/linear.js +983 -0
- package/dist/linear/linear.js.map +1 -0
- package/dist/linear/projectUpdater.d.ts +23 -0
- package/dist/linear/projectUpdater.d.ts.map +1 -0
- package/dist/linear/projectUpdater.js +347 -0
- package/dist/linear/projectUpdater.js.map +1 -0
- package/dist/locale/en.d.ts +3 -0
- package/dist/locale/en.d.ts.map +1 -0
- package/dist/locale/en.js +436 -0
- package/dist/locale/en.js.map +1 -0
- package/dist/locale/index.d.ts +28 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +89 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/locale/ko.d.ts +3 -0
- package/dist/locale/ko.d.ts.map +1 -0
- package/dist/locale/ko.js +436 -0
- package/dist/locale/ko.js.map +1 -0
- package/dist/locale/prompts/en.d.ts +3 -0
- package/dist/locale/prompts/en.d.ts.map +1 -0
- package/dist/locale/prompts/en.js +278 -0
- package/dist/locale/prompts/en.js.map +1 -0
- package/dist/locale/prompts/ko.d.ts +3 -0
- package/dist/locale/prompts/ko.d.ts.map +1 -0
- package/dist/locale/prompts/ko.js +279 -0
- package/dist/locale/prompts/ko.js.map +1 -0
- package/dist/locale/types.d.ts +407 -0
- package/dist/locale/types.d.ts.map +1 -0
- package/dist/locale/types.js +5 -0
- package/dist/locale/types.js.map +1 -0
- package/dist/memory/codex.d.ts +93 -0
- package/dist/memory/codex.d.ts.map +1 -0
- package/dist/memory/codex.js +366 -0
- package/dist/memory/codex.js.map +1 -0
- package/dist/memory/compaction.d.ts +21 -0
- package/dist/memory/compaction.d.ts.map +1 -0
- package/dist/memory/compaction.js +205 -0
- package/dist/memory/compaction.js.map +1 -0
- package/dist/memory/index.d.ts +13 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +13 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memoryCore.d.ts +178 -0
- package/dist/memory/memoryCore.d.ts.map +1 -0
- package/dist/memory/memoryCore.js +623 -0
- package/dist/memory/memoryCore.js.map +1 -0
- package/dist/memory/memoryOps.d.ts +90 -0
- package/dist/memory/memoryOps.d.ts.map +1 -0
- package/dist/memory/memoryOps.js +606 -0
- package/dist/memory/memoryOps.js.map +1 -0
- package/dist/orchestration/conflictDetector.d.ts +15 -0
- package/dist/orchestration/conflictDetector.d.ts.map +1 -0
- package/dist/orchestration/conflictDetector.js +130 -0
- package/dist/orchestration/conflictDetector.js.map +1 -0
- package/dist/orchestration/decisionEngine.d.ts +177 -0
- package/dist/orchestration/decisionEngine.d.ts.map +1 -0
- package/dist/orchestration/decisionEngine.js +496 -0
- package/dist/orchestration/decisionEngine.js.map +1 -0
- package/dist/orchestration/index.d.ts +5 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +5 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/taskParser.d.ts +67 -0
- package/dist/orchestration/taskParser.d.ts.map +1 -0
- package/dist/orchestration/taskParser.js +542 -0
- package/dist/orchestration/taskParser.js.map +1 -0
- package/dist/orchestration/taskScheduler.d.ts +141 -0
- package/dist/orchestration/taskScheduler.d.ts.map +1 -0
- package/dist/orchestration/taskScheduler.js +317 -0
- package/dist/orchestration/taskScheduler.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +145 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +301 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/runners/cliRunner.d.ts +11 -0
- package/dist/runners/cliRunner.d.ts.map +1 -0
- package/dist/runners/cliRunner.js +194 -0
- package/dist/runners/cliRunner.js.map +1 -0
- package/dist/support/apiCache.d.ts +85 -0
- package/dist/support/apiCache.d.ts.map +1 -0
- package/dist/support/apiCache.js +163 -0
- package/dist/support/apiCache.js.map +1 -0
- package/dist/support/chat.d.ts +3 -0
- package/dist/support/chat.d.ts.map +1 -0
- package/dist/support/chat.js +304 -0
- package/dist/support/chat.js.map +1 -0
- package/dist/support/chatBackend.d.ts +25 -0
- package/dist/support/chatBackend.d.ts.map +1 -0
- package/dist/support/chatBackend.js +235 -0
- package/dist/support/chatBackend.js.map +1 -0
- package/dist/support/chatMemory.d.ts +71 -0
- package/dist/support/chatMemory.d.ts.map +1 -0
- package/dist/support/chatMemory.js +119 -0
- package/dist/support/chatMemory.js.map +1 -0
- package/dist/support/chatTui.d.ts +3 -0
- package/dist/support/chatTui.d.ts.map +1 -0
- package/dist/support/chatTui.js +998 -0
- package/dist/support/chatTui.js.map +1 -0
- package/dist/support/costTracker.d.ts +29 -0
- package/dist/support/costTracker.d.ts.map +1 -0
- package/dist/support/costTracker.js +113 -0
- package/dist/support/costTracker.js.map +1 -0
- package/dist/support/dashboardHtml.d.ts +3 -0
- package/dist/support/dashboardHtml.d.ts.map +1 -0
- package/dist/support/dashboardHtml.js +2070 -0
- package/dist/support/dashboardHtml.js.map +1 -0
- package/dist/support/delete-beliefs.d.ts +2 -0
- package/dist/support/delete-beliefs.d.ts.map +1 -0
- package/dist/support/delete-beliefs.js +34 -0
- package/dist/support/delete-beliefs.js.map +1 -0
- package/dist/support/dev.d.ts +55 -0
- package/dist/support/dev.d.ts.map +1 -0
- package/dist/support/dev.js +298 -0
- package/dist/support/dev.js.map +1 -0
- package/dist/support/editParser.d.ts +37 -0
- package/dist/support/editParser.d.ts.map +1 -0
- package/dist/support/editParser.js +365 -0
- package/dist/support/editParser.js.map +1 -0
- package/dist/support/gitStatus.d.ts +21 -0
- package/dist/support/gitStatus.d.ts.map +1 -0
- package/dist/support/gitStatus.js +108 -0
- package/dist/support/gitStatus.js.map +1 -0
- package/dist/support/gitTracker.d.ts +30 -0
- package/dist/support/gitTracker.d.ts.map +1 -0
- package/dist/support/gitTracker.js +143 -0
- package/dist/support/gitTracker.js.map +1 -0
- package/dist/support/index.d.ts +13 -0
- package/dist/support/index.d.ts.map +1 -0
- package/dist/support/index.js +13 -0
- package/dist/support/index.js.map +1 -0
- package/dist/support/planner.d.ts +58 -0
- package/dist/support/planner.d.ts.map +1 -0
- package/dist/support/planner.js +395 -0
- package/dist/support/planner.js.map +1 -0
- package/dist/support/projectMapper.d.ts +46 -0
- package/dist/support/projectMapper.d.ts.map +1 -0
- package/dist/support/projectMapper.js +259 -0
- package/dist/support/projectMapper.js.map +1 -0
- package/dist/support/quotaTracker.d.ts +29 -0
- package/dist/support/quotaTracker.d.ts.map +1 -0
- package/dist/support/quotaTracker.js +89 -0
- package/dist/support/quotaTracker.js.map +1 -0
- package/dist/support/rateLimiter.d.ts +101 -0
- package/dist/support/rateLimiter.d.ts.map +1 -0
- package/dist/support/rateLimiter.js +219 -0
- package/dist/support/rateLimiter.js.map +1 -0
- package/dist/support/rollback.d.ts +61 -0
- package/dist/support/rollback.d.ts.map +1 -0
- package/dist/support/rollback.js +328 -0
- package/dist/support/rollback.js.map +1 -0
- package/dist/support/stuckDetector.d.ts +68 -0
- package/dist/support/stuckDetector.d.ts.map +1 -0
- package/dist/support/stuckDetector.js +174 -0
- package/dist/support/stuckDetector.js.map +1 -0
- package/dist/support/timeWindow.d.ts +60 -0
- package/dist/support/timeWindow.d.ts.map +1 -0
- package/dist/support/timeWindow.js +236 -0
- package/dist/support/timeWindow.js.map +1 -0
- package/dist/support/web.d.ts +11 -0
- package/dist/support/web.d.ts.map +1 -0
- package/dist/support/web.js +938 -0
- package/dist/support/web.js.map +1 -0
- package/dist/support/workflowLinear.d.ts +99 -0
- package/dist/support/workflowLinear.d.ts.map +1 -0
- package/dist/support/workflowLinear.js +257 -0
- package/dist/support/workflowLinear.js.map +1 -0
- package/dist/support/worktreeManager.d.ts +20 -0
- package/dist/support/worktreeManager.d.ts.map +1 -0
- package/dist/support/worktreeManager.js +144 -0
- package/dist/support/worktreeManager.js.map +1 -0
- package/dist/taskState/store.d.ts +101 -0
- package/dist/taskState/store.d.ts.map +1 -0
- package/dist/taskState/store.js +346 -0
- package/dist/taskState/store.js.map +1 -0
- package/package.json +70 -0
- package/templates/AGENTS.md +432 -0
- package/templates/BOOT.md +25 -0
- package/templates/BOOTSTRAP.md +50 -0
- package/templates/CHANGELOG_AUDIT.md +74 -0
- package/templates/HEARTBEAT.md +86 -0
- package/templates/IDENTITY.md +27 -0
- package/templates/ISSUE_ANALYSIS.md +31 -0
- package/templates/PR_LAND.md +75 -0
- package/templates/PR_REVIEW.md +97 -0
- package/templates/SOUL.dev.md +52 -0
- package/templates/SOUL.md +81 -0
- package/templates/TOOLS.md +52 -0
- package/templates/USER.md +22 -0
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistent Cognitive Memory Module v2.0 - Core
|
|
3
|
+
*
|
|
4
|
+
* Types, embedding, distillation, database init, save, search.
|
|
5
|
+
* High-level operations (revision, formatting, background) are in memoryOps.ts.
|
|
6
|
+
*/
|
|
7
|
+
import { connect } from '@lancedb/lancedb';
|
|
8
|
+
import { pipeline } from '@xenova/transformers';
|
|
9
|
+
import { resolve } from 'path';
|
|
10
|
+
import { homedir } from 'os';
|
|
11
|
+
// Memory storage path
|
|
12
|
+
const MEMORY_DIR = resolve(homedir(), '.openswarm/memory');
|
|
13
|
+
// Xenova embedding config (runs locally, no external dependencies)
|
|
14
|
+
const EMBEDDING_MODEL = 'Xenova/multilingual-e5-base'; // 768 dimensions, multilingual
|
|
15
|
+
export const EMBEDDING_DIM = 768;
|
|
16
|
+
// Xenova pipeline singleton (Promise-based init to prevent race conditions)
|
|
17
|
+
let embeddingPipeline = null;
|
|
18
|
+
let pipelineInitPromise = null;
|
|
19
|
+
let pipelineInitFailed = false;
|
|
20
|
+
let pipelineInitError = null;
|
|
21
|
+
// TTL settings (milliseconds)
|
|
22
|
+
const TTL_JOURNAL = 14 * 24 * 60 * 60 * 1000; // 14 days
|
|
23
|
+
const TTL_REPOMAP = 30 * 24 * 60 * 60 * 1000; // 30 days
|
|
24
|
+
// Permanent retention sentinel (year 9999) - used instead of null (LanceDB schema inference compat)
|
|
25
|
+
export const PERMANENT_EXPIRY = new Date('9999-12-31T23:59:59Z').getTime();
|
|
26
|
+
/**
|
|
27
|
+
* Normalize records before LanceDB createTable
|
|
28
|
+
* - Prevents type inference errors (especially expiresAt)
|
|
29
|
+
* - Converts BigInt to Number, undefined to defaults
|
|
30
|
+
*/
|
|
31
|
+
export function normalizeRecords(records) {
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
return records.map(r => ({
|
|
34
|
+
id: String(r.id || `unknown-${now}-${Math.random().toString(36).slice(2, 6)}`),
|
|
35
|
+
type: String(r.type || 'journal'),
|
|
36
|
+
content: String(r.content || ''),
|
|
37
|
+
vector: Array.isArray(r.vector) ? r.vector.map(Number) : Array.from({ length: EMBEDDING_DIM }, () => 0),
|
|
38
|
+
importance: Number(r.importance) || 0.5,
|
|
39
|
+
confidence: Number(r.confidence) || 0.7,
|
|
40
|
+
createdAt: Number(r.createdAt) || now,
|
|
41
|
+
lastUpdated: Number(r.lastUpdated) || now,
|
|
42
|
+
lastAccessed: Number(r.lastAccessed) || now,
|
|
43
|
+
revisionCount: Number(r.revisionCount) || 0,
|
|
44
|
+
decay: Number(r.decay) || 0,
|
|
45
|
+
stability: r.stability || 'low',
|
|
46
|
+
contradicts: typeof r.contradicts === 'string' ? r.contradicts : JSON.stringify(r.contradicts || []),
|
|
47
|
+
supports: typeof r.supports === 'string' ? r.supports : JSON.stringify(r.supports || []),
|
|
48
|
+
derivedFrom: String(r.derivedFrom || 'unknown'),
|
|
49
|
+
repo: String(r.repo || 'unknown'),
|
|
50
|
+
title: String(r.title || ''),
|
|
51
|
+
metadata: typeof r.metadata === 'string' ? r.metadata : JSON.stringify(r.metadata || {}),
|
|
52
|
+
trust: Number(r.trust) || 0.5,
|
|
53
|
+
expiresAt: Number(r.expiresAt) || PERMANENT_EXPIRY,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
// Importance Score by Type (PRD Table)
|
|
57
|
+
export const BASE_IMPORTANCE = {
|
|
58
|
+
constraint: 0.9,
|
|
59
|
+
user_model: 0.85,
|
|
60
|
+
strategy: 0.8,
|
|
61
|
+
belief: 0.7,
|
|
62
|
+
system_pattern: 0.75,
|
|
63
|
+
};
|
|
64
|
+
// Legacy type importance (mapped to similar cognitive types)
|
|
65
|
+
const LEGACY_IMPORTANCE = {
|
|
66
|
+
decision: 0.8, // similar to strategy
|
|
67
|
+
fact: 0.85, // similar to constraint
|
|
68
|
+
repomap: 0.6, // lower, structural info
|
|
69
|
+
journal: 0.4, // temporary insight
|
|
70
|
+
};
|
|
71
|
+
// Singleton connection
|
|
72
|
+
let db = null;
|
|
73
|
+
let table = null;
|
|
74
|
+
// Singleton accessors (for memoryOps)
|
|
75
|
+
export function getDb() { return db; }
|
|
76
|
+
export function getTable() { return table; }
|
|
77
|
+
export function setTable(t) { table = t; }
|
|
78
|
+
/**
|
|
79
|
+
* Initialize embedding pipeline (Promise-based, prevents race conditions)
|
|
80
|
+
*/
|
|
81
|
+
async function initEmbeddingPipeline() {
|
|
82
|
+
// Already initialized
|
|
83
|
+
if (embeddingPipeline) {
|
|
84
|
+
return embeddingPipeline;
|
|
85
|
+
}
|
|
86
|
+
// If previously failed, return the same error
|
|
87
|
+
if (pipelineInitFailed && pipelineInitError) {
|
|
88
|
+
throw pipelineInitError;
|
|
89
|
+
}
|
|
90
|
+
// If initializing, wait for existing Promise (prevents race conditions)
|
|
91
|
+
if (pipelineInitPromise) {
|
|
92
|
+
return pipelineInitPromise;
|
|
93
|
+
}
|
|
94
|
+
// Start new initialization
|
|
95
|
+
pipelineInitPromise = (async () => {
|
|
96
|
+
try {
|
|
97
|
+
console.log('[Memory] Loading embedding model (first time may take a while)...');
|
|
98
|
+
const loadedPipeline = await pipeline('feature-extraction', EMBEDDING_MODEL, {
|
|
99
|
+
quantized: true,
|
|
100
|
+
});
|
|
101
|
+
embeddingPipeline = loadedPipeline;
|
|
102
|
+
console.log('[Memory] Embedding model loaded:', EMBEDDING_MODEL);
|
|
103
|
+
return loadedPipeline;
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
pipelineInitFailed = true;
|
|
107
|
+
pipelineInitError = error instanceof Error ? error : new Error(String(error));
|
|
108
|
+
pipelineInitPromise = null; // Allow retry on next attempt
|
|
109
|
+
console.error('[Memory] CRITICAL: Embedding model load failed:', error);
|
|
110
|
+
throw pipelineInitError;
|
|
111
|
+
}
|
|
112
|
+
})();
|
|
113
|
+
return pipelineInitPromise;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Generate embeddings via Xenova/transformers (local, no external dependencies)
|
|
117
|
+
* @throws Error - on embedding generation failure (zero vector fallback removed)
|
|
118
|
+
*/
|
|
119
|
+
export async function getEmbedding(text) {
|
|
120
|
+
// Initialize pipeline (throws on failure)
|
|
121
|
+
const pipe = await initEmbeddingPipeline();
|
|
122
|
+
// E5 model recommends "query: " or "passage: " prefix
|
|
123
|
+
const input = `query: ${text.slice(0, 512)}`; // Token limit
|
|
124
|
+
const result = await pipe(input, {
|
|
125
|
+
pooling: 'mean',
|
|
126
|
+
normalize: true,
|
|
127
|
+
});
|
|
128
|
+
// Float32Array → number[]
|
|
129
|
+
const vector = Array.from(result.data);
|
|
130
|
+
// Validation: error if zero vector
|
|
131
|
+
const vectorSum = vector.reduce((a, b) => Math.abs(a) + Math.abs(b), 0);
|
|
132
|
+
if (vectorSum < 0.001) {
|
|
133
|
+
throw new Error('Generated embedding is a zero vector (invalid)');
|
|
134
|
+
}
|
|
135
|
+
return vector;
|
|
136
|
+
}
|
|
137
|
+
// Rejection patterns (PRD: NEVER store)
|
|
138
|
+
const REJECTION_PATTERNS = [
|
|
139
|
+
/^(안녕|ㅎㅇ|ㅋㅋ|ㅎㅎ|오케이|넵|확인|감사)/, // Chit-chat
|
|
140
|
+
/^(좋아|싫어|화나|슬퍼)/, // Ephemeral emotions
|
|
141
|
+
/(어떻게 생각|뭐가 나을까|선택해|골라)/, // Context-dependent questions
|
|
142
|
+
/^(test|테스트|asdf|qwer)/i, // Test data
|
|
143
|
+
];
|
|
144
|
+
// Extraction target patterns (PRD: Extract ONLY if)
|
|
145
|
+
const EXTRACTION_PATTERNS = [
|
|
146
|
+
// Constraints (highest priority)
|
|
147
|
+
{ pattern: /(절대|반드시|금지|필수|MUST|NEVER|ALWAYS)/i, type: 'constraint', baseImportance: 0.9 },
|
|
148
|
+
{ pattern: /(제약|한계|limitation|constraint)/i, type: 'constraint', baseImportance: 0.85 },
|
|
149
|
+
// User Model
|
|
150
|
+
{ pattern: /(선호|prefer|싫어하|좋아하|스타일|습관)/i, type: 'user_model', baseImportance: 0.85 },
|
|
151
|
+
{ pattern: /(나는|내가|my style|i always|i never)/i, type: 'user_model', baseImportance: 0.8 },
|
|
152
|
+
// Strategy
|
|
153
|
+
{ pattern: /(전략|strategy|패턴|pattern|방법론|methodology)/i, type: 'strategy', baseImportance: 0.8 },
|
|
154
|
+
{ pattern: /(이렇게 하면|이 방식|this approach|best practice)/i, type: 'strategy', baseImportance: 0.75 },
|
|
155
|
+
// System Pattern
|
|
156
|
+
{ pattern: /(아키텍처|architecture|설계|design|구조|structure)/i, type: 'system_pattern', baseImportance: 0.75 },
|
|
157
|
+
{ pattern: /(원칙|principle|규칙|rule|convention)/i, type: 'system_pattern', baseImportance: 0.7 },
|
|
158
|
+
// Belief (default for verified insights)
|
|
159
|
+
{ pattern: /(확인됨|검증|verified|proven|tested|결론)/i, type: 'belief', baseImportance: 0.7 },
|
|
160
|
+
{ pattern: /(발견|찾음|알아냄|learned|discovered)/i, type: 'belief', baseImportance: 0.65 },
|
|
161
|
+
];
|
|
162
|
+
/**
|
|
163
|
+
* Semantic Distillation: evaluate whether content is worth storing
|
|
164
|
+
*/
|
|
165
|
+
export function distillContent(content, context) {
|
|
166
|
+
const normalizedContent = content.trim().toLowerCase();
|
|
167
|
+
// 1. Check rejection patterns
|
|
168
|
+
for (const pattern of REJECTION_PATTERNS) {
|
|
169
|
+
if (pattern.test(normalizedContent)) {
|
|
170
|
+
return {
|
|
171
|
+
shouldStore: false,
|
|
172
|
+
type: 'belief',
|
|
173
|
+
importance: 0,
|
|
174
|
+
confidence: 0,
|
|
175
|
+
reason: 'Matches rejection pattern (noise)',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// 2. Minimum length check (too short is usually noise)
|
|
180
|
+
if (content.length < 20) {
|
|
181
|
+
return {
|
|
182
|
+
shouldStore: false,
|
|
183
|
+
type: 'belief',
|
|
184
|
+
importance: 0,
|
|
185
|
+
confidence: 0,
|
|
186
|
+
reason: 'Content too short (likely noise)',
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
// 3. Extraction pattern matching
|
|
190
|
+
for (const { pattern, type, baseImportance } of EXTRACTION_PATTERNS) {
|
|
191
|
+
if (pattern.test(content)) {
|
|
192
|
+
let importance = baseImportance;
|
|
193
|
+
let confidence = 0.7;
|
|
194
|
+
// Adjustment: increase importance on repeated appearance
|
|
195
|
+
if (context?.isRepeated) {
|
|
196
|
+
importance = Math.min(1, importance + 0.1);
|
|
197
|
+
confidence = Math.min(1, confidence + 0.1);
|
|
198
|
+
}
|
|
199
|
+
// Adjustment: increase confidence when verified
|
|
200
|
+
if (context?.isVerified) {
|
|
201
|
+
confidence = Math.min(1, confidence + 0.15);
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
shouldStore: true,
|
|
205
|
+
type,
|
|
206
|
+
importance,
|
|
207
|
+
confidence,
|
|
208
|
+
reason: `Matches extraction pattern for ${type}`,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// 4. Default: store as belief if long enough and seems meaningful (low importance)
|
|
213
|
+
if (content.length > 100) {
|
|
214
|
+
return {
|
|
215
|
+
shouldStore: true,
|
|
216
|
+
type: 'belief',
|
|
217
|
+
importance: 0.5,
|
|
218
|
+
confidence: 0.5,
|
|
219
|
+
reason: 'Default: moderately significant content',
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
// 5. Do not store
|
|
223
|
+
return {
|
|
224
|
+
shouldStore: false,
|
|
225
|
+
type: 'belief',
|
|
226
|
+
importance: 0,
|
|
227
|
+
confidence: 0,
|
|
228
|
+
reason: 'Does not meet storage criteria',
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Calculate importance score (PRD Table + Adjustments)
|
|
233
|
+
*/
|
|
234
|
+
export function calculateImportance(type, options) {
|
|
235
|
+
// Base importance by type
|
|
236
|
+
let importance = (BASE_IMPORTANCE[type] ??
|
|
237
|
+
LEGACY_IMPORTANCE[type] ?? 0.5);
|
|
238
|
+
// Increase: repeated appearance
|
|
239
|
+
if (options?.isRepeated) {
|
|
240
|
+
importance = Math.min(1, importance + 0.1);
|
|
241
|
+
}
|
|
242
|
+
// Increase: verified in practice
|
|
243
|
+
if (options?.isVerified) {
|
|
244
|
+
importance = Math.min(1, importance + 0.1);
|
|
245
|
+
}
|
|
246
|
+
// Decrease: aged (subtract 0.1 if older than 30 days)
|
|
247
|
+
if (options?.age && options.age > 30 * 24 * 60 * 60 * 1000) {
|
|
248
|
+
importance = Math.max(0.3, importance - 0.1);
|
|
249
|
+
}
|
|
250
|
+
// Decrease: contradiction detected
|
|
251
|
+
if (options?.hasContradiction) {
|
|
252
|
+
importance = Math.max(0.2, importance - 0.2);
|
|
253
|
+
}
|
|
254
|
+
return importance;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Determine stability based on revision history
|
|
258
|
+
*/
|
|
259
|
+
export function calculateStability(revisionCount, age) {
|
|
260
|
+
const ageInDays = age / (24 * 60 * 60 * 1000);
|
|
261
|
+
// Old with no revisions = high
|
|
262
|
+
if (ageInDays > 7 && revisionCount === 0)
|
|
263
|
+
return 'high';
|
|
264
|
+
// Recently created or frequently revised = low
|
|
265
|
+
if (ageInDays < 1 || revisionCount > 3)
|
|
266
|
+
return 'low';
|
|
267
|
+
return 'medium';
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Initialize database
|
|
271
|
+
*/
|
|
272
|
+
export async function initDatabase() {
|
|
273
|
+
if (db && table)
|
|
274
|
+
return;
|
|
275
|
+
try {
|
|
276
|
+
const fs = await import('fs/promises');
|
|
277
|
+
await fs.mkdir(MEMORY_DIR, { recursive: true });
|
|
278
|
+
db = await connect(MEMORY_DIR);
|
|
279
|
+
const tableNames = await db.tableNames();
|
|
280
|
+
// v2.0: cognitive memory table
|
|
281
|
+
if (tableNames.includes('cognitive_memory')) {
|
|
282
|
+
table = await db.openTable('cognitive_memory');
|
|
283
|
+
console.log('[Memory] Loaded cognitive_memory table (v2.0)');
|
|
284
|
+
}
|
|
285
|
+
else if (tableNames.includes('devmemory')) {
|
|
286
|
+
// Legacy table - will migrate later
|
|
287
|
+
table = await db.openTable('devmemory');
|
|
288
|
+
console.log('[Memory] Loaded legacy devmemory table');
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
// Create new table (v2.0 schema)
|
|
292
|
+
const now = Date.now();
|
|
293
|
+
const initialRecord = {
|
|
294
|
+
id: 'init',
|
|
295
|
+
type: 'system_pattern',
|
|
296
|
+
content: 'Cognitive memory system initialized with PRD v2.0 schema',
|
|
297
|
+
vector: await getEmbedding('Cognitive memory system initialized'),
|
|
298
|
+
// PRD Mandatory Fields
|
|
299
|
+
importance: 0.5,
|
|
300
|
+
confidence: 1.0,
|
|
301
|
+
createdAt: now,
|
|
302
|
+
lastUpdated: now,
|
|
303
|
+
lastAccessed: now,
|
|
304
|
+
revisionCount: 0,
|
|
305
|
+
decay: 0,
|
|
306
|
+
// PRD Extensions
|
|
307
|
+
stability: 'high',
|
|
308
|
+
contradicts: '[]',
|
|
309
|
+
supports: '[]',
|
|
310
|
+
derivedFrom: 'system_init',
|
|
311
|
+
// Legacy compatibility
|
|
312
|
+
repo: 'system',
|
|
313
|
+
title: 'Memory system initialized',
|
|
314
|
+
metadata: '{}',
|
|
315
|
+
trust: 1.0,
|
|
316
|
+
expiresAt: PERMANENT_EXPIRY,
|
|
317
|
+
};
|
|
318
|
+
table = await db.createTable('cognitive_memory', [initialRecord]);
|
|
319
|
+
console.log('[Memory] Created cognitive_memory table (v2.0)');
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
console.error('[Memory] Database init error:', error);
|
|
324
|
+
throw error;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Calculate freshness (0-1, higher for more recent)
|
|
329
|
+
*/
|
|
330
|
+
export function calculateFreshness(createdAt, halfLifeDays = 7) {
|
|
331
|
+
const ageMs = Date.now() - createdAt;
|
|
332
|
+
const halfLifeMs = halfLifeDays * 24 * 60 * 60 * 1000;
|
|
333
|
+
return Math.exp(-ageMs / halfLifeMs);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Save memory (PRD v2.0 with Distillation)
|
|
337
|
+
*/
|
|
338
|
+
export async function saveMemory(type, repo, title, content, options) {
|
|
339
|
+
await initDatabase();
|
|
340
|
+
if (!table)
|
|
341
|
+
throw new Error('Table not initialized');
|
|
342
|
+
// PRD: Semantic Distillation (unless bypassed)
|
|
343
|
+
if (!options?.skipDistillation) {
|
|
344
|
+
const distillation = distillContent(content, {
|
|
345
|
+
isRepeated: options?.isRepeated,
|
|
346
|
+
isVerified: options?.isVerified,
|
|
347
|
+
});
|
|
348
|
+
if (!distillation.shouldStore) {
|
|
349
|
+
console.log(`[Memory] Rejected by distillation: ${distillation.reason}`);
|
|
350
|
+
return null;
|
|
351
|
+
}
|
|
352
|
+
// Use distillation-suggested type if more appropriate
|
|
353
|
+
if (distillation.type !== type && isCognitiveType(distillation.type)) {
|
|
354
|
+
console.log(`[Memory] Type adjusted by distillation: ${type} → ${distillation.type}`);
|
|
355
|
+
type = distillation.type;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
const now = Date.now();
|
|
359
|
+
const id = `${type}-${repo}-${now}`;
|
|
360
|
+
// Default TTL by type
|
|
361
|
+
let expiresAt = PERMANENT_EXPIRY;
|
|
362
|
+
if (type === 'journal') {
|
|
363
|
+
expiresAt = now + (options?.ttlDays ? options.ttlDays * 24 * 60 * 60 * 1000 : TTL_JOURNAL);
|
|
364
|
+
}
|
|
365
|
+
else if (type === 'repomap') {
|
|
366
|
+
expiresAt = now + (options?.ttlDays ? options.ttlDays * 24 * 60 * 60 * 1000 : TTL_REPOMAP);
|
|
367
|
+
}
|
|
368
|
+
// Calculate importance
|
|
369
|
+
const importance = options?.importance ??
|
|
370
|
+
calculateImportance(type, {
|
|
371
|
+
isRepeated: options?.isRepeated,
|
|
372
|
+
isVerified: options?.isVerified,
|
|
373
|
+
});
|
|
374
|
+
const record = {
|
|
375
|
+
id,
|
|
376
|
+
type,
|
|
377
|
+
content,
|
|
378
|
+
vector: await getEmbedding(`${title}\n${content}`),
|
|
379
|
+
// PRD Mandatory Fields
|
|
380
|
+
importance,
|
|
381
|
+
confidence: options?.confidence ?? 0.7,
|
|
382
|
+
createdAt: now,
|
|
383
|
+
lastUpdated: now,
|
|
384
|
+
lastAccessed: now,
|
|
385
|
+
revisionCount: 0,
|
|
386
|
+
decay: 0,
|
|
387
|
+
// PRD Extensions
|
|
388
|
+
stability: 'low', // Newly created starts as low
|
|
389
|
+
contradicts: '[]',
|
|
390
|
+
supports: '[]',
|
|
391
|
+
derivedFrom: options?.derivedFrom || 'unknown',
|
|
392
|
+
// Legacy compatibility
|
|
393
|
+
repo,
|
|
394
|
+
title,
|
|
395
|
+
metadata: JSON.stringify(options?.metadata || {}),
|
|
396
|
+
trust: options?.trust ?? 0.8,
|
|
397
|
+
expiresAt,
|
|
398
|
+
};
|
|
399
|
+
await table.add([record]);
|
|
400
|
+
console.log(`[Memory] Saved ${type} (importance: ${importance.toFixed(2)}) for ${repo}: ${title}`);
|
|
401
|
+
return id;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Type guard for cognitive memory types
|
|
405
|
+
*/
|
|
406
|
+
function isCognitiveType(type) {
|
|
407
|
+
return ['belief', 'strategy', 'user_model', 'system_pattern', 'constraint'].includes(type);
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Save cognitive memory directly (for PRD Schema)
|
|
411
|
+
*/
|
|
412
|
+
export async function saveCognitiveMemory(type, content, options) {
|
|
413
|
+
await initDatabase();
|
|
414
|
+
if (!table)
|
|
415
|
+
throw new Error('Table not initialized');
|
|
416
|
+
const now = Date.now();
|
|
417
|
+
const id = `${type}-${now}-${Math.random().toString(36).slice(2, 8)}`;
|
|
418
|
+
const importance = options?.importance ?? BASE_IMPORTANCE[type];
|
|
419
|
+
const record = {
|
|
420
|
+
id,
|
|
421
|
+
type,
|
|
422
|
+
content,
|
|
423
|
+
vector: await getEmbedding(content),
|
|
424
|
+
importance,
|
|
425
|
+
confidence: options?.confidence ?? 0.7,
|
|
426
|
+
createdAt: now,
|
|
427
|
+
lastUpdated: now,
|
|
428
|
+
lastAccessed: now,
|
|
429
|
+
revisionCount: 0,
|
|
430
|
+
decay: 0,
|
|
431
|
+
stability: 'low',
|
|
432
|
+
contradicts: JSON.stringify(options?.contradicts || []),
|
|
433
|
+
supports: JSON.stringify(options?.supports || []),
|
|
434
|
+
derivedFrom: options?.derivedFrom || 'unknown',
|
|
435
|
+
// Legacy fields (minimal)
|
|
436
|
+
repo: 'cognitive',
|
|
437
|
+
title: content.slice(0, 100),
|
|
438
|
+
metadata: '{}',
|
|
439
|
+
trust: options?.confidence ?? 0.7,
|
|
440
|
+
expiresAt: PERMANENT_EXPIRY,
|
|
441
|
+
};
|
|
442
|
+
await table.add([record]);
|
|
443
|
+
console.log(`[Memory] Saved cognitive ${type} (importance: ${importance.toFixed(2)}): ${content.slice(0, 50)}...`);
|
|
444
|
+
return id;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Record design decision (ADR style)
|
|
448
|
+
*/
|
|
449
|
+
export async function recordDecision(repo, title, context, decision, consequences, alternatives) {
|
|
450
|
+
const content = `## Context\n${context}\n\n## Decision\n${decision}\n\n## Consequences\n${consequences}${alternatives ? `\n\n## Alternatives Considered\n${alternatives}` : ''}`;
|
|
451
|
+
const id = await saveMemory('decision', repo, title, content, {
|
|
452
|
+
trust: 0.95,
|
|
453
|
+
metadata: { context, decision, consequences, alternatives },
|
|
454
|
+
skipDistillation: true, // Legacy: explicit save
|
|
455
|
+
});
|
|
456
|
+
return id;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Update repository map
|
|
460
|
+
*/
|
|
461
|
+
export async function updateRepoMap(repo, modules, entryPoints, dependencies, notes) {
|
|
462
|
+
const content = `## Modules\n${modules.map(m => `- ${m}`).join('\n')}\n\n## Entry Points\n${entryPoints.map(e => `- ${e}`).join('\n')}\n\n## Dependencies\n${Object.entries(dependencies).map(([k, v]) => `- ${k}: ${v}`).join('\n')}${notes ? `\n\n## Notes\n${notes}` : ''}`;
|
|
463
|
+
const id = await saveMemory('repomap', repo, `Repository structure: ${repo}`, content, {
|
|
464
|
+
trust: 0.9,
|
|
465
|
+
metadata: { modules, entryPoints, dependencies },
|
|
466
|
+
skipDistillation: true,
|
|
467
|
+
});
|
|
468
|
+
return id;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Log work entry
|
|
472
|
+
*/
|
|
473
|
+
export async function logWork(repo, summary, details, filesChanged, issueRef) {
|
|
474
|
+
const content = `${details}${filesChanged ? `\n\n### Files Changed\n${filesChanged.map(f => `- ${f}`).join('\n')}` : ''}${issueRef ? `\n\n### Related Issue\n${issueRef}` : ''}`;
|
|
475
|
+
const id = await saveMemory('journal', repo, summary, content, {
|
|
476
|
+
trust: 0.85,
|
|
477
|
+
metadata: { filesChanged, issueRef, timestamp: new Date().toISOString() },
|
|
478
|
+
ttlDays: 14,
|
|
479
|
+
skipDistillation: true,
|
|
480
|
+
derivedFrom: issueRef, // Used to store channelId
|
|
481
|
+
});
|
|
482
|
+
return id;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Record a fact (versions, environments, etc.)
|
|
486
|
+
*/
|
|
487
|
+
export async function recordFact(repo, title, content, category) {
|
|
488
|
+
const id = await saveMemory('fact', repo, title, content, {
|
|
489
|
+
trust: 0.95,
|
|
490
|
+
metadata: { category },
|
|
491
|
+
skipDistillation: true,
|
|
492
|
+
});
|
|
493
|
+
return id;
|
|
494
|
+
}
|
|
495
|
+
// Hybrid Retrieval (PRD Phase 2)
|
|
496
|
+
/**
|
|
497
|
+
* PRD Hybrid Score calculation
|
|
498
|
+
* final_score = 0.55*similarity + 0.20*importance + 0.15*recency + 0.10*frequency
|
|
499
|
+
*/
|
|
500
|
+
function calculateHybridScore(similarity, importance, recency, accessFrequency) {
|
|
501
|
+
return (0.55 * similarity +
|
|
502
|
+
0.20 * importance +
|
|
503
|
+
0.15 * recency +
|
|
504
|
+
0.10 * Math.min(1, accessFrequency / 10) // normalize frequency
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Search memory (PRD Hybrid Retrieval) - Safe version
|
|
509
|
+
* Distinguishes between errors and empty results
|
|
510
|
+
*/
|
|
511
|
+
export async function searchMemorySafe(query, options = {}) {
|
|
512
|
+
try {
|
|
513
|
+
await initDatabase();
|
|
514
|
+
if (!table) {
|
|
515
|
+
return {
|
|
516
|
+
success: false,
|
|
517
|
+
memories: [],
|
|
518
|
+
error: 'Database table not initialized',
|
|
519
|
+
errorCode: 'DB_INIT_FAILED',
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
const { types, repo, minSimilarity = 0.4, minTrust = 0.3, minFreshness = 0, limit = 10, includeExpired = false, } = options;
|
|
523
|
+
let queryVector;
|
|
524
|
+
try {
|
|
525
|
+
queryVector = await getEmbedding(query);
|
|
526
|
+
}
|
|
527
|
+
catch (embeddingError) {
|
|
528
|
+
return {
|
|
529
|
+
success: false,
|
|
530
|
+
memories: [],
|
|
531
|
+
error: `Embedding generation failed: ${embeddingError instanceof Error ? embeddingError.message : String(embeddingError)}`,
|
|
532
|
+
errorCode: 'EMBEDDING_FAILED',
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
const results = await table.vectorSearch(queryVector).limit(limit * 5).toArray();
|
|
536
|
+
const now = Date.now();
|
|
537
|
+
// Hybrid Retrieval with PRD scoring
|
|
538
|
+
const scored = results
|
|
539
|
+
.filter((r) => {
|
|
540
|
+
if (r.id === 'init')
|
|
541
|
+
return false;
|
|
542
|
+
if (!includeExpired && r.expiresAt < PERMANENT_EXPIRY && r.expiresAt < now)
|
|
543
|
+
return false;
|
|
544
|
+
if (types && !types.includes(r.type))
|
|
545
|
+
return false;
|
|
546
|
+
if (repo && r.repo !== repo && r.repo !== 'system' && r.repo !== 'cognitive')
|
|
547
|
+
return false;
|
|
548
|
+
const confidence = r.confidence ?? r.trust ?? 0;
|
|
549
|
+
if (confidence < minTrust)
|
|
550
|
+
return false;
|
|
551
|
+
const similarity = r._distance ? 1 - r._distance : 0;
|
|
552
|
+
if (similarity < minSimilarity)
|
|
553
|
+
return false;
|
|
554
|
+
return true;
|
|
555
|
+
})
|
|
556
|
+
.map((r) => {
|
|
557
|
+
const similarity = r._distance ? 1 - r._distance : 0;
|
|
558
|
+
const recency = calculateFreshness(r.createdAt);
|
|
559
|
+
const importance = r.importance ?? calculateImportance(r.type);
|
|
560
|
+
const accessCount = r.accessCount ?? 1;
|
|
561
|
+
const effectiveImportance = importance * (1 - (r.decay ?? 0));
|
|
562
|
+
const hybridScore = calculateHybridScore(similarity, effectiveImportance, recency, accessCount);
|
|
563
|
+
return { record: r, similarity, recency, importance: effectiveImportance, hybridScore };
|
|
564
|
+
})
|
|
565
|
+
.filter(item => item.recency >= minFreshness)
|
|
566
|
+
.sort((a, b) => b.hybridScore - a.hybridScore)
|
|
567
|
+
.slice(0, limit);
|
|
568
|
+
updateAccessTime(scored.map(s => s.record.id)).catch((e) => console.warn('[Memory] Failed to update access time:', e));
|
|
569
|
+
const formatted = scored.map(({ record: r, similarity, recency, importance, hybridScore }) => ({
|
|
570
|
+
id: r.id,
|
|
571
|
+
type: r.type,
|
|
572
|
+
repo: r.repo,
|
|
573
|
+
title: r.title,
|
|
574
|
+
content: r.content,
|
|
575
|
+
metadata: JSON.parse(r.metadata || '{}'),
|
|
576
|
+
trust: r.trust ?? r.confidence ?? 0.7,
|
|
577
|
+
createdAt: r.createdAt,
|
|
578
|
+
score: hybridScore,
|
|
579
|
+
freshness: recency,
|
|
580
|
+
importance,
|
|
581
|
+
confidence: r.confidence ?? r.trust ?? 0.7,
|
|
582
|
+
stability: r.stability ?? 'medium',
|
|
583
|
+
revisionCount: r.revisionCount ?? 0,
|
|
584
|
+
decay: r.decay ?? 0,
|
|
585
|
+
similarityScore: similarity,
|
|
586
|
+
}));
|
|
587
|
+
console.log(`[Memory] Found ${formatted.length} memories (hybrid retrieval, query: "${query.slice(0, 30)}...")`);
|
|
588
|
+
return { success: true, memories: formatted };
|
|
589
|
+
}
|
|
590
|
+
catch (error) {
|
|
591
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
592
|
+
console.error('[Memory] Search error:', error);
|
|
593
|
+
return {
|
|
594
|
+
success: false,
|
|
595
|
+
memories: [],
|
|
596
|
+
error: errorMsg,
|
|
597
|
+
errorCode: 'QUERY_FAILED',
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Search memory (PRD Hybrid Retrieval) - Legacy compatible
|
|
603
|
+
* @deprecated Use searchMemorySafe instead
|
|
604
|
+
*/
|
|
605
|
+
export async function searchMemory(query, options = {}) {
|
|
606
|
+
const result = await searchMemorySafe(query, options);
|
|
607
|
+
if (!result.success) {
|
|
608
|
+
console.warn(`[Memory] Search failed silently: ${result.error} (code: ${result.errorCode})`);
|
|
609
|
+
}
|
|
610
|
+
return result.memories;
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Update last_accessed timestamp for retrieved memories
|
|
614
|
+
*/
|
|
615
|
+
async function updateAccessTime(ids) {
|
|
616
|
+
// Note: LanceDB doesn't support in-place updates easily
|
|
617
|
+
// This would require table rewrite - implement in Phase 3
|
|
618
|
+
// For now, just log
|
|
619
|
+
if (ids.length > 0) {
|
|
620
|
+
console.log(`[Memory] Access logged for ${ids.length} memories`);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
//# sourceMappingURL=memoryCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoryCore.js","sourceRoot":"","sources":["../../src/memory/memoryCore.ts"],"names":[],"mappings":"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"}
|