claude-cortex 1.0.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 (102) hide show
  1. package/README.md +291 -0
  2. package/dist/api/events.d.ts +134 -0
  3. package/dist/api/events.d.ts.map +1 -0
  4. package/dist/api/events.js +73 -0
  5. package/dist/api/events.js.map +1 -0
  6. package/dist/api/visualization-server.d.ts +11 -0
  7. package/dist/api/visualization-server.d.ts.map +1 -0
  8. package/dist/api/visualization-server.js +653 -0
  9. package/dist/api/visualization-server.js.map +1 -0
  10. package/dist/context/project-context.d.ts +57 -0
  11. package/dist/context/project-context.d.ts.map +1 -0
  12. package/dist/context/project-context.js +135 -0
  13. package/dist/context/project-context.js.map +1 -0
  14. package/dist/database/init.d.ts +49 -0
  15. package/dist/database/init.d.ts.map +1 -0
  16. package/dist/database/init.js +336 -0
  17. package/dist/database/init.js.map +1 -0
  18. package/dist/embeddings/generator.d.ts +20 -0
  19. package/dist/embeddings/generator.d.ts.map +1 -0
  20. package/dist/embeddings/generator.js +77 -0
  21. package/dist/embeddings/generator.js.map +1 -0
  22. package/dist/embeddings/index.d.ts +2 -0
  23. package/dist/embeddings/index.d.ts.map +1 -0
  24. package/dist/embeddings/index.js +2 -0
  25. package/dist/embeddings/index.js.map +1 -0
  26. package/dist/errors.d.ts +74 -0
  27. package/dist/errors.d.ts.map +1 -0
  28. package/dist/errors.js +131 -0
  29. package/dist/errors.js.map +1 -0
  30. package/dist/index.d.ts +16 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +83 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/memory/activation.d.ts +69 -0
  35. package/dist/memory/activation.d.ts.map +1 -0
  36. package/dist/memory/activation.js +168 -0
  37. package/dist/memory/activation.js.map +1 -0
  38. package/dist/memory/consolidate.d.ts +96 -0
  39. package/dist/memory/consolidate.d.ts.map +1 -0
  40. package/dist/memory/consolidate.js +400 -0
  41. package/dist/memory/consolidate.js.map +1 -0
  42. package/dist/memory/contradiction.d.ts +69 -0
  43. package/dist/memory/contradiction.d.ts.map +1 -0
  44. package/dist/memory/contradiction.js +286 -0
  45. package/dist/memory/contradiction.js.map +1 -0
  46. package/dist/memory/decay.d.ts +62 -0
  47. package/dist/memory/decay.d.ts.map +1 -0
  48. package/dist/memory/decay.js +184 -0
  49. package/dist/memory/decay.js.map +1 -0
  50. package/dist/memory/salience.d.ts +36 -0
  51. package/dist/memory/salience.d.ts.map +1 -0
  52. package/dist/memory/salience.js +200 -0
  53. package/dist/memory/salience.js.map +1 -0
  54. package/dist/memory/similarity.d.ts +57 -0
  55. package/dist/memory/similarity.d.ts.map +1 -0
  56. package/dist/memory/similarity.js +114 -0
  57. package/dist/memory/similarity.js.map +1 -0
  58. package/dist/memory/store.d.ts +170 -0
  59. package/dist/memory/store.d.ts.map +1 -0
  60. package/dist/memory/store.js +973 -0
  61. package/dist/memory/store.js.map +1 -0
  62. package/dist/memory/types.d.ts +91 -0
  63. package/dist/memory/types.d.ts.map +1 -0
  64. package/dist/memory/types.js +30 -0
  65. package/dist/memory/types.js.map +1 -0
  66. package/dist/server.d.ts +12 -0
  67. package/dist/server.d.ts.map +1 -0
  68. package/dist/server.js +466 -0
  69. package/dist/server.js.map +1 -0
  70. package/dist/tools/context.d.ts +135 -0
  71. package/dist/tools/context.d.ts.map +1 -0
  72. package/dist/tools/context.js +273 -0
  73. package/dist/tools/context.js.map +1 -0
  74. package/dist/tools/forget.d.ts +53 -0
  75. package/dist/tools/forget.d.ts.map +1 -0
  76. package/dist/tools/forget.js +179 -0
  77. package/dist/tools/forget.js.map +1 -0
  78. package/dist/tools/recall.d.ts +74 -0
  79. package/dist/tools/recall.d.ts.map +1 -0
  80. package/dist/tools/recall.js +140 -0
  81. package/dist/tools/recall.js.map +1 -0
  82. package/dist/tools/remember.d.ts +65 -0
  83. package/dist/tools/remember.d.ts.map +1 -0
  84. package/dist/tools/remember.js +147 -0
  85. package/dist/tools/remember.js.map +1 -0
  86. package/dist/worker/brain-worker.d.ts +100 -0
  87. package/dist/worker/brain-worker.d.ts.map +1 -0
  88. package/dist/worker/brain-worker.js +261 -0
  89. package/dist/worker/brain-worker.js.map +1 -0
  90. package/dist/worker/link-discovery.d.ts +47 -0
  91. package/dist/worker/link-discovery.d.ts.map +1 -0
  92. package/dist/worker/link-discovery.js +103 -0
  93. package/dist/worker/link-discovery.js.map +1 -0
  94. package/dist/worker/predictive-consolidation.d.ts +46 -0
  95. package/dist/worker/predictive-consolidation.d.ts.map +1 -0
  96. package/dist/worker/predictive-consolidation.js +110 -0
  97. package/dist/worker/predictive-consolidation.js.map +1 -0
  98. package/dist/worker/types.d.ts +91 -0
  99. package/dist/worker/types.d.ts.map +1 -0
  100. package/dist/worker/types.js +22 -0
  101. package/dist/worker/types.js.map +1 -0
  102. package/package.json +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidate.js","sourceRoot":"","sources":["../../src/memory/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAGL,cAAc,GAGf,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EAEjB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAKL,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,SAAuB,cAAc;IAErC,2DAA2D;IAC3D,OAAO,eAAe,CAAC,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,8BAA8B;QAC9B,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAE3F,iCAAiC;QACjC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAEjF,0BAA0B;QAC1B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,aAAa,CAAC,EAAE,CAAC,CAAC;YAClB,YAAY,EAAE,CAAC;QACjB,CAAC;QAED,0DAA0D;QAC1D,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,YAAY,CAAC,EAAE,CAAC,CAAC;gBACjB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAC/E,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEvC,qDAAqD;QACrD,iBAAiB,EAAE,CAAC;QAEpB,qDAAqD;QACrD,8DAA8D;QAC9D,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,oBAAoB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1E,mBAAmB,GAAG,cAAc,CAAC,MAAM,CAAC;YAC5C,oBAAoB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAuB,cAAc;IACvE,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,gCAAgC;IAChC,MAAM,cAAc,GAAI,EAAE,CAAC,OAAO,CAChC,kEAAkE,CACnE,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAEpC,IAAI,cAAc,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAC9D,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK9B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAqB,CAAC;QAErC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC;YACjC,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAC/B,iEAAiE,CAClE,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAEpC,IAAI,aAAa,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK9B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAqB,CAAC;QAErC,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC;YACjC,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,sBAA8B,GAAG;IAEjC,kDAAkD;IAClD,OAAO,eAAe,CAAC,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,oDAAoD;QACpD,IAAI,GAAG,GAAG,wBAAwB,CAAC;QACnC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,IAAI,oBAAoB,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,GAAG,IAAI,0BAA0B,CAAC;QAElC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC;QAE7E,wEAAwE;QACxE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,8BAA8B;QAEtE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,GAAI,GAAG,CAAC,KAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAK,GAAG,CAAC,OAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAEnH,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,8CAA8C;gBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;gBAEjC,sCAAsC;gBACtC,EAAE,CAAC,OAAO,CAAC;;;;;SAKV,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAElB,uBAAuB;gBACvB,YAAY,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;gBAC/B,MAAM,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAY,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgB,EAChB,SAAuB,cAAc;IAErC,sBAAsB;IACtB,MAAM,cAAc,GAAG,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAEtD,iCAAiC;IACjC,MAAM,YAAY,GAAG,CAAC,MAAM,cAAc,CAAC;QACzC,KAAK,EAAE,EAAE;QACT,OAAO;QACP,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE,CAAC;KACT,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/B,sBAAsB;IACtB,MAAM,cAAc,GAAG,CAAC,MAAM,cAAc,CAAC;QAC3C,KAAK,EAAE,EAAE;QACT,OAAO;QACP,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,GAAG;QAChB,KAAK,EAAE,CAAC;KACT,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/B,oBAAoB;IACpB,MAAM,YAAY,GAAG,CAAC,MAAM,cAAc,CAAC;QACzC,KAAK,EAAE,EAAE;QACT,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,EAAE;KACV,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAE/B,OAAO;QACL,OAAO;QACP,cAAc;QACd,YAAY;QACZ,cAAc;QACd,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAgB;IAIjD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,wBAAwB;IACxB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;GAEzB,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IAExB,MAAM,SAAS,GAAG,MAAM,CAAC,eAAyB,CAAC;IAEnD,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEtD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,SAAiB,EACjB,OAAgB;IAEhB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,+BAA+B;IAC/B,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAKxB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAsD,CAAC;IAEvE,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOV,CAAC,CAAC,GAAG,CACJ,OAAO,IAAI,IAAI,EACf,KAAK,EAAE,OAAO,IAAI,CAAC,EACnB,KAAK,EAAE,QAAQ,IAAI,CAAC,EACpB,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,cAAsB,EACtB,OAAgB,EAChB,QAAgB,CAAC;IAEjB,wDAAwD;IACxD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;QACnC,KAAK,EAAE,cAAc;QACrB,OAAO;QACP,WAAW,EAAE,GAAG;QAChB,KAAK;QACL,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,IAAI,GAAG,GAAG,wBAAwB,CAAC;IACnC,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,IAAI,oBAAoB,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,GAAG,IAAI,0BAA0B,CAAC;IAElC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,wCAAwC;IACxC,OAAO,eAAe,CAAC,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8B,CAAC;QAE/D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGvB,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CACN,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,IAAI,IAAI,EACtB,MAAM,CAAC,IAAI,IAAI,IAAI,EACnB,MAAM,CAAC,QAAQ,IAAI,GAAG,EACtB,MAAM,CAAC,QAAQ,IAAI,IAAI,CACxB,CAAC;gBACF,QAAQ,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,KAAK,EAAE,EAAE,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAuB,cAAc;IAOrC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,8BAA8B;IAC9B,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;IAE3F,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAE5D,yCAAyC;IACzC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,YAAY,CACjE,CAAC,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,EAC3C,MAAM,CACP,CAAC;IAEF,2BAA2B;IAC3B,MAAM,WAAW,GAAG,CAAC,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjG,aAAa;IACb,MAAM,cAAc,GAAI,EAAE,CAAC,OAAO,CAChC,kEAAkE,CACnE,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAEpC,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAC/B,iEAAiE,CAClE,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IAEpC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,SAAuB,cAAc;IAErC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAElE,0CAA0C;IAC1C,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;QACtB,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,wBAAwB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY;SAC1E,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC;;;GAGjC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAuB,CAAC,KAAK,CAAC;IAE7D,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,GAAG,aAAa,oCAAoC;SAC7D,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,SAAuB,cAAc;IAErC,oBAAoB;IACpB,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1C,yBAAyB;IACzB,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IAEtC,gCAAgC;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,aAAa,CAAC,OAAO,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;QACnC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Contradiction Detection System
