claude-conversation-memory-mcp 0.1.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 (116) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +223 -0
  3. package/dist/ConversationMemory.d.ts +80 -0
  4. package/dist/ConversationMemory.d.ts.map +1 -0
  5. package/dist/ConversationMemory.js +203 -0
  6. package/dist/ConversationMemory.js.map +1 -0
  7. package/dist/documentation/CodeAnalyzer.d.ts +29 -0
  8. package/dist/documentation/CodeAnalyzer.d.ts.map +1 -0
  9. package/dist/documentation/CodeAnalyzer.js +122 -0
  10. package/dist/documentation/CodeAnalyzer.js.map +1 -0
  11. package/dist/documentation/ConversationAnalyzer.d.ts +19 -0
  12. package/dist/documentation/ConversationAnalyzer.d.ts.map +1 -0
  13. package/dist/documentation/ConversationAnalyzer.js +156 -0
  14. package/dist/documentation/ConversationAnalyzer.js.map +1 -0
  15. package/dist/documentation/CrossReferencer.d.ts +67 -0
  16. package/dist/documentation/CrossReferencer.d.ts.map +1 -0
  17. package/dist/documentation/CrossReferencer.js +247 -0
  18. package/dist/documentation/CrossReferencer.js.map +1 -0
  19. package/dist/documentation/DocumentationGenerator.d.ts +22 -0
  20. package/dist/documentation/DocumentationGenerator.d.ts.map +1 -0
  21. package/dist/documentation/DocumentationGenerator.js +57 -0
  22. package/dist/documentation/DocumentationGenerator.js.map +1 -0
  23. package/dist/documentation/MarkdownFormatter.d.ts +26 -0
  24. package/dist/documentation/MarkdownFormatter.d.ts.map +1 -0
  25. package/dist/documentation/MarkdownFormatter.js +301 -0
  26. package/dist/documentation/MarkdownFormatter.js.map +1 -0
  27. package/dist/documentation/types.d.ts +176 -0
  28. package/dist/documentation/types.d.ts.map +1 -0
  29. package/dist/documentation/types.js +5 -0
  30. package/dist/documentation/types.js.map +1 -0
  31. package/dist/embeddings/EmbeddingConfig.d.ts +39 -0
  32. package/dist/embeddings/EmbeddingConfig.d.ts.map +1 -0
  33. package/dist/embeddings/EmbeddingConfig.js +132 -0
  34. package/dist/embeddings/EmbeddingConfig.js.map +1 -0
  35. package/dist/embeddings/EmbeddingGenerator.d.ts +45 -0
  36. package/dist/embeddings/EmbeddingGenerator.d.ts.map +1 -0
  37. package/dist/embeddings/EmbeddingGenerator.js +129 -0
  38. package/dist/embeddings/EmbeddingGenerator.js.map +1 -0
  39. package/dist/embeddings/EmbeddingProvider.d.ts +34 -0
  40. package/dist/embeddings/EmbeddingProvider.d.ts.map +1 -0
  41. package/dist/embeddings/EmbeddingProvider.js +6 -0
  42. package/dist/embeddings/EmbeddingProvider.js.map +1 -0
  43. package/dist/embeddings/VectorStore.d.ts +75 -0
  44. package/dist/embeddings/VectorStore.d.ts.map +1 -0
  45. package/dist/embeddings/VectorStore.js +220 -0
  46. package/dist/embeddings/VectorStore.js.map +1 -0
  47. package/dist/embeddings/providers/OllamaEmbeddings.d.ts +38 -0
  48. package/dist/embeddings/providers/OllamaEmbeddings.d.ts.map +1 -0
  49. package/dist/embeddings/providers/OllamaEmbeddings.js +132 -0
  50. package/dist/embeddings/providers/OllamaEmbeddings.js.map +1 -0
  51. package/dist/embeddings/providers/OpenAIEmbeddings.d.ts +40 -0
  52. package/dist/embeddings/providers/OpenAIEmbeddings.d.ts.map +1 -0
  53. package/dist/embeddings/providers/OpenAIEmbeddings.js +128 -0
  54. package/dist/embeddings/providers/OpenAIEmbeddings.js.map +1 -0
  55. package/dist/embeddings/providers/TransformersEmbeddings.d.ts +38 -0
  56. package/dist/embeddings/providers/TransformersEmbeddings.d.ts.map +1 -0
  57. package/dist/embeddings/providers/TransformersEmbeddings.js +114 -0
  58. package/dist/embeddings/providers/TransformersEmbeddings.js.map +1 -0
  59. package/dist/index.d.ts +7 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +127 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/parsers/ConversationParser.d.ts +138 -0
  64. package/dist/parsers/ConversationParser.d.ts.map +1 -0
  65. package/dist/parsers/ConversationParser.js +325 -0
  66. package/dist/parsers/ConversationParser.js.map +1 -0
  67. package/dist/parsers/DecisionExtractor.d.ts +76 -0
  68. package/dist/parsers/DecisionExtractor.d.ts.map +1 -0
  69. package/dist/parsers/DecisionExtractor.js +305 -0
  70. package/dist/parsers/DecisionExtractor.js.map +1 -0
  71. package/dist/parsers/GitIntegrator.d.ts +71 -0
  72. package/dist/parsers/GitIntegrator.d.ts.map +1 -0
  73. package/dist/parsers/GitIntegrator.js +283 -0
  74. package/dist/parsers/GitIntegrator.js.map +1 -0
  75. package/dist/parsers/MistakeExtractor.d.ts +86 -0
  76. package/dist/parsers/MistakeExtractor.d.ts.map +1 -0
  77. package/dist/parsers/MistakeExtractor.js +341 -0
  78. package/dist/parsers/MistakeExtractor.js.map +1 -0
  79. package/dist/parsers/RequirementsExtractor.d.ts +70 -0
  80. package/dist/parsers/RequirementsExtractor.d.ts.map +1 -0
  81. package/dist/parsers/RequirementsExtractor.js +252 -0
  82. package/dist/parsers/RequirementsExtractor.js.map +1 -0
  83. package/dist/search/SemanticSearch.d.ts +90 -0
  84. package/dist/search/SemanticSearch.d.ts.map +1 -0
  85. package/dist/search/SemanticSearch.js +352 -0
  86. package/dist/search/SemanticSearch.js.map +1 -0
  87. package/dist/storage/ConversationStorage.d.ts +53 -0
  88. package/dist/storage/ConversationStorage.d.ts.map +1 -0
  89. package/dist/storage/ConversationStorage.js +249 -0
  90. package/dist/storage/ConversationStorage.js.map +1 -0
  91. package/dist/storage/SQLiteManager.d.ts +88 -0
  92. package/dist/storage/SQLiteManager.d.ts.map +1 -0
  93. package/dist/storage/SQLiteManager.js +281 -0
  94. package/dist/storage/SQLiteManager.js.map +1 -0
  95. package/dist/storage/migrations.d.ts +54 -0
  96. package/dist/storage/migrations.d.ts.map +1 -0
  97. package/dist/storage/migrations.js +153 -0
  98. package/dist/storage/migrations.js.map +1 -0
  99. package/dist/storage/schema.sql +321 -0
  100. package/dist/tools/ToolDefinitions.d.ts +265 -0
  101. package/dist/tools/ToolDefinitions.d.ts.map +1 -0
  102. package/dist/tools/ToolDefinitions.js +261 -0
  103. package/dist/tools/ToolDefinitions.js.map +1 -0
  104. package/dist/tools/ToolHandlers.d.ts +56 -0
  105. package/dist/tools/ToolHandlers.d.ts.map +1 -0
  106. package/dist/tools/ToolHandlers.js +431 -0
  107. package/dist/tools/ToolHandlers.js.map +1 -0
  108. package/dist/types/ToolTypes.d.ts +333 -0
  109. package/dist/types/ToolTypes.d.ts.map +1 -0
  110. package/dist/types/ToolTypes.js +6 -0
  111. package/dist/types/ToolTypes.js.map +1 -0
  112. package/dist/utils/sanitization.d.ts +35 -0
  113. package/dist/utils/sanitization.d.ts.map +1 -0
  114. package/dist/utils/sanitization.js +97 -0
  115. package/dist/utils/sanitization.js.map +1 -0
  116. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequirementsExtractor.js","sourceRoot":"","sources":["../../src/parsers/RequirementsExtractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAyBhC,MAAM,OAAO,qBAAqB;IAChC,yBAAyB;IACR,oBAAoB,GAAG;QACtC,UAAU,EAAE;YACV,wFAAwF;YACxF,wCAAwC;SACzC;QACD,WAAW,EAAE;YACX,gFAAgF;YAChF,iFAAiF;YACjF,4DAA4D;SAC7D;QACD,aAAa,EAAE;YACb,6EAA6E;YAC7E,iEAAiE;SAClE;QACD,QAAQ,EAAE;YACR,gCAAgC;YAChC,2DAA2D;YAC3D,qCAAqC;SACtC;KACF,CAAC;IAEF,6BAA6B;IACZ,aAAa,GAAG;QAC/B,0BAA0B;QAC1B,gCAAgC;QAChC,QAAQ;QACR,MAAM;QACN,OAAO;QACP,cAAc;QACd,WAAW;KACZ,CAAC;IAEF;;OAEG;IACH,mBAAmB,CAAC,QAAmB;QACrC,MAAM,YAAY,GAAkB,EAAE,CAAC;QAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAAA,SAAS;YAAA,CAAC;YAEjC,8BAA8B;YAC9B,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAC3C,IAAI,CAAC,oBAAoB,CAC1B,EAAE,CAAC;gBACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAE9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CACvC,IAA2B,EAC3B,KAAK,EACL,OAAO,CACR,CAAC;wBACF,IAAI,WAAW,EAAE,CAAC;4BAChB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBACjC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,QAAmB,EACnB,WAAyB,EACzB,QAAmB;QAEnB,MAAM,WAAW,GAAiB,EAAE,CAAC;QAErC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,kCAAkC;YAClC,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAC5C,SAAS;gBACX,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CACtB,CAAC;gBAEF,IAAI,MAAM,EAAE,CAAC;oBACX,4BAA4B;oBAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;oBACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;oBAElE,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;wBACtB,WAAW,CAAC,IAAI,CAAC;4BACf,EAAE,EAAE,MAAM,EAAE;4BACZ,eAAe,EAAE,OAAO,CAAC,eAAe;4BACxC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC;4BAC3D,YAAY,EAAE,OAAO;4BACrB,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;4BACxC,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;4BACrD,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;4BAC7C,SAAS,EAAE,OAAO,CAAC,SAAS;yBAC7B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,IAAyB,EACzB,KAAuB,EACvB,OAAgB;QAEhB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yCAAyC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEnE,8BAA8B;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAE3D,OAAO;YACL,EAAE,EAAE,MAAM,EAAE;YACZ,IAAI;YACJ,WAAW;YACX,SAAS;YACT,kBAAkB,EAAE,UAAU;YAC9B,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,eAAuB,EACvB,WAAmB;QAEnB,kDAAkD;QAClD,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAC1C,+CAA+C,CAChD,CAAC;QACF,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAED,8BAA8B;QAC9B,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CACpC,IAAI,MAAM,CACR,GAAG,eAAe,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,sDAAsD,EAC/G,GAAG,CACJ,CACF,CAAC;QAEF,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,OAAgB;QAChD,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,iBAAiB,GAAG;YACxB,UAAU;YACV,SAAS;YACT,KAAK;YACL,UAAU;YACV,MAAM;YACN,IAAI;YACJ,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAErD,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,OAAe,EACf,MAAkB;QAElB,sCAAsC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC1D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QAED,6BAA6B;QAC7B,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC3E,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,sBAAsB;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,mBAAmB,CACzB,MAAkB;QAElB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAErE,4BAA4B;QAC5B,IACE,oCAAoC,CAAC,IAAI,CAAC,MAAM,CAAC;YACjD,iCAAiC,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9C,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,4BAA4B;QAC5B,IACE,qCAAqC,CAAC,IAAI,CAAC,MAAM,CAAC;YAClD,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAChC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,MAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QAErD,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,6BAA6B;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACnF,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,CAAC;QAED,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAkB;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,sBAAsB;QACtB,MAAM,WAAW,GAAG,0DAA0D,CAAC;QAC/E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QAEzD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,YAA2B;QACzD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Semantic Search Interface
