@framers/agentos 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +576 -0
  3. package/dist/api/AgentOS.d.ts +451 -0
  4. package/dist/api/AgentOS.d.ts.map +1 -0
  5. package/dist/api/AgentOS.js +1157 -0
  6. package/dist/api/AgentOS.js.map +1 -0
  7. package/dist/api/AgentOSOrchestrator.d.ts +157 -0
  8. package/dist/api/AgentOSOrchestrator.d.ts.map +1 -0
  9. package/dist/api/AgentOSOrchestrator.js +679 -0
  10. package/dist/api/AgentOSOrchestrator.js.map +1 -0
  11. package/dist/api/interfaces/IAgentOS.d.ts +138 -0
  12. package/dist/api/interfaces/IAgentOS.d.ts.map +1 -0
  13. package/dist/api/interfaces/IAgentOS.js +11 -0
  14. package/dist/api/interfaces/IAgentOS.js.map +1 -0
  15. package/dist/api/interfaces/IUnifiedAgent.d.ts +126 -0
  16. package/dist/api/interfaces/IUnifiedAgent.d.ts.map +1 -0
  17. package/dist/api/interfaces/IUnifiedAgent.js +3 -0
  18. package/dist/api/interfaces/IUnifiedAgent.js.map +1 -0
  19. package/dist/api/types/AgentOSInput.d.ts +114 -0
  20. package/dist/api/types/AgentOSInput.d.ts.map +1 -0
  21. package/dist/api/types/AgentOSInput.js +13 -0
  22. package/dist/api/types/AgentOSInput.js.map +1 -0
  23. package/dist/api/types/AgentOSResponse.d.ts +170 -0
  24. package/dist/api/types/AgentOSResponse.d.ts.map +1 -0
  25. package/dist/api/types/AgentOSResponse.js +25 -0
  26. package/dist/api/types/AgentOSResponse.js.map +1 -0
  27. package/dist/cognitive_substrate/GMI.d.ts +148 -0
  28. package/dist/cognitive_substrate/GMI.d.ts.map +1 -0
  29. package/dist/cognitive_substrate/GMI.js +1003 -0
  30. package/dist/cognitive_substrate/GMI.js.map +1 -0
  31. package/dist/cognitive_substrate/GMIManager.d.ts +98 -0
  32. package/dist/cognitive_substrate/GMIManager.d.ts.map +1 -0
  33. package/dist/cognitive_substrate/GMIManager.js +517 -0
  34. package/dist/cognitive_substrate/GMIManager.js.map +1 -0
  35. package/dist/cognitive_substrate/IGMI.d.ts +469 -0
  36. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -0
  37. package/dist/cognitive_substrate/IGMI.js +111 -0
  38. package/dist/cognitive_substrate/IGMI.js.map +1 -0
  39. package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts +139 -0
  40. package/dist/cognitive_substrate/memory/IWorkingMemory.d.ts.map +1 -0
  41. package/dist/cognitive_substrate/memory/IWorkingMemory.js +14 -0
  42. package/dist/cognitive_substrate/memory/IWorkingMemory.js.map +1 -0
  43. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts +143 -0
  44. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.d.ts.map +1 -0
  45. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js +186 -0
  46. package/dist/cognitive_substrate/memory/InMemoryWorkingMemory.js.map +1 -0
  47. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts +33 -0
  48. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.d.ts.map +1 -0
  49. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js +138 -0
  50. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayManager.js.map +1 -0
  51. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts +32 -0
  52. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.d.ts.map +1 -0
  53. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js +2 -0
  54. package/dist/cognitive_substrate/persona_overlays/PersonaOverlayTypes.js.map +1 -0
  55. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts +336 -0
  56. package/dist/cognitive_substrate/personas/IPersonaDefinition.d.ts.map +1 -0
  57. package/dist/cognitive_substrate/personas/IPersonaDefinition.js +8 -0
  58. package/dist/cognitive_substrate/personas/IPersonaDefinition.js.map +1 -0
  59. package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts +78 -0
  60. package/dist/cognitive_substrate/personas/IPersonaLoader.d.ts.map +1 -0
  61. package/dist/cognitive_substrate/personas/IPersonaLoader.js +9 -0
  62. package/dist/cognitive_substrate/personas/IPersonaLoader.js.map +1 -0
  63. package/dist/cognitive_substrate/personas/PersonaLoader.d.ts +60 -0
  64. package/dist/cognitive_substrate/personas/PersonaLoader.d.ts.map +1 -0
  65. package/dist/cognitive_substrate/personas/PersonaLoader.js +138 -0
  66. package/dist/cognitive_substrate/personas/PersonaLoader.js.map +1 -0
  67. package/dist/cognitive_substrate/personas/PersonaValidation.d.ts +139 -0
  68. package/dist/cognitive_substrate/personas/PersonaValidation.d.ts.map +1 -0
  69. package/dist/cognitive_substrate/personas/PersonaValidation.js +277 -0
  70. package/dist/cognitive_substrate/personas/PersonaValidation.js.map +1 -0
  71. package/dist/cognitive_substrate/personas/definitions/atlas_systems_architect.json +29 -0
  72. package/dist/cognitive_substrate/personas/definitions/default_assistant_persona.json +346 -0
  73. package/dist/cognitive_substrate/personas/definitions/default_free_assistant.json +13 -0
  74. package/dist/cognitive_substrate/personas/definitions/index.d.ts +14 -0
  75. package/dist/cognitive_substrate/personas/definitions/index.d.ts.map +1 -0
  76. package/dist/cognitive_substrate/personas/definitions/index.js +35 -0
  77. package/dist/cognitive_substrate/personas/definitions/index.js.map +1 -0
  78. package/dist/cognitive_substrate/personas/definitions/nerf_generalist.json +11 -0
  79. package/dist/cognitive_substrate/personas/definitions/v_researcher.json +11 -0
  80. package/dist/config/AgentOSConfig.d.ts +74 -0
  81. package/dist/config/AgentOSConfig.d.ts.map +1 -0
  82. package/dist/config/AgentOSConfig.js +399 -0
  83. package/dist/config/AgentOSConfig.js.map +1 -0
  84. package/dist/config/EmbeddingManagerConfiguration.d.ts +190 -0
  85. package/dist/config/EmbeddingManagerConfiguration.d.ts.map +1 -0
  86. package/dist/config/EmbeddingManagerConfiguration.js +16 -0
  87. package/dist/config/EmbeddingManagerConfiguration.js.map +1 -0
  88. package/dist/config/MemoryLifecycleManagerConfiguration.d.ts +165 -0
  89. package/dist/config/MemoryLifecycleManagerConfiguration.d.ts.map +1 -0
  90. package/dist/config/MemoryLifecycleManagerConfiguration.js +69 -0
  91. package/dist/config/MemoryLifecycleManagerConfiguration.js.map +1 -0
  92. package/dist/config/RetrievalAugmentorConfiguration.d.ts +98 -0
  93. package/dist/config/RetrievalAugmentorConfiguration.d.ts.map +1 -0
  94. package/dist/config/RetrievalAugmentorConfiguration.js +47 -0
  95. package/dist/config/RetrievalAugmentorConfiguration.js.map +1 -0
  96. package/dist/config/ToolOrchestratorConfig.d.ts +69 -0
  97. package/dist/config/ToolOrchestratorConfig.d.ts.map +1 -0
  98. package/dist/config/ToolOrchestratorConfig.js +11 -0
  99. package/dist/config/ToolOrchestratorConfig.js.map +1 -0
  100. package/dist/config/VectorStoreConfiguration.d.ts +223 -0
  101. package/dist/config/VectorStoreConfiguration.d.ts.map +1 -0
  102. package/dist/config/VectorStoreConfiguration.js +59 -0
  103. package/dist/config/VectorStoreConfiguration.js.map +1 -0
  104. package/dist/config/extension-secrets.json +38 -0
  105. package/dist/config/extensionSecrets.d.ts +13 -0
  106. package/dist/config/extensionSecrets.d.ts.map +1 -0
  107. package/dist/config/extensionSecrets.js +24 -0
  108. package/dist/config/extensionSecrets.js.map +1 -0
  109. package/dist/core/agency/AgencyMemoryManager.d.ts +300 -0
  110. package/dist/core/agency/AgencyMemoryManager.d.ts.map +1 -0
  111. package/dist/core/agency/AgencyMemoryManager.js +657 -0
  112. package/dist/core/agency/AgencyMemoryManager.js.map +1 -0
  113. package/dist/core/agency/AgencyRegistry.d.ts +100 -0
  114. package/dist/core/agency/AgencyRegistry.d.ts.map +1 -0
  115. package/dist/core/agency/AgencyRegistry.js +209 -0
  116. package/dist/core/agency/AgencyRegistry.js.map +1 -0
  117. package/dist/core/agency/AgencyTypes.d.ts +200 -0
  118. package/dist/core/agency/AgencyTypes.d.ts.map +1 -0
  119. package/dist/core/agency/AgencyTypes.js +7 -0
  120. package/dist/core/agency/AgencyTypes.js.map +1 -0
  121. package/dist/core/agency/AgentCommunicationBus.d.ts +150 -0
  122. package/dist/core/agency/AgentCommunicationBus.d.ts.map +1 -0
  123. package/dist/core/agency/AgentCommunicationBus.js +568 -0
  124. package/dist/core/agency/AgentCommunicationBus.js.map +1 -0
  125. package/dist/core/agency/IAgentCommunicationBus.d.ts +469 -0
  126. package/dist/core/agency/IAgentCommunicationBus.d.ts.map +1 -0
  127. package/dist/core/agency/IAgentCommunicationBus.js +40 -0
  128. package/dist/core/agency/IAgentCommunicationBus.js.map +1 -0
  129. package/dist/core/agency/index.d.ts +18 -0
  130. package/dist/core/agency/index.d.ts.map +1 -0
  131. package/dist/core/agency/index.js +18 -0
  132. package/dist/core/agency/index.js.map +1 -0
  133. package/dist/core/agents/AgentCore.d.ts +385 -0
  134. package/dist/core/agents/AgentCore.d.ts.map +1 -0
  135. package/dist/core/agents/AgentCore.js +527 -0
  136. package/dist/core/agents/AgentCore.js.map +1 -0
  137. package/dist/core/agents/AgentFactory.d.ts +123 -0
  138. package/dist/core/agents/AgentFactory.d.ts.map +1 -0
  139. package/dist/core/agents/AgentFactory.js +232 -0
  140. package/dist/core/agents/AgentFactory.js.map +1 -0
  141. package/dist/core/agents/AgentPoolAgent.d.ts +244 -0
  142. package/dist/core/agents/AgentPoolAgent.d.ts.map +1 -0
  143. package/dist/core/agents/AgentPoolAgent.js +697 -0
  144. package/dist/core/agents/AgentPoolAgent.js.map +1 -0
  145. package/dist/core/agents/AgentPoolConfig.d.ts +191 -0
  146. package/dist/core/agents/AgentPoolConfig.d.ts.map +1 -0
  147. package/dist/core/agents/AgentPoolConfig.js +58 -0
  148. package/dist/core/agents/AgentPoolConfig.js.map +1 -0
  149. package/dist/core/agents/IAgent.d.ts +226 -0
  150. package/dist/core/agents/IAgent.d.ts.map +1 -0
  151. package/dist/core/agents/IAgent.js +14 -0
  152. package/dist/core/agents/IAgent.js.map +1 -0
  153. package/dist/core/agents/IAgentFactory.d.ts +137 -0
  154. package/dist/core/agents/IAgentFactory.d.ts.map +1 -0
  155. package/dist/core/agents/IAgentFactory.js +13 -0
  156. package/dist/core/agents/IAgentFactory.js.map +1 -0
  157. package/dist/core/agents/tools/Tool.d.ts +17 -0
  158. package/dist/core/agents/tools/Tool.d.ts.map +1 -0
  159. package/dist/core/agents/tools/Tool.js +8 -0
  160. package/dist/core/agents/tools/Tool.js.map +1 -0
  161. package/dist/core/ai_utilities/HybridUtilityAI.d.ts +1 -0
  162. package/dist/core/ai_utilities/HybridUtilityAI.d.ts.map +1 -0
  163. package/dist/core/ai_utilities/HybridUtilityAI.js +2 -0
  164. package/dist/core/ai_utilities/HybridUtilityAI.js.map +1 -0
  165. package/dist/core/ai_utilities/IUtilityAI.d.ts +212 -0
  166. package/dist/core/ai_utilities/IUtilityAI.d.ts.map +1 -0
  167. package/dist/core/ai_utilities/IUtilityAI.js +11 -0
  168. package/dist/core/ai_utilities/IUtilityAI.js.map +1 -0
  169. package/dist/core/ai_utilities/LLMUtilityAI.d.ts +94 -0
  170. package/dist/core/ai_utilities/LLMUtilityAI.d.ts.map +1 -0
  171. package/dist/core/ai_utilities/LLMUtilityAI.js +434 -0
  172. package/dist/core/ai_utilities/LLMUtilityAI.js.map +1 -0
  173. package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts +102 -0
  174. package/dist/core/ai_utilities/StatisticalUtilityAI.d.ts.map +1 -0
  175. package/dist/core/ai_utilities/StatisticalUtilityAI.js +617 -0
  176. package/dist/core/ai_utilities/StatisticalUtilityAI.js.map +1 -0
  177. package/dist/core/conversation/ConversationContext.d.ts +259 -0
  178. package/dist/core/conversation/ConversationContext.d.ts.map +1 -0
  179. package/dist/core/conversation/ConversationContext.js +450 -0
  180. package/dist/core/conversation/ConversationContext.js.map +1 -0
  181. package/dist/core/conversation/ConversationManager.d.ts +223 -0
  182. package/dist/core/conversation/ConversationManager.d.ts.map +1 -0
  183. package/dist/core/conversation/ConversationManager.js +558 -0
  184. package/dist/core/conversation/ConversationManager.js.map +1 -0
  185. package/dist/core/conversation/ConversationMessage.d.ts +184 -0
  186. package/dist/core/conversation/ConversationMessage.d.ts.map +1 -0
  187. package/dist/core/conversation/ConversationMessage.js +66 -0
  188. package/dist/core/conversation/ConversationMessage.js.map +1 -0
  189. package/dist/core/evaluation/Evaluator.d.ts +28 -0
  190. package/dist/core/evaluation/Evaluator.d.ts.map +1 -0
  191. package/dist/core/evaluation/Evaluator.js +490 -0
  192. package/dist/core/evaluation/Evaluator.js.map +1 -0
  193. package/dist/core/evaluation/IEvaluator.d.ts +309 -0
  194. package/dist/core/evaluation/IEvaluator.d.ts.map +1 -0
  195. package/dist/core/evaluation/IEvaluator.js +12 -0
  196. package/dist/core/evaluation/IEvaluator.js.map +1 -0
  197. package/dist/core/evaluation/LLMJudge.d.ts +105 -0
  198. package/dist/core/evaluation/LLMJudge.d.ts.map +1 -0
  199. package/dist/core/evaluation/LLMJudge.js +229 -0
  200. package/dist/core/evaluation/LLMJudge.js.map +1 -0
  201. package/dist/core/evaluation/index.d.ts +9 -0
  202. package/dist/core/evaluation/index.d.ts.map +1 -0
  203. package/dist/core/evaluation/index.js +9 -0
  204. package/dist/core/evaluation/index.js.map +1 -0
  205. package/dist/core/guardrails/IGuardrailService.d.ts +142 -0
  206. package/dist/core/guardrails/IGuardrailService.d.ts.map +1 -0
  207. package/dist/core/guardrails/IGuardrailService.js +24 -0
  208. package/dist/core/guardrails/IGuardrailService.js.map +1 -0
  209. package/dist/core/guardrails/guardrailDispatcher.d.ts +36 -0
  210. package/dist/core/guardrails/guardrailDispatcher.d.ts.map +1 -0
  211. package/dist/core/guardrails/guardrailDispatcher.js +240 -0
  212. package/dist/core/guardrails/guardrailDispatcher.js.map +1 -0
  213. package/dist/core/hitl/HumanInteractionManager.d.ts +146 -0
  214. package/dist/core/hitl/HumanInteractionManager.d.ts.map +1 -0
  215. package/dist/core/hitl/HumanInteractionManager.js +491 -0
  216. package/dist/core/hitl/HumanInteractionManager.js.map +1 -0
  217. package/dist/core/hitl/IHumanInteractionManager.d.ts +521 -0
  218. package/dist/core/hitl/IHumanInteractionManager.d.ts.map +1 -0
  219. package/dist/core/hitl/IHumanInteractionManager.js +33 -0
  220. package/dist/core/hitl/IHumanInteractionManager.js.map +1 -0
  221. package/dist/core/hitl/index.d.ts +17 -0
  222. package/dist/core/hitl/index.d.ts.map +1 -0
  223. package/dist/core/hitl/index.js +17 -0
  224. package/dist/core/hitl/index.js.map +1 -0
  225. package/dist/core/knowledge/IKnowledgeGraph.d.ts +351 -0
  226. package/dist/core/knowledge/IKnowledgeGraph.d.ts.map +1 -0
  227. package/dist/core/knowledge/IKnowledgeGraph.js +10 -0
  228. package/dist/core/knowledge/IKnowledgeGraph.js.map +1 -0
  229. package/dist/core/knowledge/KnowledgeGraph.d.ts +93 -0
  230. package/dist/core/knowledge/KnowledgeGraph.d.ts.map +1 -0
  231. package/dist/core/knowledge/KnowledgeGraph.js +601 -0
  232. package/dist/core/knowledge/KnowledgeGraph.js.map +1 -0
  233. package/dist/core/knowledge/index.d.ts +8 -0
  234. package/dist/core/knowledge/index.d.ts.map +1 -0
  235. package/dist/core/knowledge/index.js +8 -0
  236. package/dist/core/knowledge/index.js.map +1 -0
  237. package/dist/core/language/LanguageService.d.ts +77 -0
  238. package/dist/core/language/LanguageService.d.ts.map +1 -0
  239. package/dist/core/language/LanguageService.js +305 -0
  240. package/dist/core/language/LanguageService.js.map +1 -0
  241. package/dist/core/language/index.d.ts +6 -0
  242. package/dist/core/language/index.d.ts.map +1 -0
  243. package/dist/core/language/index.js +6 -0
  244. package/dist/core/language/index.js.map +1 -0
  245. package/dist/core/language/interfaces.d.ts +168 -0
  246. package/dist/core/language/interfaces.d.ts.map +1 -0
  247. package/dist/core/language/interfaces.js +37 -0
  248. package/dist/core/language/interfaces.js.map +1 -0
  249. package/dist/core/language/providers/DeepLTranslationProvider.d.ts +16 -0
  250. package/dist/core/language/providers/DeepLTranslationProvider.d.ts.map +1 -0
  251. package/dist/core/language/providers/DeepLTranslationProvider.js +28 -0
  252. package/dist/core/language/providers/DeepLTranslationProvider.js.map +1 -0
  253. package/dist/core/language/providers/OpenAITranslationProvider.d.ts +17 -0
  254. package/dist/core/language/providers/OpenAITranslationProvider.d.ts.map +1 -0
  255. package/dist/core/language/providers/OpenAITranslationProvider.js +34 -0
  256. package/dist/core/language/providers/OpenAITranslationProvider.js.map +1 -0
  257. package/dist/core/language/providers/WhisperDetectionProvider.d.ts +16 -0
  258. package/dist/core/language/providers/WhisperDetectionProvider.d.ts.map +1 -0
  259. package/dist/core/language/providers/WhisperDetectionProvider.js +15 -0
  260. package/dist/core/language/providers/WhisperDetectionProvider.js.map +1 -0
  261. package/dist/core/llm/IPromptEngine.d.ts +627 -0
  262. package/dist/core/llm/IPromptEngine.d.ts.map +1 -0
  263. package/dist/core/llm/IPromptEngine.js +81 -0
  264. package/dist/core/llm/IPromptEngine.js.map +1 -0
  265. package/dist/core/llm/PromptEngine.d.ts +108 -0
  266. package/dist/core/llm/PromptEngine.d.ts.map +1 -0
  267. package/dist/core/llm/PromptEngine.js +872 -0
  268. package/dist/core/llm/PromptEngine.js.map +1 -0
  269. package/dist/core/llm/providers/AIModelProviderManager.d.ts +74 -0
  270. package/dist/core/llm/providers/AIModelProviderManager.d.ts.map +1 -0
  271. package/dist/core/llm/providers/AIModelProviderManager.js +263 -0
  272. package/dist/core/llm/providers/AIModelProviderManager.js.map +1 -0
  273. package/dist/core/llm/providers/IProvider.d.ts +327 -0
  274. package/dist/core/llm/providers/IProvider.d.ts.map +1 -0
  275. package/dist/core/llm/providers/IProvider.js +39 -0
  276. package/dist/core/llm/providers/IProvider.js.map +1 -0
  277. package/dist/core/llm/providers/errors/OllamaProviderError.d.ts +36 -0
  278. package/dist/core/llm/providers/errors/OllamaProviderError.d.ts.map +1 -0
  279. package/dist/core/llm/providers/errors/OllamaProviderError.js +40 -0
  280. package/dist/core/llm/providers/errors/OllamaProviderError.js.map +1 -0
  281. package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts +42 -0
  282. package/dist/core/llm/providers/errors/OpenAIProviderError.d.ts.map +1 -0
  283. package/dist/core/llm/providers/errors/OpenAIProviderError.js +44 -0
  284. package/dist/core/llm/providers/errors/OpenAIProviderError.js.map +1 -0
  285. package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts +39 -0
  286. package/dist/core/llm/providers/errors/OpenRouterProviderError.d.ts.map +1 -0
  287. package/dist/core/llm/providers/errors/OpenRouterProviderError.js +42 -0
  288. package/dist/core/llm/providers/errors/OpenRouterProviderError.js.map +1 -0
  289. package/dist/core/llm/providers/errors/ProviderError.d.ts +37 -0
  290. package/dist/core/llm/providers/errors/ProviderError.d.ts.map +1 -0
  291. package/dist/core/llm/providers/errors/ProviderError.js +36 -0
  292. package/dist/core/llm/providers/errors/ProviderError.js.map +1 -0
  293. package/dist/core/llm/providers/implementations/OllamaProvider.d.ts +80 -0
  294. package/dist/core/llm/providers/implementations/OllamaProvider.d.ts.map +1 -0
  295. package/dist/core/llm/providers/implementations/OllamaProvider.js +473 -0
  296. package/dist/core/llm/providers/implementations/OllamaProvider.js.map +1 -0
  297. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts +160 -0
  298. package/dist/core/llm/providers/implementations/OpenAIProvider.d.ts.map +1 -0
  299. package/dist/core/llm/providers/implementations/OpenAIProvider.js +672 -0
  300. package/dist/core/llm/providers/implementations/OpenAIProvider.js.map +1 -0
  301. package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts +51 -0
  302. package/dist/core/llm/providers/implementations/OpenRouterProvider.d.ts.map +1 -0
  303. package/dist/core/llm/providers/implementations/OpenRouterProvider.js +499 -0
  304. package/dist/core/llm/providers/implementations/OpenRouterProvider.js.map +1 -0
  305. package/dist/core/llm/routing/IModelRouter.d.ts +129 -0
  306. package/dist/core/llm/routing/IModelRouter.d.ts.map +1 -0
  307. package/dist/core/llm/routing/IModelRouter.js +14 -0
  308. package/dist/core/llm/routing/IModelRouter.js.map +1 -0
  309. package/dist/core/llm/routing/ModelRouter.d.ts +157 -0
  310. package/dist/core/llm/routing/ModelRouter.d.ts.map +1 -0
  311. package/dist/core/llm/routing/ModelRouter.js +190 -0
  312. package/dist/core/llm/routing/ModelRouter.js.map +1 -0
  313. package/dist/core/llm/streaming/StreamingBatcher.d.ts +54 -0
  314. package/dist/core/llm/streaming/StreamingBatcher.d.ts.map +1 -0
  315. package/dist/core/llm/streaming/StreamingBatcher.js +173 -0
  316. package/dist/core/llm/streaming/StreamingBatcher.js.map +1 -0
  317. package/dist/core/llm/streaming/StreamingReconstructor.d.ts +69 -0
  318. package/dist/core/llm/streaming/StreamingReconstructor.d.ts.map +1 -0
  319. package/dist/core/llm/streaming/StreamingReconstructor.js +102 -0
  320. package/dist/core/llm/streaming/StreamingReconstructor.js.map +1 -0
  321. package/dist/core/marketplace/IMarketplace.d.ts +500 -0
  322. package/dist/core/marketplace/IMarketplace.d.ts.map +1 -0
  323. package/dist/core/marketplace/IMarketplace.js +10 -0
  324. package/dist/core/marketplace/IMarketplace.js.map +1 -0
  325. package/dist/core/marketplace/Marketplace.d.ts +122 -0
  326. package/dist/core/marketplace/Marketplace.d.ts.map +1 -0
  327. package/dist/core/marketplace/Marketplace.js +591 -0
  328. package/dist/core/marketplace/Marketplace.js.map +1 -0
  329. package/dist/core/marketplace/index.d.ts +8 -0
  330. package/dist/core/marketplace/index.d.ts.map +1 -0
  331. package/dist/core/marketplace/index.js +8 -0
  332. package/dist/core/marketplace/index.js.map +1 -0
  333. package/dist/core/observability/ITracer.d.ts +317 -0
  334. package/dist/core/observability/ITracer.d.ts.map +1 -0
  335. package/dist/core/observability/ITracer.js +55 -0
  336. package/dist/core/observability/ITracer.js.map +1 -0
  337. package/dist/core/observability/Tracer.d.ts +76 -0
  338. package/dist/core/observability/Tracer.d.ts.map +1 -0
  339. package/dist/core/observability/Tracer.js +360 -0
  340. package/dist/core/observability/Tracer.js.map +1 -0
  341. package/dist/core/observability/index.d.ts +9 -0
  342. package/dist/core/observability/index.d.ts.map +1 -0
  343. package/dist/core/observability/index.js +8 -0
  344. package/dist/core/observability/index.js.map +1 -0
  345. package/dist/core/orchestration/AgentOrchestrator.d.ts +243 -0
  346. package/dist/core/orchestration/AgentOrchestrator.d.ts.map +1 -0
  347. package/dist/core/orchestration/AgentOrchestrator.js +648 -0
  348. package/dist/core/orchestration/AgentOrchestrator.js.map +1 -0
  349. package/dist/core/orchestration/IAgentOrchestrator.d.ts +44 -0
  350. package/dist/core/orchestration/IAgentOrchestrator.d.ts.map +1 -0
  351. package/dist/core/orchestration/IAgentOrchestrator.js +4 -0
  352. package/dist/core/orchestration/IAgentOrchestrator.js.map +1 -0
  353. package/dist/core/orchestration/helpers.d.ts +12 -0
  354. package/dist/core/orchestration/helpers.d.ts.map +1 -0
  355. package/dist/core/orchestration/helpers.js +36 -0
  356. package/dist/core/orchestration/helpers.js.map +1 -0
  357. package/dist/core/planning/IPlanningEngine.d.ts +524 -0
  358. package/dist/core/planning/IPlanningEngine.d.ts.map +1 -0
  359. package/dist/core/planning/IPlanningEngine.js +32 -0
  360. package/dist/core/planning/IPlanningEngine.js.map +1 -0
  361. package/dist/core/planning/PlanningEngine.d.ts +161 -0
  362. package/dist/core/planning/PlanningEngine.d.ts.map +1 -0
  363. package/dist/core/planning/PlanningEngine.js +783 -0
  364. package/dist/core/planning/PlanningEngine.js.map +1 -0
  365. package/dist/core/planning/index.d.ts +25 -0
  366. package/dist/core/planning/index.d.ts.map +1 -0
  367. package/dist/core/planning/index.js +25 -0
  368. package/dist/core/planning/index.js.map +1 -0
  369. package/dist/core/sandbox/CodeSandbox.d.ts +86 -0
  370. package/dist/core/sandbox/CodeSandbox.d.ts.map +1 -0
  371. package/dist/core/sandbox/CodeSandbox.js +475 -0
  372. package/dist/core/sandbox/CodeSandbox.js.map +1 -0
  373. package/dist/core/sandbox/ICodeSandbox.d.ts +249 -0
  374. package/dist/core/sandbox/ICodeSandbox.d.ts.map +1 -0
  375. package/dist/core/sandbox/ICodeSandbox.js +24 -0
  376. package/dist/core/sandbox/ICodeSandbox.js.map +1 -0
  377. package/dist/core/sandbox/index.d.ts +9 -0
  378. package/dist/core/sandbox/index.d.ts.map +1 -0
  379. package/dist/core/sandbox/index.js +8 -0
  380. package/dist/core/sandbox/index.js.map +1 -0
  381. package/dist/core/storage/IStorageAdapter.d.ts +483 -0
  382. package/dist/core/storage/IStorageAdapter.d.ts.map +1 -0
  383. package/dist/core/storage/IStorageAdapter.js +19 -0
  384. package/dist/core/storage/IStorageAdapter.js.map +1 -0
  385. package/dist/core/storage/InMemoryStorageAdapter.d.ts +192 -0
  386. package/dist/core/storage/InMemoryStorageAdapter.d.ts.map +1 -0
  387. package/dist/core/storage/InMemoryStorageAdapter.js +343 -0
  388. package/dist/core/storage/InMemoryStorageAdapter.js.map +1 -0
  389. package/dist/core/storage/SqlStorageAdapter.d.ts +262 -0
  390. package/dist/core/storage/SqlStorageAdapter.d.ts.map +1 -0
  391. package/dist/core/storage/SqlStorageAdapter.js +485 -0
  392. package/dist/core/storage/SqlStorageAdapter.js.map +1 -0
  393. package/dist/core/storage/index.d.ts +14 -0
  394. package/dist/core/storage/index.d.ts.map +1 -0
  395. package/dist/core/storage/index.js +14 -0
  396. package/dist/core/storage/index.js.map +1 -0
  397. package/dist/core/streaming/IStreamClient.d.ts +72 -0
  398. package/dist/core/streaming/IStreamClient.d.ts.map +1 -0
  399. package/dist/core/streaming/IStreamClient.js +12 -0
  400. package/dist/core/streaming/IStreamClient.js.map +1 -0
  401. package/dist/core/streaming/StreamingManager.d.ts +242 -0
  402. package/dist/core/streaming/StreamingManager.d.ts.map +1 -0
  403. package/dist/core/streaming/StreamingManager.js +282 -0
  404. package/dist/core/streaming/StreamingManager.js.map +1 -0
  405. package/dist/core/structured/IStructuredOutputManager.d.ts +701 -0
  406. package/dist/core/structured/IStructuredOutputManager.d.ts.map +1 -0
  407. package/dist/core/structured/IStructuredOutputManager.js +74 -0
  408. package/dist/core/structured/IStructuredOutputManager.js.map +1 -0
  409. package/dist/core/structured/StructuredOutputManager.d.ts +140 -0
  410. package/dist/core/structured/StructuredOutputManager.d.ts.map +1 -0
  411. package/dist/core/structured/StructuredOutputManager.js +1015 -0
  412. package/dist/core/structured/StructuredOutputManager.js.map +1 -0
  413. package/dist/core/structured/index.d.ts +34 -0
  414. package/dist/core/structured/index.d.ts.map +1 -0
  415. package/dist/core/structured/index.js +34 -0
  416. package/dist/core/structured/index.js.map +1 -0
  417. package/dist/core/tools/ITool.d.ts +228 -0
  418. package/dist/core/tools/ITool.d.ts.map +1 -0
  419. package/dist/core/tools/ITool.js +11 -0
  420. package/dist/core/tools/ITool.js.map +1 -0
  421. package/dist/core/tools/IToolOrchestrator.d.ts +131 -0
  422. package/dist/core/tools/IToolOrchestrator.d.ts.map +1 -0
  423. package/dist/core/tools/IToolOrchestrator.js +14 -0
  424. package/dist/core/tools/IToolOrchestrator.js.map +1 -0
  425. package/dist/core/tools/ToolExecutor.d.ts +143 -0
  426. package/dist/core/tools/ToolExecutor.d.ts.map +1 -0
  427. package/dist/core/tools/ToolExecutor.js +364 -0
  428. package/dist/core/tools/ToolExecutor.js.map +1 -0
  429. package/dist/core/tools/ToolOrchestrator.d.ts +142 -0
  430. package/dist/core/tools/ToolOrchestrator.d.ts.map +1 -0
  431. package/dist/core/tools/ToolOrchestrator.js +373 -0
  432. package/dist/core/tools/ToolOrchestrator.js.map +1 -0
  433. package/dist/core/tools/permissions/IToolPermissionManager.d.ts +195 -0
  434. package/dist/core/tools/permissions/IToolPermissionManager.d.ts.map +1 -0
  435. package/dist/core/tools/permissions/IToolPermissionManager.js +14 -0
  436. package/dist/core/tools/permissions/IToolPermissionManager.js.map +1 -0
  437. package/dist/core/tools/permissions/ToolPermissionManager.d.ts +203 -0
  438. package/dist/core/tools/permissions/ToolPermissionManager.d.ts.map +1 -0
  439. package/dist/core/tools/permissions/ToolPermissionManager.js +298 -0
  440. package/dist/core/tools/permissions/ToolPermissionManager.js.map +1 -0
  441. package/dist/core/ui/IUIComponent.d.ts +11 -0
  442. package/dist/core/ui/IUIComponent.d.ts.map +1 -0
  443. package/dist/core/ui/IUIComponent.js +2 -0
  444. package/dist/core/ui/IUIComponent.js.map +1 -0
  445. package/dist/core/usage/UsageLedger.d.ts +81 -0
  446. package/dist/core/usage/UsageLedger.d.ts.map +1 -0
  447. package/dist/core/usage/UsageLedger.js +135 -0
  448. package/dist/core/usage/UsageLedger.js.map +1 -0
  449. package/dist/core/workflows/IWorkflowEngine.d.ts +42 -0
  450. package/dist/core/workflows/IWorkflowEngine.d.ts.map +1 -0
  451. package/dist/core/workflows/IWorkflowEngine.js +2 -0
  452. package/dist/core/workflows/IWorkflowEngine.js.map +1 -0
  453. package/dist/core/workflows/WorkflowEngine.d.ts +28 -0
  454. package/dist/core/workflows/WorkflowEngine.d.ts.map +1 -0
  455. package/dist/core/workflows/WorkflowEngine.js +309 -0
  456. package/dist/core/workflows/WorkflowEngine.js.map +1 -0
  457. package/dist/core/workflows/WorkflowTypes.d.ts +180 -0
  458. package/dist/core/workflows/WorkflowTypes.d.ts.map +1 -0
  459. package/dist/core/workflows/WorkflowTypes.js +26 -0
  460. package/dist/core/workflows/WorkflowTypes.js.map +1 -0
  461. package/dist/core/workflows/runtime/WorkflowRuntime.d.ts +70 -0
  462. package/dist/core/workflows/runtime/WorkflowRuntime.d.ts.map +1 -0
  463. package/dist/core/workflows/runtime/WorkflowRuntime.js +566 -0
  464. package/dist/core/workflows/runtime/WorkflowRuntime.js.map +1 -0
  465. package/dist/core/workflows/storage/IWorkflowStore.d.ts +75 -0
  466. package/dist/core/workflows/storage/IWorkflowStore.d.ts.map +1 -0
  467. package/dist/core/workflows/storage/IWorkflowStore.js +2 -0
  468. package/dist/core/workflows/storage/IWorkflowStore.js.map +1 -0
  469. package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts +14 -0
  470. package/dist/core/workflows/storage/InMemoryWorkflowStore.d.ts.map +1 -0
  471. package/dist/core/workflows/storage/InMemoryWorkflowStore.js +130 -0
  472. package/dist/core/workflows/storage/InMemoryWorkflowStore.js.map +1 -0
  473. package/dist/extensions/ExtensionLoader.d.ts +119 -0
  474. package/dist/extensions/ExtensionLoader.d.ts.map +1 -0
  475. package/dist/extensions/ExtensionLoader.js +297 -0
  476. package/dist/extensions/ExtensionLoader.js.map +1 -0
  477. package/dist/extensions/ExtensionManager.d.ts +49 -0
  478. package/dist/extensions/ExtensionManager.d.ts.map +1 -0
  479. package/dist/extensions/ExtensionManager.js +197 -0
  480. package/dist/extensions/ExtensionManager.js.map +1 -0
  481. package/dist/extensions/ExtensionRegistry.d.ts +39 -0
  482. package/dist/extensions/ExtensionRegistry.d.ts.map +1 -0
  483. package/dist/extensions/ExtensionRegistry.js +103 -0
  484. package/dist/extensions/ExtensionRegistry.js.map +1 -0
  485. package/dist/extensions/MultiRegistryLoader.d.ts +61 -0
  486. package/dist/extensions/MultiRegistryLoader.d.ts.map +1 -0
  487. package/dist/extensions/MultiRegistryLoader.js +169 -0
  488. package/dist/extensions/MultiRegistryLoader.js.map +1 -0
  489. package/dist/extensions/RegistryConfig.d.ts +86 -0
  490. package/dist/extensions/RegistryConfig.d.ts.map +1 -0
  491. package/dist/extensions/RegistryConfig.js +99 -0
  492. package/dist/extensions/RegistryConfig.js.map +1 -0
  493. package/dist/extensions/events.d.ts +19 -0
  494. package/dist/extensions/events.d.ts.map +1 -0
  495. package/dist/extensions/events.js +2 -0
  496. package/dist/extensions/events.js.map +1 -0
  497. package/dist/extensions/index.d.ts +9 -0
  498. package/dist/extensions/index.d.ts.map +1 -0
  499. package/dist/extensions/index.js +9 -0
  500. package/dist/extensions/index.js.map +1 -0
  501. package/dist/extensions/manifest.d.ts +52 -0
  502. package/dist/extensions/manifest.d.ts.map +1 -0
  503. package/dist/extensions/manifest.js +2 -0
  504. package/dist/extensions/manifest.js.map +1 -0
  505. package/dist/extensions/types.d.ts +294 -0
  506. package/dist/extensions/types.d.ts.map +1 -0
  507. package/dist/extensions/types.js +12 -0
  508. package/dist/extensions/types.js.map +1 -0
  509. package/dist/index.d.ts +49 -0
  510. package/dist/index.d.ts.map +1 -0
  511. package/dist/index.js +59 -0
  512. package/dist/index.js.map +1 -0
  513. package/dist/logging/ILogger.d.ts +8 -0
  514. package/dist/logging/ILogger.d.ts.map +1 -0
  515. package/dist/logging/ILogger.js +2 -0
  516. package/dist/logging/ILogger.js.map +1 -0
  517. package/dist/logging/PinoLogger.d.ts +12 -0
  518. package/dist/logging/PinoLogger.d.ts.map +1 -0
  519. package/dist/logging/PinoLogger.js +22 -0
  520. package/dist/logging/PinoLogger.js.map +1 -0
  521. package/dist/logging/loggerFactory.d.ts +6 -0
  522. package/dist/logging/loggerFactory.d.ts.map +1 -0
  523. package/dist/logging/loggerFactory.js +14 -0
  524. package/dist/logging/loggerFactory.js.map +1 -0
  525. package/dist/rag/EmbeddingManager.d.ts +81 -0
  526. package/dist/rag/EmbeddingManager.d.ts.map +1 -0
  527. package/dist/rag/EmbeddingManager.js +412 -0
  528. package/dist/rag/EmbeddingManager.js.map +1 -0
  529. package/dist/rag/IEmbeddingManager.d.ts +277 -0
  530. package/dist/rag/IEmbeddingManager.d.ts.map +1 -0
  531. package/dist/rag/IEmbeddingManager.js +19 -0
  532. package/dist/rag/IEmbeddingManager.js.map +1 -0
  533. package/dist/rag/IRetrievalAugmentor.d.ts +208 -0
  534. package/dist/rag/IRetrievalAugmentor.d.ts.map +1 -0
  535. package/dist/rag/IRetrievalAugmentor.js +21 -0
  536. package/dist/rag/IRetrievalAugmentor.js.map +1 -0
  537. package/dist/rag/IVectorStore.d.ts +351 -0
  538. package/dist/rag/IVectorStore.d.ts.map +1 -0
  539. package/dist/rag/IVectorStore.js +15 -0
  540. package/dist/rag/IVectorStore.js.map +1 -0
  541. package/dist/rag/IVectorStoreManager.d.ts +121 -0
  542. package/dist/rag/IVectorStoreManager.d.ts.map +1 -0
  543. package/dist/rag/IVectorStoreManager.js +13 -0
  544. package/dist/rag/IVectorStoreManager.js.map +1 -0
  545. package/dist/rag/RetrievalAugmentor.d.ts +99 -0
  546. package/dist/rag/RetrievalAugmentor.d.ts.map +1 -0
  547. package/dist/rag/RetrievalAugmentor.js +674 -0
  548. package/dist/rag/RetrievalAugmentor.js.map +1 -0
  549. package/dist/rag/VectorStoreManager.d.ts +90 -0
  550. package/dist/rag/VectorStoreManager.d.ts.map +1 -0
  551. package/dist/rag/VectorStoreManager.js +283 -0
  552. package/dist/rag/VectorStoreManager.js.map +1 -0
  553. package/dist/rag/implementations/index.d.ts +9 -0
  554. package/dist/rag/implementations/index.d.ts.map +1 -0
  555. package/dist/rag/implementations/index.js +9 -0
  556. package/dist/rag/implementations/index.js.map +1 -0
  557. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts +132 -0
  558. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.d.ts.map +1 -0
  559. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js +539 -0
  560. package/dist/rag/implementations/vector_stores/InMemoryVectorStore.js.map +1 -0
  561. package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts +265 -0
  562. package/dist/rag/implementations/vector_stores/SqlVectorStore.d.ts.map +1 -0
  563. package/dist/rag/implementations/vector_stores/SqlVectorStore.js +755 -0
  564. package/dist/rag/implementations/vector_stores/SqlVectorStore.js.map +1 -0
  565. package/dist/rag/implementations/vector_stores/index.d.ts +10 -0
  566. package/dist/rag/implementations/vector_stores/index.d.ts.map +1 -0
  567. package/dist/rag/implementations/vector_stores/index.js +12 -0
  568. package/dist/rag/implementations/vector_stores/index.js.map +1 -0
  569. package/dist/rag/index.d.ts +95 -0
  570. package/dist/rag/index.d.ts.map +1 -0
  571. package/dist/rag/index.js +97 -0
  572. package/dist/rag/index.js.map +1 -0
  573. package/dist/services/user_auth/AuthService.d.ts +13 -0
  574. package/dist/services/user_auth/AuthService.d.ts.map +1 -0
  575. package/dist/services/user_auth/AuthService.js +24 -0
  576. package/dist/services/user_auth/AuthService.js.map +1 -0
  577. package/dist/services/user_auth/SubscriptionService.d.ts +14 -0
  578. package/dist/services/user_auth/SubscriptionService.d.ts.map +1 -0
  579. package/dist/services/user_auth/SubscriptionService.js +34 -0
  580. package/dist/services/user_auth/SubscriptionService.js.map +1 -0
  581. package/dist/services/user_auth/types.d.ts +30 -0
  582. package/dist/services/user_auth/types.d.ts.map +1 -0
  583. package/dist/services/user_auth/types.js +2 -0
  584. package/dist/services/user_auth/types.js.map +1 -0
  585. package/dist/stubs/prismaClient.d.ts +35 -0
  586. package/dist/stubs/prismaClient.d.ts.map +1 -0
  587. package/dist/stubs/prismaClient.js +47 -0
  588. package/dist/stubs/prismaClient.js.map +1 -0
  589. package/dist/types/rateLimitTypes.d.ts +70 -0
  590. package/dist/types/rateLimitTypes.d.ts.map +1 -0
  591. package/dist/types/rateLimitTypes.js +55 -0
  592. package/dist/types/rateLimitTypes.js.map +1 -0
  593. package/dist/utils/errors.d.ts +80 -0
  594. package/dist/utils/errors.d.ts.map +1 -0
  595. package/dist/utils/errors.js +201 -0
  596. package/dist/utils/errors.js.map +1 -0
  597. package/dist/utils/uuid.d.ts +11 -0
  598. package/dist/utils/uuid.d.ts.map +1 -0
  599. package/dist/utils/uuid.js +64 -0
  600. package/dist/utils/uuid.js.map +1 -0
  601. package/package.json +84 -0
