@pcircle/memesh 2.9.2 → 2.9.4

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 (142) hide show
  1. package/README.de.md +119 -78
  2. package/README.es.md +116 -75
  3. package/README.fr.md +116 -75
  4. package/README.id.md +115 -74
  5. package/README.ja.md +111 -70
  6. package/README.ko.md +116 -75
  7. package/README.md +113 -72
  8. package/README.th.md +118 -77
  9. package/README.vi.md +116 -75
  10. package/README.zh-CN.md +120 -79
  11. package/README.zh-TW.md +116 -75
  12. package/dist/core/GitCommandParser.d.ts +11 -0
  13. package/dist/core/GitCommandParser.d.ts.map +1 -0
  14. package/dist/core/GitCommandParser.js +43 -0
  15. package/dist/core/GitCommandParser.js.map +1 -0
  16. package/dist/core/HookIntegration.d.ts +0 -3
  17. package/dist/core/HookIntegration.d.ts.map +1 -1
  18. package/dist/core/HookIntegration.js +6 -30
  19. package/dist/core/HookIntegration.js.map +1 -1
  20. package/dist/db/ConnectionPool.d.ts.map +1 -1
  21. package/dist/db/ConnectionPool.js +17 -1
  22. package/dist/db/ConnectionPool.js.map +1 -1
  23. package/dist/db/adapters/BetterSqlite3Adapter.d.ts.map +1 -1
  24. package/dist/db/adapters/BetterSqlite3Adapter.js +22 -0
  25. package/dist/db/adapters/BetterSqlite3Adapter.js.map +1 -1
  26. package/dist/embeddings/EmbeddingService.d.ts +3 -0
  27. package/dist/embeddings/EmbeddingService.d.ts.map +1 -1
  28. package/dist/embeddings/EmbeddingService.js +28 -6
  29. package/dist/embeddings/EmbeddingService.js.map +1 -1
  30. package/dist/embeddings/InMemoryVectorAdapter.d.ts +15 -0
  31. package/dist/embeddings/InMemoryVectorAdapter.d.ts.map +1 -0
  32. package/dist/embeddings/InMemoryVectorAdapter.js +58 -0
  33. package/dist/embeddings/InMemoryVectorAdapter.js.map +1 -0
  34. package/dist/embeddings/SqliteVecAdapter.d.ts +15 -0
  35. package/dist/embeddings/SqliteVecAdapter.d.ts.map +1 -0
  36. package/dist/embeddings/SqliteVecAdapter.js +107 -0
  37. package/dist/embeddings/SqliteVecAdapter.js.map +1 -0
  38. package/dist/embeddings/VectorExtension.d.ts +2 -4
  39. package/dist/embeddings/VectorExtension.d.ts.map +1 -1
  40. package/dist/embeddings/VectorExtension.js.map +1 -1
  41. package/dist/embeddings/VectorSearchAdapter.d.ts +17 -0
  42. package/dist/embeddings/VectorSearchAdapter.d.ts.map +1 -0
  43. package/dist/embeddings/VectorSearchAdapter.js +2 -0
  44. package/dist/embeddings/VectorSearchAdapter.js.map +1 -0
  45. package/dist/embeddings/index.d.ts +6 -1
  46. package/dist/embeddings/index.d.ts.map +1 -1
  47. package/dist/embeddings/index.js +4 -1
  48. package/dist/embeddings/index.js.map +1 -1
  49. package/dist/knowledge-graph/ContentHasher.d.ts +4 -0
  50. package/dist/knowledge-graph/ContentHasher.d.ts.map +1 -0
  51. package/dist/knowledge-graph/ContentHasher.js +8 -0
  52. package/dist/knowledge-graph/ContentHasher.js.map +1 -0
  53. package/dist/knowledge-graph/KGSearchEngine.d.ts +37 -0
  54. package/dist/knowledge-graph/KGSearchEngine.d.ts.map +1 -0
  55. package/dist/knowledge-graph/KGSearchEngine.js +257 -0
  56. package/dist/knowledge-graph/KGSearchEngine.js.map +1 -0
  57. package/dist/knowledge-graph/index.d.ts +18 -7
  58. package/dist/knowledge-graph/index.d.ts.map +1 -1
  59. package/dist/knowledge-graph/index.js +147 -242
  60. package/dist/knowledge-graph/index.js.map +1 -1
  61. package/dist/mcp/ServerInitializer.d.ts.map +1 -1
  62. package/dist/mcp/ServerInitializer.js +1 -1
  63. package/dist/mcp/ServerInitializer.js.map +1 -1
  64. package/dist/mcp/StdinBufferManager.d.ts +11 -0
  65. package/dist/mcp/StdinBufferManager.d.ts.map +1 -0
  66. package/dist/mcp/StdinBufferManager.js +62 -0
  67. package/dist/mcp/StdinBufferManager.js.map +1 -0
  68. package/dist/mcp/ToolDefinitions.js +3 -3
  69. package/dist/mcp/ToolDefinitions.js.map +1 -1
  70. package/dist/mcp/daemon/StdioProxyClient.d.ts.map +1 -1
  71. package/dist/mcp/daemon/StdioProxyClient.js +6 -0
  72. package/dist/mcp/daemon/StdioProxyClient.js.map +1 -1
  73. package/dist/mcp/handlers/HookToolHandler.d.ts +10 -0
  74. package/dist/mcp/handlers/HookToolHandler.d.ts.map +1 -0
  75. package/dist/mcp/handlers/HookToolHandler.js +92 -0
  76. package/dist/mcp/handlers/HookToolHandler.js.map +1 -0
  77. package/dist/mcp/handlers/MemoryToolHandler.d.ts +21 -0
  78. package/dist/mcp/handlers/MemoryToolHandler.d.ts.map +1 -0
  79. package/dist/mcp/handlers/MemoryToolHandler.js +430 -0
  80. package/dist/mcp/handlers/MemoryToolHandler.js.map +1 -0
  81. package/dist/mcp/handlers/SystemToolHandler.d.ts +14 -0
  82. package/dist/mcp/handlers/SystemToolHandler.d.ts.map +1 -0
  83. package/dist/mcp/handlers/SystemToolHandler.js +224 -0
  84. package/dist/mcp/handlers/SystemToolHandler.js.map +1 -0
  85. package/dist/mcp/handlers/ToolHandlers.d.ts +4 -17
  86. package/dist/mcp/handlers/ToolHandlers.d.ts.map +1 -1
  87. package/dist/mcp/handlers/ToolHandlers.js +19 -689
  88. package/dist/mcp/handlers/ToolHandlers.js.map +1 -1
  89. package/dist/mcp/handlers/index.d.ts +3 -0
  90. package/dist/mcp/handlers/index.d.ts.map +1 -1
  91. package/dist/mcp/handlers/index.js +3 -0
  92. package/dist/mcp/handlers/index.js.map +1 -1
  93. package/dist/mcp/server-bootstrap.js +24 -59
  94. package/dist/mcp/server-bootstrap.js.map +1 -1
  95. package/dist/mcp/tools/buddy-do.d.ts.map +1 -1
  96. package/dist/mcp/tools/buddy-do.js +17 -1
  97. package/dist/mcp/tools/buddy-do.js.map +1 -1
  98. package/dist/mcp/tools/buddy-remember.d.ts +1 -1
  99. package/dist/mcp/tools/buddy-remember.d.ts.map +1 -1
  100. package/dist/mcp/tools/buddy-remember.js +58 -16
  101. package/dist/mcp/tools/buddy-remember.js.map +1 -1
  102. package/dist/mcp/tools/create-entities.d.ts.map +1 -1
  103. package/dist/mcp/tools/create-entities.js +18 -24
  104. package/dist/mcp/tools/create-entities.js.map +1 -1
  105. package/dist/memory/MemorySearchEngine.d.ts +17 -0
  106. package/dist/memory/MemorySearchEngine.d.ts.map +1 -0
  107. package/dist/memory/MemorySearchEngine.js +88 -0
  108. package/dist/memory/MemorySearchEngine.js.map +1 -0
  109. package/dist/memory/ProactiveRecaller.d.ts +26 -0
  110. package/dist/memory/ProactiveRecaller.d.ts.map +1 -0
  111. package/dist/memory/ProactiveRecaller.js +96 -0
  112. package/dist/memory/ProactiveRecaller.js.map +1 -0
  113. package/dist/memory/UnifiedMemoryStore.d.ts +1 -0
  114. package/dist/memory/UnifiedMemoryStore.d.ts.map +1 -1
  115. package/dist/memory/UnifiedMemoryStore.js +12 -64
  116. package/dist/memory/UnifiedMemoryStore.js.map +1 -1
  117. package/dist/memory/index.d.ts +3 -0
  118. package/dist/memory/index.d.ts.map +1 -1
  119. package/dist/memory/index.js +2 -0
  120. package/dist/memory/index.js.map +1 -1
  121. package/dist/ui/MetricsStore.d.ts.map +1 -1
  122. package/dist/ui/MetricsStore.js +21 -2
  123. package/dist/ui/MetricsStore.js.map +1 -1
  124. package/dist/utils/index.d.ts +0 -2
  125. package/dist/utils/index.d.ts.map +1 -1
  126. package/dist/utils/index.js +0 -2
  127. package/dist/utils/index.js.map +1 -1
  128. package/dist/utils/tracing/index.d.ts +0 -1
  129. package/dist/utils/tracing/index.d.ts.map +1 -1
  130. package/dist/utils/tracing/index.js +0 -1
  131. package/dist/utils/tracing/index.js.map +1 -1
  132. package/package.json +2 -12
  133. package/plugin.json +1 -1
  134. package/scripts/hooks/__tests__/post-tool-use-recall.test.js +192 -0
  135. package/scripts/hooks/__tests__/session-start-recall.test.js +86 -0
  136. package/scripts/hooks/post-tool-use-recall-utils.js +74 -0
  137. package/scripts/hooks/post-tool-use.js +83 -0
  138. package/scripts/hooks/pre-tool-use.js +30 -1
  139. package/scripts/hooks/session-start-recall-utils.js +40 -0
  140. package/scripts/hooks/session-start.js +66 -0
  141. package/scripts/hooks/templates/planning-template.md +46 -0
  142. package/scripts/postinstall-new.js +8 -1
