@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.
Files changed (437) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +544 -0
  3. package/config.example.yaml +107 -0
  4. package/dist/adapters/base.d.ts +8 -0
  5. package/dist/adapters/base.d.ts.map +1 -0
  6. package/dist/adapters/base.js +104 -0
  7. package/dist/adapters/base.js.map +1 -0
  8. package/dist/adapters/claude.d.ts +13 -0
  9. package/dist/adapters/claude.d.ts.map +1 -0
  10. package/dist/adapters/claude.js +318 -0
  11. package/dist/adapters/claude.js.map +1 -0
  12. package/dist/adapters/codex.d.ts +14 -0
  13. package/dist/adapters/codex.d.ts.map +1 -0
  14. package/dist/adapters/codex.js +366 -0
  15. package/dist/adapters/codex.js.map +1 -0
  16. package/dist/adapters/cryptoQuantAdapter.d.ts +85 -0
  17. package/dist/adapters/cryptoQuantAdapter.d.ts.map +1 -0
  18. package/dist/adapters/cryptoQuantAdapter.js +238 -0
  19. package/dist/adapters/cryptoQuantAdapter.js.map +1 -0
  20. package/dist/adapters/index.d.ts +17 -0
  21. package/dist/adapters/index.d.ts.map +1 -0
  22. package/dist/adapters/index.js +47 -0
  23. package/dist/adapters/index.js.map +1 -0
  24. package/dist/adapters/processRegistry.d.ts +38 -0
  25. package/dist/adapters/processRegistry.d.ts.map +1 -0
  26. package/dist/adapters/processRegistry.js +147 -0
  27. package/dist/adapters/processRegistry.js.map +1 -0
  28. package/dist/adapters/streamBuffer.d.ts +59 -0
  29. package/dist/adapters/streamBuffer.d.ts.map +1 -0
  30. package/dist/adapters/streamBuffer.js +123 -0
  31. package/dist/adapters/streamBuffer.js.map +1 -0
  32. package/dist/adapters/types.d.ts +65 -0
  33. package/dist/adapters/types.d.ts.map +1 -0
  34. package/dist/adapters/types.js +6 -0
  35. package/dist/adapters/types.js.map +1 -0
  36. package/dist/agents/agentBus.d.ts +160 -0
  37. package/dist/agents/agentBus.d.ts.map +1 -0
  38. package/dist/agents/agentBus.js +350 -0
  39. package/dist/agents/agentBus.js.map +1 -0
  40. package/dist/agents/agentPair.d.ts +210 -0
  41. package/dist/agents/agentPair.d.ts.map +1 -0
  42. package/dist/agents/agentPair.js +420 -0
  43. package/dist/agents/agentPair.js.map +1 -0
  44. package/dist/agents/auditor.d.ts +27 -0
  45. package/dist/agents/auditor.d.ts.map +1 -0
  46. package/dist/agents/auditor.js +237 -0
  47. package/dist/agents/auditor.js.map +1 -0
  48. package/dist/agents/cliStreamParser.d.ts +18 -0
  49. package/dist/agents/cliStreamParser.d.ts.map +1 -0
  50. package/dist/agents/cliStreamParser.js +156 -0
  51. package/dist/agents/cliStreamParser.js.map +1 -0
  52. package/dist/agents/documenter.d.ts +31 -0
  53. package/dist/agents/documenter.d.ts.map +1 -0
  54. package/dist/agents/documenter.js +285 -0
  55. package/dist/agents/documenter.js.map +1 -0
  56. package/dist/agents/index.d.ts +10 -0
  57. package/dist/agents/index.d.ts.map +1 -0
  58. package/dist/agents/index.js +10 -0
  59. package/dist/agents/index.js.map +1 -0
  60. package/dist/agents/pairMetrics.d.ts +63 -0
  61. package/dist/agents/pairMetrics.d.ts.map +1 -0
  62. package/dist/agents/pairMetrics.js +231 -0
  63. package/dist/agents/pairMetrics.js.map +1 -0
  64. package/dist/agents/pairPipeline.d.ts +155 -0
  65. package/dist/agents/pairPipeline.d.ts.map +1 -0
  66. package/dist/agents/pairPipeline.js +793 -0
  67. package/dist/agents/pairPipeline.js.map +1 -0
  68. package/dist/agents/pairWebhook.d.ts +59 -0
  69. package/dist/agents/pairWebhook.d.ts.map +1 -0
  70. package/dist/agents/pairWebhook.js +242 -0
  71. package/dist/agents/pairWebhook.js.map +1 -0
  72. package/dist/agents/pipelineFormat.d.ts +11 -0
  73. package/dist/agents/pipelineFormat.d.ts.map +1 -0
  74. package/dist/agents/pipelineFormat.js +164 -0
  75. package/dist/agents/pipelineFormat.js.map +1 -0
  76. package/dist/agents/pipelineGuards.d.ts +23 -0
  77. package/dist/agents/pipelineGuards.d.ts.map +1 -0
  78. package/dist/agents/pipelineGuards.js +175 -0
  79. package/dist/agents/pipelineGuards.js.map +1 -0
  80. package/dist/agents/reviewer.d.ts +37 -0
  81. package/dist/agents/reviewer.d.ts.map +1 -0
  82. package/dist/agents/reviewer.js +213 -0
  83. package/dist/agents/reviewer.js.map +1 -0
  84. package/dist/agents/skillDocumenter.d.ts +23 -0
  85. package/dist/agents/skillDocumenter.d.ts.map +1 -0
  86. package/dist/agents/skillDocumenter.js +218 -0
  87. package/dist/agents/skillDocumenter.js.map +1 -0
  88. package/dist/agents/tester.d.ts +37 -0
  89. package/dist/agents/tester.d.ts.map +1 -0
  90. package/dist/agents/tester.js +308 -0
  91. package/dist/agents/tester.js.map +1 -0
  92. package/dist/agents/worker.d.ts +30 -0
  93. package/dist/agents/worker.d.ts.map +1 -0
  94. package/dist/agents/worker.js +128 -0
  95. package/dist/agents/worker.js.map +1 -0
  96. package/dist/automation/autonomousRunner.d.ts +123 -0
  97. package/dist/automation/autonomousRunner.d.ts.map +1 -0
  98. package/dist/automation/autonomousRunner.js +1082 -0
  99. package/dist/automation/autonomousRunner.js.map +1 -0
  100. package/dist/automation/ciWorker.d.ts +51 -0
  101. package/dist/automation/ciWorker.d.ts.map +1 -0
  102. package/dist/automation/ciWorker.js +282 -0
  103. package/dist/automation/ciWorker.js.map +1 -0
  104. package/dist/automation/conflictResolver.d.ts +29 -0
  105. package/dist/automation/conflictResolver.d.ts.map +1 -0
  106. package/dist/automation/conflictResolver.js +261 -0
  107. package/dist/automation/conflictResolver.js.map +1 -0
  108. package/dist/automation/dailyReporter.d.ts +26 -0
  109. package/dist/automation/dailyReporter.d.ts.map +1 -0
  110. package/dist/automation/dailyReporter.js +132 -0
  111. package/dist/automation/dailyReporter.js.map +1 -0
  112. package/dist/automation/index.d.ts +7 -0
  113. package/dist/automation/index.d.ts.map +1 -0
  114. package/dist/automation/index.js +7 -0
  115. package/dist/automation/index.js.map +1 -0
  116. package/dist/automation/longRunningMonitor.d.ts +26 -0
  117. package/dist/automation/longRunningMonitor.d.ts.map +1 -0
  118. package/dist/automation/longRunningMonitor.js +231 -0
  119. package/dist/automation/longRunningMonitor.js.map +1 -0
  120. package/dist/automation/prOwnership.d.ts +18 -0
  121. package/dist/automation/prOwnership.d.ts.map +1 -0
  122. package/dist/automation/prOwnership.js +61 -0
  123. package/dist/automation/prOwnership.js.map +1 -0
  124. package/dist/automation/prProcessor.d.ts +62 -0
  125. package/dist/automation/prProcessor.d.ts.map +1 -0
  126. package/dist/automation/prProcessor.js +700 -0
  127. package/dist/automation/prProcessor.js.map +1 -0
  128. package/dist/automation/runnerExecution.d.ts +49 -0
  129. package/dist/automation/runnerExecution.d.ts.map +1 -0
  130. package/dist/automation/runnerExecution.js +663 -0
  131. package/dist/automation/runnerExecution.js.map +1 -0
  132. package/dist/automation/runnerState.d.ts +170 -0
  133. package/dist/automation/runnerState.d.ts.map +1 -0
  134. package/dist/automation/runnerState.js +495 -0
  135. package/dist/automation/runnerState.js.map +1 -0
  136. package/dist/automation/runnerTypes.d.ts +46 -0
  137. package/dist/automation/runnerTypes.d.ts.map +1 -0
  138. package/dist/automation/runnerTypes.js +5 -0
  139. package/dist/automation/runnerTypes.js.map +1 -0
  140. package/dist/automation/scheduler.d.ts +75 -0
  141. package/dist/automation/scheduler.d.ts.map +1 -0
  142. package/dist/automation/scheduler.js +394 -0
  143. package/dist/automation/scheduler.js.map +1 -0
  144. package/dist/cli/promptHandler.d.ts +13 -0
  145. package/dist/cli/promptHandler.d.ts.map +1 -0
  146. package/dist/cli/promptHandler.js +189 -0
  147. package/dist/cli/promptHandler.js.map +1 -0
  148. package/dist/cli.d.ts +3 -0
  149. package/dist/cli.d.ts.map +1 -0
  150. package/dist/cli.js +138 -0
  151. package/dist/cli.js.map +1 -0
  152. package/dist/core/config.d.ts +308 -0
  153. package/dist/core/config.d.ts.map +1 -0
  154. package/dist/core/config.js +529 -0
  155. package/dist/core/config.js.map +1 -0
  156. package/dist/core/eventHub.d.ts +194 -0
  157. package/dist/core/eventHub.d.ts.map +1 -0
  158. package/dist/core/eventHub.js +136 -0
  159. package/dist/core/eventHub.js.map +1 -0
  160. package/dist/core/index.d.ts +6 -0
  161. package/dist/core/index.d.ts.map +1 -0
  162. package/dist/core/index.js +6 -0
  163. package/dist/core/index.js.map +1 -0
  164. package/dist/core/service.d.ts +27 -0
  165. package/dist/core/service.d.ts.map +1 -0
  166. package/dist/core/service.js +438 -0
  167. package/dist/core/service.js.map +1 -0
  168. package/dist/core/traceCollector.d.ts +105 -0
  169. package/dist/core/traceCollector.d.ts.map +1 -0
  170. package/dist/core/traceCollector.js +141 -0
  171. package/dist/core/traceCollector.js.map +1 -0
  172. package/dist/core/types.d.ts +413 -0
  173. package/dist/core/types.d.ts.map +1 -0
  174. package/dist/core/types.js +5 -0
  175. package/dist/core/types.js.map +1 -0
  176. package/dist/discord/discordCore.d.ts +104 -0
  177. package/dist/discord/discordCore.d.ts.map +1 -0
  178. package/dist/discord/discordCore.js +698 -0
  179. package/dist/discord/discordCore.js.map +1 -0
  180. package/dist/discord/discordHandlers.d.ts +86 -0
  181. package/dist/discord/discordHandlers.d.ts.map +1 -0
  182. package/dist/discord/discordHandlers.js +849 -0
  183. package/dist/discord/discordHandlers.js.map +1 -0
  184. package/dist/discord/discordPair.d.ts +6 -0
  185. package/dist/discord/discordPair.d.ts.map +1 -0
  186. package/dist/discord/discordPair.js +567 -0
  187. package/dist/discord/discordPair.js.map +1 -0
  188. package/dist/discord/index.d.ts +4 -0
  189. package/dist/discord/index.d.ts.map +1 -0
  190. package/dist/discord/index.js +11 -0
  191. package/dist/discord/index.js.map +1 -0
  192. package/dist/github/github.d.ts +236 -0
  193. package/dist/github/github.d.ts.map +1 -0
  194. package/dist/github/github.js +535 -0
  195. package/dist/github/github.js.map +1 -0
  196. package/dist/github/index.d.ts +2 -0
  197. package/dist/github/index.d.ts.map +1 -0
  198. package/dist/github/index.js +2 -0
  199. package/dist/github/index.js.map +1 -0
  200. package/dist/index.d.ts +3 -0
  201. package/dist/index.d.ts.map +1 -0
  202. package/dist/index.js +60 -0
  203. package/dist/index.js.map +1 -0
  204. package/dist/knowledge/analyzer.d.ts +36 -0
  205. package/dist/knowledge/analyzer.d.ts.map +1 -0
  206. package/dist/knowledge/analyzer.js +170 -0
  207. package/dist/knowledge/analyzer.js.map +1 -0
  208. package/dist/knowledge/gitInfo.d.ts +10 -0
  209. package/dist/knowledge/gitInfo.d.ts.map +1 -0
  210. package/dist/knowledge/gitInfo.js +134 -0
  211. package/dist/knowledge/gitInfo.js.map +1 -0
  212. package/dist/knowledge/graph.d.ts +45 -0
  213. package/dist/knowledge/graph.d.ts.map +1 -0
  214. package/dist/knowledge/graph.js +262 -0
  215. package/dist/knowledge/graph.js.map +1 -0
  216. package/dist/knowledge/graphqlExporter.d.ts +64 -0
  217. package/dist/knowledge/graphqlExporter.d.ts.map +1 -0
  218. package/dist/knowledge/graphqlExporter.js +333 -0
  219. package/dist/knowledge/graphqlExporter.js.map +1 -0
  220. package/dist/knowledge/index.d.ts +58 -0
  221. package/dist/knowledge/index.d.ts.map +1 -0
  222. package/dist/knowledge/index.js +212 -0
  223. package/dist/knowledge/index.js.map +1 -0
  224. package/dist/knowledge/repository.d.ts +64 -0
  225. package/dist/knowledge/repository.d.ts.map +1 -0
  226. package/dist/knowledge/repository.js +250 -0
  227. package/dist/knowledge/repository.js.map +1 -0
  228. package/dist/knowledge/riskOnAnalyzer.d.ts +79 -0
  229. package/dist/knowledge/riskOnAnalyzer.d.ts.map +1 -0
  230. package/dist/knowledge/riskOnAnalyzer.js +243 -0
  231. package/dist/knowledge/riskOnAnalyzer.js.map +1 -0
  232. package/dist/knowledge/scanner.d.ts +14 -0
  233. package/dist/knowledge/scanner.d.ts.map +1 -0
  234. package/dist/knowledge/scanner.js +350 -0
  235. package/dist/knowledge/scanner.js.map +1 -0
  236. package/dist/knowledge/store.d.ts +23 -0
  237. package/dist/knowledge/store.d.ts.map +1 -0
  238. package/dist/knowledge/store.js +86 -0
  239. package/dist/knowledge/store.js.map +1 -0
  240. package/dist/knowledge/types.d.ts +288 -0
  241. package/dist/knowledge/types.d.ts.map +1 -0
  242. package/dist/knowledge/types.js +111 -0
  243. package/dist/knowledge/types.js.map +1 -0
  244. package/dist/linear/index.d.ts +3 -0
  245. package/dist/linear/index.d.ts.map +1 -0
  246. package/dist/linear/index.js +3 -0
  247. package/dist/linear/index.js.map +1 -0
  248. package/dist/linear/linear.d.ts +160 -0
  249. package/dist/linear/linear.d.ts.map +1 -0
  250. package/dist/linear/linear.js +983 -0
  251. package/dist/linear/linear.js.map +1 -0
  252. package/dist/linear/projectUpdater.d.ts +23 -0
  253. package/dist/linear/projectUpdater.d.ts.map +1 -0
  254. package/dist/linear/projectUpdater.js +347 -0
  255. package/dist/linear/projectUpdater.js.map +1 -0
  256. package/dist/locale/en.d.ts +3 -0
  257. package/dist/locale/en.d.ts.map +1 -0
  258. package/dist/locale/en.js +436 -0
  259. package/dist/locale/en.js.map +1 -0
  260. package/dist/locale/index.d.ts +28 -0
  261. package/dist/locale/index.d.ts.map +1 -0
  262. package/dist/locale/index.js +89 -0
  263. package/dist/locale/index.js.map +1 -0
  264. package/dist/locale/ko.d.ts +3 -0
  265. package/dist/locale/ko.d.ts.map +1 -0
  266. package/dist/locale/ko.js +436 -0
  267. package/dist/locale/ko.js.map +1 -0
  268. package/dist/locale/prompts/en.d.ts +3 -0
  269. package/dist/locale/prompts/en.d.ts.map +1 -0
  270. package/dist/locale/prompts/en.js +278 -0
  271. package/dist/locale/prompts/en.js.map +1 -0
  272. package/dist/locale/prompts/ko.d.ts +3 -0
  273. package/dist/locale/prompts/ko.d.ts.map +1 -0
  274. package/dist/locale/prompts/ko.js +279 -0
  275. package/dist/locale/prompts/ko.js.map +1 -0
  276. package/dist/locale/types.d.ts +407 -0
  277. package/dist/locale/types.d.ts.map +1 -0
  278. package/dist/locale/types.js +5 -0
  279. package/dist/locale/types.js.map +1 -0
  280. package/dist/memory/codex.d.ts +93 -0
  281. package/dist/memory/codex.d.ts.map +1 -0
  282. package/dist/memory/codex.js +366 -0
  283. package/dist/memory/codex.js.map +1 -0
  284. package/dist/memory/compaction.d.ts +21 -0
  285. package/dist/memory/compaction.d.ts.map +1 -0
  286. package/dist/memory/compaction.js +205 -0
  287. package/dist/memory/compaction.js.map +1 -0
  288. package/dist/memory/index.d.ts +13 -0
  289. package/dist/memory/index.d.ts.map +1 -0
  290. package/dist/memory/index.js +13 -0
  291. package/dist/memory/index.js.map +1 -0
  292. package/dist/memory/memoryCore.d.ts +178 -0
  293. package/dist/memory/memoryCore.d.ts.map +1 -0
  294. package/dist/memory/memoryCore.js +623 -0
  295. package/dist/memory/memoryCore.js.map +1 -0
  296. package/dist/memory/memoryOps.d.ts +90 -0
  297. package/dist/memory/memoryOps.d.ts.map +1 -0
  298. package/dist/memory/memoryOps.js +606 -0
  299. package/dist/memory/memoryOps.js.map +1 -0
  300. package/dist/orchestration/conflictDetector.d.ts +15 -0
  301. package/dist/orchestration/conflictDetector.d.ts.map +1 -0
  302. package/dist/orchestration/conflictDetector.js +130 -0
  303. package/dist/orchestration/conflictDetector.js.map +1 -0
  304. package/dist/orchestration/decisionEngine.d.ts +177 -0
  305. package/dist/orchestration/decisionEngine.d.ts.map +1 -0
  306. package/dist/orchestration/decisionEngine.js +496 -0
  307. package/dist/orchestration/decisionEngine.js.map +1 -0
  308. package/dist/orchestration/index.d.ts +5 -0
  309. package/dist/orchestration/index.d.ts.map +1 -0
  310. package/dist/orchestration/index.js +5 -0
  311. package/dist/orchestration/index.js.map +1 -0
  312. package/dist/orchestration/taskParser.d.ts +67 -0
  313. package/dist/orchestration/taskParser.d.ts.map +1 -0
  314. package/dist/orchestration/taskParser.js +542 -0
  315. package/dist/orchestration/taskParser.js.map +1 -0
  316. package/dist/orchestration/taskScheduler.d.ts +141 -0
  317. package/dist/orchestration/taskScheduler.d.ts.map +1 -0
  318. package/dist/orchestration/taskScheduler.js +317 -0
  319. package/dist/orchestration/taskScheduler.js.map +1 -0
  320. package/dist/orchestration/workflow.d.ts +145 -0
  321. package/dist/orchestration/workflow.d.ts.map +1 -0
  322. package/dist/orchestration/workflow.js +301 -0
  323. package/dist/orchestration/workflow.js.map +1 -0
  324. package/dist/runners/cliRunner.d.ts +11 -0
  325. package/dist/runners/cliRunner.d.ts.map +1 -0
  326. package/dist/runners/cliRunner.js +194 -0
  327. package/dist/runners/cliRunner.js.map +1 -0
  328. package/dist/support/apiCache.d.ts +85 -0
  329. package/dist/support/apiCache.d.ts.map +1 -0
  330. package/dist/support/apiCache.js +163 -0
  331. package/dist/support/apiCache.js.map +1 -0
  332. package/dist/support/chat.d.ts +3 -0
  333. package/dist/support/chat.d.ts.map +1 -0
  334. package/dist/support/chat.js +304 -0
  335. package/dist/support/chat.js.map +1 -0
  336. package/dist/support/chatBackend.d.ts +25 -0
  337. package/dist/support/chatBackend.d.ts.map +1 -0
  338. package/dist/support/chatBackend.js +235 -0
  339. package/dist/support/chatBackend.js.map +1 -0
  340. package/dist/support/chatMemory.d.ts +71 -0
  341. package/dist/support/chatMemory.d.ts.map +1 -0
  342. package/dist/support/chatMemory.js +119 -0
  343. package/dist/support/chatMemory.js.map +1 -0
  344. package/dist/support/chatTui.d.ts +3 -0
  345. package/dist/support/chatTui.d.ts.map +1 -0
  346. package/dist/support/chatTui.js +998 -0
  347. package/dist/support/chatTui.js.map +1 -0
  348. package/dist/support/costTracker.d.ts +29 -0
  349. package/dist/support/costTracker.d.ts.map +1 -0
  350. package/dist/support/costTracker.js +113 -0
  351. package/dist/support/costTracker.js.map +1 -0
  352. package/dist/support/dashboardHtml.d.ts +3 -0
  353. package/dist/support/dashboardHtml.d.ts.map +1 -0
  354. package/dist/support/dashboardHtml.js +2070 -0
  355. package/dist/support/dashboardHtml.js.map +1 -0
  356. package/dist/support/delete-beliefs.d.ts +2 -0
  357. package/dist/support/delete-beliefs.d.ts.map +1 -0
  358. package/dist/support/delete-beliefs.js +34 -0
  359. package/dist/support/delete-beliefs.js.map +1 -0
  360. package/dist/support/dev.d.ts +55 -0
  361. package/dist/support/dev.d.ts.map +1 -0
  362. package/dist/support/dev.js +298 -0
  363. package/dist/support/dev.js.map +1 -0
  364. package/dist/support/editParser.d.ts +37 -0
  365. package/dist/support/editParser.d.ts.map +1 -0
  366. package/dist/support/editParser.js +365 -0
  367. package/dist/support/editParser.js.map +1 -0
  368. package/dist/support/gitStatus.d.ts +21 -0
  369. package/dist/support/gitStatus.d.ts.map +1 -0
  370. package/dist/support/gitStatus.js +108 -0
  371. package/dist/support/gitStatus.js.map +1 -0
  372. package/dist/support/gitTracker.d.ts +30 -0
  373. package/dist/support/gitTracker.d.ts.map +1 -0
  374. package/dist/support/gitTracker.js +143 -0
  375. package/dist/support/gitTracker.js.map +1 -0
  376. package/dist/support/index.d.ts +13 -0
  377. package/dist/support/index.d.ts.map +1 -0
  378. package/dist/support/index.js +13 -0
  379. package/dist/support/index.js.map +1 -0
  380. package/dist/support/planner.d.ts +58 -0
  381. package/dist/support/planner.d.ts.map +1 -0
  382. package/dist/support/planner.js +395 -0
  383. package/dist/support/planner.js.map +1 -0
  384. package/dist/support/projectMapper.d.ts +46 -0
  385. package/dist/support/projectMapper.d.ts.map +1 -0
  386. package/dist/support/projectMapper.js +259 -0
  387. package/dist/support/projectMapper.js.map +1 -0
  388. package/dist/support/quotaTracker.d.ts +29 -0
  389. package/dist/support/quotaTracker.d.ts.map +1 -0
  390. package/dist/support/quotaTracker.js +89 -0
  391. package/dist/support/quotaTracker.js.map +1 -0
  392. package/dist/support/rateLimiter.d.ts +101 -0
  393. package/dist/support/rateLimiter.d.ts.map +1 -0
  394. package/dist/support/rateLimiter.js +219 -0
  395. package/dist/support/rateLimiter.js.map +1 -0
  396. package/dist/support/rollback.d.ts +61 -0
  397. package/dist/support/rollback.d.ts.map +1 -0
  398. package/dist/support/rollback.js +328 -0
  399. package/dist/support/rollback.js.map +1 -0
  400. package/dist/support/stuckDetector.d.ts +68 -0
  401. package/dist/support/stuckDetector.d.ts.map +1 -0
  402. package/dist/support/stuckDetector.js +174 -0
  403. package/dist/support/stuckDetector.js.map +1 -0
  404. package/dist/support/timeWindow.d.ts +60 -0
  405. package/dist/support/timeWindow.d.ts.map +1 -0
  406. package/dist/support/timeWindow.js +236 -0
  407. package/dist/support/timeWindow.js.map +1 -0
  408. package/dist/support/web.d.ts +11 -0
  409. package/dist/support/web.d.ts.map +1 -0
  410. package/dist/support/web.js +938 -0
  411. package/dist/support/web.js.map +1 -0
  412. package/dist/support/workflowLinear.d.ts +99 -0
  413. package/dist/support/workflowLinear.d.ts.map +1 -0
  414. package/dist/support/workflowLinear.js +257 -0
  415. package/dist/support/workflowLinear.js.map +1 -0
  416. package/dist/support/worktreeManager.d.ts +20 -0
  417. package/dist/support/worktreeManager.d.ts.map +1 -0
  418. package/dist/support/worktreeManager.js +144 -0
  419. package/dist/support/worktreeManager.js.map +1 -0
  420. package/dist/taskState/store.d.ts +101 -0
  421. package/dist/taskState/store.d.ts.map +1 -0
  422. package/dist/taskState/store.js +346 -0
  423. package/dist/taskState/store.js.map +1 -0
  424. package/package.json +70 -0
  425. package/templates/AGENTS.md +432 -0
  426. package/templates/BOOT.md +25 -0
  427. package/templates/BOOTSTRAP.md +50 -0
  428. package/templates/CHANGELOG_AUDIT.md +74 -0
  429. package/templates/HEARTBEAT.md +86 -0
  430. package/templates/IDENTITY.md +27 -0
  431. package/templates/ISSUE_ANALYSIS.md +31 -0
  432. package/templates/PR_LAND.md +75 -0
  433. package/templates/PR_REVIEW.md +97 -0
  434. package/templates/SOUL.dev.md +52 -0
  435. package/templates/SOUL.md +81 -0
  436. package/templates/TOOLS.md +52 -0
  437. 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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"}