@framers/agentos 0.1.46 → 0.1.48

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 (226) hide show
  1. package/README.md +7 -7
  2. package/dist/cognitive_substrate/IGMI.d.ts +2 -0
  3. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
  4. package/dist/cognitive_substrate/IGMI.js.map +1 -1
  5. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +2 -0
  6. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -1
  7. package/dist/core/audio/AdaptiveVAD.d.ts +147 -0
  8. package/dist/core/audio/AdaptiveVAD.d.ts.map +1 -0
  9. package/dist/core/audio/AdaptiveVAD.js +239 -0
  10. package/dist/core/audio/AdaptiveVAD.js.map +1 -0
  11. package/dist/core/audio/AudioProcessor.d.ts +121 -0
  12. package/dist/core/audio/AudioProcessor.d.ts.map +1 -0
  13. package/dist/core/audio/AudioProcessor.js +299 -0
  14. package/dist/core/audio/AudioProcessor.js.map +1 -0
  15. package/dist/core/audio/EnvironmentalCalibrator.d.ts +187 -0
  16. package/dist/core/audio/EnvironmentalCalibrator.d.ts.map +1 -0
  17. package/dist/core/audio/EnvironmentalCalibrator.js +360 -0
  18. package/dist/core/audio/EnvironmentalCalibrator.js.map +1 -0
  19. package/dist/core/audio/SilenceDetector.d.ts +111 -0
  20. package/dist/core/audio/SilenceDetector.d.ts.map +1 -0
  21. package/dist/core/audio/SilenceDetector.js +178 -0
  22. package/dist/core/audio/SilenceDetector.js.map +1 -0
  23. package/dist/core/llm/IPromptEngine.d.ts +2 -0
  24. package/dist/core/llm/IPromptEngine.d.ts.map +1 -1
  25. package/dist/core/llm/IPromptEngine.js.map +1 -1
  26. package/dist/core/llm/providers/implementations/OllamaProvider.js +2 -2
  27. package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -1
  28. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -1
  29. package/dist/core/llm/providers/implementations/OpenAIProvider.js +8 -1
  30. package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -1
  31. package/dist/discovery/CapabilityIndex.d.ts.map +1 -1
  32. package/dist/discovery/CapabilityIndex.js +18 -4
  33. package/dist/discovery/CapabilityIndex.js.map +1 -1
  34. package/dist/extensions/ExtensionManager.d.ts.map +1 -1
  35. package/dist/extensions/ExtensionManager.js +9 -1
  36. package/dist/extensions/ExtensionManager.js.map +1 -1
  37. package/dist/extensions/types.d.ts +20 -2
  38. package/dist/extensions/types.d.ts.map +1 -1
  39. package/dist/extensions/types.js +4 -0
  40. package/dist/extensions/types.js.map +1 -1
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/memory/CognitiveMemoryManager.d.ts +133 -0
  46. package/dist/memory/CognitiveMemoryManager.d.ts.map +1 -0
  47. package/dist/memory/CognitiveMemoryManager.js +519 -0
  48. package/dist/memory/CognitiveMemoryManager.js.map +1 -0
  49. package/dist/memory/config.d.ts +135 -0
  50. package/dist/memory/config.d.ts.map +1 -0
  51. package/dist/memory/config.js +28 -0
  52. package/dist/memory/config.js.map +1 -0
  53. package/dist/memory/consolidation/ConsolidationPipeline.d.ts +70 -0
  54. package/dist/memory/consolidation/ConsolidationPipeline.d.ts.map +1 -0
  55. package/dist/memory/consolidation/ConsolidationPipeline.js +301 -0
  56. package/dist/memory/consolidation/ConsolidationPipeline.js.map +1 -0
  57. package/dist/memory/context/CompactionEngine.d.ts +21 -0
  58. package/dist/memory/context/CompactionEngine.d.ts.map +1 -0
  59. package/dist/memory/context/CompactionEngine.js +35 -0
  60. package/dist/memory/context/CompactionEngine.js.map +1 -0
  61. package/dist/memory/context/CompactionLog.d.ts +50 -0
  62. package/dist/memory/context/CompactionLog.d.ts.map +1 -0
  63. package/dist/memory/context/CompactionLog.js +139 -0
  64. package/dist/memory/context/CompactionLog.js.map +1 -0
  65. package/dist/memory/context/ContextWindowManager.d.ts +114 -0
  66. package/dist/memory/context/ContextWindowManager.d.ts.map +1 -0
  67. package/dist/memory/context/ContextWindowManager.js +225 -0
  68. package/dist/memory/context/ContextWindowManager.js.map +1 -0
  69. package/dist/memory/context/RollingSummaryChain.d.ts +53 -0
  70. package/dist/memory/context/RollingSummaryChain.d.ts.map +1 -0
  71. package/dist/memory/context/RollingSummaryChain.js +193 -0
  72. package/dist/memory/context/RollingSummaryChain.js.map +1 -0
  73. package/dist/memory/context/index.d.ts +15 -0
  74. package/dist/memory/context/index.d.ts.map +1 -0
  75. package/dist/memory/context/index.js +14 -0
  76. package/dist/memory/context/index.js.map +1 -0
  77. package/dist/memory/context/strategies/HierarchicalStrategy.d.ts +25 -0
  78. package/dist/memory/context/strategies/HierarchicalStrategy.d.ts.map +1 -0
  79. package/dist/memory/context/strategies/HierarchicalStrategy.js +240 -0
  80. package/dist/memory/context/strategies/HierarchicalStrategy.js.map +1 -0
  81. package/dist/memory/context/strategies/HybridStrategy.d.ts +26 -0
  82. package/dist/memory/context/strategies/HybridStrategy.d.ts.map +1 -0
  83. package/dist/memory/context/strategies/HybridStrategy.js +245 -0
  84. package/dist/memory/context/strategies/HybridStrategy.js.map +1 -0
  85. package/dist/memory/context/strategies/SlidingSummaryStrategy.d.ts +22 -0
  86. package/dist/memory/context/strategies/SlidingSummaryStrategy.d.ts.map +1 -0
  87. package/dist/memory/context/strategies/SlidingSummaryStrategy.js +203 -0
  88. package/dist/memory/context/strategies/SlidingSummaryStrategy.js.map +1 -0
  89. package/dist/memory/context/types.d.ts +120 -0
  90. package/dist/memory/context/types.d.ts.map +1 -0
  91. package/dist/memory/context/types.js +17 -0
  92. package/dist/memory/context/types.js.map +1 -0
  93. package/dist/memory/decay/DecayModel.d.ts +87 -0
  94. package/dist/memory/decay/DecayModel.d.ts.map +1 -0
  95. package/dist/memory/decay/DecayModel.js +117 -0
  96. package/dist/memory/decay/DecayModel.js.map +1 -0
  97. package/dist/memory/decay/RetrievalPriorityScorer.d.ts +63 -0
  98. package/dist/memory/decay/RetrievalPriorityScorer.d.ts.map +1 -0
  99. package/dist/memory/decay/RetrievalPriorityScorer.js +110 -0
  100. package/dist/memory/decay/RetrievalPriorityScorer.js.map +1 -0
  101. package/dist/memory/encoding/ContentFeatureDetector.d.ts +37 -0
  102. package/dist/memory/encoding/ContentFeatureDetector.d.ts.map +1 -0
  103. package/dist/memory/encoding/ContentFeatureDetector.js +176 -0
  104. package/dist/memory/encoding/ContentFeatureDetector.js.map +1 -0
  105. package/dist/memory/encoding/EncodingModel.d.ts +67 -0
  106. package/dist/memory/encoding/EncodingModel.d.ts.map +1 -0
  107. package/dist/memory/encoding/EncodingModel.js +171 -0
  108. package/dist/memory/encoding/EncodingModel.js.map +1 -0
  109. package/dist/memory/extension/CognitiveMemoryExtension.d.ts +18 -0
  110. package/dist/memory/extension/CognitiveMemoryExtension.d.ts.map +1 -0
  111. package/dist/memory/extension/CognitiveMemoryExtension.js +131 -0
  112. package/dist/memory/extension/CognitiveMemoryExtension.js.map +1 -0
  113. package/dist/memory/graph/GraphologyMemoryGraph.d.ts +29 -0
  114. package/dist/memory/graph/GraphologyMemoryGraph.d.ts.map +1 -0
  115. package/dist/memory/graph/GraphologyMemoryGraph.js +224 -0
  116. package/dist/memory/graph/GraphologyMemoryGraph.js.map +1 -0
  117. package/dist/memory/graph/IMemoryGraph.d.ts +70 -0
  118. package/dist/memory/graph/IMemoryGraph.d.ts.map +1 -0
  119. package/dist/memory/graph/IMemoryGraph.js +15 -0
  120. package/dist/memory/graph/IMemoryGraph.js.map +1 -0
  121. package/dist/memory/graph/KnowledgeGraphMemoryGraph.d.ts +38 -0
  122. package/dist/memory/graph/KnowledgeGraphMemoryGraph.d.ts.map +1 -0
  123. package/dist/memory/graph/KnowledgeGraphMemoryGraph.js +264 -0
  124. package/dist/memory/graph/KnowledgeGraphMemoryGraph.js.map +1 -0
  125. package/dist/memory/graph/SpreadingActivation.d.ts +36 -0
  126. package/dist/memory/graph/SpreadingActivation.d.ts.map +1 -0
  127. package/dist/memory/graph/SpreadingActivation.js +100 -0
  128. package/dist/memory/graph/SpreadingActivation.js.map +1 -0
  129. package/dist/memory/index.d.ts +52 -0
  130. package/dist/memory/index.d.ts.map +1 -0
  131. package/dist/memory/index.js +43 -0
  132. package/dist/memory/index.js.map +1 -0
  133. package/dist/memory/observation/MemoryObserver.d.ts +59 -0
  134. package/dist/memory/observation/MemoryObserver.d.ts.map +1 -0
  135. package/dist/memory/observation/MemoryObserver.js +136 -0
  136. package/dist/memory/observation/MemoryObserver.js.map +1 -0
  137. package/dist/memory/observation/MemoryReflector.d.ts +51 -0
  138. package/dist/memory/observation/MemoryReflector.d.ts.map +1 -0
  139. package/dist/memory/observation/MemoryReflector.js +184 -0
  140. package/dist/memory/observation/MemoryReflector.js.map +1 -0
  141. package/dist/memory/observation/ObservationBuffer.d.ts +51 -0
  142. package/dist/memory/observation/ObservationBuffer.d.ts.map +1 -0
  143. package/dist/memory/observation/ObservationBuffer.js +81 -0
  144. package/dist/memory/observation/ObservationBuffer.js.map +1 -0
  145. package/dist/memory/prompt/MemoryFormatters.d.ts +22 -0
  146. package/dist/memory/prompt/MemoryFormatters.d.ts.map +1 -0
  147. package/dist/memory/prompt/MemoryFormatters.js +113 -0
  148. package/dist/memory/prompt/MemoryFormatters.js.map +1 -0
  149. package/dist/memory/prompt/MemoryPromptAssembler.d.ts +40 -0
  150. package/dist/memory/prompt/MemoryPromptAssembler.d.ts.map +1 -0
  151. package/dist/memory/prompt/MemoryPromptAssembler.js +180 -0
  152. package/dist/memory/prompt/MemoryPromptAssembler.js.map +1 -0
  153. package/dist/memory/prospective/ProspectiveMemoryManager.d.ts +83 -0
  154. package/dist/memory/prospective/ProspectiveMemoryManager.d.ts.map +1 -0
  155. package/dist/memory/prospective/ProspectiveMemoryManager.js +128 -0
  156. package/dist/memory/prospective/ProspectiveMemoryManager.js.map +1 -0
  157. package/dist/memory/store/MemoryStore.d.ts +76 -0
  158. package/dist/memory/store/MemoryStore.d.ts.map +1 -0
  159. package/dist/memory/store/MemoryStore.js +320 -0
  160. package/dist/memory/store/MemoryStore.js.map +1 -0
  161. package/dist/memory/types.d.ts +184 -0
  162. package/dist/memory/types.d.ts.map +1 -0
  163. package/dist/memory/types.js +14 -0
  164. package/dist/memory/types.js.map +1 -0
  165. package/dist/memory/working/CognitiveWorkingMemory.d.ts +87 -0
  166. package/dist/memory/working/CognitiveWorkingMemory.d.ts.map +1 -0
  167. package/dist/memory/working/CognitiveWorkingMemory.js +230 -0
  168. package/dist/memory/working/CognitiveWorkingMemory.js.map +1 -0
  169. package/dist/rag/EmbeddingManager.d.ts.map +1 -1
  170. package/dist/rag/EmbeddingManager.js +8 -1
  171. package/dist/rag/EmbeddingManager.js.map +1 -1
  172. package/dist/rag/HydeRetriever.d.ts +111 -0
  173. package/dist/rag/HydeRetriever.d.ts.map +1 -0
  174. package/dist/rag/HydeRetriever.js +143 -0
  175. package/dist/rag/HydeRetriever.js.map +1 -0
  176. package/dist/rag/IRetrievalAugmentor.d.ts +15 -0
  177. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -1
  178. package/dist/rag/index.d.ts +1 -0
  179. package/dist/rag/index.d.ts.map +1 -1
  180. package/dist/rag/index.js +2 -0
  181. package/dist/rag/index.js.map +1 -1
  182. package/dist/speech/SpeechProviderRegistry.d.ts +17 -0
  183. package/dist/speech/SpeechProviderRegistry.d.ts.map +1 -0
  184. package/dist/speech/SpeechProviderRegistry.js +47 -0
  185. package/dist/speech/SpeechProviderRegistry.js.map +1 -0
  186. package/dist/speech/SpeechRuntime.d.ts +30 -0
  187. package/dist/speech/SpeechRuntime.d.ts.map +1 -0
  188. package/dist/speech/SpeechRuntime.js +156 -0
  189. package/dist/speech/SpeechRuntime.js.map +1 -0
  190. package/dist/speech/SpeechSession.d.ts +37 -0
  191. package/dist/speech/SpeechSession.d.ts.map +1 -0
  192. package/dist/speech/SpeechSession.js +285 -0
  193. package/dist/speech/SpeechSession.js.map +1 -0
  194. package/dist/speech/audio.d.ts +3 -0
  195. package/dist/speech/audio.d.ts.map +1 -0
  196. package/dist/speech/audio.js +39 -0
  197. package/dist/speech/audio.js.map +1 -0
  198. package/dist/speech/index.d.ts +11 -0
  199. package/dist/speech/index.d.ts.map +1 -0
  200. package/dist/speech/index.js +11 -0
  201. package/dist/speech/index.js.map +1 -0
  202. package/dist/speech/providerCatalog.d.ts +7 -0
  203. package/dist/speech/providerCatalog.d.ts.map +1 -0
  204. package/dist/speech/providerCatalog.js +243 -0
  205. package/dist/speech/providerCatalog.js.map +1 -0
  206. package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts +20 -0
  207. package/dist/speech/providers/BuiltInAdaptiveVadProvider.d.ts.map +1 -0
  208. package/dist/speech/providers/BuiltInAdaptiveVadProvider.js +29 -0
  209. package/dist/speech/providers/BuiltInAdaptiveVadProvider.js.map +1 -0
  210. package/dist/speech/providers/ElevenLabsTextToSpeechProvider.d.ts +20 -0
  211. package/dist/speech/providers/ElevenLabsTextToSpeechProvider.d.ts.map +1 -0
  212. package/dist/speech/providers/ElevenLabsTextToSpeechProvider.js +95 -0
  213. package/dist/speech/providers/ElevenLabsTextToSpeechProvider.js.map +1 -0
  214. package/dist/speech/providers/OpenAITextToSpeechProvider.d.ts +20 -0
  215. package/dist/speech/providers/OpenAITextToSpeechProvider.d.ts.map +1 -0
  216. package/dist/speech/providers/OpenAITextToSpeechProvider.js +75 -0
  217. package/dist/speech/providers/OpenAITextToSpeechProvider.js.map +1 -0
  218. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.d.ts +18 -0
  219. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.d.ts.map +1 -0
  220. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.js +109 -0
  221. package/dist/speech/providers/OpenAIWhisperSpeechToTextProvider.js.map +1 -0
  222. package/dist/speech/types.d.ts +272 -0
  223. package/dist/speech/types.d.ts.map +1 -0
  224. package/dist/speech/types.js +2 -0
  225. package/dist/speech/types.js.map +1 -0
  226. package/package.json +22 -2
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @fileoverview Personality-specific memory formatting.
3
+ *
4
+ * Formats MemoryTrace objects into text appropriate for prompt injection,
5
+ * with style adapted to the agent's personality:
6
+ * - **structured** (high conscientiousness): bullet lists with metadata
7
+ * - **narrative** (high openness): flowing prose with associations
8
+ * - **emotional** (high emotionality): includes emotional context annotations
9
+ *
10
+ * @module agentos/memory/prompt/MemoryFormatters
11
+ */
12
+ import type { ScoredMemoryTrace } from '../types.js';
13
+ export type FormattingStyle = 'structured' | 'narrative' | 'emotional';
14
+ /**
15
+ * Format a single memory trace according to the given style.
16
+ */
17
+ export declare function formatMemoryTrace(trace: ScoredMemoryTrace, style: FormattingStyle): string;
18
+ /**
19
+ * Format multiple traces with a separator appropriate for the style.
20
+ */
21
+ export declare function formatMemoryTraces(traces: ScoredMemoryTrace[], style: FormattingStyle): string;
22
+ //# sourceMappingURL=MemoryFormatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryFormatters.d.ts","sourceRoot":"","sources":["../../../src/memory/prompt/MemoryFormatters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,CAAC;AAsFvE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAW1F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAE9F"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @fileoverview Personality-specific memory formatting.
3
+ *
4
+ * Formats MemoryTrace objects into text appropriate for prompt injection,
5
+ * with style adapted to the agent's personality:
6
+ * - **structured** (high conscientiousness): bullet lists with metadata
7
+ * - **narrative** (high openness): flowing prose with associations
8
+ * - **emotional** (high emotionality): includes emotional context annotations
9
+ *
10
+ * @module agentos/memory/prompt/MemoryFormatters
11
+ */
12
+ // ---------------------------------------------------------------------------
13
+ // Helpers
14
+ // ---------------------------------------------------------------------------
15
+ function timeAgo(timestampMs) {
16
+ const elapsed = Date.now() - timestampMs;
17
+ const minutes = Math.floor(elapsed / 60000);
18
+ if (minutes < 1)
19
+ return 'just now';
20
+ if (minutes < 60)
21
+ return `${minutes}m ago`;
22
+ const hours = Math.floor(minutes / 60);
23
+ if (hours < 24)
24
+ return `${hours}h ago`;
25
+ const days = Math.floor(hours / 24);
26
+ if (days < 7)
27
+ return `${days}d ago`;
28
+ const weeks = Math.floor(days / 7);
29
+ return `${weeks}w ago`;
30
+ }
31
+ function confidenceLabel(confidence) {
32
+ if (confidence > 0.8)
33
+ return 'high confidence';
34
+ if (confidence > 0.5)
35
+ return 'moderate confidence';
36
+ return 'low confidence';
37
+ }
38
+ function valenceEmoji(valence) {
39
+ if (valence > 0.3)
40
+ return '(+)';
41
+ if (valence < -0.3)
42
+ return '(-)';
43
+ return '(~)';
44
+ }
45
+ // ---------------------------------------------------------------------------
46
+ // Formatters
47
+ // ---------------------------------------------------------------------------
48
+ function formatStructured(trace) {
49
+ const parts = [
50
+ `- [${trace.type}]`,
51
+ trace.content.substring(0, 300),
52
+ ];
53
+ const meta = [];
54
+ meta.push(timeAgo(trace.createdAt));
55
+ meta.push(confidenceLabel(trace.provenance.confidence));
56
+ meta.push(`relevance: ${trace.retrievalScore.toFixed(2)}`);
57
+ if (trace.tags.length > 0) {
58
+ meta.push(`tags: ${trace.tags.slice(0, 3).join(', ')}`);
59
+ }
60
+ parts.push(`(${meta.join(' | ')})`);
61
+ return parts.join(' ');
62
+ }
63
+ function formatNarrative(trace) {
64
+ const time = timeAgo(trace.createdAt);
65
+ const content = trace.content.substring(0, 350);
66
+ let text = `${time}: ${content}`;
67
+ if (trace.associatedTraceIds.length > 0) {
68
+ text += ` [linked to ${trace.associatedTraceIds.length} other memories]`;
69
+ }
70
+ if (trace.entities.length > 0) {
71
+ text += ` (involves: ${trace.entities.slice(0, 3).join(', ')})`;
72
+ }
73
+ return text;
74
+ }
75
+ function formatEmotional(trace) {
76
+ const time = timeAgo(trace.createdAt);
77
+ const emoji = valenceEmoji(trace.emotionalContext.valence);
78
+ const content = trace.content.substring(0, 300);
79
+ const intensity = trace.emotionalContext.intensity;
80
+ let text = `${emoji} ${time}: ${content}`;
81
+ if (intensity > 0.6) {
82
+ text += ` [strongly felt, mood: ${trace.emotionalContext.gmiMood}]`;
83
+ }
84
+ else if (intensity > 0.3) {
85
+ text += ` [mood: ${trace.emotionalContext.gmiMood}]`;
86
+ }
87
+ return text;
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // Public API
91
+ // ---------------------------------------------------------------------------
92
+ /**
93
+ * Format a single memory trace according to the given style.
94
+ */
95
+ export function formatMemoryTrace(trace, style) {
96
+ switch (style) {
97
+ case 'structured':
98
+ return formatStructured(trace);
99
+ case 'narrative':
100
+ return formatNarrative(trace);
101
+ case 'emotional':
102
+ return formatEmotional(trace);
103
+ default:
104
+ return formatStructured(trace);
105
+ }
106
+ }
107
+ /**
108
+ * Format multiple traces with a separator appropriate for the style.
109
+ */
110
+ export function formatMemoryTraces(traces, style) {
111
+ return traces.map((t) => formatMemoryTrace(t, style)).join('\n');
112
+ }
113
+ //# sourceMappingURL=MemoryFormatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryFormatters.js","sourceRoot":"","sources":["../../../src/memory/prompt/MemoryFormatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileoverview Token-budgeted memory prompt assembly.
3
+ *
4
+ * Carves a token budget from the PromptEngine's RAG context allocation
5
+ * and distributes it across memory sections:
6
+ * - Working memory scratchpad
7
+ * - Semantic recall results
8
+ * - Recent episodic memories
9
+ * - Prospective alerts (Batch 2)
10
+ * - Graph associations (Batch 2)
11
+ * - Observation notes (Batch 2)
12
+ *
13
+ * @module agentos/memory/prompt/MemoryPromptAssembler
14
+ */
15
+ import type { MemoryBudgetAllocation, AssembledMemoryContext, ScoredMemoryTrace } from '../types.js';
16
+ import type { HexacoTraits } from '../config.js';
17
+ export interface MemoryAssemblerInput {
18
+ /** Token budget for all memory context. */
19
+ totalTokenBudget: number;
20
+ /** Budget allocation percentages. */
21
+ allocation?: Partial<MemoryBudgetAllocation>;
22
+ /** HEXACO traits for formatting style selection. */
23
+ traits: HexacoTraits;
24
+ /** Working memory formatted string. */
25
+ workingMemoryText?: string;
26
+ /** Scored semantic/episodic traces from retrieval. */
27
+ retrievedTraces?: ScoredMemoryTrace[];
28
+ /** Prospective memory alerts (Batch 2). */
29
+ prospectiveAlerts?: string[];
30
+ /** Graph association context (Batch 2). */
31
+ graphContext?: string[];
32
+ /** Observation notes (Batch 2). */
33
+ observationNotes?: string[];
34
+ }
35
+ /**
36
+ * Assemble memory context into a single formatted string within
37
+ * the given token budget, with overflow redistribution.
38
+ */
39
+ export declare function assembleMemoryContext(input: MemoryAssemblerInput): AssembledMemoryContext;
40
+ //# sourceMappingURL=MemoryPromptAssembler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryPromptAssembler.d.ts","sourceRoot":"","sources":["../../../src/memory/prompt/MemoryPromptAssembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAmCjD,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC7C,oDAAoD;IACpD,MAAM,EAAE,YAAY,CAAC;IAGrB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACtC,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,sBAAsB,CA2IzF"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * @fileoverview Token-budgeted memory prompt assembly.
3
+ *
4
+ * Carves a token budget from the PromptEngine's RAG context allocation
5
+ * and distributes it across memory sections:
6
+ * - Working memory scratchpad
7
+ * - Semantic recall results
8
+ * - Recent episodic memories
9
+ * - Prospective alerts (Batch 2)
10
+ * - Graph associations (Batch 2)
11
+ * - Observation notes (Batch 2)
12
+ *
13
+ * @module agentos/memory/prompt/MemoryPromptAssembler
14
+ */
15
+ import { DEFAULT_BUDGET_ALLOCATION } from '../config.js';
16
+ import { formatMemoryTrace } from './MemoryFormatters.js';
17
+ // ---------------------------------------------------------------------------
18
+ // Token estimation
19
+ // ---------------------------------------------------------------------------
20
+ /** Rough token estimate: ~4 chars per token for English text. */
21
+ function estimateTokens(text) {
22
+ return Math.ceil(text.length / 4);
23
+ }
24
+ // ---------------------------------------------------------------------------
25
+ // Personality → formatting style
26
+ // ---------------------------------------------------------------------------
27
+ const clamp01 = (v) => v == null ? 0.5 : Math.max(0, Math.min(1, v));
28
+ function selectFormattingStyle(traits) {
29
+ const c = clamp01(traits.conscientiousness);
30
+ const o = clamp01(traits.openness);
31
+ const e = clamp01(traits.emotionality);
32
+ // Highest trait wins
33
+ if (c >= o && c >= e)
34
+ return 'structured';
35
+ if (o >= c && o >= e)
36
+ return 'narrative';
37
+ return 'emotional';
38
+ }
39
+ /**
40
+ * Assemble memory context into a single formatted string within
41
+ * the given token budget, with overflow redistribution.
42
+ */
43
+ export function assembleMemoryContext(input) {
44
+ const alloc = {
45
+ ...DEFAULT_BUDGET_ALLOCATION,
46
+ ...input.allocation,
47
+ };
48
+ const budget = input.totalTokenBudget;
49
+ const style = selectFormattingStyle(input.traits);
50
+ // Compute per-section budgets
51
+ const wmBudget = Math.floor(budget * alloc.workingMemory);
52
+ let semanticBudget = Math.floor(budget * alloc.semanticRecall);
53
+ const episodicBudget = Math.floor(budget * alloc.recentEpisodic);
54
+ const prospectiveBudget = Math.floor(budget * alloc.prospectiveAlerts);
55
+ const graphBudget = Math.floor(budget * alloc.graphAssociations);
56
+ const observationBudget = Math.floor(budget * alloc.observationNotes);
57
+ const sections = [];
58
+ const includedIds = [];
59
+ let totalTokens = 0;
60
+ // --- Working Memory ---
61
+ const wmText = input.workingMemoryText ?? '';
62
+ const wmTokens = estimateTokens(wmText);
63
+ let wmUsed = 0;
64
+ if (wmText && wmTokens <= wmBudget) {
65
+ sections.push(`## Active Context\n${wmText}`);
66
+ wmUsed = wmTokens;
67
+ totalTokens += wmUsed;
68
+ }
69
+ const wmOverflow = wmBudget - wmUsed;
70
+ // --- Separate episodic and semantic traces ---
71
+ const episodicTraces = [];
72
+ const semanticTraces = [];
73
+ for (const trace of input.retrievedTraces ?? []) {
74
+ if (trace.type === 'episodic') {
75
+ episodicTraces.push(trace);
76
+ }
77
+ else {
78
+ semanticTraces.push(trace);
79
+ }
80
+ }
81
+ // --- Semantic Recall (gets overflow from WM and unused Batch 2 sections) ---
82
+ semanticBudget += wmOverflow;
83
+ // If Batch 2 sections are empty, their budgets flow to semantic
84
+ if (!input.prospectiveAlerts?.length)
85
+ semanticBudget += prospectiveBudget;
86
+ if (!input.graphContext?.length)
87
+ semanticBudget += graphBudget;
88
+ if (!input.observationNotes?.length)
89
+ semanticBudget += observationBudget;
90
+ let semanticUsed = 0;
91
+ if (semanticTraces.length > 0) {
92
+ const semanticLines = [];
93
+ for (const trace of semanticTraces) {
94
+ const formatted = formatMemoryTrace(trace, style);
95
+ const tokens = estimateTokens(formatted);
96
+ if (semanticUsed + tokens > semanticBudget)
97
+ break;
98
+ semanticLines.push(formatted);
99
+ semanticUsed += tokens;
100
+ includedIds.push(trace.id);
101
+ }
102
+ if (semanticLines.length > 0) {
103
+ sections.push(`## Relevant Memories\n${semanticLines.join('\n')}`);
104
+ totalTokens += semanticUsed;
105
+ }
106
+ }
107
+ // --- Recent Episodic ---
108
+ let episodicUsed = 0;
109
+ if (episodicTraces.length > 0) {
110
+ const episodicLines = [];
111
+ for (const trace of episodicTraces) {
112
+ const formatted = formatMemoryTrace(trace, style);
113
+ const tokens = estimateTokens(formatted);
114
+ if (episodicUsed + tokens > episodicBudget)
115
+ break;
116
+ episodicLines.push(formatted);
117
+ episodicUsed += tokens;
118
+ includedIds.push(trace.id);
119
+ }
120
+ if (episodicLines.length > 0) {
121
+ sections.push(`## Recent Experiences\n${episodicLines.join('\n')}`);
122
+ totalTokens += episodicUsed;
123
+ }
124
+ }
125
+ // --- Prospective Alerts (Batch 2) ---
126
+ if (input.prospectiveAlerts?.length) {
127
+ let prospectiveUsed = 0;
128
+ const prospectiveLines = [];
129
+ for (const alert of input.prospectiveAlerts) {
130
+ const tokens = estimateTokens(alert);
131
+ if (prospectiveUsed + tokens > prospectiveBudget)
132
+ break;
133
+ prospectiveLines.push(`- ${alert}`);
134
+ prospectiveUsed += tokens;
135
+ }
136
+ if (prospectiveLines.length > 0) {
137
+ sections.push(`## Reminders\n${prospectiveLines.join('\n')}`);
138
+ totalTokens += prospectiveUsed;
139
+ }
140
+ }
141
+ // --- Graph Associations (Batch 2) ---
142
+ if (input.graphContext?.length) {
143
+ let graphUsed = 0;
144
+ const graphLines = [];
145
+ for (const ctx of input.graphContext) {
146
+ const tokens = estimateTokens(ctx);
147
+ if (graphUsed + tokens > graphBudget)
148
+ break;
149
+ graphLines.push(`- ${ctx}`);
150
+ graphUsed += tokens;
151
+ }
152
+ if (graphLines.length > 0) {
153
+ sections.push(`## Related Context\n${graphLines.join('\n')}`);
154
+ totalTokens += graphUsed;
155
+ }
156
+ }
157
+ // --- Observation Notes (Batch 2) ---
158
+ if (input.observationNotes?.length) {
159
+ let observationUsed = 0;
160
+ const observationLines = [];
161
+ for (const note of input.observationNotes) {
162
+ const tokens = estimateTokens(note);
163
+ if (observationUsed + tokens > observationBudget)
164
+ break;
165
+ observationLines.push(`- ${note}`);
166
+ observationUsed += tokens;
167
+ }
168
+ if (observationLines.length > 0) {
169
+ sections.push(`## Observations\n${observationLines.join('\n')}`);
170
+ totalTokens += observationUsed;
171
+ }
172
+ }
173
+ return {
174
+ contextText: sections.join('\n\n'),
175
+ tokensUsed: totalTokens,
176
+ allocation: alloc,
177
+ includedMemoryIds: includedIds,
178
+ };
179
+ }
180
+ //# sourceMappingURL=MemoryPromptAssembler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryPromptAssembler.js","sourceRoot":"","sources":["../../../src/memory/prompt/MemoryPromptAssembler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * @fileoverview Prospective Memory Manager — goal/intention-triggered reminders.
3
+ *
4
+ * Prospective memory = memory for future intentions (e.g., "remind me to...",
5
+ * "I need to...", "when X happens, do Y").
6
+ *
7
+ * Trigger types:
8
+ * - time_based: Fires at or after a specified timestamp
9
+ * - event_based: Fires when a named event occurs
10
+ * - context_based: Fires when semantic similarity to a cue exceeds threshold
11
+ *
12
+ * Checked each turn before prompt construction. Triggered items are
13
+ * injected into the "Reminders" section of the assembled memory context.
14
+ *
15
+ * @module agentos/memory/prospective/ProspectiveMemoryManager
16
+ */
17
+ import type { IEmbeddingManager } from '../../rag/IEmbeddingManager.js';
18
+ export type ProspectiveTriggerType = 'time_based' | 'event_based' | 'context_based';
19
+ export interface ProspectiveMemoryItem {
20
+ id: string;
21
+ /** What the agent should remember to do. */
22
+ content: string;
23
+ /** How this memory is triggered. */
24
+ triggerType: ProspectiveTriggerType;
25
+ /** For time_based: Unix ms when this should fire. */
26
+ triggerAt?: number;
27
+ /** For event_based: event name to match. */
28
+ triggerEvent?: string;
29
+ /** For context_based: embedding of the cue phrase. */
30
+ cueEmbedding?: number[];
31
+ /** For context_based: raw cue text (for display). */
32
+ cueText?: string;
33
+ /** Minimum similarity for context-based triggers. @default 0.7 */
34
+ similarityThreshold?: number;
35
+ /** Importance / priority. */
36
+ importance: number;
37
+ /** Whether this has been triggered and delivered. */
38
+ triggered: boolean;
39
+ /** Whether to re-trigger (recurring). */
40
+ recurring: boolean;
41
+ /** Creation timestamp. */
42
+ createdAt: number;
43
+ /** Source trace ID (if linked to a memory trace). */
44
+ sourceTraceId?: string;
45
+ }
46
+ export declare class ProspectiveMemoryManager {
47
+ private items;
48
+ private embeddingManager?;
49
+ constructor(embeddingManager?: IEmbeddingManager);
50
+ /**
51
+ * Register a new prospective memory item.
52
+ */
53
+ register(input: Omit<ProspectiveMemoryItem, 'id' | 'triggered' | 'createdAt' | 'cueEmbedding'> & {
54
+ cueText?: string;
55
+ }): Promise<ProspectiveMemoryItem>;
56
+ /**
57
+ * Check all prospective memories against the current context.
58
+ * Returns items that should fire this turn.
59
+ */
60
+ check(context: {
61
+ now?: number;
62
+ events?: string[];
63
+ queryText?: string;
64
+ queryEmbedding?: number[];
65
+ }): Promise<ProspectiveMemoryItem[]>;
66
+ /**
67
+ * Remove a prospective memory item.
68
+ */
69
+ remove(id: string): boolean;
70
+ /**
71
+ * Get all active (non-triggered or recurring) items.
72
+ */
73
+ getActive(): ProspectiveMemoryItem[];
74
+ /**
75
+ * Get total item count.
76
+ */
77
+ getCount(): number;
78
+ /**
79
+ * Clear all items.
80
+ */
81
+ clear(): void;
82
+ }
83
+ //# sourceMappingURL=ProspectiveMemoryManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProspectiveMemoryManager.d.ts","sourceRoot":"","sources":["../../../src/memory/prospective/ProspectiveMemoryManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAMxE,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,aAAa,GAAG,eAAe,CAAC;AAEpF,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,WAAW,EAAE,sBAAsB,CAAC;IACpC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAQD,qBAAa,wBAAwB;IACnC,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,gBAAgB,CAAC,CAAoB;gBAEjC,gBAAgB,CAAC,EAAE,iBAAiB;IAIhD;;OAEG;IACG,QAAQ,CACZ,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3G,OAAO,CAAC,qBAAqB,CAAC;IAqBjC;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA2CpC;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI3B;;OAEG;IACH,SAAS,IAAI,qBAAqB,EAAE;IAMpC;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * @fileoverview Prospective Memory Manager — goal/intention-triggered reminders.
3
+ *
4
+ * Prospective memory = memory for future intentions (e.g., "remind me to...",
5
+ * "I need to...", "when X happens, do Y").
6
+ *
7
+ * Trigger types:
8
+ * - time_based: Fires at or after a specified timestamp
9
+ * - event_based: Fires when a named event occurs
10
+ * - context_based: Fires when semantic similarity to a cue exceeds threshold
11
+ *
12
+ * Checked each turn before prompt construction. Triggered items are
13
+ * injected into the "Reminders" section of the assembled memory context.
14
+ *
15
+ * @module agentos/memory/prospective/ProspectiveMemoryManager
16
+ */
17
+ // ---------------------------------------------------------------------------
18
+ // ProspectiveMemoryManager
19
+ // ---------------------------------------------------------------------------
20
+ let pmIdCounter = 0;
21
+ export class ProspectiveMemoryManager {
22
+ constructor(embeddingManager) {
23
+ this.items = new Map();
24
+ this.embeddingManager = embeddingManager;
25
+ }
26
+ /**
27
+ * Register a new prospective memory item.
28
+ */
29
+ async register(input) {
30
+ const id = `pm_${Date.now()}_${++pmIdCounter}`;
31
+ let cueEmbedding;
32
+ if (input.triggerType === 'context_based' && input.cueText && this.embeddingManager) {
33
+ const resp = await this.embeddingManager.generateEmbeddings({ texts: input.cueText });
34
+ cueEmbedding = resp.embeddings[0];
35
+ }
36
+ const item = {
37
+ ...input,
38
+ id,
39
+ cueEmbedding,
40
+ triggered: false,
41
+ createdAt: Date.now(),
42
+ };
43
+ this.items.set(id, item);
44
+ return item;
45
+ }
46
+ /**
47
+ * Check all prospective memories against the current context.
48
+ * Returns items that should fire this turn.
49
+ */
50
+ async check(context) {
51
+ const now = context.now ?? Date.now();
52
+ const triggered = [];
53
+ for (const item of this.items.values()) {
54
+ if (item.triggered && !item.recurring)
55
+ continue;
56
+ let shouldFire = false;
57
+ switch (item.triggerType) {
58
+ case 'time_based':
59
+ if (item.triggerAt && now >= item.triggerAt) {
60
+ shouldFire = true;
61
+ }
62
+ break;
63
+ case 'event_based':
64
+ if (item.triggerEvent && context.events?.includes(item.triggerEvent)) {
65
+ shouldFire = true;
66
+ }
67
+ break;
68
+ case 'context_based':
69
+ if (item.cueEmbedding && context.queryEmbedding) {
70
+ const similarity = cosineSimilarity(item.cueEmbedding, context.queryEmbedding);
71
+ if (similarity >= (item.similarityThreshold ?? 0.7)) {
72
+ shouldFire = true;
73
+ }
74
+ }
75
+ break;
76
+ }
77
+ if (shouldFire) {
78
+ item.triggered = true;
79
+ triggered.push(item);
80
+ }
81
+ }
82
+ // Sort by importance descending
83
+ triggered.sort((a, b) => b.importance - a.importance);
84
+ return triggered;
85
+ }
86
+ /**
87
+ * Remove a prospective memory item.
88
+ */
89
+ remove(id) {
90
+ return this.items.delete(id);
91
+ }
92
+ /**
93
+ * Get all active (non-triggered or recurring) items.
94
+ */
95
+ getActive() {
96
+ return Array.from(this.items.values()).filter((item) => !item.triggered || item.recurring);
97
+ }
98
+ /**
99
+ * Get total item count.
100
+ */
101
+ getCount() {
102
+ return this.items.size;
103
+ }
104
+ /**
105
+ * Clear all items.
106
+ */
107
+ clear() {
108
+ this.items.clear();
109
+ }
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // Utility
113
+ // ---------------------------------------------------------------------------
114
+ function cosineSimilarity(a, b) {
115
+ if (a.length !== b.length || a.length === 0)
116
+ return 0;
117
+ let dot = 0;
118
+ let normA = 0;
119
+ let normB = 0;
120
+ for (let i = 0; i < a.length; i++) {
121
+ dot += a[i] * b[i];
122
+ normA += a[i] * a[i];
123
+ normB += b[i] * b[i];
124
+ }
125
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
126
+ return denom === 0 ? 0 : dot / denom;
127
+ }
128
+ //# sourceMappingURL=ProspectiveMemoryManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProspectiveMemoryManager.js","sourceRoot":"","sources":["../../../src/memory/prospective/ProspectiveMemoryManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAsCH,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,IAAI,WAAW,GAAG,CAAC,CAAC;AAEpB,MAAM,OAAO,wBAAwB;IAInC,YAAY,gBAAoC;QAHxC,UAAK,GAAuC,IAAI,GAAG,EAAE,CAAC;QAI5D,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,KAA4G;QAE5G,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAE/C,IAAI,YAAkC,CAAC;QACvC,IAAI,KAAK,CAAC,WAAW,KAAK,eAAe,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtF,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,GAA0B;YAClC,GAAG,KAAK;YACR,EAAE;YACF,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,OAKX;QACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEhD,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,KAAK,YAAY;oBACf,IAAI,IAAI,CAAC,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBAC5C,UAAU,GAAG,IAAI,CAAC;oBACpB,CAAC;oBACD,MAAM;gBAER,KAAK,aAAa;oBAChB,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;wBACrE,UAAU,GAAG,IAAI,CAAC;oBACpB,CAAC;oBACD,MAAM;gBAER,KAAK,eAAe;oBAClB,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;wBAChD,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;wBAC/E,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,GAAG,CAAC,EAAE,CAAC;4BACpD,UAAU,GAAG,IAAI,CAAC;wBACpB,CAAC;oBACH,CAAC;oBACD,MAAM;YACV,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,CAAW,EAAE,CAAW;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;AACvC,CAAC"}