3
+ * Combines vector store and embedding generation for conversation search
4
+ */
5
+ import type { SQLiteManager } from "../storage/SQLiteManager.js";
6
+ import type { Message, Conversation } from "../parsers/ConversationParser.js";
7
+ import type { Decision } from "../parsers/DecisionExtractor.js";
8
+ export interface SearchFilter {
9
+ date_range?: [number, number];
10
+ message_type?: string[];
11
+ has_decisions?: boolean;
12
+ conversation_id?: string;
13
+ }
14
+ export interface SearchResult {
15
+ message: Message;
16
+ conversation: Conversation;
17
+ similarity: number;
18
+ snippet: string;
19
+ }
20
+ export interface DecisionSearchResult {
21
+ decision: Decision;
22
+ conversation: Conversation;
23
+ similarity: number;
24
+ }
25
+ export declare class SemanticSearch {
26
+ private vectorStore;
27
+ private db;
28
+ constructor(sqliteManager: SQLiteManager);
29
+ /**
30
+ * Index all messages for semantic search
31
+ */
32
+ indexMessages(messages: Message[]): Promise<void>;
33
+ /**
34
+ * Index decisions for semantic search
35
+ */
36
+ indexDecisions(decisions: Decision[]): Promise<void>;
37
+ /**
38
+ * Search conversations using natural language query
39
+ */
40
+ searchConversations(query: string, limit?: number, filter?: SearchFilter): Promise<SearchResult[]>;
41
+ /**
42
+ * Search for decisions
43
+ */
44
+ searchDecisions(query: string, limit?: number): Promise<DecisionSearchResult[]>;
45
+ /**
46
+ * Fallback to full-text search when embeddings unavailable
47
+ */
48
+ private fallbackFullTextSearch;
49
+ /**
50
+ * Fallback decision search
51
+ */
52
+ private fallbackDecisionSearch;
53
+ /**
54
+ * Apply filter to message
55
+ */
56
+ private applyFilter;
57
+ /**
58
+ * Generate snippet from content
59
+ */
60
+ private generateSnippet;
61
+ /**
62
+ * Get message by ID
63
+ */
64
+ private getMessage;
65
+ /**
66
+ * Get conversation by ID
67
+ */
68
+ private getConversation;
69
+ /**
70
+ * Get decision by ID
71
+ */
72
+ private getDecision;
73
+ /**
74
+ * Cosine similarity helper
75
+ */
76
+ private cosineSimilarity;
77
+ /**
78
+ * Buffer to Float32Array helper
79
+ */
80
+ private bufferToFloat32Array;
81
+ /**
82
+ * Get search statistics
83
+ */
84
+ getStats(): {
85
+ total_embeddings: number;
86
+ vec_enabled: boolean;
87
+ model_info: Record<string, unknown>;
88
+ };
89
+ }
90
+ //# sourceMappingURL=SemanticSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticSearch.d.ts","sourceRoot":"","sources":["../../src/search/SemanticSearch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAGhE,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,EAAE,CAAgB;gBAEd,aAAa,EAAE,aAAa;IAKxC;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvD;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B1D;;OAEG;IACG,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,EAClB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,YAAY,EAAE,CAAC;IA6C1B;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAsClC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA4D9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsC9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;OAEG;IACH,QAAQ,IAAI;QACV,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACrC;CAUF"}
@@ -0,0 +1,352 @@
1
+ /**
2
+ * Semantic Search Interface
3
+ * Combines vector store and embedding generation for conversation search
4
+ */
5
+ import { VectorStore } from "../embeddings/VectorStore.js";
6
+ import { getEmbeddingGenerator } from "../embeddings/EmbeddingGenerator.js";
7
+ export class SemanticSearch {
8
+ vectorStore;
9
+ db;
10
+ constructor(sqliteManager) {
11
+ this.db = sqliteManager;
12
+ this.vectorStore = new VectorStore(sqliteManager);
13
+ }
14
+ /**
15
+ * Index all messages for semantic search
16
+ */
17
+ async indexMessages(messages) {
18
+ console.log(`Indexing ${messages.length} messages...`);
19
+ const embedder = await getEmbeddingGenerator();
20
+ if (!embedder.isAvailable()) {
21
+ console.warn("Embeddings not available - skipping indexing");
22
+ return;
23
+ }
24
+ // Filter messages with content
25
+ const messagesToIndex = messages.filter((m) => !!m.content && m.content.trim().length > 0);
26
+ console.log(`Generating embeddings for ${messagesToIndex.length} messages...`);
27
+ // Generate embeddings in batches
28
+ const texts = messagesToIndex.map((m) => m.content);
29
+ const embeddings = await embedder.embedBatch(texts, 32);
30
+ // Store embeddings
31
+ for (let i = 0; i < messagesToIndex.length; i++) {
32
+ await this.vectorStore.storeMessageEmbedding(messagesToIndex[i].id, messagesToIndex[i].content, embeddings[i]);
33
+ }
34
+ console.log("✓ Indexing complete");
35
+ }
36
+ /**
37
+ * Index decisions for semantic search
38
+ */
39
+ async indexDecisions(decisions) {
40
+ console.log(`Indexing ${decisions.length} decisions...`);
41
+ const embedder = await getEmbeddingGenerator();
42
+ if (!embedder.isAvailable()) {
43
+ console.warn("Embeddings not available - skipping decision indexing");
44
+ return;
45
+ }
46
+ // Generate embeddings for decision text + rationale
47
+ const texts = decisions.map((d) => {
48
+ const parts = [d.decision_text];
49
+ if (d.rationale) {
50
+ parts.push(d.rationale);
51
+ }
52
+ if (d.context) {
53
+ parts.push(d.context);
54
+ }
55
+ return parts.join(" ");
56
+ });
57
+ const embeddings = await embedder.embedBatch(texts, 32);
58
+ // Store embeddings
59
+ for (let i = 0; i < decisions.length; i++) {
60
+ await this.vectorStore.storeDecisionEmbedding(decisions[i].id, embeddings[i]);
61
+ }
62
+ console.log("✓ Decision indexing complete");
63
+ }
64
+ /**
65
+ * Search conversations using natural language query
66
+ */
67
+ async searchConversations(query, limit = 10, filter) {
68
+ const embedder = await getEmbeddingGenerator();
69
+ if (!embedder.isAvailable()) {
70
+ console.warn("Embeddings not available - falling back to full-text search");
71
+ return this.fallbackFullTextSearch(query, limit, filter);
72
+ }
73
+ // Generate query embedding
74
+ const queryEmbedding = await embedder.embed(query);
75
+ // Search vector store
76
+ const vectorResults = await this.vectorStore.searchMessages(queryEmbedding, limit * 2 // Get more results for filtering
77
+ );
78
+ // Enrich with message and conversation data
79
+ const enrichedResults = [];
80
+ for (const vecResult of vectorResults) {
81
+ const message = this.getMessage(vecResult.id);
82
+ if (!message) {
83
+ continue;
84
+ }
85
+ // Apply filters
86
+ if (filter) {
87
+ if (!this.applyFilter(message, filter)) {
88
+ continue;
89
+ }
90
+ }
91
+ const conversation = this.getConversation(message.conversation_id);
92
+ if (!conversation) {
93
+ continue;
94
+ }
95
+ enrichedResults.push({
96
+ message,
97
+ conversation,
98
+ similarity: vecResult.similarity,
99
+ snippet: this.generateSnippet(vecResult.content, query),
100
+ });
101
+ if (enrichedResults.length >= limit) {
102
+ break;
103
+ }
104
+ }
105
+ return enrichedResults;
106
+ }
107
+ /**
108
+ * Search for decisions
109
+ */
110
+ async searchDecisions(query, limit = 10) {
111
+ const embedder = await getEmbeddingGenerator();
112
+ if (!embedder.isAvailable()) {
113
+ console.warn("Embeddings not available - using text search");
114
+ return this.fallbackDecisionSearch(query, limit);
115
+ }
116
+ // Generate query embedding
117
+ const queryEmbedding = await embedder.embed(query);
118
+ // Get all decision embeddings and calculate similarity
119
+ const allDecisions = this.db
120
+ .prepare("SELECT id, decision_id, embedding FROM decision_embeddings")
121
+ .all();
122
+ const results = allDecisions
123
+ .map((row) => {
124
+ const embedding = this.bufferToFloat32Array(row.embedding);
125
+ const similarity = this.cosineSimilarity(queryEmbedding, embedding);
126
+ const decision = this.getDecision(row.decision_id);
127
+ if (!decision) {
128
+ return null;
129
+ }
130
+ const conversation = this.getConversation(decision.conversation_id);
131
+ if (!conversation) {
132
+ return null;
133
+ }
134
+ return { decision, conversation, similarity };
135
+ })
136
+ .filter((r) => r !== null)
137
+ .sort((a, b) => b.similarity - a.similarity)
138
+ .slice(0, limit);
139
+ return results;
140
+ }
141
+ /**
142
+ * Fallback to full-text search when embeddings unavailable
143
+ */
144
+ fallbackFullTextSearch(query, limit, filter) {
145
+ let sql = `
146
+ SELECT m.*, c.project_path, c.git_branch, c.claude_version
147
+ FROM messages m
148
+ JOIN conversations c ON m.conversation_id = c.id
149
+ WHERE m.id IN (
150
+ SELECT id FROM messages_fts WHERE messages_fts MATCH ?
151
+ )
152
+ `;
153
+ const params = [query];
154
+ // Apply filters
155
+ if (filter) {
156
+ if (filter.date_range) {
157
+ sql += " AND m.timestamp BETWEEN ? AND ?";
158
+ params.push(filter.date_range[0], filter.date_range[1]);
159
+ }
160
+ if (filter.message_type) {
161
+ sql += ` AND m.message_type IN (${filter.message_type.map(() => "?").join(",")})`;
162
+ params.push(...filter.message_type);
163
+ }
164
+ if (filter.conversation_id) {
165
+ sql += " AND m.conversation_id = ?";
166
+ params.push(filter.conversation_id);
167
+ }
168
+ }
169
+ sql += " ORDER BY m.timestamp DESC LIMIT ?";
170
+ params.push(limit);
171
+ const rows = this.db.prepare(sql).all(...params);
172
+ return rows.map((row) => {
173
+ const conversation = this.getConversation(row.conversation_id);
174
+ if (!conversation) {
175
+ console.warn(`Warning: Conversation ${row.conversation_id} not found for message ${row.id}`);
176
+ // Return a placeholder - in production, this shouldn't happen
177
+ throw new Error(`Data integrity error: Conversation ${row.conversation_id} not found`);
178
+ }
179
+ return {
180
+ message: {
181
+ ...row,
182
+ metadata: JSON.parse(row.metadata || "{}"),
183
+ is_sidechain: Boolean(row.is_sidechain),
184
+ },
185
+ conversation,
186
+ similarity: 0.5, // Default similarity for FTS
187
+ snippet: this.generateSnippet(row.content || "", query),
188
+ };
189
+ });
190
+ }
191
+ /**
192
+ * Fallback decision search
193
+ */
194
+ fallbackDecisionSearch(query, limit) {
195
+ const sql = `
196
+ SELECT d.*, c.project_path, c.git_branch
197
+ FROM decisions d
198
+ JOIN conversations c ON d.conversation_id = c.id
199
+ WHERE d.id IN (
200
+ SELECT id FROM decisions_fts WHERE decisions_fts MATCH ?
201
+ )
202
+ ORDER BY d.timestamp DESC
203
+ LIMIT ?
204
+ `;
205
+ const rows = this.db.prepare(sql).all(query, limit);
206
+ return rows.map((row) => {
207
+ const conversation = this.getConversation(row.conversation_id);
208
+ if (!conversation) {
209
+ console.warn(`Warning: Conversation ${row.conversation_id} not found for decision ${row.id}`);
210
+ throw new Error(`Data integrity error: Conversation ${row.conversation_id} not found`);
211
+ }
212
+ return {
213
+ decision: {
214
+ ...row,
215
+ alternatives_considered: JSON.parse(row.alternatives_considered || "[]"),
216
+ rejected_reasons: JSON.parse(row.rejected_reasons || "{}"),
217
+ related_files: JSON.parse(row.related_files || "[]"),
218
+ related_commits: JSON.parse(row.related_commits || "[]"),
219
+ },
220
+ conversation,
221
+ similarity: 0.5,
222
+ };
223
+ });
224
+ }
225
+ /**
226
+ * Apply filter to message
227
+ */
228
+ applyFilter(message, filter) {
229
+ if (filter.date_range) {
230
+ if (message.timestamp < filter.date_range[0] ||
231
+ message.timestamp > filter.date_range[1]) {
232
+ return false;
233
+ }
234
+ }
235
+ if (filter.message_type) {
236
+ if (!filter.message_type.includes(message.message_type)) {
237
+ return false;
238
+ }
239
+ }
240
+ if (filter.conversation_id) {
241
+ if (message.conversation_id !== filter.conversation_id) {
242
+ return false;
243
+ }
244
+ }
245
+ return true;
246
+ }
247
+ /**
248
+ * Generate snippet from content
249
+ */
250
+ generateSnippet(content, query, length = 150) {
251
+ // Try to find query term in content
252
+ const lowerContent = content.toLowerCase();
253
+ const lowerQuery = query.toLowerCase();
254
+ const index = lowerContent.indexOf(lowerQuery);
255
+ if (index !== -1) {
256
+ // Extract around query term
257
+ const start = Math.max(0, index - 50);
258
+ const end = Math.min(content.length, index + query.length + 100);
259
+ let snippet = content.substring(start, end);
260
+ if (start > 0) {
261
+ snippet = "..." + snippet;
262
+ }
263
+ if (end < content.length) {
264
+ snippet = snippet + "...";
265
+ }
266
+ return snippet;
267
+ }
268
+ // Otherwise just return beginning
269
+ return content.substring(0, length) + (content.length > length ? "..." : "");
270
+ }
271
+ /**
272
+ * Get message by ID
273
+ */
274
+ getMessage(id) {
275
+ const row = this.db
276
+ .prepare("SELECT * FROM messages WHERE id = ?")
277
+ .get(id);
278
+ if (!row) {
279
+ return null;
280
+ }
281
+ return {
282
+ ...row,
283
+ metadata: JSON.parse(row.metadata || "{}"),
284
+ is_sidechain: Boolean(row.is_sidechain),
285
+ };
286
+ }
287
+ /**
288
+ * Get conversation by ID
289
+ */
290
+ getConversation(id) {
291
+ const row = this.db
292
+ .prepare("SELECT * FROM conversations WHERE id = ?")
293
+ .get(id);
294
+ if (!row) {
295
+ return null;
296
+ }
297
+ return {
298
+ ...row,
299
+ metadata: JSON.parse(row.metadata || "{}"),
300
+ };
301
+ }
302
+ /**
303
+ * Get decision by ID
304
+ */
305
+ getDecision(id) {
306
+ const row = this.db.prepare("SELECT * FROM decisions WHERE id = ?").get(id);
307
+ if (!row) {
308
+ return null;
309
+ }
310
+ return {
311
+ ...row,
312
+ alternatives_considered: JSON.parse(row.alternatives_considered || "[]"),
313
+ rejected_reasons: JSON.parse(row.rejected_reasons || "{}"),
314
+ related_files: JSON.parse(row.related_files || "[]"),
315
+ related_commits: JSON.parse(row.related_commits || "[]"),
316
+ };
317
+ }
318
+ /**
319
+ * Cosine similarity helper
320
+ */
321
+ cosineSimilarity(a, b) {
322
+ let dotProduct = 0;
323
+ let normA = 0;
324
+ let normB = 0;
325
+ for (let i = 0; i < a.length; i++) {
326
+ dotProduct += a[i] * b[i];
327
+ normA += a[i] * a[i];
328
+ normB += b[i] * b[i];
329
+ }
330
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
331
+ }
332
+ /**
333
+ * Buffer to Float32Array helper
334
+ */
335
+ bufferToFloat32Array(buffer) {
336
+ return new Float32Array(buffer.buffer, buffer.byteOffset, buffer.byteLength / 4);
337
+ }
338
+ /**
339
+ * Get search statistics
340
+ */
341
+ getStats() {
342
+ return {
343
+ total_embeddings: this.vectorStore.getEmbeddingCount(),
344
+ vec_enabled: this.vectorStore.isVecEnabled(),
345
+ model_info: {
346
+ model: "all-MiniLM-L6-v2",
347
+ dimensions: 384,
348
+ },
349
+ };
350
+ }
351
+ }
352
+ //# sourceMappingURL=SemanticSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticSearch.js","sourceRoot":"","sources":["../../src/search/SemanticSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Conversation Storage Layer
3
+ * CRUD operations for all conversation-related data
4
+ */
5
+ import type { SQLiteManager } from "./SQLiteManager.js";
6
+ import type { Conversation, Message, ToolUse, ToolResult, FileEdit, ThinkingBlock } from "../parsers/ConversationParser.js";
7
+ import type { Decision } from "../parsers/DecisionExtractor.js";
8
+ import type { Mistake } from "../parsers/MistakeExtractor.js";
9
+ import type { GitCommit } from "../parsers/GitIntegrator.js";
10
+ import type { Requirement, Validation } from "../parsers/RequirementsExtractor.js";
11
+ export declare class ConversationStorage {
12
+ private db;
13
+ constructor(db: SQLiteManager);
14
+ storeConversations(conversations: Conversation[]): Promise<void>;
15
+ getConversation(id: string): Conversation | null;
16
+ storeMessages(messages: Message[]): Promise<void>;
17
+ storeToolUses(toolUses: ToolUse[]): Promise<void>;
18
+ storeToolResults(toolResults: ToolResult[]): Promise<void>;
19
+ storeFileEdits(fileEdits: FileEdit[]): Promise<void>;
20
+ getFileEdits(filePath: string): FileEdit[];
21
+ storeThinkingBlocks(blocks: ThinkingBlock[]): Promise<void>;
22
+ storeDecisions(decisions: Decision[]): Promise<void>;
23
+ getDecisionsForFile(filePath: string): Decision[];
24
+ storeGitCommits(commits: GitCommit[]): Promise<void>;
25
+ getCommitsForFile(filePath: string): GitCommit[];
26
+ storeMistakes(mistakes: Mistake[]): Promise<void>;
27
+ storeRequirements(requirements: Requirement[]): Promise<void>;
28
+ storeValidations(validations: Validation[]): Promise<void>;
29
+ getFileTimeline(filePath: string): {
30
+ file_path: string;
31
+ edits: FileEdit[];
32
+ commits: GitCommit[];
33
+ decisions: Decision[];
34
+ };
35
+ getStats(): {
36
+ conversations: {
37
+ count: number;
38
+ };
39
+ messages: {
40
+ count: number;
41
+ };
42
+ decisions: {
43
+ count: number;
44
+ };
45
+ mistakes: {
46
+ count: number;
47
+ };
48
+ git_commits: {
49
+ count: number;
50
+ };
51
+ };
52
+ }
53
+ //# sourceMappingURL=ConversationStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationStorage.d.ts","sourceRoot":"","sources":["../../src/storage/ConversationStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAInF,qBAAa,mBAAmB;IAClB,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,aAAa;IAI/B,kBAAkB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BtE,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAiB1C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCjD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBjD,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B1D,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B1D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAUpC,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB3D,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B1D,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE;IAiB3C,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B1D,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IAe1C,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BjD,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B7D,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BhE,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,SAAS,EAAE,CAAC;QACrB,SAAS,EAAE,QAAQ,EAAE,CAAC;KACvB;IAcD,QAAQ,IAAI;QACV,aAAa,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QACjC,QAAQ,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,QAAQ,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5B,WAAW,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAChC;CAqBF"}