@@ -0,0 +1,242 @@
1
+ /**
2
+ * @fileoverview Implements the StreamingManager, a core component responsible for
3
+ * managing real-time data streams within AgentOS. It handles the lifecycle of streams,
4
+ * registration of clients to streams, and distribution of data chunks to subscribed clients.
5
+ * This manager is designed for robustness, scalability (conceptual), and clear error handling.
6
+ *
7
+ * @module backend/core/streaming/StreamingManager
8
+ * @see ./IStreamClient.ts For the client contract.
9
+ * @see ../../api/types/AgentOSResponse.ts For the data chunk structure.
10
+ */
11
+ import { AgentOSResponse } from '../../api/types/AgentOSResponse';
12
+ import { IStreamClient, StreamClientId } from './IStreamClient';
13
+ import { GMIError, GMIErrorCode } from '../../utils/errors';
14
+ /**
15
+ * Represents a unique identifier for a data stream.
16
+ * @typedef {string} StreamId
17
+ */
18
+ export type StreamId = string;
19
+ /**
20
+ * Configuration options for the StreamingManager.
21
+ * @interface StreamingManagerConfig
22
+ */
23
+ export interface StreamingManagerConfig {
24
+ /**
25
+ * Maximum number of concurrent active streams allowed.
26
+ * If set to 0 or a negative number, it implies no limit (not recommended for production).
27
+ * @type {number}
28
+ * @default 1000
29
+ */
30
+ maxConcurrentStreams?: number;
31
+ /**
32
+ * Default timeout in milliseconds for a stream if no activity is detected.
33
+ * If set to 0, streams do not time out automatically. (Conceptual, requires active tracking)
34
+ * @type {number}
35
+ * @default 300000 (5 minutes)
36
+ */
37
+ defaultStreamInactivityTimeoutMs?: number;
38
+ /**
39
+ * Maximum number of clients allowed to subscribe to a single stream.
40
+ * If set to 0 or a negative number, it implies no limit.
41
+ * @type {number}
42
+ * @default 10
43
+ */
44
+ maxClientsPerStream?: number;
45
+ /**
46
+ * Optional: Defines the behavior when trying to push a chunk to a client whose `sendChunk` method fails.
47
+ * - 'log_and_continue': Logs the error and continues sending to other clients. (Default)
48
+ * - 'deregister_client': Logs the error, attempts to deregister the failing client, and continues.
49
+ * - 'throw': Throws an error, potentially stopping the push operation for the current chunk to other clients.
50
+ * @type {'log_and_continue' | 'deregister_client' | 'throw'}
51
+ * @default 'log_and_continue'
52
+ */
53
+ onClientSendErrorBehavior?: 'log_and_continue' | 'deregister_client' | 'throw';
54
+ }
55
+ /**
56
+ * Custom error class for errors originating from the StreamingManager.
57
+ * @class StreamError
58
+ * @extends {GMIError}
59
+ */
60
+ export declare class StreamError extends GMIError {
61
+ /**
62
+ * The ID of the stream involved in the error, if applicable.
63
+ * @public
64
+ * @readonly
65
+ * @type {StreamId | undefined}
66
+ */
67
+ readonly streamId?: StreamId;
68
+ /**
69
+ * The ID of the client involved in the error, if applicable.
70
+ * @public
71
+ * @readonly
72
+ * @type {StreamClientId | undefined}
73
+ */
74
+ readonly clientId?: StreamClientId;
75
+ /**
76
+ * Creates an instance of StreamError.
77
+ * @param {string} message - The human-readable error message.
78
+ * @param {GMIErrorCode | string} code - A specific error code (can be from GMIErrorCode or custom).
79
+ * @param {StreamId} [streamId] - The ID of the stream involved.
80
+ * @param {StreamClientId} [clientId] - The ID of the client involved.
81
+ * @param {any} [details] - Optional additional context or the underlying error.
82
+ */
83
+ constructor(message: string, code: GMIErrorCode | string, streamId?: StreamId, clientId?: StreamClientId, details?: any);
84
+ }
85
+ /**
86
+ * @interface IStreamingManager
87
+ * @description Defines the contract for the StreamingManager service.
88
+ * This service is responsible for creating, managing, and terminating data streams,
89
+ * as well as handling client subscriptions and data distribution.
90
+ */
91
+ export interface IStreamingManager {
92
+ /**
93
+ * Initializes the StreamingManager with its configuration.
94
+ * This method must be called successfully before any other operations.
95
+ *
96
+ * @public
97
+ * @async
98
+ * @param {StreamingManagerConfig} config - The configuration for the manager.
99
+ * @returns {Promise<void>} A promise that resolves upon successful initialization.
100
+ * @throws {GMIError} If configuration is invalid or initialization fails.
101
+ */
102
+ initialize(config: StreamingManagerConfig): Promise<void>;
103
+ /**
104
+ * Creates a new data stream and returns its unique ID.
105
+ *
106
+ * @public
107
+ * @param {StreamId} [requestedStreamId] - Optional. If provided, attempts to use this ID.
108
+ * If not provided or if the ID already exists, a new unique ID will be generated.
109
+ * @returns {Promise<StreamId>} A promise resolving to the unique ID of the created stream.
110
+ * @throws {StreamError} If the maximum number of concurrent streams is reached,
111
+ * or if a `requestedStreamId` is provided but already in use (and regeneration is not supported/fails).
112
+ */
113
+ createStream(requestedStreamId?: StreamId): Promise<StreamId>;
114
+ /**
115
+ * Registers a client to a specific stream to receive data chunks.
116
+ *
117
+ * @public
118
+ * @async
119
+ * @param {StreamId} streamId - The ID of the stream to subscribe to.
120
+ * @param {IStreamClient} client - The client instance that implements `IStreamClient`.
121
+ * @returns {Promise<void>} A promise that resolves when the client is successfully registered.
122
+ * @throws {StreamError} If the stream does not exist, if the client is already registered,
123
+ * or if the maximum number of clients for the stream is reached.
124
+ */
125
+ registerClient(streamId: StreamId, client: IStreamClient): Promise<void>;
126
+ /**
127
+ * Deregisters a client from a specific stream.
128
+ * The client will no longer receive data chunks for this stream.
129
+ *
130
+ * @public
131
+ * @async
132
+ * @param {StreamId} streamId - The ID of the stream to unsubscribe from.
133
+ * @param {StreamClientId} clientId - The ID of the client to deregister.
134
+ * @returns {Promise<void>} A promise that resolves when the client is successfully deregistered.
135
+ * @throws {StreamError} If the stream or client does not exist within that stream.
136
+ */
137
+ deregisterClient(streamId: StreamId, clientId: StreamClientId): Promise<void>;
138
+ /**
139
+ * Pushes a data chunk to all clients currently subscribed to the specified stream.
140
+ *
141
+ * @public
142
+ * @async
143
+ * @param {StreamId} streamId - The ID of the stream to push data to.
144
+ * @param {AgentOSResponse} chunk - The data chunk to distribute.
145
+ * @returns {Promise<void>} A promise that resolves when the chunk has been pushed to all
146
+ * active clients of the stream (or attempted, based on `onClientSendErrorBehavior`).
147
+ * @throws {StreamError} If the stream does not exist, or if `onClientSendErrorBehavior` is 'throw'
148
+ * and a client send fails.
149
+ */
150
+ pushChunk(streamId: StreamId, chunk: AgentOSResponse): Promise<void>;
151
+ /**
152
+ * Closes a specific stream. All subscribed clients will be notified and subsequently deregistered.
153
+ * No further data can be pushed to a closed stream.
154
+ *
155
+ * @public
156
+ * @async
157
+ * @param {StreamId} streamId - The ID of the stream to close.
158
+ * @param {string} [reason] - An optional reason for closing the stream.
159
+ * @returns {Promise<void>} A promise that resolves when the stream is closed and clients are notified.
160
+ * @throws {StreamError} If the stream does not exist.
161
+ */
162
+ closeStream(streamId: StreamId, reason?: string): Promise<void>;
163
+ /**
164
+ * Handles an error that occurred on a specific stream.
165
+ * This might involve notifying clients with an error chunk and/or closing the stream.
166
+ *
167
+ * @public
168
+ * @async
169
+ * @param {StreamId} streamId - The ID of the stream where the error occurred.
170
+ * @param {Error} error - The error object.
171
+ * @param {boolean} [terminateStream=true] - If true, the stream will be closed after processing the error.
172
+ * @returns {Promise<void>} A promise that resolves when the error has been handled.
173
+ * @throws {StreamError} If the stream does not exist.
174
+ */
175
+ handleStreamError(streamId: StreamId, error: Error, terminateStream?: boolean): Promise<void>;
176
+ /**
177
+ * Retrieves a list of IDs for all currently active streams.
178
+ *
179
+ * @public
180
+ * @returns {Promise<StreamId[]>} A promise resolving to an array of active stream IDs.
181
+ */
182
+ getActiveStreamIds(): Promise<StreamId[]>;
183
+ /**
184
+ * Retrieves the number of clients currently subscribed to a specific stream.
185
+ *
186
+ * @public
187
+ * @async
188
+ * @param {StreamId} streamId - The ID of the stream.
189
+ * @returns {Promise<number>} A promise resolving to the number of clients.
190
+ * @throws {StreamError} If the stream does not exist.
191
+ */
192
+ getClientCountForStream(streamId: StreamId): Promise<number>;
193
+ /**
194
+ * Gracefully shuts down the StreamingManager, closing all active streams
195
+ * and releasing any resources.
196
+ *
197
+ * @public
198
+ * @async
199
+ * @returns {Promise<void>} A promise that resolves when shutdown is complete.
200
+ */
201
+ shutdown(): Promise<void>;
202
+ }
203
+ /**
204
+ * @class StreamingManager
205
+ * @implements {IStreamingManager}
206
+ * Manages real-time data streams for AgentOS, handling client subscriptions
207
+ * and chunk distribution.
208
+ */
209
+ export declare class StreamingManager implements IStreamingManager {
210
+ private config;
211
+ private activeStreams;
212
+ private isInitialized;
213
+ readonly managerId: string;
214
+ constructor();
215
+ /** @inheritdoc */
216
+ initialize(config: StreamingManagerConfig): Promise<void>;
217
+ /**
218
+ * Ensures the manager has been properly initialized before any operations.
219
+ * @private
220
+ * @throws {StreamError} If the engine is not initialized.
221
+ */
222
+ private ensureInitialized;
223
+ /** @inheritdoc */
224
+ createStream(requestedStreamId?: StreamId): Promise<StreamId>;
225
+ /** @inheritdoc */
226
+ registerClient(streamId: StreamId, client: IStreamClient): Promise<void>;
227
+ /** @inheritdoc */
228
+ deregisterClient(streamId: StreamId, clientId: StreamClientId): Promise<void>;
229
+ /** @inheritdoc */
230
+ pushChunk(streamId: StreamId, chunk: AgentOSResponse): Promise<void>;
231
+ /** @inheritdoc */
232
+ closeStream(streamId: StreamId, reason?: string): Promise<void>;
233
+ /** @inheritdoc */
234
+ handleStreamError(streamId: StreamId, error: Error, terminateStream?: boolean): Promise<void>;
235
+ /** @inheritdoc */
236
+ getActiveStreamIds(): Promise<StreamId[]>;
237
+ /** @inheritdoc */
238
+ getClientCountForStream(streamId: StreamId): Promise<number>;
239
+ /** @inheritdoc */
240
+ shutdown(isReinitializing?: boolean): Promise<void>;
241
+ }
242
+ //# sourceMappingURL=StreamingManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingManager.d.ts","sourceRoot":"","sources":["../../../src/core/streaming/StreamingManager.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAGH,OAAO,EAAE,eAAe,EAA+C,MAAM,iCAAiC,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;OAKG;IACH,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAE1C;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;;;OAOG;IACH,yBAAyB,CAAC,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,OAAO,CAAC;CAChF;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpC;;;;;OAKG;IACH,SAAgB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1C;;;;;;;OAOG;gBAED,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,GAAG,MAAM,EAC3B,QAAQ,CAAC,EAAE,QAAQ,EACnB,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,GAAG;CAQhB;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;OASG;IACH,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D;;;;;;;;;OASG;IACH,YAAY,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9D;;;;;;;;;;OAUG;IACH,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzE;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9E;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE;;;;;;;;;;OAUG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9F;;;;;OAKG;IACH,kBAAkB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1C;;;;;;;;OAQG;IACH,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D;;;;;;;OAOG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAmBD;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAAkB;IACvC,SAAgB,SAAS,EAAE,MAAM,CAAC;;IAOlC,kBAAkB;IACL,UAAU,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtE;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IASzB,kBAAkB;IACL,YAAY,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsC1E,kBAAkB;IACL,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrF,kBAAkB;IACL,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B1F,kBAAkB;IACL,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DjF,kBAAkB;IACL,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5E,kBAAkB;IACL,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChH,kBAAkB;IACL,kBAAkB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKtD,kBAAkB;IACL,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IASzE,kBAAkB;IACL,QAAQ,CAAC,gBAAgB,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAoBxE"}
@@ -0,0 +1,282 @@
1
+ // File: src/core/streaming/StreamingManager.ts
2
+ /**
3
+ * @fileoverview Implements the StreamingManager, a core component responsible for
4
+ * managing real-time data streams within AgentOS. It handles the lifecycle of streams,
5
+ * registration of clients to streams, and distribution of data chunks to subscribed clients.
6
+ * This manager is designed for robustness, scalability (conceptual), and clear error handling.
7
+ *
8
+ * @module backend/core/streaming/StreamingManager
9
+ * @see ./IStreamClient.ts For the client contract.
10
+ * @see ../../api/types/AgentOSResponse.ts For the data chunk structure.
11
+ */
12
+ import { uuidv4 } from '../../utils/uuid.js';
13
+ import { AgentOSResponseChunkType } from '../../api/types/AgentOSResponse.js';
14
+ import { GMIError, GMIErrorCode } from '../../utils/errors.js'; // Corrected path
15
+ /**
16
+ * Custom error class for errors originating from the StreamingManager.
17
+ * @class StreamError
18
+ * @extends {GMIError}
19
+ */
20
+ export class StreamError extends GMIError {
21
+ /**
22
+ * Creates an instance of StreamError.
23
+ * @param {string} message - The human-readable error message.
24
+ * @param {GMIErrorCode | string} code - A specific error code (can be from GMIErrorCode or custom).
25
+ * @param {StreamId} [streamId] - The ID of the stream involved.
26
+ * @param {StreamClientId} [clientId] - The ID of the client involved.
27
+ * @param {any} [details] - Optional additional context or the underlying error.
28
+ */
29
+ constructor(message, code, streamId, clientId, details) {
30
+ super(message, code, details);
31
+ this.name = 'StreamError'; // This is standard for custom errors extending Error
32
+ this.streamId = streamId;
33
+ this.clientId = clientId;
34
+ Object.setPrototypeOf(this, StreamError.prototype);
35
+ }
36
+ }
37
+ /**
38
+ * @class StreamingManager
39
+ * @implements {IStreamingManager}
40
+ * Manages real-time data streams for AgentOS, handling client subscriptions
41
+ * and chunk distribution.
42
+ */
43
+ export class StreamingManager {
44
+ constructor() {
45
+ this.isInitialized = false;
46
+ this.managerId = `streaming-mgr-${uuidv4()}`;
47
+ this.activeStreams = new Map();
48
+ }
49
+ /** @inheritdoc */
50
+ async initialize(config) {
51
+ if (this.isInitialized) {
52
+ console.warn(`StreamingManager (ID: ${this.managerId}) already initialized. Re-initializing.`);
53
+ await this.shutdown(true);
54
+ }
55
+ this.config = Object.freeze({
56
+ maxConcurrentStreams: config.maxConcurrentStreams === undefined || config.maxConcurrentStreams <= 0 ? Infinity : config.maxConcurrentStreams,
57
+ defaultStreamInactivityTimeoutMs: config.defaultStreamInactivityTimeoutMs === undefined ? 300000 : config.defaultStreamInactivityTimeoutMs,
58
+ maxClientsPerStream: config.maxClientsPerStream === undefined || config.maxClientsPerStream <= 0 ? Infinity : config.maxClientsPerStream,
59
+ onClientSendErrorBehavior: config.onClientSendErrorBehavior || 'log_and_continue',
60
+ });
61
+ this.isInitialized = true;
62
+ console.log(`StreamingManager (ID: ${this.managerId}) initialized. Config:`, JSON.stringify(this.config));
63
+ }
64
+ /**
65
+ * Ensures the manager has been properly initialized before any operations.
66
+ * @private
67
+ * @throws {StreamError} If the engine is not initialized.
68
+ */
69
+ ensureInitialized() {
70
+ if (!this.isInitialized) {
71
+ throw new StreamError(`StreamingManager (ID: ${this.managerId}) is not initialized. Call initialize() first.`, GMIErrorCode.NOT_INITIALIZED);
72
+ }
73
+ }
74
+ /** @inheritdoc */
75
+ async createStream(requestedStreamId) {
76
+ this.ensureInitialized();
77
+ if (this.activeStreams.size >= this.config.maxConcurrentStreams) {
78
+ throw new StreamError('Maximum number of concurrent streams reached.', GMIErrorCode.RATE_LIMIT_EXCEEDED, undefined, undefined, { maxStreams: this.config.maxConcurrentStreams });
79
+ }
80
+ let streamId = requestedStreamId || uuidv4();
81
+ if (this.activeStreams.has(streamId)) {
82
+ if (requestedStreamId) {
83
+ throw new StreamError(`Stream with requested ID '${streamId}' already exists.`, GMIErrorCode.RESOURCE_ALREADY_EXISTS, streamId);
84
+ }
85
+ streamId = uuidv4();
86
+ }
87
+ const now = Date.now();
88
+ const newStream = {
89
+ id: streamId,
90
+ clients: new Map(),
91
+ createdAt: now,
92
+ lastActivityAt: now,
93
+ metadata: {}, // Initialize empty metadata
94
+ };
95
+ this.activeStreams.set(streamId, newStream);
96
+ console.log(`StreamingManager (ID: ${this.managerId}): Stream '${streamId}' created.`);
97
+ return streamId;
98
+ }
99
+ /** @inheritdoc */
100
+ async registerClient(streamId, client) {
101
+ this.ensureInitialized();
102
+ const stream = this.activeStreams.get(streamId);
103
+ if (!stream) {
104
+ throw new StreamError(`Stream with ID '${streamId}' not found. Cannot register client.`, GMIErrorCode.RESOURCE_NOT_FOUND, streamId);
105
+ }
106
+ if (stream.clients.has(client.id)) {
107
+ console.warn(`StreamingManager (ID: ${this.managerId}): Client '${client.id}' is already registered to stream '${streamId}'. Ignoring.`);
108
+ return;
109
+ }
110
+ if (stream.clients.size >= this.config.maxClientsPerStream) {
111
+ throw new StreamError(`Maximum number of clients reached for stream '${streamId}'.`, GMIErrorCode.RATE_LIMIT_EXCEEDED, streamId, client.id, { maxClients: this.config.maxClientsPerStream });
112
+ }
113
+ stream.clients.set(client.id, client);
114
+ stream.lastActivityAt = Date.now();
115
+ console.log(`StreamingManager (ID: ${this.managerId}): Client '${client.id}' registered to stream '${streamId}'. Total clients: ${stream.clients.size}.`);
116
+ }
117
+ /** @inheritdoc */
118
+ async deregisterClient(streamId, clientId) {
119
+ this.ensureInitialized();
120
+ const stream = this.activeStreams.get(streamId);
121
+ if (!stream) {
122
+ console.warn(`StreamingManager (ID: ${this.managerId}): Stream '${streamId}' not found during deregisterClient for client '${clientId}'. Client is effectively deregistered.`);
123
+ return;
124
+ }
125
+ if (!stream.clients.has(clientId)) {
126
+ console.warn(`StreamingManager (ID: ${this.managerId}): Client '${clientId}' not found in stream '${streamId}' during deregistration attempt.`);
127
+ return;
128
+ }
129
+ const clientInstance = stream.clients.get(clientId);
130
+ stream.clients.delete(clientId);
131
+ stream.lastActivityAt = Date.now();
132
+ console.log(`StreamingManager (ID: ${this.managerId}): Client '${clientId}' deregistered from stream '${streamId}'. Remaining clients: ${stream.clients.size}.`);
133
+ if (clientInstance?.close && typeof clientInstance.close === 'function') {
134
+ try {
135
+ await clientInstance.close('Deregistered by StreamingManager.');
136
+ }
137
+ catch (closeError) {
138
+ console.error(`StreamingManager (ID: ${this.managerId}): Error closing client '${clientId}' during deregistration: ${closeError.message}`, closeError);
139
+ }
140
+ }
141
+ }
142
+ /** @inheritdoc */
143
+ async pushChunk(streamId, chunk) {
144
+ this.ensureInitialized();
145
+ const stream = this.activeStreams.get(streamId);
146
+ if (!stream) {
147
+ console.warn(`StreamingManager (ID: ${this.managerId}): Attempted to push chunk to closed/non-existent stream '${streamId}'. Chunk type=${chunk.type}.`);
148
+ return;
149
+ }
150
+ stream.lastActivityAt = Date.now();
151
+ // Update stream metadata if chunk contains relevant info (e.g., GMI instance ID)
152
+ if (chunk.gmiInstanceId && stream.metadata && !stream.metadata.gmiInstanceId) {
153
+ stream.metadata.gmiInstanceId = chunk.gmiInstanceId;
154
+ }
155
+ if (chunk.personaId && stream.metadata && !stream.metadata.personaId) {
156
+ stream.metadata.personaId = chunk.personaId;
157
+ }
158
+ const deliveryPromises = [];
159
+ const failedClientIds = [];
160
+ for (const [clientId, client] of stream.clients.entries()) {
161
+ if (client.isActive()) {
162
+ const sendPromise = client.sendChunk(chunk)
163
+ .catch(async (error) => {
164
+ console.error(`StreamingManager (ID: ${this.managerId}): Failed to send chunk to client '${clientId}' on stream '${streamId}'. Behavior: '${this.config.onClientSendErrorBehavior}'. Error: ${error.message}`, error);
165
+ failedClientIds.push(clientId);
166
+ if (this.config.onClientSendErrorBehavior === 'throw') {
167
+ throw new StreamError(`Failed to send chunk to client '${clientId}'. Original error: ${error.message}`, GMIErrorCode.STREAM_ERROR, streamId, clientId, error);
168
+ }
169
+ });
170
+ deliveryPromises.push(sendPromise);
171
+ }
172
+ else {
173
+ console.warn(`StreamingManager (ID: ${this.managerId}): Client '${clientId}' on stream '${streamId}' is inactive. Marking for potential deregistration.`);
174
+ failedClientIds.push(clientId);
175
+ }
176
+ }
177
+ await Promise.allSettled(deliveryPromises);
178
+ if ((this.config.onClientSendErrorBehavior === 'deregister_client' || this.config.onClientSendErrorBehavior === 'log_and_continue') && failedClientIds.length > 0) {
179
+ for (const clientId of failedClientIds) {
180
+ if (stream.clients.has(clientId)) {
181
+ console.log(`StreamingManager (ID: ${this.managerId}): Deregistering client '${clientId}' from stream '${streamId}' due to send error/inactivity.`);
182
+ await this.deregisterClient(streamId, clientId).catch(deregError => {
183
+ console.error(`StreamingManager (ID: ${this.managerId}): Error auto-deregistering client '${clientId}': ${deregError.message}`, deregError);
184
+ });
185
+ }
186
+ }
187
+ }
188
+ }
189
+ /** @inheritdoc */
190
+ async closeStream(streamId, reason) {
191
+ this.ensureInitialized();
192
+ const stream = this.activeStreams.get(streamId);
193
+ if (!stream) {
194
+ console.warn(`StreamingManager (ID: ${this.managerId}): Attempted to close non-existent stream '${streamId}'.`);
195
+ return;
196
+ }
197
+ console.log(`StreamingManager (ID: ${this.managerId}): Closing stream '${streamId}'. Reason: ${reason || 'N/A'}. Notifying ${stream.clients.size} clients.`);
198
+ const clientNotificationPromises = [];
199
+ for (const client of stream.clients.values()) {
200
+ clientNotificationPromises.push(client.notifyStreamClosed(reason)
201
+ .catch(error => console.error(`StreamingManager (ID: ${this.managerId}): Error notifying client '${client.id}' about stream '${streamId}' closure: ${error.message}`, error)));
202
+ if (client.close && typeof client.close === 'function') {
203
+ clientNotificationPromises.push(client.close(`Stream '${streamId}' closed: ${reason || 'No reason provided.'}`)
204
+ .catch(closeError => console.error(`StreamingManager (ID: ${this.managerId}): Error closing client connection '${client.id}' for stream '${streamId}': ${closeError.message}`, closeError)));
205
+ }
206
+ }
207
+ await Promise.allSettled(clientNotificationPromises);
208
+ this.activeStreams.delete(streamId);
209
+ console.log(`StreamingManager (ID: ${this.managerId}): Stream '${streamId}' and its client references removed.`);
210
+ }
211
+ /** @inheritdoc */
212
+ async handleStreamError(streamId, error, terminateStream = true) {
213
+ this.ensureInitialized();
214
+ const stream = this.activeStreams.get(streamId);
215
+ if (!stream) {
216
+ console.error(`StreamingManager (ID: ${this.managerId}): Received error for non-existent stream '${streamId}'. Error: ${error.message}`, error);
217
+ return;
218
+ }
219
+ console.error(`StreamingManager (ID: ${this.managerId}): Handling error on stream '${streamId}'. Error: ${error.message}. Terminate: ${terminateStream}`, error);
220
+ const errorChunk = {
221
+ type: AgentOSResponseChunkType.ERROR,
222
+ streamId: streamId,
223
+ gmiInstanceId: stream.metadata?.gmiInstanceId || 'unknown_gmi',
224
+ personaId: stream.metadata?.personaId || 'unknown_persona',
225
+ isFinal: true,
226
+ timestamp: new Date().toISOString(),
227
+ // Accessing error.code is fine if error is GMIError, but not if it's a base Error.
228
+ // The type guard correctly handles this.
229
+ code: (error instanceof GMIError) ? error.code : GMIErrorCode.STREAM_ERROR,
230
+ message: error.message,
231
+ // Accessing error.details is fine if error is GMIError.
232
+ // The type guard handles this. The fallback for details for a generic Error is also fine.
233
+ details: (error instanceof GMIError) ? error.details : { name: error.name, stack: error.stack },
234
+ };
235
+ try {
236
+ await this.pushChunk(streamId, errorChunk);
237
+ }
238
+ catch (pushError) {
239
+ console.error(`StreamingManager (ID: ${this.managerId}): Failed to push error chunk to clients of stream '${streamId}'. Push error: ${pushError.message}`, pushError);
240
+ }
241
+ if (terminateStream) {
242
+ await this.closeStream(streamId, `Stream terminated due to error: ${error.message}`);
243
+ }
244
+ }
245
+ /** @inheritdoc */
246
+ async getActiveStreamIds() {
247
+ this.ensureInitialized();
248
+ return Array.from(this.activeStreams.keys());
249
+ }
250
+ /** @inheritdoc */
251
+ async getClientCountForStream(streamId) {
252
+ this.ensureInitialized();
253
+ const stream = this.activeStreams.get(streamId);
254
+ if (!stream) {
255
+ throw new StreamError(`Stream with ID '${streamId}' not found.`, GMIErrorCode.RESOURCE_NOT_FOUND, streamId);
256
+ }
257
+ return stream.clients.size;
258
+ }
259
+ /** @inheritdoc */
260
+ async shutdown(isReinitializing = false) {
261
+ if (!this.isInitialized && !isReinitializing) {
262
+ console.warn(`StreamingManager (ID: ${this.managerId}) shutdown called but was not initialized or already shut down.`);
263
+ return;
264
+ }
265
+ console.log(`StreamingManager (ID: ${this.managerId}): Shutting down... Closing ${this.activeStreams.size} active streams.`);
266
+ const streamIdsToClose = Array.from(this.activeStreams.keys());
267
+ for (const streamId of streamIdsToClose) {
268
+ try {
269
+ await this.closeStream(streamId, 'StreamingManager is shutting down.');
270
+ }
271
+ catch (error) {
272
+ console.error(`StreamingManager (ID: ${this.managerId}): Error closing stream '${streamId}' during shutdown: ${error.message}`, error);
273
+ }
274
+ }
275
+ this.activeStreams.clear();
276
+ if (!isReinitializing) {
277
+ this.isInitialized = false;
278
+ }
279
+ console.log(`StreamingManager (ID: ${this.managerId}): Shutdown complete. All streams closed and cache cleared.`);
280
+ }
281
+ }
282
+ //# sourceMappingURL=StreamingManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingManager.js","sourceRoot":"","sources":["../../../src/core/streaming/StreamingManager.ts"],"names":[],"mappings":"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"}