@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,298 @@
1
+ // File: backend/agentos/core/tools/permissions/ToolPermissionManager.ts
2
+ /**
3
+ * @file ToolPermissionManager.ts
4
+ * @module backend/agentos/core/tools/permissions/ToolPermissionManager
5
+ * @version 1.2.1
6
+ *
7
+ * @description
8
+ * This module implements the `IToolPermissionManager` interface, providing a robust and
9
+ * configurable system for managing permissions related to tool execution within the AgentOS ecosystem.
10
+ * The `ToolPermissionManager` is a critical component for enforcing authorization policies,
11
+ * evaluating requests against Persona capabilities, user subscription features (via `ISubscriptionService`),
12
+ * and any other defined contextual rules. Its design emphasizes clarity, extensibility, and
13
+ * adherence to SOTA TypeScript practices.
14
+ *
15
+ * Key Responsibilities:
16
+ * - Initialization with a detailed configuration (`ToolPermissionManagerConfig`) and essential
17
+ * dependent services such as `IAuthService` and `ISubscriptionService`.
18
+ * - Authoritatively checking if a tool execution is permitted based on a comprehensive
19
+ * `PermissionCheckContext`, which includes the tool in question, the invoking Persona's
20
+ * profile, and the end-user's context.
21
+ * - Verifying that the invoking Persona possesses all `requiredCapabilities` specified by the tool,
22
+ * if `strictCapabilityChecking` is enabled.
23
+ * - Interacting with the `ISubscriptionService` to determine if the user's current subscription
24
+ * tier grants access to specific features that may be prerequisites for using certain tools.
25
+ * - Providing clear, actionable reasons and detailed metadata for all permission decisions,
26
+ * aiding in debugging, auditing, and user feedback.
27
+ * - Centralizing tool access logic to enhance security and maintainability across the platform.
28
+ * - Offering configurable logging for permission checks via `logToolCalls` in its configuration.
29
+ *
30
+ * Architectural Tenets Applied:
31
+ * - Interface-Driven Design: Implements `IToolPermissionManager`.
32
+ * - Dependency Injection: `IAuthService` and `ISubscriptionService` are injected.
33
+ * - Comprehensive JSDoc: All public and significant private members are documented.
34
+ * - Robust Error Handling: Uses standardized `GMIError` and `GMIErrorCode`.
35
+ * - Configuration Management: Behavior is driven by `ToolPermissionManagerConfig`.
36
+ * - Strict Type Safety: Leverages TypeScript's type system to prevent common errors.
37
+ *
38
+ * @see {@link ./IToolPermissionManager.ts} for the interface definition and related types (including `FeatureFlag` and `ToolPermissionManagerConfig`).
39
+ * @see {@link ../ITool.ts} for `ITool` and `ToolDefinition` which include `requiredCapabilities`.
40
+ * @see {@link ../../../cognitive_substrate/IGMI.ts} for `UserContext` definition.
41
+ * @see {@link ../../../../services/user_auth/SubscriptionService.ts} for `ISubscriptionService` and `ISubscriptionTier`.
42
+ * @see {@link @framers/agentos/utils/errors.ts} for `GMIError` and `GMIErrorCode`.
43
+ */
44
+ import { GMIError, GMIErrorCode, createGMIErrorFromError } from '../../../utils/errors.js';
45
+ import { uuidv4 } from '../../../utils/uuid.js';
46
+ /**
47
+ * @class ToolPermissionManager
48
+ * @implements {IToolPermissionManager}
49
+ * @description
50
+ * Manages and enforces permissions for tool usage within the AgentOS ecosystem.
51
+ * It evaluates tool execution requests against configured policies, Persona capabilities,
52
+ * and user subscription entitlements to determine authorization. This class provides a
53
+ * centralized point of control for tool access, enhancing security and feature gating
54
+ * across the platform.
55
+ */
56
+ export class ToolPermissionManager {
57
+ /**
58
+ * Constructs a `ToolPermissionManager` instance.
59
+ * The instance is not fully operational until the `initialize` method is called
60
+ * with the necessary configuration and optional service dependencies. This ensures
61
+ * that the manager always starts in a predictable, uninitialized state.
62
+ */
63
+ constructor() {
64
+ /**
65
+ * Flag indicating if the manager has been successfully initialized.
66
+ * Operations that depend on configuration or services are blocked until initialization is complete,
67
+ * ensuring the manager operates in a valid state.
68
+ * @private
69
+ * @type {boolean}
70
+ */
71
+ this.isInitialized = false;
72
+ this.managerId = `tpm-${uuidv4()}`;
73
+ }
74
+ /**
75
+ * Initializes the `ToolPermissionManager` with its configuration and dependent services.
76
+ * This method must be called and successfully awaited before any permission checks can be performed.
77
+ * It establishes the manager's operational parameters and links it to essential external services
78
+ * like authentication and subscription management if they are provided, ensuring all dependencies
79
+ * are ready for use.
80
+ *
81
+ * @public
82
+ * @async
83
+ * @param {ToolPermissionManagerConfig} config - The configuration object that defines how
84
+ * tool permissions are to be evaluated (e.g., strictness of capability checks,
85
+ * tool-to-feature mappings, logging verbosity). Must not be null or undefined.
86
+ * @param {IAuthService} [authService] - Optional. An instance of the authentication service,
87
+ * conforming to the `IAuthService` interface. If provided, it can be used for advanced,
88
+ * identity-based permission rules not covered by `UserContext` alone.
89
+ * @param {ISubscriptionService} [subscriptionService] - Optional. An instance of the subscription service,
90
+ * conforming to the `ISubscriptionService` interface. If provided, it's used to check if a user's
91
+ * subscription entitles them to use specific tools based on feature flags.
92
+ * @returns {Promise<void>} A promise that resolves when the manager is fully initialized and ready
93
+ * to process permission requests.
94
+ * @throws {GMIError} If the provided `config` is null or undefined, a `GMIError` with
95
+ * `GMIErrorCode.CONFIGURATION_ERROR` is thrown, preventing initialization with invalid parameters.
96
+ */
97
+ async initialize(config, authService, subscriptionService) {
98
+ if (this.isInitialized) {
99
+ console.warn(`ToolPermissionManager (ID: ${this.managerId}): Attempting to re-initialize an already initialized instance. The current configuration will be replaced. This may affect ongoing operations if not handled carefully at the application level.`);
100
+ }
101
+ if (!config) {
102
+ throw new GMIError('ToolPermissionManagerConfig cannot be null or undefined during initialization.', GMIErrorCode.CONFIGURATION_ERROR, { managerId: this.managerId, detail: 'Configuration object is missing.' });
103
+ }
104
+ this.config = Object.freeze({
105
+ strictCapabilityChecking: config.strictCapabilityChecking ?? true,
106
+ toolToSubscriptionFeatures: config.toolToSubscriptionFeatures || {},
107
+ logToolCalls: config.logToolCalls ?? false, // Default for logToolCalls
108
+ ...config, // Spread last to allow overrides from config object
109
+ });
110
+ this.authService = authService;
111
+ this.subscriptionService = subscriptionService;
112
+ if (Object.keys(this.config.toolToSubscriptionFeatures).length > 0 && !this.subscriptionService) {
113
+ console.warn(`ToolPermissionManager (ID: ${this.managerId}): WARNING - 'toolToSubscriptionFeatures' are configured, but no ISubscriptionService instance was provided. Subscription-based tool access checks will default to denial for tools requiring features. This might be a deployment or configuration oversight.`);
114
+ }
115
+ this.isInitialized = true;
116
+ console.log(`ToolPermissionManager (ID: ${this.managerId}) initialized successfully. Strict capability checking: ${this.config.strictCapabilityChecking}. Logging tool calls: ${this.config.logToolCalls}. Mapped tools to features: ${Object.keys(this.config.toolToSubscriptionFeatures).length}.`);
117
+ }
118
+ /**
119
+ * Ensures that the permission manager has been properly initialized before attempting
120
+ * to perform any operations that rely on its configuration or injected services.
121
+ * This is a critical check to prevent runtime errors due to an unconfigured state.
122
+ *
123
+ * @private
124
+ * @throws {GMIError} If the manager is not initialized, an error with
125
+ * `GMIErrorCode.NOT_INITIALIZED` is thrown, detailing that an operation was
126
+ * attempted on an uninitialized manager.
127
+ */
128
+ ensureInitialized() {
129
+ if (!this.isInitialized) {
130
+ throw new GMIError(`ToolPermissionManager (ID: ${this.managerId}) is not initialized. Operations cannot be performed until initialize() is called with a valid configuration.`, GMIErrorCode.NOT_INITIALIZED, { component: 'ToolPermissionManager', managerId: this.managerId, attemptedOperationRequiresInitialization: true });
131
+ }
132
+ }
133
+ /**
134
+ * Checks if a Persona possesses all capabilities explicitly required by a tool.
135
+ * This is a fundamental building block for the overall permission decision in `isExecutionAllowed`.
136
+ * An empty or undefined `toolRequiredCapabilities` array means the tool has no specific capability prerequisites.
137
+ *
138
+ * @public
139
+ * @param {string[]} personaCapabilities - An array of capability strings (e.g., "filesystem:read", "api:weather")
140
+ * currently possessed by the Persona. It's expected these are valid, non-empty strings.
141
+ * @param {string[] | undefined} toolRequiredCapabilities - An array of capability strings defined by the tool
142
+ * as prerequisites for its execution. If `undefined` or empty, the tool is considered to have no
143
+ * specific capability requirements, and this check will pass by default.
144
+ * @returns {boolean} `true` if the Persona possesses all capabilities required by the tool,
145
+ * or if the tool requires no specific capabilities. Returns `false` if any required capability is missing,
146
+ * or if the Persona has no capabilities listed when some are required.
147
+ */
148
+ hasRequiredCapabilities(personaCapabilities, toolRequiredCapabilities) {
149
+ this.ensureInitialized();
150
+ if (!toolRequiredCapabilities || toolRequiredCapabilities.length === 0) {
151
+ return true;
152
+ }
153
+ if (!personaCapabilities || personaCapabilities.length === 0) {
154
+ return false;
155
+ }
156
+ const personaCapabilitiesSet = new Set(personaCapabilities.filter(cap => typeof cap === 'string' && cap.trim() !== ''));
157
+ const validToolRequiredCaps = toolRequiredCapabilities.filter(cap => typeof cap === 'string' && cap.trim() !== '');
158
+ for (const requiredCap of validToolRequiredCaps) {
159
+ if (!personaCapabilitiesSet.has(requiredCap)) {
160
+ return false;
161
+ }
162
+ }
163
+ return true;
164
+ }
165
+ /**
166
+ * Retrieves the list of `FeatureFlag`s that are configured as being required for a specific tool.
167
+ * These feature flags typically map to user subscription tiers or special entitlements.
168
+ * The information is sourced directly from the `toolToSubscriptionFeatures` mapping
169
+ * provided in the manager's runtime configuration.
170
+ *
171
+ * @public
172
+ * @param {string} toolIdOrName - The unique ID (`ITool.id`) or functional name (`ITool.name`) of the tool.
173
+ * The manager will attempt to find a mapping using this identifier. Using `tool.id` is generally preferred
174
+ * for more stable mappings if tool names might change or be overloaded.
175
+ * @returns {FeatureFlag[] | undefined} An array of `FeatureFlag` objects (each with a `flag` string
176
+ * and optional `description`) required for the tool. Returns `undefined` if no specific features
177
+ * are mapped as required for this tool in the current configuration.
178
+ */
179
+ getRequiredFeaturesForTool(toolIdOrName) {
180
+ this.ensureInitialized();
181
+ return this.config.toolToSubscriptionFeatures?.[toolIdOrName];
182
+ }
183
+ /**
184
+ * Checks if a user's current subscription grants them access to the specific features
185
+ * required by a particular tool. This method relies on an injected `ISubscriptionService`
186
+ * to fetch user tier information and validate feature entitlements.
187
+ *
188
+ * @public
189
+ * @async
190
+ * @param {string} userId - The ID of the user whose subscription entitlements are being verified.
191
+ * @param {string} toolIdOrName - The unique ID (`ITool.id`) or functional name (`ITool.name`) of the tool.
192
+ * This identifier is used to look up any feature flag prerequisites from the manager's configuration.
193
+ * @returns {Promise<{isAllowed: boolean, missingFeatures?: FeatureFlag[], reason?: string}>}
194
+ * An object detailing the outcome of the subscription check.
195
+ * @throws {GMIError} If critical services are misconfigured or if interaction with `ISubscriptionService` fails.
196
+ */
197
+ async checkToolSubscriptionAccess(userId, toolIdOrName) {
198
+ this.ensureInitialized();
199
+ const requiredFeatureFlags = this.getRequiredFeaturesForTool(toolIdOrName);
200
+ if (!requiredFeatureFlags || requiredFeatureFlags.length === 0) {
201
+ return { isAllowed: true, reason: `Tool '${toolIdOrName}' does not require specific subscription features.` };
202
+ }
203
+ if (!this.subscriptionService) {
204
+ const reason = `Tool '${toolIdOrName}' requires subscription features [${requiredFeatureFlags.map(f => f.flag).join(', ')}], but ISubscriptionService is not configured. To enable subscription-based access control, inject a subscription service via AgentOSConfig or use @framers/agentos-extensions/auth. Defaulting to ALLOW.`;
205
+ console.warn(`ToolPermissionManager (ID: ${this.managerId}, User: ${userId}): ${reason}`);
206
+ // Default to allowing access when no subscription service configured
207
+ return { isAllowed: true, reason: `No subscription service configured - access allowed by default` };
208
+ }
209
+ try {
210
+ const userTier = (this.subscriptionService.getUserSubscriptionTier
211
+ ? await this.subscriptionService.getUserSubscriptionTier(userId)
212
+ : await this.subscriptionService.getUserSubscription(userId));
213
+ if (!userTier) {
214
+ const reason = `User (ID: ${userId}) does not have an identifiable or active subscription tier. Access to tool '${toolIdOrName}' requiring features [${requiredFeatureFlags.map(f => f.flag).join(', ')}] is denied.`;
215
+ return { isAllowed: false, missingFeatures: requiredFeatureFlags, reason };
216
+ }
217
+ const userTierFeatureStrings = new Set(userTier.features || []);
218
+ const missingFeaturesAccumulator = [];
219
+ for (const requiredFeature of requiredFeatureFlags) {
220
+ if (!userTierFeatureStrings.has(requiredFeature.flag)) {
221
+ missingFeaturesAccumulator.push(requiredFeature);
222
+ }
223
+ }
224
+ if (missingFeaturesAccumulator.length > 0) {
225
+ const reason = `User (ID: ${userId}) lacks required subscription features for tool '${toolIdOrName}': [${missingFeaturesAccumulator.map(f => `'${f.flag}'`).join(', ')}]. Current tier: '${userTier.name}'.`;
226
+ return { isAllowed: false, missingFeatures: missingFeaturesAccumulator, reason };
227
+ }
228
+ return { isAllowed: true, reason: `User (ID: ${userId}) possesses all required subscription features for tool '${toolIdOrName}' via tier '${userTier.name}'.` };
229
+ }
230
+ catch (error) {
231
+ const wrappedError = createGMIErrorFromError(error, GMIErrorCode.SUBSCRIPTION_ERROR, { userId, toolIdOrName, serviceCalled: 'ISubscriptionService.getUserSubscriptionTier' }, `An error occurred while checking subscription features for tool '${toolIdOrName}'.`, this.managerId);
232
+ console.error(`ToolPermissionManager (ID: ${this.managerId}): ${wrappedError.message}`, wrappedError.toJSON());
233
+ throw wrappedError;
234
+ }
235
+ }
236
+ /**
237
+ * Determines if a tool execution is permitted based on the comprehensive provided context.
238
+ * This is the primary method for authorizing tool calls.
239
+ *
240
+ * @public
241
+ * @async
242
+ * @param {PermissionCheckContext} context - The context for the permission check.
243
+ * @returns {Promise<PermissionCheckResult>} A promise resolving to a `PermissionCheckResult`.
244
+ * @throws {GMIError} If the manager is not initialized or if an unrecoverable error occurs.
245
+ */
246
+ async isExecutionAllowed(context) {
247
+ this.ensureInitialized();
248
+ const { tool, personaId, personaCapabilities, userContext, gmiId } = context;
249
+ const logPreamble = `ToolPermissionManager (ID: ${this.managerId}, GMI: ${gmiId || 'N/A'}, Persona: ${personaId}, User: ${userContext.userId}, Tool: ${tool.name} [ID: ${tool.id}])`;
250
+ if (this.config.strictCapabilityChecking) {
251
+ if (!this.hasRequiredCapabilities(personaCapabilities, tool.requiredCapabilities)) {
252
+ const missingCaps = tool.requiredCapabilities?.filter(rc => !personaCapabilities.includes(rc)) || [];
253
+ const reason = `Permission Denied: Persona (ID: '${personaId}') lacks required capabilities for tool '${tool.name}'. Missing: [${missingCaps.join(', ')}]. Required: [${tool.requiredCapabilities?.join(', ')}].`;
254
+ if (this.config.logToolCalls) {
255
+ console.warn(`${logPreamble}: Strict capability check FAILED. ${reason}`);
256
+ }
257
+ return {
258
+ isAllowed: false,
259
+ reason,
260
+ details: { checkType: "personaCapabilities", required: tool.requiredCapabilities, possessed: personaCapabilities, missing: missingCaps },
261
+ };
262
+ }
263
+ if (this.config.logToolCalls) {
264
+ console.info(`${logPreamble}: Persona capability check PASSED.`);
265
+ }
266
+ }
267
+ else {
268
+ if (this.config.logToolCalls) {
269
+ console.warn(`${logPreamble}: Strict capability checking is DISABLED by configuration. Persona capability validation for tool '${tool.name}' was skipped.`);
270
+ }
271
+ }
272
+ const toolIdentifierForFeatureLookup = tool.id || tool.name;
273
+ const requiredFeatures = this.getRequiredFeaturesForTool(toolIdentifierForFeatureLookup);
274
+ if (requiredFeatures && requiredFeatures.length > 0) {
275
+ const subscriptionAccessResult = await this.checkToolSubscriptionAccess(userContext.userId, toolIdentifierForFeatureLookup);
276
+ if (!subscriptionAccessResult.isAllowed) {
277
+ const reason = subscriptionAccessResult.reason || `User (ID: '${userContext.userId}') subscription does not grant access to tool '${tool.name}'.`;
278
+ if (this.config.logToolCalls) {
279
+ console.warn(`${logPreamble}: User subscription feature check FAILED. ${reason}`, subscriptionAccessResult.missingFeatures);
280
+ }
281
+ return {
282
+ isAllowed: false,
283
+ reason,
284
+ details: { checkType: "userSubscriptionFeatures", requiredFeatures: requiredFeatures.map(f => f.flag), missingFeatures: subscriptionAccessResult.missingFeatures?.map(f => f.flag), toolIdentifier: toolIdentifierForFeatureLookup }
285
+ };
286
+ }
287
+ if (this.config.logToolCalls) {
288
+ console.info(`${logPreamble}: User subscription feature check PASSED.`);
289
+ }
290
+ }
291
+ const successReason = `Execution of tool '${tool.name}' (ID: ${tool.id}) is permitted. All configured permission checks passed.`;
292
+ if (this.config.logToolCalls) {
293
+ console.log(`${logPreamble}: All permission checks PASSED. ${successReason}`);
294
+ }
295
+ return { isAllowed: true, reason: successReason };
296
+ }
297
+ }
298
+ //# sourceMappingURL=ToolPermissionManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolPermissionManager.js","sourceRoot":"","sources":["../../../../src/core/tools/permissions/ToolPermissionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Minimal UI component spec placeholder. Concrete UI frameworks can extend this
3
+ * interface to render tool/agent output in custom shells.
4
+ */
5
+ export interface UIComponentSpecification {
6
+ id: string;
7
+ type: string;
8
+ data: Record<string, unknown>;
9
+ metadata?: Record<string, unknown>;
10
+ }
11
+ //# sourceMappingURL=IUIComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IUIComponent.d.ts","sourceRoot":"","sources":["../../../src/core/ui/IUIComponent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IUIComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IUIComponent.js","sourceRoot":"","sources":["../../../src/core/ui/IUIComponent.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @fileoverview Aggregates model usage (tokens, cost) across sessions, personas, and providers.
3
+ * Serves as a foundational accounting component for later billing, analytics, and dynamic routing decisions.
4
+ *
5
+ * Design Goals:
6
+ * 1. Low Overhead: Pure in-memory by default; pluggable persistence adapter for durability.
7
+ * 2. Incremental Updates: Accept partial usage metrics from streaming chunks; finalize on terminal chunk.
8
+ * 3. Query Flexibility: Summaries per session, persona, provider, model.
9
+ * 4. Cost Normalization: Uses `ModelUsage.costUSD` when present; can apply fallback pricing from a model catalog.
10
+ */
11
+ import { ModelCompletionResponse, ModelUsage } from '../llm/providers/IProvider';
12
+ /** Canonical key dimensions tracked for each usage record. */
13
+ export interface UsageDimensions {
14
+ sessionId: string;
15
+ personaId?: string;
16
+ providerId?: string;
17
+ modelId?: string;
18
+ }
19
+ /** Internal mutable aggregation bucket. */
20
+ interface UsageBucket extends UsageDimensions {
21
+ promptTokens: number;
22
+ completionTokens: number;
23
+ totalTokens: number;
24
+ costUSD: number;
25
+ calls: number;
26
+ }
27
+ /** Result returned by summary queries. */
28
+ export type UsageSummary = UsageBucket;
29
+ /** Persistence adapter contract enabling storage engines. */
30
+ export interface IUsageLedgerPersistence {
31
+ save(bucket: UsageBucket): Promise<void>;
32
+ loadAll(): Promise<UsageBucket[]>;
33
+ }
34
+ /** Options for UsageLedger behavior. */
35
+ export interface UsageLedgerOptions {
36
+ /** When true, interim streaming usage (non-final chunks) will contribute estimated tokens. */
37
+ includeInterimStreamingUsage?: boolean;
38
+ /** Optional pricing fallback map: modelId -> { inputPer1M, outputPer1M }. */
39
+ pricingFallbacks?: Record<string, {
40
+ inputPer1M?: number;
41
+ outputPer1M?: number;
42
+ totalPer1M?: number;
43
+ }>;
44
+ /** Persistence adapter for durability (undefined => in-memory only). */
45
+ persistenceAdapter?: IUsageLedgerPersistence;
46
+ }
47
+ /**
48
+ * UsageLedger accumulates usage metrics from provider responses.
49
+ * Usage ingestion MUST be called for final streaming chunks or any non-streaming responses.
50
+ */
51
+ export declare class UsageLedger {
52
+ private buckets;
53
+ private options;
54
+ constructor(options?: UsageLedgerOptions);
55
+ /** Compose a stable bucket key from dimensions. */
56
+ private bucketKey;
57
+ /** Ensure bucket exists. */
58
+ private getOrCreateBucket;
59
+ /**
60
+ * Ingest a completion response chunk (streaming final or single shot) updating usage aggregates.
61
+ * Non-final streaming chunks are ignored unless includeInterimStreamingUsage=true.
62
+ */
63
+ ingestCompletionChunk(dim: UsageDimensions, chunk: ModelCompletionResponse): void;
64
+ /** Manual ingestion for custom usage objects (e.g. embeddings). */
65
+ ingestUsage(dim: UsageDimensions, usage: ModelUsage & {
66
+ modelId?: string;
67
+ isFinal?: boolean;
68
+ }): void;
69
+ /** Return all summaries. */
70
+ listAllSummaries(): UsageSummary[];
71
+ /** Query by session id. */
72
+ getSummariesBySession(sessionId: string): UsageSummary[];
73
+ /** Aggregate totals across all buckets for a session. */
74
+ getSessionAggregate(sessionId: string): UsageSummary | undefined;
75
+ /** Persist current buckets if an adapter is configured. */
76
+ flush(): Promise<void>;
77
+ /** Load all buckets from persistence (merging into existing). */
78
+ bootstrapFromPersistence(): Promise<void>;
79
+ }
80
+ export default UsageLedger;
81
+ //# sourceMappingURL=UsageLedger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UsageLedger.d.ts","sourceRoot":"","sources":["../../../src/core/usage/UsageLedger.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AACH,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEjF,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,2CAA2C;AAC3C,UAAU,WAAY,SAAQ,eAAe;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC;AAEvC,6DAA6D;AAC7D,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACnC;AAED,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,8FAA8F;IAC9F,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtG,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,uBAAuB,CAAC;CAC9C;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,OAAO,CAAqB;gBAExB,OAAO,GAAE,kBAAuB;IAI5C,mDAAmD;IACnD,OAAO,CAAC,SAAS;IAIjB,4BAA4B;IAC5B,OAAO,CAAC,iBAAiB;IAUzB;;;OAGG;IACH,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,uBAAuB,GAAG,IAAI;IA+BjF,mEAAmE;IACnE,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAsBpG,4BAA4B;IAC5B,gBAAgB,IAAI,YAAY,EAAE;IAIlC,2BAA2B;IAC3B,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAIxD,yDAAyD;IACzD,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAgBhE,2DAA2D;IACrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,iEAAiE;IAC3D,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;CAYhD;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * UsageLedger accumulates usage metrics from provider responses.
3
+ * Usage ingestion MUST be called for final streaming chunks or any non-streaming responses.
4
+ */
5
+ export class UsageLedger {
6
+ constructor(options = {}) {
7
+ this.buckets = new Map();
8
+ this.options = options;
9
+ }
10
+ /** Compose a stable bucket key from dimensions. */
11
+ bucketKey(dim) {
12
+ return [dim.sessionId, dim.personaId || '-', dim.providerId || '-', dim.modelId || '-'].join('|');
13
+ }
14
+ /** Ensure bucket exists. */
15
+ getOrCreateBucket(dim) {
16
+ const key = this.bucketKey(dim);
17
+ let b = this.buckets.get(key);
18
+ if (!b) {
19
+ b = { ...dim, promptTokens: 0, completionTokens: 0, totalTokens: 0, costUSD: 0, calls: 0 };
20
+ this.buckets.set(key, b);
21
+ }
22
+ return b;
23
+ }
24
+ /**
25
+ * Ingest a completion response chunk (streaming final or single shot) updating usage aggregates.
26
+ * Non-final streaming chunks are ignored unless includeInterimStreamingUsage=true.
27
+ */
28
+ ingestCompletionChunk(dim, chunk) {
29
+ if (!chunk.usage)
30
+ return; // Nothing to record
31
+ if (!chunk.isFinal && !this.options.includeInterimStreamingUsage)
32
+ return;
33
+ const usage = chunk.usage;
34
+ const b = this.getOrCreateBucket({ ...dim, modelId: chunk.modelId });
35
+ // Interim usage may be partial; we accumulate naive sums.
36
+ b.promptTokens += usage.promptTokens || 0;
37
+ b.completionTokens += usage.completionTokens || 0;
38
+ b.totalTokens += usage.totalTokens || 0;
39
+ // Cost: prefer provided costUSD else derive from fallback pricing.
40
+ let cost = usage.costUSD || 0;
41
+ if (!usage.costUSD && this.options.pricingFallbacks) {
42
+ const p = this.options.pricingFallbacks[b.modelId || ''];
43
+ if (p) {
44
+ // If provider splits prompt/completion tokens we can estimate using input/output rates.
45
+ if (p.totalPer1M) {
46
+ cost += (usage.totalTokens / 1000000) * p.totalPer1M;
47
+ }
48
+ else {
49
+ if (p.inputPer1M && usage.promptTokens)
50
+ cost += (usage.promptTokens / 1000000) * p.inputPer1M;
51
+ if (p.outputPer1M && usage.completionTokens)
52
+ cost += (usage.completionTokens / 1000000) * p.outputPer1M;
53
+ }
54
+ }
55
+ }
56
+ b.costUSD += cost;
57
+ if (chunk.isFinal)
58
+ b.calls += 1;
59
+ }
60
+ /** Manual ingestion for custom usage objects (e.g. embeddings). */
61
+ ingestUsage(dim, usage) {
62
+ const b = this.getOrCreateBucket({ ...dim, modelId: usage.modelId });
63
+ b.promptTokens += usage.promptTokens || 0;
64
+ b.completionTokens += usage.completionTokens || 0;
65
+ b.totalTokens += usage.totalTokens || 0;
66
+ let cost = usage.costUSD || 0;
67
+ if (!usage.costUSD && this.options.pricingFallbacks) {
68
+ const p = this.options.pricingFallbacks[b.modelId || ''];
69
+ if (p) {
70
+ if (p.totalPer1M) {
71
+ cost += (usage.totalTokens / 1000000) * p.totalPer1M;
72
+ }
73
+ else {
74
+ if (p.inputPer1M && usage.promptTokens)
75
+ cost += (usage.promptTokens / 1000000) * p.inputPer1M;
76
+ if (p.outputPer1M && usage.completionTokens)
77
+ cost += (usage.completionTokens / 1000000) * p.outputPer1M;
78
+ }
79
+ }
80
+ }
81
+ b.costUSD += cost;
82
+ if (usage.isFinal)
83
+ b.calls += 1;
84
+ }
85
+ /** Return all summaries. */
86
+ listAllSummaries() {
87
+ return Array.from(this.buckets.values()).map(b => ({ ...b }));
88
+ }
89
+ /** Query by session id. */
90
+ getSummariesBySession(sessionId) {
91
+ return this.listAllSummaries().filter(b => b.sessionId === sessionId);
92
+ }
93
+ /** Aggregate totals across all buckets for a session. */
94
+ getSessionAggregate(sessionId) {
95
+ const buckets = this.getSummariesBySession(sessionId);
96
+ if (!buckets.length)
97
+ return undefined;
98
+ return buckets.reduce((acc, b, i) => {
99
+ if (i === 0)
100
+ acc = { ...b };
101
+ else {
102
+ acc.promptTokens += b.promptTokens;
103
+ acc.completionTokens += b.completionTokens;
104
+ acc.totalTokens += b.totalTokens;
105
+ acc.costUSD += b.costUSD;
106
+ acc.calls += b.calls;
107
+ }
108
+ return acc;
109
+ }, buckets[0]);
110
+ }
111
+ /** Persist current buckets if an adapter is configured. */
112
+ async flush() {
113
+ if (!this.options.persistenceAdapter)
114
+ return;
115
+ for (const b of this.buckets.values()) {
116
+ await this.options.persistenceAdapter.save(b);
117
+ }
118
+ }
119
+ /** Load all buckets from persistence (merging into existing). */
120
+ async bootstrapFromPersistence() {
121
+ if (!this.options.persistenceAdapter)
122
+ return;
123
+ const loaded = await this.options.persistenceAdapter.loadAll();
124
+ for (const b of loaded) {
125
+ const existing = this.getOrCreateBucket(b);
126
+ existing.promptTokens += b.promptTokens;
127
+ existing.completionTokens += b.completionTokens;
128
+ existing.totalTokens += b.totalTokens;
129
+ existing.costUSD += b.costUSD;
130
+ existing.calls += b.calls;
131
+ }
132
+ }
133
+ }
134
+ export default UsageLedger;
135
+ //# sourceMappingURL=UsageLedger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UsageLedger.js","sourceRoot":"","sources":["../../../src/core/usage/UsageLedger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { AgentOSInput } from '../../api/types/AgentOSInput';
2
+ import type { WorkflowDefinition, WorkflowDescriptorPayload, WorkflowEvent, WorkflowInstance, WorkflowProgressUpdate, WorkflowStatus } from './WorkflowTypes';
3
+ import type { WorkflowQueryOptions, IWorkflowStore, WorkflowTaskUpdate } from './storage/IWorkflowStore';
4
+ import type { ILogger } from '../../logging/ILogger';
5
+ export interface WorkflowEngineConfig {
6
+ maxConcurrentWorkflows?: number;
7
+ defaultWorkflowTimeoutSeconds?: number;
8
+ }
9
+ export interface StartWorkflowOptions {
10
+ input: AgentOSInput;
11
+ definition: WorkflowDefinition;
12
+ workflowId?: string;
13
+ conversationId?: string;
14
+ createdByUserId?: string;
15
+ context?: Record<string, unknown>;
16
+ roleAssignments?: Record<string, string>;
17
+ metadata?: Record<string, unknown>;
18
+ }
19
+ export interface WorkflowEngineDependencies {
20
+ store: IWorkflowStore;
21
+ logger?: ILogger;
22
+ }
23
+ export interface WorkflowEngineEventListener {
24
+ (event: WorkflowEvent): void | Promise<void>;
25
+ }
26
+ export interface IWorkflowEngine {
27
+ initialize(config: WorkflowEngineConfig, deps: WorkflowEngineDependencies): Promise<void>;
28
+ registerWorkflowDescriptor(descriptor: WorkflowDescriptorPayload): Promise<void>;
29
+ unregisterWorkflowDescriptor(workflowDefinitionId: string): Promise<void>;
30
+ listWorkflowDefinitions(): WorkflowDefinition[];
31
+ startWorkflow(options: StartWorkflowOptions): Promise<WorkflowInstance>;
32
+ getWorkflow(workflowId: string): Promise<WorkflowInstance | null>;
33
+ updateWorkflowStatus(workflowId: string, status: WorkflowStatus): Promise<WorkflowInstance | null>;
34
+ applyTaskUpdates(workflowId: string, updates: WorkflowTaskUpdate[]): Promise<WorkflowInstance | null>;
35
+ recordEvents(events: WorkflowEvent[]): Promise<void>;
36
+ updateWorkflowAgencyState(workflowId: string, agencyState: WorkflowInstance['agencyState']): Promise<WorkflowInstance | null>;
37
+ listWorkflows(options?: WorkflowQueryOptions): Promise<WorkflowInstance[]>;
38
+ getWorkflowProgress(workflowId: string, sinceTimestamp?: string): Promise<WorkflowProgressUpdate | null>;
39
+ onEvent(listener: WorkflowEngineEventListener): void;
40
+ offEvent(listener: WorkflowEngineEventListener): void;
41
+ }
42
+ //# sourceMappingURL=IWorkflowEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IWorkflowEngine.d.ts","sourceRoot":"","sources":["../../../src/core/workflows/IWorkflowEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EACV,kBAAkB,EAClB,yBAAyB,EACzB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACzG,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,WAAW,oBAAoB;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1F,0BAA0B,CAAC,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjF,4BAA4B,CAAC,oBAAoB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E,uBAAuB,IAAI,kBAAkB,EAAE,CAAC;IAEhD,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAElE,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAEnG,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAEtG,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAE9H,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE3E,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IAEzG,OAAO,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;IAErD,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,GAAG,IAAI,CAAC;CACvD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IWorkflowEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IWorkflowEngine.js","sourceRoot":"","sources":["../../../src/core/workflows/IWorkflowEngine.ts"],"names":[],"mappings":""}