3
+ *
4
+ * Detects potentially contradictory memories based on:
5
+ * - Opposite statements about the same topic
6
+ * - Different solutions to the same problem
7
+ * - Conflicting preferences or decisions
8
+ *
9
+ * Phase 3 Organic Brain Feature
10
+ */
11
+ import { Memory } from './types.js';
12
+ /**
13
+ * Result of checking two memories for contradiction
14
+ */
15
+ export interface ContradictionResult {
16
+ memoryA: Memory;
17
+ memoryB: Memory;
18
+ score: number;
19
+ reason: string;
20
+ sharedTopics: string[];
21
+ }
22
+ /**
23
+ * Check if two memories might contradict each other
24
+ *
25
+ * @param memoryA - First memory to compare
26
+ * @param memoryB - Second memory to compare
27
+ * @returns ContradictionResult if contradiction detected, null otherwise
28
+ */
29
+ export declare function checkContradiction(memoryA: Memory, memoryB: Memory): ContradictionResult | null;
30
+ /**
31
+ * Options for detecting contradictions
32
+ */
33
+ export interface DetectContradictionsOptions {
34
+ project?: string;
35
+ category?: string;
36
+ minScore?: number;
37
+ limit?: number;
38
+ }
39
+ /**
40
+ * Detect contradictions across all memories matching the filter
41
+ *
42
+ * @param options - Filtering and limit options
43
+ * @returns Array of ContradictionResults sorted by score
44
+ */
45
+ export declare function detectContradictions(options?: DetectContradictionsOptions): ContradictionResult[];
46
+ /**
47
+ * Create 'contradicts' links between memories
48
+ * Called during consolidation to persist detected contradictions
49
+ *
50
+ * @param contradictions - Array of detected contradictions
51
+ * @returns Number of links created
52
+ */
53
+ export declare function linkContradictions(contradictions: ContradictionResult[]): number;
54
+ /**
55
+ * Get all contradictions for a specific memory
56
+ *
57
+ * @param memoryId - ID of the memory to check
58
+ * @returns Array of ContradictionResults
59
+ */
60
+ export declare function getContradictionsFor(memoryId: number): ContradictionResult[];
61
+ /**
62
+ * Check if a contradiction link already exists between two memories
63
+ *
64
+ * @param memoryAId - First memory ID
65
+ * @param memoryBId - Second memory ID
66
+ * @returns True if a contradiction link exists
67
+ */
68
+ export declare function hasContradictionLink(memoryAId: number, memoryBId: number): boolean;
69
+ //# sourceMappingURL=contradiction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction.d.ts","sourceRoot":"","sources":["../../src/memory/contradiction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAuDpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAgFD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,mBAAmB,GAAG,IAAI,CA8D5B;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,mBAAmB,EAAE,CAwCvB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAchF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAoB5E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAUlF"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Contradiction Detection System
3
+ *
4
+ * Detects potentially contradictory memories based on:
5
+ * - Opposite statements about the same topic
6
+ * - Different solutions to the same problem
7
+ * - Conflicting preferences or decisions
8
+ *
9
+ * Phase 3 Organic Brain Feature
10
+ */
11
+ import { getDatabase } from '../database/init.js';
12
+ import { rowToMemory, createMemoryLink, getRelatedMemories } from './store.js';
13
+ import { jaccardSimilarity, extractKeyPhrases } from './similarity.js';
14
+ /**
15
+ * Contradiction pattern pairs
16
+ * If memory A matches pattern[0] and memory B matches pattern[1], they may contradict
17
+ */
18
+ const CONTRADICTION_PATTERNS = [
19
+ {
20
+ patterns: [/\b(?:don'?t|never|avoid)\s+use\b/i, /\buse\b/i],
21
+ description: 'Conflicting usage recommendation',
22
+ weight: 0.8,
23
+ },
24
+ {
25
+ patterns: [/\b(?:don'?t|never|avoid)\b/i, /\b(?:always|should|must)\b/i],
26
+ description: 'Conflicting advice',
27
+ weight: 0.6,
28
+ },
29
+ {
30
+ patterns: [/\bfixed\s+by\s+/i, /\bfixed\s+by\s+/i],
31
+ description: 'Different fixes for same issue',
32
+ weight: 0.7,
33
+ },
34
+ {
35
+ patterns: [/\bdecided\s+to\s+/i, /\bdecided\s+to\s+/i],
36
+ description: 'Different decisions on same topic',
37
+ weight: 0.5,
38
+ },
39
+ {
40
+ patterns: [/\busing\s+(\w+)/i, /\bnot\s+using\s+(\w+)/i],
41
+ description: 'Conflicting usage statement',
42
+ weight: 0.8,
43
+ },
44
+ {
45
+ patterns: [/\b(?:deprecated|removed|dropped)\b/i, /\b(?:added|introduced|using)\b/i],
46
+ description: 'Conflicting status',
47
+ weight: 0.6,
48
+ },
49
+ {
50
+ patterns: [/\bprefer\s+(\w+)/i, /\bavoid\s+(\w+)/i],
51
+ description: 'Conflicting preference',
52
+ weight: 0.7,
53
+ },
54
+ {
55
+ patterns: [/\b(?:works?|working)\b/i, /\b(?:broken|doesn'?t\s+work|failed)\b/i],
56
+ description: 'Conflicting status report',
57
+ weight: 0.6,
58
+ },
59
+ ];
60
+ /**
61
+ * Calculate topic similarity between two memories
62
+ * Based on tags, category, project, and key phrases
63
+ *
64
+ * @param memoryA - First memory
65
+ * @param memoryB - Second memory
66
+ * @returns Similarity score 0-1
67
+ */
68
+ function calculateTopicSimilarity(memoryA, memoryB) {
69
+ let score = 0;
70
+ // Same project (+0.3)
71
+ if (memoryA.project && memoryA.project === memoryB.project) {
72
+ score += 0.3;
73
+ }
74
+ // Same category (+0.2)
75
+ if (memoryA.category === memoryB.category) {
76
+ score += 0.2;
77
+ }
78
+ // Shared tags (Jaccard on tags, up to +0.3)
79
+ const tagsA = new Set(memoryA.tags);
80
+ const tagsB = new Set(memoryB.tags);
81
+ if (tagsA.size > 0 || tagsB.size > 0) {
82
+ let tagIntersection = 0;
83
+ for (const tag of tagsA) {
84
+ if (tagsB.has(tag))
85
+ tagIntersection++;
86
+ }
87
+ const tagUnion = tagsA.size + tagsB.size - tagIntersection;
88
+ if (tagUnion > 0) {
89
+ score += (tagIntersection / tagUnion) * 0.3;
90
+ }
91
+ }
92
+ // Title similarity (+0.2)
93
+ const titleSim = jaccardSimilarity(memoryA.title, memoryB.title);
94
+ score += titleSim * 0.2;
95
+ return Math.min(1.0, score);
96
+ }
97
+ /**
98
+ * Find shared topics between two memories
99
+ *
100
+ * @param memoryA - First memory
101
+ * @param memoryB - Second memory
102
+ * @returns Array of shared topic strings
103
+ */
104
+ function findSharedTopics(memoryA, memoryB) {
105
+ const topics = [];
106
+ // Shared tags
107
+ const tagsA = new Set(memoryA.tags);
108
+ for (const tag of memoryB.tags) {
109
+ if (tagsA.has(tag))
110
+ topics.push(`tag:${tag}`);
111
+ }
112
+ // Shared key phrases
113
+ const textA = `${memoryA.title} ${memoryA.content}`;
114
+ const textB = `${memoryB.title} ${memoryB.content}`;
115
+ const phrasesA = new Set(extractKeyPhrases(textA));
116
+ const phrasesB = extractKeyPhrases(textB);
117
+ for (const phrase of phrasesB) {
118
+ if (phrasesA.has(phrase) && phrase.length > 3) {
119
+ topics.push(phrase);
120
+ }
121
+ }
122
+ // Same project
123
+ if (memoryA.project && memoryA.project === memoryB.project) {
124
+ topics.push(`project:${memoryA.project}`);
125
+ }
126
+ return [...new Set(topics)].slice(0, 5);
127
+ }
128
+ /**
129
+ * Check if two memories might contradict each other
130
+ *
131
+ * @param memoryA - First memory to compare
132
+ * @param memoryB - Second memory to compare
133
+ * @returns ContradictionResult if contradiction detected, null otherwise
134
+ */
135
+ export function checkContradiction(memoryA, memoryB) {
136
+ // Same memory can't contradict itself
137
+ if (memoryA.id === memoryB.id)
138
+ return null;
139
+ // Must share some topic/context to contradict
140
+ const topicSimilarity = calculateTopicSimilarity(memoryA, memoryB);
141
+ if (topicSimilarity < 0.2)
142
+ return null;
143
+ // Check for contradiction patterns
144
+ const textA = `${memoryA.title} ${memoryA.content}`;
145
+ const textB = `${memoryB.title} ${memoryB.content}`;
146
+ let maxScore = 0;
147
+ let matchedReason = '';
148
+ for (const { patterns, description, weight } of CONTRADICTION_PATTERNS) {
149
+ const [patternA, patternB] = patterns;
150
+ // Check both directions
151
+ const aMatchesFirst = patternA.test(textA);
152
+ const bMatchesSecond = patternB.test(textB);
153
+ const aMatchesSecond = patternB.test(textA);
154
+ const bMatchesFirst = patternA.test(textB);
155
+ if ((aMatchesFirst && bMatchesSecond) || (aMatchesSecond && bMatchesFirst)) {
156
+ // For "different fixes" and "different decisions", we need to check
157
+ // that they're actually different, not the same
158
+ if (description.includes('Different')) {
159
+ // Extract the captured content and compare
160
+ const matchA = textA.match(patternA);
161
+ const matchB = textB.match(patternB);
162
+ if (matchA && matchB) {
163
+ const contentA = matchA[0].toLowerCase();
164
+ const contentB = matchB[0].toLowerCase();
165
+ // If the content is too similar, it's not a contradiction
166
+ if (jaccardSimilarity(contentA, contentB) > 0.8) {
167
+ continue;
168
+ }
169
+ }
170
+ }
171
+ const score = weight * topicSimilarity;
172
+ if (score > maxScore) {
173
+ maxScore = score;
174
+ matchedReason = description;
175
+ }
176
+ }
177
+ }
178
+ // Minimum score threshold
179
+ if (maxScore < 0.3)
180
+ return null;
181
+ // Find shared topics for context
182
+ const sharedTopics = findSharedTopics(memoryA, memoryB);
183
+ return {
184
+ memoryA,
185
+ memoryB,
186
+ score: maxScore,
187
+ reason: matchedReason,
188
+ sharedTopics,
189
+ };
190
+ }
191
+ /**
192
+ * Detect contradictions across all memories matching the filter
193
+ *
194
+ * @param options - Filtering and limit options
195
+ * @returns Array of ContradictionResults sorted by score
196
+ */
197
+ export function detectContradictions(options = {}) {
198
+ const { project, category, minScore = 0.4, limit = 20 } = options;
199
+ const db = getDatabase();
200
+ // Build query
201
+ let sql = 'SELECT * FROM memories WHERE 1=1';
202
+ const params = [];
203
+ if (project) {
204
+ sql += ' AND project = ?';
205
+ params.push(project);
206
+ }
207
+ if (category) {
208
+ sql += ' AND category = ?';
209
+ params.push(category);
210
+ }
211
+ // Order by salience to prioritize important memories
212
+ sql += ' ORDER BY salience DESC, last_accessed DESC LIMIT 200';
213
+ const rows = db.prepare(sql).all(...params);
214
+ const memories = rows.map(rowToMemory);
215
+ const contradictions = [];
216
+ // Compare pairs (O(n^2) but limited to 200 memories max)
217
+ for (let i = 0; i < memories.length; i++) {
218
+ for (let j = i + 1; j < memories.length; j++) {
219
+ const result = checkContradiction(memories[i], memories[j]);
220
+ if (result && result.score >= minScore) {
221
+ contradictions.push(result);
222
+ }
223
+ }
224
+ }
225
+ // Sort by score (highest first) and limit
226
+ return contradictions
227
+ .sort((a, b) => b.score - a.score)
228
+ .slice(0, limit);
229
+ }
230
+ /**
231
+ * Create 'contradicts' links between memories
232
+ * Called during consolidation to persist detected contradictions
233
+ *
234
+ * @param contradictions - Array of detected contradictions
235
+ * @returns Number of links created
236
+ */
237
+ export function linkContradictions(contradictions) {
238
+ let linksCreated = 0;
239
+ for (const contradiction of contradictions) {
240
+ const link = createMemoryLink(contradiction.memoryA.id, contradiction.memoryB.id, 'contradicts', contradiction.score);
241
+ if (link)
242
+ linksCreated++;
243
+ }
244
+ return linksCreated;
245
+ }
246
+ /**
247
+ * Get all contradictions for a specific memory
248
+ *
249
+ * @param memoryId - ID of the memory to check
250
+ * @returns Array of ContradictionResults
251
+ */
252
+ export function getContradictionsFor(memoryId) {
253
+ const db = getDatabase();
254
+ // Get the source memory
255
+ const memoryRow = db.prepare('SELECT * FROM memories WHERE id = ?').get(memoryId);
256
+ if (!memoryRow)
257
+ return [];
258
+ const memory = rowToMemory(memoryRow);
259
+ // Get related memories with 'contradicts' relationship
260
+ const related = getRelatedMemories(memoryId);
261
+ const contradicting = related.filter(r => r.relationship === 'contradicts');
262
+ return contradicting.map(c => ({
263
+ memoryA: memory,
264
+ memoryB: c.memory,
265
+ score: c.strength,
266
+ reason: 'Previously detected contradiction',
267
+ sharedTopics: findSharedTopics(memory, c.memory),
268
+ }));
269
+ }
270
+ /**
271
+ * Check if a contradiction link already exists between two memories
272
+ *
273
+ * @param memoryAId - First memory ID
274
+ * @param memoryBId - Second memory ID
275
+ * @returns True if a contradiction link exists
276
+ */
277
+ export function hasContradictionLink(memoryAId, memoryBId) {
278
+ const db = getDatabase();
279
+ const link = db.prepare(`
280
+ SELECT 1 FROM memory_links
281
+ WHERE relationship = 'contradicts'
282
+ AND ((source_id = ? AND target_id = ?) OR (source_id = ? AND target_id = ?))
283
+ `).get(memoryAId, memoryBId, memoryBId, memoryAId);
284
+ return !!link;
285
+ }
286
+ //# sourceMappingURL=contradiction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contradiction.js","sourceRoot":"","sources":["../../src/memory/contradiction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE;;;GAGG;AACH,MAAM,sBAAsB,GAIvB;IACH;QACE,QAAQ,EAAE,CAAC,mCAAmC,EAAE,UAAU,CAAC;QAC3D,WAAW,EAAE,kCAAkC;QAC/C,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,6BAA6B,EAAE,6BAA6B,CAAC;QACxE,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QAClD,WAAW,EAAE,gCAAgC;QAC7C,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;QACtD,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;QACxD,WAAW,EAAE,6BAA6B;QAC1C,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,qCAAqC,EAAE,iCAAiC,CAAC;QACpF,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;QACnD,WAAW,EAAE,wBAAwB;QACrC,MAAM,EAAE,GAAG;KACZ;IACD;QACE,QAAQ,EAAE,CAAC,yBAAyB,EAAE,wCAAwC,CAAC;QAC/E,WAAW,EAAE,2BAA2B;QACxC,MAAM,EAAE,GAAG;KACZ;CACF,CAAC;AAaF;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAAC,OAAe,EAAE,OAAe;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,sBAAsB;IACtB,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1C,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,eAAe,EAAE,CAAC;QACxC,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC;QAC3D,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjE,KAAK,IAAI,QAAQ,GAAG,GAAG,CAAC;IAExB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,OAAe,EAAE,OAAe;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,cAAc;IACd,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,qBAAqB;IACrB,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE1C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,OAAe;IAEf,sCAAsC;IACtC,IAAI,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAE3C,8CAA8C;IAC9C,MAAM,eAAe,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,eAAe,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAEvC,mCAAmC;IACnC,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAEpD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,sBAAsB,EAAE,CAAC;QACvE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC;QAEtC,wBAAwB;QACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,IAAI,aAAa,CAAC,EAAE,CAAC;YAC3E,oEAAoE;YACpE,gDAAgD;YAChD,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtC,2CAA2C;gBAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBACzC,0DAA0D;oBAC1D,IAAI,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;wBAChD,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC;YACvC,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,QAAQ,GAAG,KAAK,CAAC;gBACjB,aAAa,GAAG,WAAW,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAEhC,iCAAiC;IACjC,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAExD,OAAO;QACL,OAAO;QACP,OAAO;QACP,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,aAAa;QACrB,YAAY;KACb,CAAC;AACJ,CAAC;AAYD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAuC,EAAE;IAEzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAElE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,cAAc;IACd,IAAI,GAAG,GAAG,kCAAkC,CAAC;IAC7C,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,IAAI,OAAO,EAAE,CAAC;QACZ,GAAG,IAAI,kBAAkB,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,IAAI,mBAAmB,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,qDAAqD;IACrD,GAAG,IAAI,uDAAuD,CAAC;IAE/D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA8B,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEvC,MAAM,cAAc,GAA0B,EAAE,CAAC;IAEjD,yDAAyD;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;gBACvC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,OAAO,cAAc;SAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;SACjC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAqC;IACtE,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,gBAAgB,CAC3B,aAAa,CAAC,OAAO,CAAC,EAAE,EACxB,aAAa,CAAC,OAAO,CAAC,EAAE,EACxB,aAAa,EACb,aAAa,CAAC,KAAK,CACpB,CAAC;QACF,IAAI,IAAI;YAAE,YAAY,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,wBAAwB;IACxB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAwC,CAAC;IACzH,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEtC,uDAAuD;IACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,aAAa,CAAC,CAAC;IAE5E,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,KAAK,EAAE,CAAC,CAAC,QAAQ;QACjB,MAAM,EAAE,mCAAmC;QAC3C,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;KACjD,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,EAAE,SAAiB;IACvE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAEzB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAIvB,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEnD,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Temporal Decay System
3
+ *
4
+ * Implements memory decay similar to human forgetting curves.
5
+ * Memories fade over time but can be reinforced through access.
6
+ */
7
+ import { Memory, MemoryConfig } from './types.js';
8
+ /**
9
+ * Calculate the current decayed score for a memory
10
+ * Uses exponential decay: score = base_score * (decay_rate ^ effective_hours)
11
+ *
12
+ * Memory types have different decay rates:
13
+ * - Short-term: hourly decay (fastest)
14
+ * - Episodic: 6-hour decay (medium)
15
+ * - Long-term: daily decay (slowest)
16
+ *
17
+ * Access count slows decay (multiplicative bonus, not additive)
18
+ */
19
+ export declare function calculateDecayedScore(memory: Memory, config?: MemoryConfig): number;
20
+ /**
21
+ * Calculate reinforcement boost when memory is accessed
22
+ */
23
+ export declare function calculateReinforcementBoost(memory: Memory, config?: MemoryConfig): number;
24
+ /**
25
+ * Determine if a memory should be promoted from short-term to long-term
26
+ * Based on access patterns and salience
27
+ */
28
+ export declare function shouldPromoteToLongTerm(memory: Memory, config?: MemoryConfig): boolean;
29
+ /**
30
+ * Determine if an episodic memory should be promoted to long-term
31
+ * Episodic memories (session markers) promote if they're accessed frequently,
32
+ * indicating an important session that's being referenced
33
+ */
34
+ export declare function shouldPromoteEpisodic(memory: Memory): boolean;
35
+ /**
36
+ * Determine if a memory should be deleted due to decay
37
+ * Uses category-specific thresholds - architecture/errors are harder to delete
38
+ */
39
+ export declare function shouldDelete(memory: Memory, config?: MemoryConfig): boolean;
40
+ /**
41
+ * Get memories sorted by priority (salience + recency + access count)
42
+ */
43
+ export declare function calculatePriority(memory: Memory): number;
44
+ /**
45
+ * Batch process memories for decay and cleanup
46
+ * Returns IDs of memories to delete and promote
47
+ */
48
+ export declare function processDecay(memories: Memory[], config?: MemoryConfig): {
49
+ toDelete: number[];
50
+ toPromote: number[];
51
+ updated: Map<number, number>;
52
+ };
53
+ /**
54
+ * Calculate optimal time for next consolidation
55
+ * Based on current memory state
56
+ */
57
+ export declare function calculateNextConsolidationTime(memories: Memory[], config?: MemoryConfig): Date;
58
+ /**
59
+ * Human-readable time since last access
60
+ */
61
+ export declare function formatTimeSinceAccess(memory: Memory): string;
62
+ //# sourceMappingURL=decay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decay.d.ts","sourceRoot":"","sources":["../../src/memory/decay.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAuC,MAAM,YAAY,CAAC;AAEvF;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAA6B,GACpC,MAAM,CA2BR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAA6B,GACpC,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAA6B,GACpC,OAAO,CAcT;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAW7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,YAA6B,GACpC,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBxD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,GAAE,YAA6B,GACpC;IACD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAoBA;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,GAAE,YAA6B,GACpC,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa5D"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Temporal Decay System
3
+ *
4
+ * Implements memory decay similar to human forgetting curves.
5
+ * Memories fade over time but can be reinforced through access.
6
+ */
7
+ import { DEFAULT_CONFIG, DELETION_THRESHOLDS } from './types.js';
8
+ /**
9
+ * Calculate the current decayed score for a memory
10
+ * Uses exponential decay: score = base_score * (decay_rate ^ effective_hours)
11
+ *
12
+ * Memory types have different decay rates:
13
+ * - Short-term: hourly decay (fastest)
14
+ * - Episodic: 6-hour decay (medium)
15
+ * - Long-term: daily decay (slowest)
16
+ *
17
+ * Access count slows decay (multiplicative bonus, not additive)
18
+ */
19
+ export function calculateDecayedScore(memory, config = DEFAULT_CONFIG) {
20
+ const now = new Date();
21
+ const lastAccessed = new Date(memory.lastAccessed);
22
+ const hoursSinceAccess = (now.getTime() - lastAccessed.getTime()) / (1000 * 60 * 60);
23
+ // Determine effective decay period based on memory type
24
+ // This is applied FIRST, not as a replacement after calculation
25
+ let effectiveHours = hoursSinceAccess;
26
+ if (memory.type === 'long_term') {
27
+ effectiveHours = hoursSinceAccess / 24; // Daily decay instead of hourly
28
+ }
29
+ else if (memory.type === 'episodic') {
30
+ effectiveHours = hoursSinceAccess / 6; // 6-hour decay rate
31
+ }
32
+ // Apply access count bonus to SLOW decay (multiplicative, not additive)
33
+ // Frequently accessed memories decay slower - up to 30% slower
34
+ // This prevents score inflation beyond original salience
35
+ const accessSlowdown = 1 + Math.min(0.3, memory.accessCount * 0.02);
36
+ effectiveHours = effectiveHours / accessSlowdown;
37
+ // Calculate decay factor with type-adjusted and access-adjusted time
38
+ const decayFactor = Math.pow(config.decayRate, effectiveHours);
39
+ // Apply decay to salience - score can never exceed original salience
40
+ const score = memory.salience * decayFactor;
41
+ return Math.max(0, Math.min(1, score));
42
+ }
43
+ /**
44
+ * Calculate reinforcement boost when memory is accessed
45
+ */
46
+ export function calculateReinforcementBoost(memory, config = DEFAULT_CONFIG) {
47
+ // Diminishing returns on reinforcement
48
+ const currentBoost = Math.min(0.5, (config.reinforcementFactor - 1) * Math.pow(0.9, memory.accessCount));
49
+ // New score after reinforcement
50
+ let newScore = memory.salience + currentBoost;
51
+ // Cap at 1.0
52
+ return Math.min(1.0, newScore);
53
+ }
54
+ /**
55
+ * Determine if a memory should be promoted from short-term to long-term
56
+ * Based on access patterns and salience
57
+ */
58
+ export function shouldPromoteToLongTerm(memory, config = DEFAULT_CONFIG) {
59
+ if (memory.type !== 'short_term')
60
+ return false;
61
+ // Check if salience is above consolidation threshold
62
+ if (memory.salience < config.consolidationThreshold)
63
+ return false;
64
+ // Check if accessed multiple times (spaced repetition indicator)
65
+ if (memory.accessCount >= 3)
66
+ return true;
67
+ // Check if memory has survived for a while with good salience
68
+ const ageHours = (Date.now() - new Date(memory.createdAt).getTime()) / (1000 * 60 * 60);
69
+ if (ageHours >= config.autoConsolidateHours && memory.salience >= 0.7)
70
+ return true;
71
+ return false;
72
+ }
73
+ /**
74
+ * Determine if an episodic memory should be promoted to long-term
75
+ * Episodic memories (session markers) promote if they're accessed frequently,
76
+ * indicating an important session that's being referenced
77
+ */
78
+ export function shouldPromoteEpisodic(memory) {
79
+ if (memory.type !== 'episodic')
80
+ return false;
81
+ // Promote if accessed 5+ times (indicates important session marker)
82
+ if (memory.accessCount >= 5)
83
+ return true;
84
+ // Promote if high salience and relatively old
85
+ const ageHours = (Date.now() - new Date(memory.createdAt).getTime()) / (1000 * 60 * 60);
86
+ if (ageHours >= 24 && memory.salience >= 0.8)
87
+ return true;
88
+ return false;
89
+ }
90
+ /**
91
+ * Determine if a memory should be deleted due to decay
92
+ * Uses category-specific thresholds - architecture/errors are harder to delete
93
+ */
94
+ export function shouldDelete(memory, config = DEFAULT_CONFIG) {
95
+ const decayedScore = calculateDecayedScore(memory, config);
96
+ // Don't delete long-term memories easily
97
+ if (memory.type === 'long_term') {
98
+ return decayedScore < 0.1 && memory.accessCount < 2;
99
+ }
100
+ // Get category-specific threshold (defaults to config threshold if not found)
101
+ const categoryThreshold = DELETION_THRESHOLDS[memory.category] ?? config.salienceThreshold;
102
+ // Short-term and episodic memories use category-specific thresholds
103
+ return decayedScore < categoryThreshold;
104
+ }
105
+ /**
106
+ * Get memories sorted by priority (salience + recency + access count)
107
+ */
108
+ export function calculatePriority(memory) {
109
+ const decayedScore = calculateDecayedScore(memory);
110
+ // Weight factors
111
+ const salienceWeight = 0.4;
112
+ const recencyWeight = 0.3;
113
+ const accessWeight = 0.3;
114
+ // Calculate recency score (1.0 for recent, decreasing with age)
115
+ const ageHours = (Date.now() - new Date(memory.lastAccessed).getTime()) / (1000 * 60 * 60);
116
+ const recencyScore = Math.exp(-ageHours / 24); // Half-life of ~17 hours
117
+ // Calculate access score (capped at 1.0)
118
+ const accessScore = Math.min(1.0, memory.accessCount / 10);
119
+ return (decayedScore * salienceWeight +
120
+ recencyScore * recencyWeight +
121
+ accessScore * accessWeight);
122
+ }
123
+ /**
124
+ * Batch process memories for decay and cleanup
125
+ * Returns IDs of memories to delete and promote
126
+ */
127
+ export function processDecay(memories, config = DEFAULT_CONFIG) {
128
+ const toDelete = [];
129
+ const toPromote = [];
130
+ const updated = new Map();
131
+ for (const memory of memories) {
132
+ const decayedScore = calculateDecayedScore(memory, config);
133
+ updated.set(memory.id, decayedScore);
134
+ if (shouldDelete(memory, config)) {
135
+ toDelete.push(memory.id);
136
+ }
137
+ else if (shouldPromoteToLongTerm(memory, config)) {
138
+ toPromote.push(memory.id);
139
+ }
140
+ else if (shouldPromoteEpisodic(memory)) {
141
+ // Also consider episodic memories for promotion
142
+ toPromote.push(memory.id);
143
+ }
144
+ }
145
+ return { toDelete, toPromote, updated };
146
+ }
147
+ /**
148
+ * Calculate optimal time for next consolidation
149
+ * Based on current memory state
150
+ */
151
+ export function calculateNextConsolidationTime(memories, config = DEFAULT_CONFIG) {
152
+ const shortTermCount = memories.filter(m => m.type === 'short_term').length;
153
+ // If we have many short-term memories, consolidate sooner
154
+ if (shortTermCount > config.maxShortTermMemories * 0.8) {
155
+ return new Date(Date.now() + 30 * 60 * 1000); // 30 minutes
156
+ }
157
+ if (shortTermCount > config.maxShortTermMemories * 0.5) {
158
+ return new Date(Date.now() + 2 * 60 * 60 * 1000); // 2 hours
159
+ }
160
+ return new Date(Date.now() + config.autoConsolidateHours * 60 * 60 * 1000);
161
+ }
162
+ /**
163
+ * Human-readable time since last access
164
+ */
165
+ export function formatTimeSinceAccess(memory) {
166
+ const hours = (Date.now() - new Date(memory.lastAccessed).getTime()) / (1000 * 60 * 60);
167
+ if (hours < 1)
168
+ return 'just now';
169
+ if (hours < 2)
170
+ return '1 hour ago';
171
+ if (hours < 24)
172
+ return `${Math.floor(hours)} hours ago`;
173
+ if (hours < 48)
174
+ return 'yesterday';
175
+ const days = Math.floor(hours / 24);
176
+ if (days < 7)
177
+ return `${days} days ago`;
178
+ const weeks = Math.floor(days / 7);
179
+ if (weeks < 4)
180
+ return `${weeks} week${weeks > 1 ? 's' : ''} ago`;
181
+ const months = Math.floor(days / 30);
182
+ return `${months} month${months > 1 ? 's' : ''} ago`;
183
+ }
184
+ //# sourceMappingURL=decay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decay.js","sourceRoot":"","sources":["../../src/memory/decay.ts"],"names":[],"mappings":"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"}