@@ -40,31 +40,25 @@ export const createEntitiesTool = {
40
40
  required: ['entities'],
41
41
  },
42
42
  async handler(args, knowledgeGraph) {
43
- const created = [];
44
- const errors = [];
45
- for (const entity of args.entities) {
46
- try {
47
- const tags = entity.tags || [];
48
- const hasScope = tags.some(tag => tag.startsWith('scope:'));
49
- if (!hasScope) {
50
- tags.push('scope:project');
51
- }
52
- await knowledgeGraph.createEntity({
53
- name: entity.name,
54
- entityType: entity.entityType,
55
- observations: entity.observations,
56
- tags,
57
- metadata: entity.metadata,
58
- });
59
- created.push(entity.name);
43
+ const preparedEntities = args.entities.map(entity => {
44
+ const tags = entity.tags || [];
45
+ const hasScope = tags.some(tag => tag.startsWith('scope:'));
46
+ if (!hasScope) {
47
+ tags.push('scope:project');
60
48
  }
61
- catch (error) {
62
- errors.push({
63
- name: entity.name,
64
- error: error instanceof Error ? error.message : String(error),
65
- });
66
- }
67
- }
49
+ return {
50
+ name: entity.name,
51
+ entityType: entity.entityType,
52
+ observations: entity.observations,
53
+ tags,
54
+ metadata: entity.metadata,
55
+ };
56
+ });
57
+ const results = knowledgeGraph.createEntitiesBatch(preparedEntities);
58
+ const created = results.filter(r => r.success).map(r => r.name);
59
+ const errors = results
60
+ .filter(r => !r.success)
61
+ .map(r => ({ name: r.name, error: r.error }));
68
62
  return {
69
63
  created,
70
64
  count: created.length,
@@ -1 +1 @@
1
- {"version":3,"file":"create-entities.js","sourceRoot":"","sources":["../../../src/mcp/tools/create-entities.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,yIAAyI;IAEtJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,6BAA6B;gBAC1C,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uEAAuE;yBACrF;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,6GAA6G;yBAC3H;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,iEAAiE;yBAC/E;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,sIAAsI;yBACpJ;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB;yBACjC;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC;iBACjD;aACF;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IAWD,KAAK,CAAC,OAAO,CACX,IAAwB,EACxB,cAA8B;QAE9B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAA2C,EAAE,CAAC;QAE1D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC;gBAGH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC7B,CAAC;gBAED,MAAM,cAAc,CAAC,YAAY,CAAC;oBAChC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,UAAU,EAAE,MAAM,CAAC,UAAwB;oBAC3C,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,IAAI;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"create-entities.js","sourceRoot":"","sources":["../../../src/mcp/tools/create-entities.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,yIAAyI;IAEtJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,6BAA6B;gBAC1C,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uEAAuE;yBACrF;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,6GAA6G;yBAC3H;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,iEAAiE;yBAC/E;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,WAAW,EAAE,sIAAsI;yBACpJ;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB;yBACjC;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC;iBACjD;aACF;SACF;QACD,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB;IAWD,KAAK,CAAC,OAAO,CACX,IAAwB,EACxB,cAA8B;QAG9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,IAAI;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC;QACJ,CAAC,CAAC,CAAC;QAGH,MAAM,OAAO,GAAG,cAAc,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAErE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { UnifiedMemory, SearchOptions } from './types/unified-memory.js';
2
+ export declare class MemorySearchEngine {
3
+ private readonly smartQuery;
4
+ constructor();
5
+ filterByQuery(memories: UnifiedMemory[], query: string): UnifiedMemory[];
6
+ applySearchFilters(memories: UnifiedMemory[], options?: SearchOptions): UnifiedMemory[];
7
+ deduplicateResults(memories: UnifiedMemory[]): UnifiedMemory[];
8
+ rankByRelevance(query: string, memories: UnifiedMemory[], options?: SearchOptions & {
9
+ projectPath?: string;
10
+ techStack?: string[];
11
+ }): UnifiedMemory[];
12
+ processSearchResults(query: string, candidates: UnifiedMemory[], options?: SearchOptions & {
13
+ projectPath?: string;
14
+ techStack?: string[];
15
+ }, finalLimit?: number): UnifiedMemory[];
16
+ }
17
+ //# sourceMappingURL=MemorySearchEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySearchEngine.d.ts","sourceRoot":"","sources":["../../src/memory/MemorySearchEngine.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM9E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;;IAa9C,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE;IAoBxE,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE;IA2DvF,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE;IAkD9D,eAAe,CACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,CAAC,EAAE,aAAa,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACvE,aAAa,EAAE;IAgBlB,oBAAoB,CAClB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,EAAE,EAC3B,OAAO,CAAC,EAAE,aAAa,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EACxE,UAAU,CAAC,EAAE,MAAM,GAClB,aAAa,EAAE;CAcnB"}
@@ -0,0 +1,88 @@
1
+ import { createHash } from 'crypto';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ import { SmartMemoryQuery } from './SmartMemoryQuery.js';
4
+ export class MemorySearchEngine {
5
+ smartQuery;
6
+ constructor() {
7
+ this.smartQuery = new SmartMemoryQuery();
8
+ }
9
+ filterByQuery(memories, query) {
10
+ if (!query || !query.trim()) {
11
+ return memories;
12
+ }
13
+ const lowerQuery = query.toLowerCase();
14
+ return memories.filter((m) => m.content.toLowerCase().includes(lowerQuery) ||
15
+ m.context?.toLowerCase().includes(lowerQuery));
16
+ }
17
+ applySearchFilters(memories, options) {
18
+ let filtered = memories;
19
+ if (options?.timeRange && options.timeRange !== 'all') {
20
+ const now = new Date();
21
+ let cutoffDate;
22
+ switch (options.timeRange) {
23
+ case 'last-24h':
24
+ cutoffDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
25
+ break;
26
+ case 'last-7-days':
27
+ cutoffDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
28
+ break;
29
+ case 'last-30-days':
30
+ cutoffDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
31
+ break;
32
+ default:
33
+ cutoffDate = new Date(0);
34
+ }
35
+ filtered = filtered.filter((m) => m.timestamp.getTime() >= cutoffDate.getTime());
36
+ }
37
+ if (options?.minImportance !== undefined) {
38
+ filtered = filtered.filter((m) => m.importance >= options.minImportance);
39
+ }
40
+ if (options?.types && options.types.length > 0) {
41
+ filtered = filtered.filter((m) => options.types.includes(m.type));
42
+ }
43
+ if (options?.limit && filtered.length > options.limit) {
44
+ filtered = filtered.slice(0, options.limit);
45
+ }
46
+ return filtered;
47
+ }
48
+ deduplicateResults(memories) {
49
+ if (memories.length <= 1) {
50
+ return memories;
51
+ }
52
+ const seen = new Map();
53
+ for (const memory of memories) {
54
+ const contentHash = memory.content === ''
55
+ ? `empty:${memory.id ?? uuidv4()}`
56
+ : createHash('sha256').update(memory.content).digest('hex');
57
+ const existing = seen.get(contentHash);
58
+ if (!existing) {
59
+ seen.set(contentHash, memory);
60
+ }
61
+ else {
62
+ const memoryImportance = Number.isFinite(memory.importance) ? memory.importance : 0;
63
+ const existingImportance = Number.isFinite(existing.importance)
64
+ ? existing.importance
65
+ : 0;
66
+ const shouldReplace = memoryImportance > existingImportance ||
67
+ (memoryImportance === existingImportance &&
68
+ memory.timestamp.getTime() > existing.timestamp.getTime());
69
+ if (shouldReplace) {
70
+ seen.set(contentHash, memory);
71
+ }
72
+ }
73
+ }
74
+ return Array.from(seen.values());
75
+ }
76
+ rankByRelevance(query, memories, options) {
77
+ return this.smartQuery.search(query, memories, options);
78
+ }
79
+ processSearchResults(query, candidates, options, finalLimit) {
80
+ const deduplicated = this.deduplicateResults(candidates);
81
+ const ranked = this.rankByRelevance(query, deduplicated, options);
82
+ if (finalLimit && finalLimit > 0) {
83
+ return ranked.slice(0, finalLimit);
84
+ }
85
+ return ranked;
86
+ }
87
+ }
88
+ //# sourceMappingURL=MemorySearchEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySearchEngine.js","sourceRoot":"","sources":["../../src/memory/MemorySearchEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { KnowledgeGraph } from '../knowledge-graph/index.js';
2
+ export type RecallTrigger = 'session-start' | 'test-failure' | 'error-detection';
3
+ export interface RecallContext {
4
+ projectName?: string;
5
+ recentCommits?: string[];
6
+ testName?: string;
7
+ errorMessage?: string;
8
+ errorType?: string;
9
+ }
10
+ export interface RecallResult {
11
+ entityName: string;
12
+ observations: string[];
13
+ similarity: number;
14
+ }
15
+ export declare class ProactiveRecaller {
16
+ private readonly knowledgeGraph;
17
+ constructor(knowledgeGraph: KnowledgeGraph);
18
+ buildQuery(trigger: RecallTrigger, context: RecallContext): string;
19
+ recall(trigger: RecallTrigger, context: RecallContext): Promise<RecallResult[]>;
20
+ static formatForHookOutput(results: RecallResult[]): string;
21
+ private buildSessionStartQuery;
22
+ private buildTestFailureQuery;
23
+ private buildErrorDetectionQuery;
24
+ private mapToRecallResult;
25
+ }
26
+ //# sourceMappingURL=ProactiveRecaller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProactiveRecaller.d.ts","sourceRoot":"","sources":["../../src/memory/ProactiveRecaller.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAMlE,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEjF,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;gBAEpC,cAAc,EAAE,cAAc;IAO1C,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;IAe5D,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAmBrF,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM;IAkB3D,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,iBAAiB;CAO1B"}
@@ -0,0 +1,96 @@
1
+ import { logger } from '../utils/logger.js';
2
+ const CONVENTIONAL_COMMIT_PREFIX = /^[a-z]+(?:\([^)]*\))?:\s*/;
3
+ const TRIGGER_SEARCH_OPTIONS = {
4
+ 'session-start': { limit: 5, minSimilarity: 0.5 },
5
+ 'test-failure': { limit: 3, minSimilarity: 0.6 },
6
+ 'error-detection': { limit: 3, minSimilarity: 0.6 },
7
+ };
8
+ export class ProactiveRecaller {
9
+ knowledgeGraph;
10
+ constructor(knowledgeGraph) {
11
+ this.knowledgeGraph = knowledgeGraph;
12
+ }
13
+ buildQuery(trigger, context) {
14
+ switch (trigger) {
15
+ case 'session-start':
16
+ return this.buildSessionStartQuery(context);
17
+ case 'test-failure':
18
+ return this.buildTestFailureQuery(context);
19
+ case 'error-detection':
20
+ return this.buildErrorDetectionQuery(context);
21
+ }
22
+ }
23
+ async recall(trigger, context) {
24
+ const query = this.buildQuery(trigger, context);
25
+ if (!query) {
26
+ return [];
27
+ }
28
+ try {
29
+ const options = TRIGGER_SEARCH_OPTIONS[trigger];
30
+ const results = await this.knowledgeGraph.hybridSearch(query, options);
31
+ return results.map(this.mapToRecallResult);
32
+ }
33
+ catch (error) {
34
+ logger.warn('ProactiveRecaller.recall failed', { trigger, error });
35
+ return [];
36
+ }
37
+ }
38
+ static formatForHookOutput(results) {
39
+ if (results.length === 0) {
40
+ return '';
41
+ }
42
+ const lines = [];
43
+ for (const result of results) {
44
+ const pct = Math.round(result.similarity * 100);
45
+ lines.push(`- ${result.entityName} (${pct}% match)`);
46
+ for (const obs of result.observations.slice(0, 2)) {
47
+ lines.push(` - ${obs}`);
48
+ }
49
+ }
50
+ return lines.join('\n');
51
+ }
52
+ buildSessionStartQuery(context) {
53
+ const parts = [];
54
+ if (context.projectName) {
55
+ parts.push(context.projectName);
56
+ }
57
+ if (context.recentCommits?.length) {
58
+ const cleaned = context.recentCommits.map((msg) => msg.replace(CONVENTIONAL_COMMIT_PREFIX, '').trim());
59
+ parts.push(...cleaned);
60
+ }
61
+ return parts.join(' ');
62
+ }
63
+ buildTestFailureQuery(context) {
64
+ const parts = [];
65
+ if (context.testName) {
66
+ const separatorIdx = context.testName.indexOf('::');
67
+ const name = separatorIdx >= 0
68
+ ? context.testName.slice(separatorIdx + 2)
69
+ : context.testName;
70
+ parts.push(name.trim());
71
+ }
72
+ if (context.errorMessage) {
73
+ parts.push(context.errorMessage);
74
+ }
75
+ return parts.join(' ');
76
+ }
77
+ buildErrorDetectionQuery(context) {
78
+ const parts = [];
79
+ if (context.errorType) {
80
+ parts.push(context.errorType);
81
+ }
82
+ if (context.errorMessage) {
83
+ const firstLine = context.errorMessage.split('\n')[0].trim();
84
+ parts.push(firstLine);
85
+ }
86
+ return parts.join(' ');
87
+ }
88
+ mapToRecallResult(result) {
89
+ return {
90
+ entityName: result.entity.name,
91
+ observations: result.entity.observations,
92
+ similarity: result.similarity,
93
+ };
94
+ }
95
+ }
96
+ //# sourceMappingURL=ProactiveRecaller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProactiveRecaller.js","sourceRoot":"","sources":["../../src/memory/ProactiveRecaller.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { KnowledgeGraph } from '../knowledge-graph/index.js';
2
2
  import type { UnifiedMemory, MemoryType, SearchOptions } from './types/unified-memory.js';
3
3
  export declare class UnifiedMemoryStore {
4
4
  private knowledgeGraph;
5
+ private readonly searchEngine;
5
6
  constructor(knowledgeGraph: KnowledgeGraph);
6
7
  static create(dbPath?: string): Promise<UnifiedMemoryStore>;
7
8
  store(memory: UnifiedMemory, context?: {
@@ -1 +1 @@
1
- {"version":3,"file":"UnifiedMemoryStore.d.ts","sourceRoot":"","sources":["../../src/memory/UnifiedMemoryStore.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACd,MAAM,2BAA2B,CAAC;AA4EnC,qBAAa,kBAAkB;IACjB,OAAO,CAAC,cAAc;gBAAd,cAAc,EAAE,cAAc;WAoBrC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkC3D,KAAK,CACT,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACvD,OAAO,CAAC,MAAM,CAAC;IAkRZ,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgD9C,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACvE,OAAO,CAAC,aAAa,EAAE,CAAC;YAgEb,iBAAiB;IA8F/B,OAAO,CAAC,kBAAkB;IA2D1B,OAAO,CAAC,kBAAkB;IAsEpB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAmCjF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAa/E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAiFrE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,OAAO,CAAC,cAAc;CA+EvB"}
1
+ {"version":3,"file":"UnifiedMemoryStore.d.ts","sourceRoot":"","sources":["../../src/memory/UnifiedMemoryStore.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACd,MAAM,2BAA2B,CAAC;AA4EnC,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,cAAc;IAFlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;gBAE9B,cAAc,EAAE,cAAc;WAqBrC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkC3D,KAAK,CACT,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACvD,OAAO,CAAC,MAAM,CAAC;IAkRZ,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAgD9C,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACvE,OAAO,CAAC,aAAa,EAAE,CAAC;YAmDb,iBAAiB;IA2F/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,kBAAkB;IAmCpB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAmCjF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAa/E,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAiFrE,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB5B,OAAO,CAAC,cAAc;CAkFvB"}
@@ -3,8 +3,8 @@ import { v4 as uuidv4 } from 'uuid';
3
3
  import { createHash } from 'crypto';
4
4
  import { logger } from '../utils/logger.js';
5
5
  import { ValidationError, OperationError } from '../errors/index.js';
6
- import { SmartMemoryQuery } from './SmartMemoryQuery.js';
7
6
  import { AutoTagger } from './AutoTagger.js';
7
+ import { MemorySearchEngine } from './MemorySearchEngine.js';
8
8
  function extractErrorInfo(error) {
9
9
  if (error instanceof Error) {
10
10
  return {
@@ -45,8 +45,10 @@ const MEMORY_ID_PREFIX = 'unified-memory-';
45
45
  const MAX_METADATA_SIZE = 1024 * 1024;
46
46
  export class UnifiedMemoryStore {
47
47
  knowledgeGraph;
48
+ searchEngine;
48
49
  constructor(knowledgeGraph) {
49
50
  this.knowledgeGraph = knowledgeGraph;
51
+ this.searchEngine = new MemorySearchEngine();
50
52
  }
51
53
  static async create(dbPath) {
52
54
  try {
@@ -299,11 +301,7 @@ export class UnifiedMemoryStore {
299
301
  limit: Math.min(finalLimit * 10, 1000),
300
302
  };
301
303
  const baseResults = await this.traditionalSearch(query, candidateOptions);
302
- const deduplicatedResults = this.deduplicateResults(baseResults);
303
- const smartQuery = new SmartMemoryQuery();
304
- const rankedResults = smartQuery.search(query, deduplicatedResults, options);
305
- const finalResults = rankedResults.slice(0, finalLimit);
306
- return finalResults;
304
+ return this.searchEngine.processSearchResults(query, baseResults, options, finalLimit);
307
305
  }
308
306
  catch (error) {
309
307
  logger.error(`[UnifiedMemoryStore] Search failed: ${error}`);
@@ -350,10 +348,7 @@ export class UnifiedMemoryStore {
350
348
  entities = entities.filter((e) => e.tags && options.tags.some((t) => e.tags.includes(t)));
351
349
  }
352
350
  let memories = entities.map((e) => this.entityToMemory(e)).filter((m) => m !== null);
353
- if (query && query.trim()) {
354
- const lowerQuery = query.toLowerCase();
355
- memories = memories.filter((m) => m.content.toLowerCase().includes(lowerQuery) || m.context?.toLowerCase().includes(lowerQuery));
356
- }
351
+ memories = this.searchEngine.filterByQuery(memories, query);
357
352
  memories = this.applySearchFilters(memories, options);
358
353
  return memories;
359
354
  }
@@ -372,61 +367,10 @@ export class UnifiedMemoryStore {
372
367
  }
373
368
  }
374
369
  applySearchFilters(memories, options) {
375
- let filtered = memories;
376
- if (options?.timeRange && options.timeRange !== 'all') {
377
- const now = new Date();
378
- let cutoffDate;
379
- switch (options.timeRange) {
380
- case 'last-24h':
381
- cutoffDate = new Date(now.getTime() - 24 * 60 * 60 * 1000);
382
- break;
383
- case 'last-7-days':
384
- cutoffDate = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
385
- break;
386
- case 'last-30-days':
387
- cutoffDate = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
388
- break;
389
- default:
390
- cutoffDate = new Date(0);
391
- }
392
- filtered = filtered.filter((m) => m.timestamp.getTime() >= cutoffDate.getTime());
393
- }
394
- if (options?.minImportance !== undefined) {
395
- filtered = filtered.filter((m) => m.importance >= options.minImportance);
396
- }
397
- if (options?.types && options.types.length > 0) {
398
- filtered = filtered.filter((m) => options.types.includes(m.type));
399
- }
400
- if (options?.limit && filtered.length > options.limit) {
401
- filtered = filtered.slice(0, options.limit);
402
- }
403
- return filtered;
370
+ return this.searchEngine.applySearchFilters(memories, options);
404
371
  }
405
372
  deduplicateResults(memories) {
406
- if (memories.length <= 1) {
407
- return memories;
408
- }
409
- const seen = new Map();
410
- for (const memory of memories) {
411
- const contentHash = memory.content === ''
412
- ? `empty:${memory.id ?? uuidv4()}`
413
- : createHash('sha256').update(memory.content).digest('hex');
414
- const existing = seen.get(contentHash);
415
- if (!existing) {
416
- seen.set(contentHash, memory);
417
- }
418
- else {
419
- const memoryImportance = Number.isFinite(memory.importance) ? memory.importance : 0;
420
- const existingImportance = Number.isFinite(existing.importance) ? existing.importance : 0;
421
- const shouldReplace = memoryImportance > existingImportance ||
422
- (memoryImportance === existingImportance &&
423
- memory.timestamp.getTime() > existing.timestamp.getTime());
424
- if (shouldReplace) {
425
- seen.set(contentHash, memory);
426
- }
427
- }
428
- }
429
- return Array.from(seen.values());
373
+ return this.searchEngine.deduplicateResults(memories);
430
374
  }
431
375
  async searchByType(type, options) {
432
376
  return this.search('', { ...options, types: [type] });
@@ -558,7 +502,11 @@ export class UnifiedMemoryStore {
558
502
  }
559
503
  metadata = JSON.parse(metadataStr);
560
504
  }
561
- catch {
505
+ catch (parseError) {
506
+ logger.warn(`[UnifiedMemoryStore] Failed to parse metadata for entity ${entity.name}`, {
507
+ error: parseError instanceof Error ? parseError.message : String(parseError),
508
+ entityName: entity.name,
509
+ });
562
510
  }
563
511
  }
564
512
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UnifiedMemoryStore.js","sourceRoot":"","sources":["../../src/memory/UnifiedMemoryStore.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAO7D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQ7C,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;SAC7B,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QACtB,IAAI,EAAE,OAAO,KAAK;KACnB,CAAC;AACJ,CAAC;AAKD,MAAM,mBAAmB,GAAmC;IAC1D,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,kBAAkB;IAChC,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,qBAAqB;IACjC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,iBAAiB;CACrC,CAAC;AAKF,MAAM,mBAAmB,GAA+B;IACtD,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,cAAc;IAChC,aAAa,EAAE,WAAW;IAC1B,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,YAAY;IACjC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;CACnC,CAAC;AAKF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAK3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAStC,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;IAElD,CAAC;IAkBD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAe;QACjC,IAAI,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAG3D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAExD,MAAM,CAAC,IAAI,CAAC,sDAAsD,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YACzF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CACV,+CAA+C,SAAS,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI,GAAG,CAC7F,CAAC;YACF,MAAM,IAAI,cAAc,CAAC,wCAAwC,SAAS,CAAC,OAAO,EAAE,EAAE;gBACpF,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,MAAM;gBACN,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAWD,KAAK,CAAC,KAAK,CACT,MAAqB,EACrB,OAAwD;QAExD,IAAI,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACpD,MAAM,IAAI,eAAe,CAAC,gCAAgC,EAAE;oBAC1D,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,MAAM,CAAC,IAAI;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE;oBACnD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,eAAe,CACvB,2CAA2C,MAAM,CAAC,UAAU,EAAE,EAC9D;wBACE,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE;qBACxE,CACF,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnD,MAAM,IAAI,eAAe,CACvB,2CAA2C,MAAM,CAAC,UAAU,EAAE,EAC9D;wBACE,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;qBACxC,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAGD,IAAI,EAAU,CAAC;YACf,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAE5B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;wBACrD,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE;qBAChC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC5C,MAAM,IAAI,eAAe,CAAC,qCAAqC,gBAAgB,EAAE,EAAE;wBACjF,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE;4BACJ,UAAU,EAAE,MAAM,CAAC,EAAE;4BACrB,cAAc,EAAE,gBAAgB;yBACjC;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACjB,CAAC;iBAAM,CAAC;gBAEN,EAAE,GAAG,GAAG,gBAAgB,GAAG,MAAM,EAAE,EAAE,CAAC;YACxC,CAAC;YAID,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAG9E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;YAGjD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEhF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,kDAAkD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxF,CAAC;YAGD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,eAAe,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,EAAE;oBAC/D,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;YAID,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;YAGtD,MAAM,YAAY,GAAa;gBAC7B,YAAY,MAAM,CAAC,OAAO,EAAE;gBAC5B,eAAe,oBAAoB,EAAE;gBACrC,cAAc,SAAS,CAAC,WAAW,EAAE,EAAE;aACxC,CAAC;YAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,YAAY,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,CAAC;YAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAIrD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;oBAE5D,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAAC;wBACrC,MAAM,IAAI,eAAe,CACvB,gCAAgC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAChH;4BACE,SAAS,EAAE,oBAAoB;4BAC/B,MAAM,EAAE,OAAO;4BACf,IAAI,EAAE;gCACJ,YAAY,EAAE,WAAW;gCACzB,KAAK,EAAE,iBAAiB;gCACxB,MAAM,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;6BACjD;yBACF,CACF,CAAC;oBACJ,CAAC;oBAED,YAAY,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAEf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;wBACrC,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,sDAAsD,KAAK,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YAID,MAAM,MAAM,GAAW;gBACrB,IAAI,EAAE,EAAE;gBACR,UAAU;gBACV,YAAY;gBACZ,IAAI,EAAE,SAAS;gBACf,WAAW;gBACX,QAAQ,EAAE;oBACR,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,UAAU,EAAE,oBAAoB;oBAChC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;oBAClC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAC3B;aACF,CAAC;YAKF,IAAI,QAAQ,GAAW,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE;oBAEnC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAGpD,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;wBACpB,MAAM,CAAC,IAAI,CACT,mDAAmD,EAAE,oBAAoB,QAAQ,EAAE,CACpF,CAAC;oBACJ,CAAC;oBAID,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpD,MAAM,gBAAgB,GAAgD,EAAE,CAAC;wBAEzE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;4BAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;4BAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;gCAClB,gBAAgB,CAAC,IAAI,CAAC;oCACpB,SAAS;oCACT,KAAK,EAAE,8BAA8B;iCACtC,CAAC,CAAC;gCACH,MAAM,CAAC,IAAI,CACT,uEAAuE,SAAS,EAAE,CACnF,CAAC;gCACF,SAAS;4BACX,CAAC;4BAED,IAAI,CAAC;gCACH,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;oCACjC,IAAI,EAAE,QAAQ;oCACd,EAAE,EAAE,SAAS;oCACb,YAAY,EAAE,YAAY;oCAC1B,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;iCAClD,CAAC,CAAC;4BACL,CAAC;4BAAC,OAAO,KAAc,EAAE,CAAC;gCACxB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gCAC1C,gBAAgB,CAAC,IAAI,CAAC;oCACpB,SAAS;oCACT,KAAK,EAAE,SAAS,CAAC,OAAO;iCACzB,CAAC,CAAC;gCACH,MAAM,CAAC,KAAK,CACV,qDAAqD,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CACvF,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAID,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CACb,oBAAoB,gBAAgB,CAAC,MAAM,gBAAgB;gCAC3D,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpE,CAAC;wBACJ,CAAC;oBACH,CAAC;gBAGH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBAExB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,KAAK,CACV,2EAA2E,SAAS,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI,GAAG,CACzH,CAAC;gBACF,MAAM,IAAI,cAAc,CAAC,2BAA2B,SAAS,CAAC,OAAO,EAAE,EAAE;oBACvE,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,2BAA2B;oBACtC,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;oBAC5C,SAAS,EAAE,SAAS,CAAC,IAAI;oBACzB,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,QAAQ,WAAW,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACtF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACxE,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,cAAc,CACtB,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC5F;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAUD,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,IAAI,CAAC;YAEH,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;oBACrD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;YACvE,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAaD,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAAwE;QAExE,IAAI,CAAC;YAEH,IAAI,UAAU,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,EAAE,CAAC;YAClB,CAAC;YACD,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBAEtB,MAAM,CAAC,IAAI,CACT,8BAA8B,UAAU,wCAAwC,CACjF,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAID,MAAM,gBAAgB,GAAG;gBACvB,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,CAAC;aACvC,CAAC;YAIF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAO1E,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAGjE,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;YAG7E,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAExD,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,KAAK;gBACL,OAAO;gBACP,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAUO,KAAK,CAAC,iBAAiB,CAAC,KAAa,EAAE,OAAuB;QACpE,IAAI,CAAC;YAEH,MAAM,WAAW,GAAoF,EAAE,CAAC;YAGxG,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,WAAW,CAAC,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YAGD,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YAGD,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACpC,CAAC;YAGD,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,8CAA8C,KAAK,EAAE,CAAC,CAAC;gBACpE,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF;oBACE,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,mBAAmB;oBAC3B,WAAW;oBACX,KAAK,EAAE,KAAK;iBACb,CACF,CAAC;YACJ,CAAC;YAGD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAGvE,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACxE,CAAC;YAGD,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,CAAC;YAGD,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAGzG,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBACvC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACrG,CAAC;YACJ,CAAC;YAGD,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEtD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,cAAc,CACtB,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,mBAAmB;gBAC3B,KAAK;gBACL,OAAO;gBACP,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IASO,kBAAkB,CAAC,QAAyB,EAAE,OAAuB;QAC3E,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAGxB,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,UAAgB,CAAC;YAErB,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1B,KAAK,UAAU;oBACb,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC3D,MAAM;gBACR,KAAK,aAAa;oBAChB,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;oBAC/D,MAAM;gBACR,KAAK,cAAc;oBACjB,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;oBAChE,MAAM;gBACR;oBACE,UAAU,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,CAAC;QAGD,IAAI,OAAO,EAAE,aAAa,KAAK,SAAS,EAAE,CAAC;YACzC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,aAAc,CAAC,CAAC;QAC5E,CAAC;QAGD,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;QAGD,IAAI,OAAO,EAAE,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YACtD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAkBO,kBAAkB,CAAC,QAAyB;QAClD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAI9B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,KAAK,EAAE;gBACvC,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,IAAI,MAAM,EAAE,EAAE;gBAClC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEvC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBAEN,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpF,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAG1F,MAAM,aAAa,GACjB,gBAAgB,GAAG,kBAAkB;oBACrC,CAAC,gBAAgB,KAAK,kBAAkB;wBACtC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE/D,IAAI,aAAa,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAiCD,KAAK,CAAC,YAAY,CAAC,IAAgB,EAAE,OAAuB;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAiCD,KAAK,CAAC,YAAY,CAAC,IAAc,EAAE,OAAuB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAWD,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAA+B;QACtD,IAAI,CAAC;YAEH,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;oBACrD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE;oBACnD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,EAAE;iBACb,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YAGD,MAAM,aAAa,GAAkB;gBACnC,GAAG,QAAQ;gBACX,GAAG,OAAO;gBACV,EAAE;gBACF,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B,CAAC;YAOF,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBAIb,MAAM,CAAC,IAAI,CACT,+BAA+B,EAAE,gEAAgE,CAClG,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAGD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEhC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACxE,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,cAAc,CACtB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAUD,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC;YAEH,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;oBACrD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAErD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,cAAc,CACtB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAoBD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,IAAI,cAAc,CACtB,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAKO,cAAc,CAAC,MAAc;QAEnC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAA2B,CAAC;QAChC,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QAC/C,IAAI,QAA6C,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;YACvE,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAEzC,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACtC,SAAS,GAAG,eAAe,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBAEN,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CACT,oDAAoD,MAAM,CAAC,IAAI,qBAAqB,SAAS,CAAC,WAAW,EAAE,EAAE,CAC9G,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAGvD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;oBAC3D,IAAI,WAAW,GAAG,iBAAiB,EAAE,CAAC;wBACpC,MAAM,CAAC,IAAI,CACT,oCAAoC,WAAW,gBAAgB,iBAAiB,GAAG,CACpF,CAAC;wBAEF,SAAS;oBACX,CAAC;oBAED,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrC,CAAC;gBAAC,MAAM,CAAC;gBAET,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9C,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAoB,CAAC;QACpD,CAAC;QAGD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC;QAGzE,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAE/B,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAE7D,MAAM,CAAC,IAAI,CACT,qDAAqD,MAAM,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC,IAAI,EAAE,CAC1F,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI;YACf,IAAI,EAAE,UAAU;YAChB,OAAO;YACP,OAAO;YACP,IAAI,EAAE,aAAa;YACnB,UAAU;YACV,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"UnifiedMemoryStore.js","sourceRoot":"","sources":["../../src/memory/UnifiedMemoryStore.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAO7D,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAQ7D,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;SAC7B,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,QAAQ;SACf,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;QACtB,IAAI,EAAE,OAAO,KAAK;KACnB,CAAC;AACJ,CAAC;AAKD,MAAM,mBAAmB,GAAmC;IAC1D,OAAO,EAAE,gBAAgB;IACzB,YAAY,EAAE,kBAAkB;IAChC,SAAS,EAAE,eAAe;IAC1B,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,qBAAqB;IACjC,iBAAiB,EAAE,iBAAiB;IACpC,iBAAiB,EAAE,iBAAiB;CACrC,CAAC;AAKF,MAAM,mBAAmB,GAA+B;IACtD,cAAc,EAAE,SAAS;IACzB,gBAAgB,EAAE,cAAc;IAChC,aAAa,EAAE,WAAW;IAC1B,QAAQ,EAAE,UAAU;IACpB,mBAAmB,EAAE,YAAY;IACjC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;CACnC,CAAC;AAKF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAK3C,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAStC,MAAM,OAAO,kBAAkB;IAGT;IAFH,YAAY,CAAqB;IAElD,YAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAEhD,IAAI,CAAC,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC/C,CAAC;IAkBD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAe;QACjC,IAAI,CAAC;YAEH,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAG3D,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAExD,MAAM,CAAC,IAAI,CAAC,sDAAsD,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YACzF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,CAAC,KAAK,CACV,+CAA+C,SAAS,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI,GAAG,CAC7F,CAAC;YACF,MAAM,IAAI,cAAc,CAAC,wCAAwC,SAAS,CAAC,OAAO,EAAE,EAAE;gBACpF,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,MAAM;gBACN,SAAS,EAAE,SAAS,CAAC,IAAI;gBACzB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAWD,KAAK,CAAC,KAAK,CACT,MAAqB,EACrB,OAAwD;QAExD,IAAI,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACpD,MAAM,IAAI,eAAe,CAAC,gCAAgC,EAAE;oBAC1D,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,MAAM,CAAC,IAAI;iBACxB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE;oBACnD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,eAAe,CACvB,2CAA2C,MAAM,CAAC,UAAU,EAAE,EAC9D;wBACE,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,MAAM,CAAC,UAAU,EAAE;qBACxE,CACF,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnD,MAAM,IAAI,eAAe,CACvB,2CAA2C,MAAM,CAAC,UAAU,EAAE,EAC9D;wBACE,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;qBACxC,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAGD,IAAI,EAAU,CAAC;YACf,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAE5B,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;wBACrD,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE;qBAChC,CAAC,CAAC;gBACL,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC5C,MAAM,IAAI,eAAe,CAAC,qCAAqC,gBAAgB,EAAE,EAAE;wBACjF,SAAS,EAAE,oBAAoB;wBAC/B,MAAM,EAAE,OAAO;wBACf,IAAI,EAAE;4BACJ,UAAU,EAAE,MAAM,CAAC,EAAE;4BACrB,cAAc,EAAE,gBAAgB;yBACjC;qBACF,CAAC,CAAC;gBACL,CAAC;gBACD,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YACjB,CAAC;iBAAM,CAAC;gBAEN,EAAE,GAAG,GAAG,gBAAgB,GAAG,MAAM,EAAE,EAAE,CAAC;YACxC,CAAC;YAID,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAG9E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;YAGjD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEhF,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,kDAAkD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxF,CAAC;YAGD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,eAAe,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,EAAE;oBAC/D,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;oBACf,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;iBAC7C,CAAC,CAAC;YACL,CAAC;YAID,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;YAGtD,MAAM,YAAY,GAAa;gBAC7B,YAAY,MAAM,CAAC,OAAO,EAAE;gBAC5B,eAAe,oBAAoB,EAAE;gBACrC,cAAc,SAAS,CAAC,WAAW,EAAE,EAAE;aACxC,CAAC;YAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,YAAY,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAClD,CAAC;YAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAIrD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;oBAE5D,IAAI,WAAW,IAAI,iBAAiB,EAAE,CAAC;wBACrC,MAAM,IAAI,eAAe,CACvB,gCAAgC,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAChH;4BACE,SAAS,EAAE,oBAAoB;4BAC/B,MAAM,EAAE,OAAO;4BACf,IAAI,EAAE;gCACJ,YAAY,EAAE,WAAW;gCACzB,KAAK,EAAE,iBAAiB;gCACxB,MAAM,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;6BACjD;yBACF,CACF,CAAC;oBACJ,CAAC;oBAED,YAAY,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAEf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;wBACrC,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,sDAAsD,KAAK,EAAE,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YAID,MAAM,MAAM,GAAW;gBACrB,IAAI,EAAE,EAAE;gBACR,UAAU;gBACV,YAAY;gBACZ,IAAI,EAAE,SAAS;gBACf,WAAW;gBACX,QAAQ,EAAE;oBACR,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,UAAU,EAAE,oBAAoB;oBAChC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;oBAClC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAC3B;aACF,CAAC;YAKF,IAAI,QAAQ,GAAW,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE;oBAEnC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAGpD,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;wBACpB,MAAM,CAAC,IAAI,CACT,mDAAmD,EAAE,oBAAoB,QAAQ,EAAE,CACpF,CAAC;oBACJ,CAAC;oBAID,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpD,MAAM,gBAAgB,GAAgD,EAAE,CAAC;wBAEzE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;4BAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;4BAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;gCAClB,gBAAgB,CAAC,IAAI,CAAC;oCACpB,SAAS;oCACT,KAAK,EAAE,8BAA8B;iCACtC,CAAC,CAAC;gCACH,MAAM,CAAC,IAAI,CACT,uEAAuE,SAAS,EAAE,CACnF,CAAC;gCACF,SAAS;4BACX,CAAC;4BAED,IAAI,CAAC;gCACH,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;oCACjC,IAAI,EAAE,QAAQ;oCACd,EAAE,EAAE,SAAS;oCACb,YAAY,EAAE,YAAY;oCAC1B,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;iCAClD,CAAC,CAAC;4BACL,CAAC;4BAAC,OAAO,KAAc,EAAE,CAAC;gCACxB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gCAC1C,gBAAgB,CAAC,IAAI,CAAC;oCACpB,SAAS;oCACT,KAAK,EAAE,SAAS,CAAC,OAAO;iCACzB,CAAC,CAAC;gCACH,MAAM,CAAC,KAAK,CACV,qDAAqD,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CACvF,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAID,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CACb,oBAAoB,gBAAgB,CAAC,MAAM,gBAAgB;gCAC3D,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpE,CAAC;wBACJ,CAAC;oBACH,CAAC;gBAGH,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBAExB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC1C,MAAM,CAAC,KAAK,CACV,2EAA2E,SAAS,CAAC,OAAO,WAAW,SAAS,CAAC,IAAI,GAAG,CACzH,CAAC;gBACF,MAAM,IAAI,cAAc,CAAC,2BAA2B,SAAS,CAAC,OAAO,EAAE,EAAE;oBACvE,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,OAAO;oBACf,SAAS,EAAE,2BAA2B;oBACtC,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;oBAC5C,SAAS,EAAE,SAAS,CAAC,IAAI;oBACzB,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,QAAQ,WAAW,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YACtF,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACxE,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,cAAc,CACtB,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC5F;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,OAAO;gBACf,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAUD,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,IAAI,CAAC;YAEH,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;oBACrD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,KAAK;iBACd,CAAC,CAAC;YACL,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;YACvE,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAaD,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAAwE;QAExE,IAAI,CAAC;YAEH,IAAI,UAAU,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,EAAE,CAAC;YAClB,CAAC;YACD,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;gBAEtB,MAAM,CAAC,IAAI,CACT,8BAA8B,UAAU,wCAAwC,CACjF,CAAC;gBACF,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;YAID,MAAM,gBAAgB,GAAG;gBACvB,GAAG,OAAO;gBACV,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,IAAI,CAAC;aACvC,CAAC;YAIF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YAG1E,OAAO,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,KAAK;gBACL,OAAO;gBACP,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAUO,KAAK,CAAC,iBAAiB,CAAC,KAAa,EAAE,OAAuB;QACpE,IAAI,CAAC;YAEH,MAAM,WAAW,GAAoF,EAAE,CAAC;YAGxG,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,WAAW,CAAC,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;YAGD,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YAGD,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;gBACnB,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACpC,CAAC;YAGD,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,8CAA8C,KAAK,EAAE,CAAC,CAAC;gBACpE,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACjF;oBACE,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,mBAAmB;oBAC3B,WAAW;oBACX,KAAK,EAAE,KAAK;iBACb,CACF,CAAC;YACJ,CAAC;YAGD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAGvE,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACxE,CAAC;YAGD,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,CAAC;YAGD,IAAI,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAGzG,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAG5D,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEtD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,cAAc,CACtB,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACtF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,mBAAmB;gBAC3B,KAAK;gBACL,OAAO;gBACP,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAWO,kBAAkB,CAAC,QAAyB,EAAE,OAAuB;QAC3E,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAUO,kBAAkB,CAAC,QAAyB;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAiCD,KAAK,CAAC,YAAY,CAAC,IAAgB,EAAE,OAAuB;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAiCD,KAAK,CAAC,YAAY,CAAC,IAAc,EAAE,OAAuB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAWD,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,OAA+B;QACtD,IAAI,CAAC;YAEH,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;oBACrD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,eAAe,CAAC,yBAAyB,EAAE;oBACnD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,EAAE;iBACb,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEpC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YAGD,MAAM,aAAa,GAAkB;gBACnC,GAAG,QAAQ;gBACX,GAAG,OAAO;gBACV,EAAE;gBACF,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B,CAAC;YAOF,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBAIb,MAAM,CAAC,IAAI,CACT,+BAA+B,EAAE,gEAAgE,CAClG,CAAC;gBACF,OAAO,KAAK,CAAC;YACf,CAAC;YAGD,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEhC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACxE,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,cAAc,CACtB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAUD,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC;YAEH,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,eAAe,CAAC,2BAA2B,EAAE;oBACrD,SAAS,EAAE,oBAAoB;oBAC/B,MAAM,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAErD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YAGD,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,cAAc,CACtB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAoBD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,gDAAgD,KAAK,EAAE,CAAC,CAAC;YACtE,MAAM,IAAI,cAAc,CACtB,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACzF;gBACE,SAAS,EAAE,oBAAoB;gBAC/B,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,KAAK;aACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAKO,cAAc,CAAC,MAAc;QAEnC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAA2B,CAAC;QAChC,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QAC/C,IAAI,QAA6C,CAAC;QAElD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC;YACvE,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAEzC,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACtC,SAAS,GAAG,eAAe,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBAEN,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;oBAC3C,MAAM,CAAC,IAAI,CACT,oDAAoD,MAAM,CAAC,IAAI,qBAAqB,SAAS,CAAC,WAAW,EAAE,EAAE,CAC9G,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAGvD,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;oBAC3D,IAAI,WAAW,GAAG,iBAAiB,EAAE,CAAC;wBACpC,MAAM,CAAC,IAAI,CACT,oCAAoC,WAAW,gBAAgB,iBAAiB,GAAG,CACpF,CAAC;wBAEF,SAAS;oBACX,CAAC;oBAED,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,4DAA4D,MAAM,CAAC,IAAI,EAAE,EAAE;wBACrF,KAAK,EAAE,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;wBAC5E,UAAU,EAAE,MAAM,CAAC,IAAI;qBACxB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,KAAK,SAAS,EAAE,CAAC;YAC9C,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAoB,CAAC;QACpD,CAAC;QAGD,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC;QAGzE,IAAI,aAAa,GAAa,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAE/B,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;QACtF,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAE7D,MAAM,CAAC,IAAI,CACT,qDAAqD,MAAM,CAAC,IAAI,KAAK,OAAO,MAAM,CAAC,IAAI,EAAE,CAC1F,CAAC;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,IAAI;YACf,IAAI,EAAE,UAAU;YAChB,OAAO;YACP,OAAO;YACP,IAAI,EAAE,aAAa;YACnB,UAAU;YACV,SAAS;YACT,QAAQ;SACT,CAAC;IACJ,CAAC;CACF"}
@@ -1,4 +1,7 @@
1
1
  export { UnifiedMemoryStore } from './UnifiedMemoryStore.js';
2
+ export { MemorySearchEngine } from './MemorySearchEngine.js';
3
+ export { ProactiveRecaller } from './ProactiveRecaller.js';
4
+ export type { RecallTrigger, RecallContext, RecallResult } from './ProactiveRecaller.js';
2
5
  export { MistakePatternEngine } from './MistakePatternEngine.js';
3
6
  export { EnhancedRetrieval } from './EnhancedRetrieval.js';
4
7
  export type { EnhancedSearchOptions, EnhancedSearchResult, MatchType } from './EnhancedRetrieval.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export { UnifiedMemoryStore } from './UnifiedMemoryStore.js';
2
+ export { MemorySearchEngine } from './MemorySearchEngine.js';
3
+ export { ProactiveRecaller } from './ProactiveRecaller.js';
2
4
  export { MistakePatternEngine } from './MistakePatternEngine.js';
3
5
  export { EnhancedRetrieval } from './EnhancedRetrieval.js';
4
6
  export { UserPreferenceEngine } from './UserPreferenceEngine.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAUjE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAY1B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAUjE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAY1B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MetricsStore.d.ts","sourceRoot":"","sources":["../../src/ui/MetricsStore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQrE,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,SAAS,CAAC,EAAE,MAAM;IASvB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAmBxD,wBAAwB,IAAI,cAAc;IAOpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BrB,mBAAmB,CAAC,IAAI,GAAE,IAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C7D,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAmB3C,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAWzB"}
1
+ {"version":3,"file":"MetricsStore.d.ts","sourceRoot":"","sources":["../../src/ui/MetricsStore.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AASrE,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAiB;gBAE3B,SAAS,CAAC,EAAE,MAAM;IAyBvB,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAmBxD,wBAAwB,IAAI,cAAc;IAOpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BrB,mBAAmB,CAAC,IAAI,GAAE,IAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+C7D,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAmB3C,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -1,14 +1,33 @@
1
1
  import path from 'path';
2
+ import os from 'os';
2
3
  import { promises as fs } from 'fs';
3
4
  import { randomBytes } from 'crypto';
4
5
  import { resolveUserPath } from '../utils/paths.js';
5
6
  import { logger } from '../utils/logger.js';
6
- import { getDataPath } from '../utils/PathResolver.js';
7
+ import { getDataPath, getDataDirectory } from '../utils/PathResolver.js';
8
+ import { ValidationError } from '../errors/index.js';
7
9
  export class MetricsStore {
8
10
  storePath;
9
11
  currentSession;
10
12
  constructor(storePath) {
11
- this.storePath = storePath ? resolveUserPath(storePath) : getDataPath('metrics.json');
13
+ if (storePath) {
14
+ const resolved = resolveUserPath(storePath);
15
+ const homeDir = os.homedir();
16
+ const dataDir = getDataDirectory();
17
+ const normalized = path.normalize(resolved);
18
+ if (!normalized.startsWith(homeDir + path.sep) && normalized !== homeDir &&
19
+ !normalized.startsWith(dataDir + path.sep) && normalized !== dataDir) {
20
+ throw new ValidationError('Metrics store path must be within user home or data directory', {
21
+ provided: storePath,
22
+ resolved: normalized,
23
+ allowedBases: [homeDir, dataDir],
24
+ });
25
+ }
26
+ this.storePath = resolved;
27
+ }
28
+ else {
29
+ this.storePath = getDataPath('metrics.json');
30
+ }
12
31
  this.currentSession = this.createNewSession();
13
32
  }
14
33
  recordAttribution(attribution) {