@salimassili/ai-costguard 1.1.3

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 (490) hide show
  1. package/README.md +112 -0
  2. package/dist/aecl/ExecutionInterceptor.d.ts +111 -0
  3. package/dist/aecl/ExecutionInterceptor.d.ts.map +1 -0
  4. package/dist/aecl/ExecutionInterceptor.js +280 -0
  5. package/dist/aecl/ExecutionInterceptor.js.map +1 -0
  6. package/dist/aecl/ExecutionMemory.d.ts +103 -0
  7. package/dist/aecl/ExecutionMemory.d.ts.map +1 -0
  8. package/dist/aecl/ExecutionMemory.js +164 -0
  9. package/dist/aecl/ExecutionMemory.js.map +1 -0
  10. package/dist/aecl/PolicyEngine.d.ts +77 -0
  11. package/dist/aecl/PolicyEngine.d.ts.map +1 -0
  12. package/dist/aecl/PolicyEngine.js +170 -0
  13. package/dist/aecl/PolicyEngine.js.map +1 -0
  14. package/dist/aecl/ROITelemetry.d.ts +110 -0
  15. package/dist/aecl/ROITelemetry.d.ts.map +1 -0
  16. package/dist/aecl/ROITelemetry.js +211 -0
  17. package/dist/aecl/ROITelemetry.js.map +1 -0
  18. package/dist/aecl/RiskEngine.d.ts +90 -0
  19. package/dist/aecl/RiskEngine.d.ts.map +1 -0
  20. package/dist/aecl/RiskEngine.js +207 -0
  21. package/dist/aecl/RiskEngine.js.map +1 -0
  22. package/dist/aecl/index.d.ts +76 -0
  23. package/dist/aecl/index.d.ts.map +1 -0
  24. package/dist/aecl/index.js +111 -0
  25. package/dist/aecl/index.js.map +1 -0
  26. package/dist/aerl/ExecutionGraph.d.ts +123 -0
  27. package/dist/aerl/ExecutionGraph.d.ts.map +1 -0
  28. package/dist/aerl/ExecutionGraph.js +289 -0
  29. package/dist/aerl/ExecutionGraph.js.map +1 -0
  30. package/dist/aerl/ExecutionInterceptor.d.ts +94 -0
  31. package/dist/aerl/ExecutionInterceptor.d.ts.map +1 -0
  32. package/dist/aerl/ExecutionInterceptor.js +246 -0
  33. package/dist/aerl/ExecutionInterceptor.js.map +1 -0
  34. package/dist/aerl/ExecutionMemory.d.ts +138 -0
  35. package/dist/aerl/ExecutionMemory.d.ts.map +1 -0
  36. package/dist/aerl/ExecutionMemory.js +284 -0
  37. package/dist/aerl/ExecutionMemory.js.map +1 -0
  38. package/dist/aerl/FailurePrediction.d.ts +71 -0
  39. package/dist/aerl/FailurePrediction.d.ts.map +1 -0
  40. package/dist/aerl/FailurePrediction.js +204 -0
  41. package/dist/aerl/FailurePrediction.js.map +1 -0
  42. package/dist/aerl/RecoveryEngine.d.ts +74 -0
  43. package/dist/aerl/RecoveryEngine.d.ts.map +1 -0
  44. package/dist/aerl/RecoveryEngine.js +194 -0
  45. package/dist/aerl/RecoveryEngine.js.map +1 -0
  46. package/dist/aerl/ReliabilityEngine.d.ts +74 -0
  47. package/dist/aerl/ReliabilityEngine.d.ts.map +1 -0
  48. package/dist/aerl/ReliabilityEngine.js +205 -0
  49. package/dist/aerl/ReliabilityEngine.js.map +1 -0
  50. package/dist/aerl/ReliabilityTelemetry.d.ts +118 -0
  51. package/dist/aerl/ReliabilityTelemetry.d.ts.map +1 -0
  52. package/dist/aerl/ReliabilityTelemetry.js +247 -0
  53. package/dist/aerl/ReliabilityTelemetry.js.map +1 -0
  54. package/dist/aerl/index.d.ts +170 -0
  55. package/dist/aerl/index.d.ts.map +1 -0
  56. package/dist/aerl/index.js +223 -0
  57. package/dist/aerl/index.js.map +1 -0
  58. package/dist/ambient/AmbientProtection.d.ts +79 -0
  59. package/dist/ambient/AmbientProtection.d.ts.map +1 -0
  60. package/dist/ambient/AmbientProtection.js +251 -0
  61. package/dist/ambient/AmbientProtection.js.map +1 -0
  62. package/dist/bin/start.d.ts +14 -0
  63. package/dist/bin/start.d.ts.map +1 -0
  64. package/dist/bin/start.js +54 -0
  65. package/dist/bin/start.js.map +1 -0
  66. package/dist/cli/index.d.ts +3 -0
  67. package/dist/cli/index.d.ts.map +1 -0
  68. package/dist/cli/index.js +64 -0
  69. package/dist/cli/index.js.map +1 -0
  70. package/dist/cli/outputContract.d.ts +19 -0
  71. package/dist/cli/outputContract.d.ts.map +1 -0
  72. package/dist/cli/outputContract.js +54 -0
  73. package/dist/cli/outputContract.js.map +1 -0
  74. package/dist/cli/storage.d.ts +61 -0
  75. package/dist/cli/storage.d.ts.map +1 -0
  76. package/dist/cli/storage.js +143 -0
  77. package/dist/cli/storage.js.map +1 -0
  78. package/dist/client.d.ts +29 -0
  79. package/dist/client.d.ts.map +1 -0
  80. package/dist/client.js +58 -0
  81. package/dist/client.js.map +1 -0
  82. package/dist/config/constants.d.ts +109 -0
  83. package/dist/config/constants.d.ts.map +1 -0
  84. package/dist/config/constants.js +151 -0
  85. package/dist/config/constants.js.map +1 -0
  86. package/dist/config/index.d.ts +5 -0
  87. package/dist/config/index.d.ts.map +1 -0
  88. package/dist/config/index.js +21 -0
  89. package/dist/config/index.js.map +1 -0
  90. package/dist/config/pricing.d.ts +12 -0
  91. package/dist/config/pricing.d.ts.map +1 -0
  92. package/dist/config/pricing.js +45 -0
  93. package/dist/config/pricing.js.map +1 -0
  94. package/dist/config/productionConfig.d.ts +8 -0
  95. package/dist/config/productionConfig.d.ts.map +1 -0
  96. package/dist/config/productionConfig.js +21 -0
  97. package/dist/config/productionConfig.js.map +1 -0
  98. package/dist/config/userConfig.d.ts +31 -0
  99. package/dist/config/userConfig.d.ts.map +1 -0
  100. package/dist/config/userConfig.js +116 -0
  101. package/dist/config/userConfig.js.map +1 -0
  102. package/dist/controlPlane/configServer.d.ts +7 -0
  103. package/dist/controlPlane/configServer.d.ts.map +1 -0
  104. package/dist/controlPlane/configServer.js +47 -0
  105. package/dist/controlPlane/configServer.js.map +1 -0
  106. package/dist/core/AgentBehaviorGraph.d.ts +163 -0
  107. package/dist/core/AgentBehaviorGraph.d.ts.map +1 -0
  108. package/dist/core/AgentBehaviorGraph.js +341 -0
  109. package/dist/core/AgentBehaviorGraph.js.map +1 -0
  110. package/dist/core/AlertManager.d.ts +19 -0
  111. package/dist/core/AlertManager.d.ts.map +1 -0
  112. package/dist/core/AlertManager.js +64 -0
  113. package/dist/core/AlertManager.js.map +1 -0
  114. package/dist/core/AuditTrail.d.ts +107 -0
  115. package/dist/core/AuditTrail.d.ts.map +1 -0
  116. package/dist/core/AuditTrail.js +256 -0
  117. package/dist/core/AuditTrail.js.map +1 -0
  118. package/dist/core/CostLedger.d.ts +135 -0
  119. package/dist/core/CostLedger.d.ts.map +1 -0
  120. package/dist/core/CostLedger.js +224 -0
  121. package/dist/core/CostLedger.js.map +1 -0
  122. package/dist/core/CostPredictionEngine.d.ts +110 -0
  123. package/dist/core/CostPredictionEngine.d.ts.map +1 -0
  124. package/dist/core/CostPredictionEngine.js +225 -0
  125. package/dist/core/CostPredictionEngine.js.map +1 -0
  126. package/dist/core/CostTruthEngine.d.ts +108 -0
  127. package/dist/core/CostTruthEngine.d.ts.map +1 -0
  128. package/dist/core/CostTruthEngine.js +170 -0
  129. package/dist/core/CostTruthEngine.js.map +1 -0
  130. package/dist/core/DetectionEngine.d.ts +147 -0
  131. package/dist/core/DetectionEngine.d.ts.map +1 -0
  132. package/dist/core/DetectionEngine.js +429 -0
  133. package/dist/core/DetectionEngine.js.map +1 -0
  134. package/dist/core/ExecutionInterceptor.d.ts +135 -0
  135. package/dist/core/ExecutionInterceptor.d.ts.map +1 -0
  136. package/dist/core/ExecutionInterceptor.js +285 -0
  137. package/dist/core/ExecutionInterceptor.js.map +1 -0
  138. package/dist/core/ExplainabilityLayer.d.ts +109 -0
  139. package/dist/core/ExplainabilityLayer.d.ts.map +1 -0
  140. package/dist/core/ExplainabilityLayer.js +277 -0
  141. package/dist/core/ExplainabilityLayer.js.map +1 -0
  142. package/dist/core/LearningSystem.d.ts +124 -0
  143. package/dist/core/LearningSystem.d.ts.map +1 -0
  144. package/dist/core/LearningSystem.js +294 -0
  145. package/dist/core/LearningSystem.js.map +1 -0
  146. package/dist/core/Logger.d.ts +122 -0
  147. package/dist/core/Logger.d.ts.map +1 -0
  148. package/dist/core/Logger.js +233 -0
  149. package/dist/core/Logger.js.map +1 -0
  150. package/dist/core/PolicyEngine.d.ts +148 -0
  151. package/dist/core/PolicyEngine.d.ts.map +1 -0
  152. package/dist/core/PolicyEngine.js +336 -0
  153. package/dist/core/PolicyEngine.js.map +1 -0
  154. package/dist/core/PricingConfig.d.ts +55 -0
  155. package/dist/core/PricingConfig.d.ts.map +1 -0
  156. package/dist/core/PricingConfig.js +132 -0
  157. package/dist/core/PricingConfig.js.map +1 -0
  158. package/dist/core/SessionStats.d.ts +101 -0
  159. package/dist/core/SessionStats.d.ts.map +1 -0
  160. package/dist/core/SessionStats.js +261 -0
  161. package/dist/core/SessionStats.js.map +1 -0
  162. package/dist/core/StateStore.d.ts +100 -0
  163. package/dist/core/StateStore.d.ts.map +1 -0
  164. package/dist/core/StateStore.js +336 -0
  165. package/dist/core/StateStore.js.map +1 -0
  166. package/dist/core/index.d.ts +3 -0
  167. package/dist/core/index.d.ts.map +1 -0
  168. package/dist/core/index.js +19 -0
  169. package/dist/core/index.js.map +1 -0
  170. package/dist/core/types.d.ts +26 -0
  171. package/dist/core/types.d.ts.map +1 -0
  172. package/dist/core/types.js +3 -0
  173. package/dist/core/types.js.map +1 -0
  174. package/dist/cost-guard.d.ts +41 -0
  175. package/dist/cost-guard.d.ts.map +1 -0
  176. package/dist/cost-guard.js +274 -0
  177. package/dist/cost-guard.js.map +1 -0
  178. package/dist/dashboard/roiDashboard.d.ts +12 -0
  179. package/dist/dashboard/roiDashboard.d.ts.map +1 -0
  180. package/dist/dashboard/roiDashboard.js +28 -0
  181. package/dist/dashboard/roiDashboard.js.map +1 -0
  182. package/dist/demo/compareExecution.d.ts +9 -0
  183. package/dist/demo/compareExecution.d.ts.map +1 -0
  184. package/dist/demo/compareExecution.js +43 -0
  185. package/dist/demo/compareExecution.js.map +1 -0
  186. package/dist/demo/demoRunner.d.ts +16 -0
  187. package/dist/demo/demoRunner.d.ts.map +1 -0
  188. package/dist/demo/demoRunner.js +73 -0
  189. package/dist/demo/demoRunner.js.map +1 -0
  190. package/dist/firewall/costEstimator.d.ts +3 -0
  191. package/dist/firewall/costEstimator.d.ts.map +1 -0
  192. package/dist/firewall/costEstimator.js +22 -0
  193. package/dist/firewall/costEstimator.js.map +1 -0
  194. package/dist/firewall/executionGuard.d.ts +18 -0
  195. package/dist/firewall/executionGuard.d.ts.map +1 -0
  196. package/dist/firewall/executionGuard.js +80 -0
  197. package/dist/firewall/executionGuard.js.map +1 -0
  198. package/dist/firewall/loopDetector.d.ts +13 -0
  199. package/dist/firewall/loopDetector.d.ts.map +1 -0
  200. package/dist/firewall/loopDetector.js +24 -0
  201. package/dist/firewall/loopDetector.js.map +1 -0
  202. package/dist/firewall/policy.d.ts +4 -0
  203. package/dist/firewall/policy.d.ts.map +1 -0
  204. package/dist/firewall/policy.js +16 -0
  205. package/dist/firewall/policy.js.map +1 -0
  206. package/dist/firewall/types.d.ts +38 -0
  207. package/dist/firewall/types.d.ts.map +1 -0
  208. package/dist/firewall/types.js +3 -0
  209. package/dist/firewall/types.js.map +1 -0
  210. package/dist/index.d.ts +40 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +76 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/logger/console.d.ts +27 -0
  215. package/dist/logger/console.d.ts.map +1 -0
  216. package/dist/logger/console.js +68 -0
  217. package/dist/logger/console.js.map +1 -0
  218. package/dist/logger/database.d.ts +40 -0
  219. package/dist/logger/database.d.ts.map +1 -0
  220. package/dist/logger/database.js +127 -0
  221. package/dist/logger/database.js.map +1 -0
  222. package/dist/logger/index.d.ts +3 -0
  223. package/dist/logger/index.d.ts.map +1 -0
  224. package/dist/logger/index.js +11 -0
  225. package/dist/logger/index.js.map +1 -0
  226. package/dist/loop-shield.d.ts +48 -0
  227. package/dist/loop-shield.d.ts.map +1 -0
  228. package/dist/loop-shield.js +436 -0
  229. package/dist/loop-shield.js.map +1 -0
  230. package/dist/metrics/BusinessMetricsEngine.d.ts +109 -0
  231. package/dist/metrics/BusinessMetricsEngine.d.ts.map +1 -0
  232. package/dist/metrics/BusinessMetricsEngine.js +222 -0
  233. package/dist/metrics/BusinessMetricsEngine.js.map +1 -0
  234. package/dist/metrics/index.d.ts +11 -0
  235. package/dist/metrics/index.d.ts.map +1 -0
  236. package/dist/metrics/index.js +17 -0
  237. package/dist/metrics/index.js.map +1 -0
  238. package/dist/middleware/expressFirewall.d.ts +51 -0
  239. package/dist/middleware/expressFirewall.d.ts.map +1 -0
  240. package/dist/middleware/expressFirewall.js +140 -0
  241. package/dist/middleware/expressFirewall.js.map +1 -0
  242. package/dist/middleware/index.d.ts +8 -0
  243. package/dist/middleware/index.d.ts.map +1 -0
  244. package/dist/middleware/index.js +15 -0
  245. package/dist/middleware/index.js.map +1 -0
  246. package/dist/middleware/withFirewall.d.ts +50 -0
  247. package/dist/middleware/withFirewall.d.ts.map +1 -0
  248. package/dist/middleware/withFirewall.js +155 -0
  249. package/dist/middleware/withFirewall.js.map +1 -0
  250. package/dist/observability/logger.d.ts +14 -0
  251. package/dist/observability/logger.d.ts.map +1 -0
  252. package/dist/observability/logger.js +21 -0
  253. package/dist/observability/logger.js.map +1 -0
  254. package/dist/observability/metrics.d.ts +17 -0
  255. package/dist/observability/metrics.d.ts.map +1 -0
  256. package/dist/observability/metrics.js +36 -0
  257. package/dist/observability/metrics.js.map +1 -0
  258. package/dist/os/ExecutionOS.d.ts +220 -0
  259. package/dist/os/ExecutionOS.d.ts.map +1 -0
  260. package/dist/os/ExecutionOS.js +398 -0
  261. package/dist/os/ExecutionOS.js.map +1 -0
  262. package/dist/os/GlobalIntelligence.d.ts +154 -0
  263. package/dist/os/GlobalIntelligence.d.ts.map +1 -0
  264. package/dist/os/GlobalIntelligence.js +374 -0
  265. package/dist/os/GlobalIntelligence.js.map +1 -0
  266. package/dist/os/PolicyMarketplace.d.ts +192 -0
  267. package/dist/os/PolicyMarketplace.d.ts.map +1 -0
  268. package/dist/os/PolicyMarketplace.js +384 -0
  269. package/dist/os/PolicyMarketplace.js.map +1 -0
  270. package/dist/os/SDKInterception.d.ts +115 -0
  271. package/dist/os/SDKInterception.d.ts.map +1 -0
  272. package/dist/os/SDKInterception.js +317 -0
  273. package/dist/os/SDKInterception.js.map +1 -0
  274. package/dist/os/index.d.ts +60 -0
  275. package/dist/os/index.d.ts.map +1 -0
  276. package/dist/os/index.js +82 -0
  277. package/dist/os/index.js.map +1 -0
  278. package/dist/proxy/index.d.ts +2 -0
  279. package/dist/proxy/index.d.ts.map +1 -0
  280. package/dist/proxy/index.js +18 -0
  281. package/dist/proxy/index.js.map +1 -0
  282. package/dist/proxy/server.d.ts +24 -0
  283. package/dist/proxy/server.d.ts.map +1 -0
  284. package/dist/proxy/server.js +395 -0
  285. package/dist/proxy/server.js.map +1 -0
  286. package/dist/public/BenchmarksPage.d.ts +60 -0
  287. package/dist/public/BenchmarksPage.d.ts.map +1 -0
  288. package/dist/public/BenchmarksPage.js +397 -0
  289. package/dist/public/BenchmarksPage.js.map +1 -0
  290. package/dist/public/DocsPage.d.ts +11 -0
  291. package/dist/public/DocsPage.d.ts.map +1 -0
  292. package/dist/public/DocsPage.js +496 -0
  293. package/dist/public/DocsPage.js.map +1 -0
  294. package/dist/public/StatusPage.d.ts +55 -0
  295. package/dist/public/StatusPage.d.ts.map +1 -0
  296. package/dist/public/StatusPage.js +344 -0
  297. package/dist/public/StatusPage.js.map +1 -0
  298. package/dist/public/index.d.ts +12 -0
  299. package/dist/public/index.d.ts.map +1 -0
  300. package/dist/public/index.js +20 -0
  301. package/dist/public/index.js.map +1 -0
  302. package/dist/replacements/axios.d.ts +14 -0
  303. package/dist/replacements/axios.d.ts.map +1 -0
  304. package/dist/replacements/axios.js +35 -0
  305. package/dist/replacements/axios.js.map +1 -0
  306. package/dist/replacements/fetch.d.ts +13 -0
  307. package/dist/replacements/fetch.d.ts.map +1 -0
  308. package/dist/replacements/fetch.js +20 -0
  309. package/dist/replacements/fetch.js.map +1 -0
  310. package/dist/replacements/openai.d.ts +14 -0
  311. package/dist/replacements/openai.d.ts.map +1 -0
  312. package/dist/replacements/openai.js +22 -0
  313. package/dist/replacements/openai.js.map +1 -0
  314. package/dist/saas/CostExplosionDemo.d.ts +56 -0
  315. package/dist/saas/CostExplosionDemo.d.ts.map +1 -0
  316. package/dist/saas/CostExplosionDemo.js +190 -0
  317. package/dist/saas/CostExplosionDemo.js.map +1 -0
  318. package/dist/saas/LiveProtection.d.ts +61 -0
  319. package/dist/saas/LiveProtection.d.ts.map +1 -0
  320. package/dist/saas/LiveProtection.js +187 -0
  321. package/dist/saas/LiveProtection.js.map +1 -0
  322. package/dist/saas/ProductionSaaS.d.ts +56 -0
  323. package/dist/saas/ProductionSaaS.d.ts.map +1 -0
  324. package/dist/saas/ProductionSaaS.js +831 -0
  325. package/dist/saas/ProductionSaaS.js.map +1 -0
  326. package/dist/saas/SaaSServer.d.ts +50 -0
  327. package/dist/saas/SaaSServer.d.ts.map +1 -0
  328. package/dist/saas/SaaSServer.js +669 -0
  329. package/dist/saas/SaaSServer.js.map +1 -0
  330. package/dist/saas/UserStore.d.ts +49 -0
  331. package/dist/saas/UserStore.d.ts.map +1 -0
  332. package/dist/saas/UserStore.js +137 -0
  333. package/dist/saas/UserStore.js.map +1 -0
  334. package/dist/saas/billingMetrics.d.ts +14 -0
  335. package/dist/saas/billingMetrics.d.ts.map +1 -0
  336. package/dist/saas/billingMetrics.js +23 -0
  337. package/dist/saas/billingMetrics.js.map +1 -0
  338. package/dist/saas/index.d.ts +12 -0
  339. package/dist/saas/index.d.ts.map +1 -0
  340. package/dist/saas/index.js +23 -0
  341. package/dist/saas/index.js.map +1 -0
  342. package/dist/saas/telemetry.d.ts +24 -0
  343. package/dist/saas/telemetry.d.ts.map +1 -0
  344. package/dist/saas/telemetry.js +30 -0
  345. package/dist/saas/telemetry.js.map +1 -0
  346. package/dist/saas/usageMeter.d.ts +28 -0
  347. package/dist/saas/usageMeter.d.ts.map +1 -0
  348. package/dist/saas/usageMeter.js +41 -0
  349. package/dist/saas/usageMeter.js.map +1 -0
  350. package/dist/security/TrustBoundaryValidator.d.ts +105 -0
  351. package/dist/security/TrustBoundaryValidator.d.ts.map +1 -0
  352. package/dist/security/TrustBoundaryValidator.js +305 -0
  353. package/dist/security/TrustBoundaryValidator.js.map +1 -0
  354. package/dist/starters/express-protected.d.ts +18 -0
  355. package/dist/starters/express-protected.d.ts.map +1 -0
  356. package/dist/starters/express-protected.js +93 -0
  357. package/dist/starters/express-protected.js.map +1 -0
  358. package/dist/starters/langchain-protected.d.ts +18 -0
  359. package/dist/starters/langchain-protected.d.ts.map +1 -0
  360. package/dist/starters/langchain-protected.js +85 -0
  361. package/dist/starters/langchain-protected.js.map +1 -0
  362. package/dist/starters/openai-protected.d.ts +19 -0
  363. package/dist/starters/openai-protected.d.ts.map +1 -0
  364. package/dist/starters/openai-protected.js +84 -0
  365. package/dist/starters/openai-protected.js.map +1 -0
  366. package/dist/starters/serverless-protected.d.ts +19 -0
  367. package/dist/starters/serverless-protected.d.ts.map +1 -0
  368. package/dist/starters/serverless-protected.js +83 -0
  369. package/dist/starters/serverless-protected.js.map +1 -0
  370. package/dist/storage/adapters.d.ts +24 -0
  371. package/dist/storage/adapters.d.ts.map +1 -0
  372. package/dist/storage/adapters.js +123 -0
  373. package/dist/storage/adapters.js.map +1 -0
  374. package/dist/storage/index.d.ts +2 -0
  375. package/dist/storage/index.d.ts.map +1 -0
  376. package/dist/storage/index.js +8 -0
  377. package/dist/storage/index.js.map +1 -0
  378. package/dist/tests/b2b-hardening.test.d.ts +2 -0
  379. package/dist/tests/b2b-hardening.test.d.ts.map +1 -0
  380. package/dist/tests/b2b-hardening.test.js +164 -0
  381. package/dist/tests/b2b-hardening.test.js.map +1 -0
  382. package/dist/tests/cli.contract.test.d.ts +2 -0
  383. package/dist/tests/cli.contract.test.d.ts.map +1 -0
  384. package/dist/tests/cli.contract.test.js +28 -0
  385. package/dist/tests/cli.contract.test.js.map +1 -0
  386. package/dist/tests/cli.snapshot.test.d.ts +14 -0
  387. package/dist/tests/cli.snapshot.test.d.ts.map +1 -0
  388. package/dist/tests/cli.snapshot.test.js +132 -0
  389. package/dist/tests/cli.snapshot.test.js.map +1 -0
  390. package/dist/tests/cli.strict.test.d.ts +6 -0
  391. package/dist/tests/cli.strict.test.d.ts.map +1 -0
  392. package/dist/tests/cli.strict.test.js +173 -0
  393. package/dist/tests/cli.strict.test.js.map +1 -0
  394. package/dist/tests/cli.test.d.ts +5 -0
  395. package/dist/tests/cli.test.d.ts.map +1 -0
  396. package/dist/tests/cli.test.js +54 -0
  397. package/dist/tests/cli.test.js.map +1 -0
  398. package/dist/tests/concurrency.state.test.d.ts +6 -0
  399. package/dist/tests/concurrency.state.test.d.ts.map +1 -0
  400. package/dist/tests/concurrency.state.test.js +231 -0
  401. package/dist/tests/concurrency.state.test.js.map +1 -0
  402. package/dist/tests/detection-engine.strict.test.d.ts +6 -0
  403. package/dist/tests/detection-engine.strict.test.d.ts.map +1 -0
  404. package/dist/tests/detection-engine.strict.test.js +323 -0
  405. package/dist/tests/detection-engine.strict.test.js.map +1 -0
  406. package/dist/tests/e2e.system.test.d.ts +7 -0
  407. package/dist/tests/e2e.system.test.d.ts.map +1 -0
  408. package/dist/tests/e2e.system.test.js +189 -0
  409. package/dist/tests/e2e.system.test.js.map +1 -0
  410. package/dist/tests/edge-cases.test.d.ts +6 -0
  411. package/dist/tests/edge-cases.test.d.ts.map +1 -0
  412. package/dist/tests/edge-cases.test.js +357 -0
  413. package/dist/tests/edge-cases.test.js.map +1 -0
  414. package/dist/tests/performance.benchmark.test.d.ts +2 -0
  415. package/dist/tests/performance.benchmark.test.d.ts.map +1 -0
  416. package/dist/tests/performance.benchmark.test.js +24 -0
  417. package/dist/tests/performance.benchmark.test.js.map +1 -0
  418. package/dist/tests/proxy.production.test.d.ts +6 -0
  419. package/dist/tests/proxy.production.test.d.ts.map +1 -0
  420. package/dist/tests/proxy.production.test.js +274 -0
  421. package/dist/tests/proxy.production.test.js.map +1 -0
  422. package/dist/tests/proxy.strict.test.d.ts +6 -0
  423. package/dist/tests/proxy.strict.test.d.ts.map +1 -0
  424. package/dist/tests/proxy.strict.test.js +188 -0
  425. package/dist/tests/proxy.strict.test.js.map +1 -0
  426. package/dist/tests/proxy.test.d.ts +5 -0
  427. package/dist/tests/proxy.test.d.ts.map +1 -0
  428. package/dist/tests/proxy.test.js +61 -0
  429. package/dist/tests/proxy.test.js.map +1 -0
  430. package/dist/tests/roi.scenario.test.d.ts +2 -0
  431. package/dist/tests/roi.scenario.test.d.ts.map +1 -0
  432. package/dist/tests/roi.scenario.test.js +26 -0
  433. package/dist/tests/roi.scenario.test.js.map +1 -0
  434. package/dist/tests/server.contract.test.d.ts +6 -0
  435. package/dist/tests/server.contract.test.d.ts.map +1 -0
  436. package/dist/tests/server.contract.test.js +48 -0
  437. package/dist/tests/server.contract.test.js.map +1 -0
  438. package/dist/tests/tokenCounter.test.d.ts +5 -0
  439. package/dist/tests/tokenCounter.test.d.ts.map +1 -0
  440. package/dist/tests/tokenCounter.test.js +66 -0
  441. package/dist/tests/tokenCounter.test.js.map +1 -0
  442. package/dist/tests/v113/client.test.d.ts +2 -0
  443. package/dist/tests/v113/client.test.d.ts.map +1 -0
  444. package/dist/tests/v113/client.test.js +22 -0
  445. package/dist/tests/v113/client.test.js.map +1 -0
  446. package/dist/tests/v113/executionGuard.test.d.ts +2 -0
  447. package/dist/tests/v113/executionGuard.test.d.ts.map +1 -0
  448. package/dist/tests/v113/executionGuard.test.js +39 -0
  449. package/dist/tests/v113/executionGuard.test.js.map +1 -0
  450. package/dist/token-counter/index.d.ts +2 -0
  451. package/dist/token-counter/index.d.ts.map +1 -0
  452. package/dist/token-counter/index.js +18 -0
  453. package/dist/token-counter/index.js.map +1 -0
  454. package/dist/token-counter/tokenCounter.d.ts +18 -0
  455. package/dist/token-counter/tokenCounter.d.ts.map +1 -0
  456. package/dist/token-counter/tokenCounter.js +91 -0
  457. package/dist/token-counter/tokenCounter.js.map +1 -0
  458. package/dist/trust/ImmutableAudit.d.ts +159 -0
  459. package/dist/trust/ImmutableAudit.d.ts.map +1 -0
  460. package/dist/trust/ImmutableAudit.js +340 -0
  461. package/dist/trust/ImmutableAudit.js.map +1 -0
  462. package/dist/trust/PublicVerificationLedger.d.ts +91 -0
  463. package/dist/trust/PublicVerificationLedger.d.ts.map +1 -0
  464. package/dist/trust/PublicVerificationLedger.js +223 -0
  465. package/dist/trust/PublicVerificationLedger.js.map +1 -0
  466. package/dist/trust/index.d.ts +11 -0
  467. package/dist/trust/index.d.ts.map +1 -0
  468. package/dist/trust/index.js +20 -0
  469. package/dist/trust/index.js.map +1 -0
  470. package/dist/utils/alert.d.ts +13 -0
  471. package/dist/utils/alert.d.ts.map +1 -0
  472. package/dist/utils/alert.js +49 -0
  473. package/dist/utils/alert.js.map +1 -0
  474. package/dist/utils/index.d.ts +2 -0
  475. package/dist/utils/index.d.ts.map +1 -0
  476. package/dist/utils/index.js +18 -0
  477. package/dist/utils/index.js.map +1 -0
  478. package/dist/wrapper/aiFirewall.d.ts +61 -0
  479. package/dist/wrapper/aiFirewall.d.ts.map +1 -0
  480. package/dist/wrapper/aiFirewall.js +117 -0
  481. package/dist/wrapper/aiFirewall.js.map +1 -0
  482. package/dist/wrapper/index.d.ts +3 -0
  483. package/dist/wrapper/index.d.ts.map +1 -0
  484. package/dist/wrapper/index.js +21 -0
  485. package/dist/wrapper/index.js.map +1 -0
  486. package/dist/wrapper/sdk.d.ts +49 -0
  487. package/dist/wrapper/sdk.d.ts.map +1 -0
  488. package/dist/wrapper/sdk.js +140 -0
  489. package/dist/wrapper/sdk.js.map +1 -0
  490. package/package.json +84 -0
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * AECL - ROI Telemetry System
4
+ *
5
+ * Tracks measurable value:
6
+ * - Estimated cost saved (blocked executions)
7
+ * - Prevented execution value (what would have been spent)
8
+ * - False positive tracking (blocked that shouldn't have been)
9
+ *
10
+ * OUTPUT:
11
+ * - Directly usable in billing dashboards
12
+ * - CSV export for customer reporting
13
+ * - 7-day ROI calculation
14
+ *
15
+ * NO:
16
+ * - Complex analytics
17
+ * - ML predictions
18
+ * - Attribution modeling
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.roiTelemetry = exports.ROITelemetry = void 0;
22
+ /**
23
+ * ROI Telemetry
24
+ *
25
+ * Simple, accurate tracking for customer billing.
26
+ * Focus: Show measurable cost savings in first 7 days.
27
+ */
28
+ class ROITelemetry {
29
+ constructor(maxLogs = 100000) {
30
+ this.logs = [];
31
+ this.maxLogs = maxLogs;
32
+ this.falsePositiveLog = new Set();
33
+ }
34
+ /**
35
+ * Log a decision
36
+ */
37
+ log(decision) {
38
+ this.logs.push(decision);
39
+ // Evict old logs if needed
40
+ if (this.logs.length > this.maxLogs) {
41
+ this.logs.shift();
42
+ }
43
+ }
44
+ /**
45
+ * Mark a blocked decision as false positive
46
+ * (User overrode the block)
47
+ */
48
+ markFalsePositive(requestId, actualCost) {
49
+ this.falsePositiveLog.add(requestId);
50
+ // Update the log entry
51
+ const log = this.logs.find(l => l.requestId === requestId);
52
+ if (log) {
53
+ log.actualCost = actualCost;
54
+ }
55
+ }
56
+ /**
57
+ * Update actual cost for allowed execution
58
+ */
59
+ recordActualCost(requestId, actualCost) {
60
+ const log = this.logs.find(l => l.requestId === requestId);
61
+ if (log) {
62
+ log.actualCost = actualCost;
63
+ }
64
+ }
65
+ /**
66
+ * Get ROI metrics (all time)
67
+ */
68
+ getMetrics() {
69
+ const total = this.logs.length;
70
+ const blocked = this.logs.filter(l => l.decision === 'block');
71
+ const allowed = this.logs.filter(l => l.decision === 'allow');
72
+ const estimatedSavings = blocked.reduce((sum, l) => sum + l.estimatedCost, 0);
73
+ const actualSpend = allowed
74
+ .filter(l => l.actualCost !== undefined)
75
+ .reduce((sum, l) => sum + (l.actualCost || 0), 0);
76
+ const falsePositives = this.falsePositiveLog.size;
77
+ const falsePositiveCost = blocked
78
+ .filter(l => this.falsePositiveLog.has(l.requestId))
79
+ .reduce((sum, l) => sum + l.estimatedCost, 0);
80
+ const latencies = this.logs.map(l => l.latencyMs);
81
+ const avgLatency = latencies.length > 0
82
+ ? latencies.reduce((a, b) => a + b, 0) / latencies.length
83
+ : 0;
84
+ const p95Latency = this.calculateP95(latencies);
85
+ return {
86
+ totalDecisions: total,
87
+ blockedCount: blocked.length,
88
+ allowCount: allowed.length,
89
+ estimatedSavings,
90
+ actualSpend,
91
+ falsePositives,
92
+ falsePositiveCost,
93
+ netSavings: estimatedSavings - falsePositiveCost,
94
+ avgDecisionLatencyMs: avgLatency,
95
+ p95DecisionLatencyMs: p95Latency,
96
+ };
97
+ }
98
+ /**
99
+ * Get 7-day ROI report
100
+ */
101
+ get7DayReport() {
102
+ const now = Date.now();
103
+ const sevenDaysAgo = now - (7 * 24 * 60 * 60 * 1000);
104
+ const recentLogs = this.logs.filter(l => l.timestamp >= sevenDaysAgo);
105
+ // Group by day
106
+ const dailyMap = new Map();
107
+ for (const log of recentLogs) {
108
+ const date = new Date(log.timestamp).toISOString().split('T')[0];
109
+ const existing = dailyMap.get(date) || [];
110
+ existing.push(log);
111
+ dailyMap.set(date, existing);
112
+ }
113
+ // Build daily reports
114
+ const daily = [];
115
+ for (const [date, logs] of dailyMap) {
116
+ const blocked = logs.filter(l => l.decision === 'block');
117
+ const allowed = logs.filter(l => l.decision === 'allow');
118
+ const savings = blocked.reduce((sum, l) => sum + l.estimatedCost, 0);
119
+ const spend = allowed
120
+ .filter(l => l.actualCost !== undefined)
121
+ .reduce((sum, l) => sum + (l.actualCost || 0), 0);
122
+ daily.push({
123
+ date,
124
+ decisions: logs.length,
125
+ blocked: blocked.length,
126
+ savings,
127
+ spend,
128
+ roi: spend > 0 ? ((savings - spend) / spend) * 100 : 0,
129
+ });
130
+ }
131
+ // Sort by date
132
+ daily.sort((a, b) => a.date.localeCompare(b.date));
133
+ // Calculate metrics for the period
134
+ const totalBlocked = recentLogs.filter(l => l.decision === 'block');
135
+ const totalAllowed = recentLogs.filter(l => l.decision === 'allow');
136
+ const estimatedSavings = totalBlocked.reduce((sum, l) => sum + l.estimatedCost, 0);
137
+ const actualSpend = totalAllowed
138
+ .filter(l => l.actualCost !== undefined)
139
+ .reduce((sum, l) => sum + (l.actualCost || 0), 0);
140
+ const metrics = {
141
+ totalDecisions: recentLogs.length,
142
+ blockedCount: totalBlocked.length,
143
+ allowCount: totalAllowed.length,
144
+ estimatedSavings,
145
+ actualSpend,
146
+ falsePositives: this.falsePositiveLog.size,
147
+ falsePositiveCost: totalBlocked
148
+ .filter(l => this.falsePositiveLog.has(l.requestId))
149
+ .reduce((sum, l) => sum + l.estimatedCost, 0),
150
+ netSavings: estimatedSavings - (totalBlocked
151
+ .filter(l => this.falsePositiveLog.has(l.requestId))
152
+ .reduce((sum, l) => sum + l.estimatedCost, 0)),
153
+ avgDecisionLatencyMs: recentLogs.length > 0
154
+ ? recentLogs.reduce((sum, l) => sum + l.latencyMs, 0) / recentLogs.length
155
+ : 0,
156
+ p95DecisionLatencyMs: this.calculateP95(recentLogs.map(l => l.latencyMs)),
157
+ };
158
+ return { metrics, daily };
159
+ }
160
+ /**
161
+ * Export to CSV for customer reporting
162
+ */
163
+ exportCSV() {
164
+ const header = 'timestamp,sessionId,requestId,decision,riskScore,estimatedCost,actualCost,policyTriggered,latencyMs\n';
165
+ const rows = this.logs.map(l => `${new Date(l.timestamp).toISOString()},${l.sessionId},${l.requestId},${l.decision},${l.riskScore.toFixed(3)},${l.estimatedCost.toFixed(4)},${l.actualCost?.toFixed(4) || ''},${l.policyTriggered || ''},${l.latencyMs.toFixed(2)}`).join('\n');
166
+ return header + rows;
167
+ }
168
+ /**
169
+ * Calculate simple 7-day ROI percentage
170
+ */
171
+ calculateROI() {
172
+ const { metrics } = this.get7DayReport();
173
+ if (metrics.actualSpend === 0) {
174
+ return metrics.estimatedSavings > 0 ? 100 : 0;
175
+ }
176
+ return ((metrics.estimatedSavings - metrics.actualSpend) / metrics.actualSpend) * 100;
177
+ }
178
+ /**
179
+ * Get summary for dashboard
180
+ */
181
+ getDashboardSummary() {
182
+ const today = new Date().toISOString().split('T')[0];
183
+ const todayLogs = this.logs.filter(l => new Date(l.timestamp).toISOString().startsWith(today));
184
+ const savingsToday = todayLogs
185
+ .filter(l => l.decision === 'block')
186
+ .reduce((sum, l) => sum + l.estimatedCost, 0);
187
+ const allMetrics = this.getMetrics();
188
+ return {
189
+ decisionsToday: todayLogs.length,
190
+ savingsToday,
191
+ totalSavings: allMetrics.netSavings,
192
+ roi7Day: this.calculateROI(),
193
+ };
194
+ }
195
+ calculateP95(values) {
196
+ if (values.length === 0)
197
+ return 0;
198
+ const sorted = [...values].sort((a, b) => a - b);
199
+ return sorted[Math.floor(sorted.length * 0.95)];
200
+ }
201
+ /**
202
+ * Reset (for testing)
203
+ */
204
+ reset() {
205
+ this.logs = [];
206
+ this.falsePositiveLog.clear();
207
+ }
208
+ }
209
+ exports.ROITelemetry = ROITelemetry;
210
+ exports.roiTelemetry = new ROITelemetry();
211
+ //# sourceMappingURL=ROITelemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ROITelemetry.js","sourceRoot":"","sources":["../../src/aecl/ROITelemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * AECL - Risk Scoring Engine
3
+ *
4
+ * Computes probability (0-1) of:
5
+ * - Cost explosion
6
+ * - Infinite loop
7
+ * - Redundant tool calls
8
+ *
9
+ * REQUIREMENTS:
10
+ * - Deterministic (same input = same score)
11
+ * - Explainable (every factor documented)
12
+ * - <1ms execution time
13
+ * - No ML models in hot path
14
+ */
15
+ export interface RiskFactors {
16
+ costExplosion: number;
17
+ infiniteLoop: number;
18
+ redundancy: number;
19
+ composite: number;
20
+ }
21
+ export interface RiskContext {
22
+ sessionId: string;
23
+ stepNumber: number;
24
+ recentCalls: string[];
25
+ tokenVelocity: number;
26
+ costVelocity: number;
27
+ errorRate: number;
28
+ }
29
+ export interface RiskAssessment {
30
+ score: number;
31
+ factors: RiskFactors;
32
+ explanation: string[];
33
+ confidence: number;
34
+ }
35
+ /**
36
+ * Risk Engine
37
+ *
38
+ * Uses deterministic heuristics, not ML:
39
+ * - Pattern matching for loops
40
+ * - Velocity thresholds for cost explosions
41
+ * - Hash deduplication for redundancy
42
+ */
43
+ export declare class RiskEngine {
44
+ private loopPatterns;
45
+ private callHistory;
46
+ constructor();
47
+ /**
48
+ * Calculate risk score
49
+ * Must complete in <1ms
50
+ */
51
+ assess(context: RiskContext): RiskAssessment;
52
+ private calculateFactors;
53
+ /**
54
+ * Cost explosion detection
55
+ * Based on velocity and acceleration patterns
56
+ */
57
+ private assessCostExplosion;
58
+ /**
59
+ * Infinite loop detection
60
+ * Pattern: A→B→A→B or A→A→A
61
+ */
62
+ private assessInfiniteLoop;
63
+ /**
64
+ * Redundancy detection
65
+ * Same call within recent history
66
+ */
67
+ private assessRedundancy;
68
+ /**
69
+ * Composite score - max of all factors with weighting
70
+ */
71
+ private compositeScore;
72
+ /**
73
+ * Build human-readable explanation
74
+ */
75
+ private buildExplanation;
76
+ /**
77
+ * Confidence based on data quality
78
+ */
79
+ private calculateConfidence;
80
+ /**
81
+ * Update call history
82
+ */
83
+ private updateHistory;
84
+ /**
85
+ * Clear session data
86
+ */
87
+ clearSession(sessionId: string): void;
88
+ }
89
+ export declare const riskEngine: RiskEngine;
90
+ //# sourceMappingURL=RiskEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiskEngine.d.ts","sourceRoot":"","sources":["../../src/aecl/RiskEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAwB;;IAO3C;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc;IAkB5C,OAAO,CAAC,gBAAgB;IASxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAItC;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * AECL - Risk Scoring Engine
4
+ *
5
+ * Computes probability (0-1) of:
6
+ * - Cost explosion
7
+ * - Infinite loop
8
+ * - Redundant tool calls
9
+ *
10
+ * REQUIREMENTS:
11
+ * - Deterministic (same input = same score)
12
+ * - Explainable (every factor documented)
13
+ * - <1ms execution time
14
+ * - No ML models in hot path
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.riskEngine = exports.RiskEngine = void 0;
18
+ /**
19
+ * Risk Engine
20
+ *
21
+ * Uses deterministic heuristics, not ML:
22
+ * - Pattern matching for loops
23
+ * - Velocity thresholds for cost explosions
24
+ * - Hash deduplication for redundancy
25
+ */
26
+ class RiskEngine {
27
+ constructor() {
28
+ this.loopPatterns = new Map();
29
+ this.callHistory = new Map();
30
+ }
31
+ /**
32
+ * Calculate risk score
33
+ * Must complete in <1ms
34
+ */
35
+ assess(context) {
36
+ const startTime = Date.now();
37
+ const factors = this.calculateFactors(context);
38
+ const composite = this.compositeScore(factors);
39
+ const explanation = this.buildExplanation(factors);
40
+ // Update history
41
+ this.updateHistory(context);
42
+ return {
43
+ score: composite,
44
+ factors,
45
+ explanation,
46
+ confidence: this.calculateConfidence(factors),
47
+ };
48
+ }
49
+ calculateFactors(context) {
50
+ return {
51
+ costExplosion: this.assessCostExplosion(context),
52
+ infiniteLoop: this.assessInfiniteLoop(context),
53
+ redundancy: this.assessRedundancy(context),
54
+ composite: 0, // Set later
55
+ };
56
+ }
57
+ /**
58
+ * Cost explosion detection
59
+ * Based on velocity and acceleration patterns
60
+ */
61
+ assessCostExplosion(context) {
62
+ const velocity = context.costVelocity;
63
+ // Thresholds (USD per minute)
64
+ if (velocity > 100)
65
+ return 1.0; // >$100/min = definite explosion
66
+ if (velocity > 50)
67
+ return 0.9; // >$50/min = high risk
68
+ if (velocity > 20)
69
+ return 0.7; // >$20/min = medium risk
70
+ if (velocity > 10)
71
+ return 0.4; // >$10/min = elevated
72
+ if (velocity > 5)
73
+ return 0.2; // >$5/min = slight concern
74
+ return 0.05; // Normal
75
+ }
76
+ /**
77
+ * Infinite loop detection
78
+ * Pattern: A→B→A→B or A→A→A
79
+ */
80
+ assessInfiniteLoop(context) {
81
+ const recent = context.recentCalls;
82
+ if (recent.length < 4)
83
+ return 0.05;
84
+ // Check for A-B-A-B pattern
85
+ const last4 = recent.slice(-4);
86
+ if (last4[0] === last4[2] && last4[1] === last4[3]) {
87
+ return 0.95; // Classic oscillation
88
+ }
89
+ // Check for A-A-A repetition
90
+ const last3 = recent.slice(-3);
91
+ if (last3[0] === last3[1] && last3[1] === last3[2]) {
92
+ return 0.9; // Exact repetition
93
+ }
94
+ // Check for increasing repetition frequency
95
+ const last10 = recent.slice(-10);
96
+ const unique = new Set(last10).size;
97
+ const ratio = unique / last10.length;
98
+ if (ratio < 0.3)
99
+ return 0.8; // 70% repetition
100
+ if (ratio < 0.5)
101
+ return 0.5; // 50% repetition
102
+ if (ratio < 0.7)
103
+ return 0.3; // 30% repetition
104
+ return 0.1;
105
+ }
106
+ /**
107
+ * Redundancy detection
108
+ * Same call within recent history
109
+ */
110
+ assessRedundancy(context) {
111
+ if (context.recentCalls.length < 2)
112
+ return 0;
113
+ const current = context.recentCalls[context.recentCalls.length - 1];
114
+ const previous = context.recentCalls.slice(0, -1);
115
+ // Check if this exact call happened recently
116
+ const duplicates = previous.filter(h => h === current).length;
117
+ if (duplicates >= 2)
118
+ return 0.9; // 3rd identical call
119
+ if (duplicates === 1)
120
+ return 0.6; // 2nd identical call
121
+ if (previous.includes(current))
122
+ return 0.3; // Seen before
123
+ return 0.05;
124
+ }
125
+ /**
126
+ * Composite score - max of all factors with weighting
127
+ */
128
+ compositeScore(factors) {
129
+ // Weighted combination
130
+ const weights = {
131
+ costExplosion: 0.4,
132
+ infiniteLoop: 0.35,
133
+ redundancy: 0.25,
134
+ };
135
+ const weighted = factors.costExplosion * weights.costExplosion +
136
+ factors.infiniteLoop * weights.infiniteLoop +
137
+ factors.redundancy * weights.redundancy;
138
+ // Boost if multiple factors are elevated
139
+ const elevatedCount = [
140
+ factors.costExplosion > 0.5,
141
+ factors.infiniteLoop > 0.5,
142
+ factors.redundancy > 0.5,
143
+ ].filter(Boolean).length;
144
+ const boost = elevatedCount >= 2 ? 0.15 : 0;
145
+ return Math.min(1.0, weighted + boost);
146
+ }
147
+ /**
148
+ * Build human-readable explanation
149
+ */
150
+ buildExplanation(factors) {
151
+ const reasons = [];
152
+ if (factors.costExplosion > 0.8) {
153
+ reasons.push(`CRITICAL: Cost velocity at $${factors.costExplosion}/min`);
154
+ }
155
+ else if (factors.costExplosion > 0.5) {
156
+ reasons.push(`WARNING: High cost velocity detected`);
157
+ }
158
+ if (factors.infiniteLoop > 0.8) {
159
+ reasons.push(`CRITICAL: Loop pattern detected in recent calls`);
160
+ }
161
+ else if (factors.infiniteLoop > 0.5) {
162
+ reasons.push(`WARNING: Repetitive call pattern`);
163
+ }
164
+ if (factors.redundancy > 0.7) {
165
+ reasons.push(`Redundant call: identical to recent execution`);
166
+ }
167
+ if (reasons.length === 0) {
168
+ reasons.push('No significant risk factors detected');
169
+ }
170
+ return reasons;
171
+ }
172
+ /**
173
+ * Confidence based on data quality
174
+ */
175
+ calculateConfidence(factors) {
176
+ // More history = higher confidence
177
+ const hasStrongSignal = factors.costExplosion > 0.8 ||
178
+ factors.infiniteLoop > 0.8 ||
179
+ factors.redundancy > 0.8;
180
+ return hasStrongSignal ? 0.95 : 0.75;
181
+ }
182
+ /**
183
+ * Update call history
184
+ */
185
+ updateHistory(context) {
186
+ const existing = this.callHistory.get(context.sessionId) || [];
187
+ const current = context.recentCalls[context.recentCalls.length - 1];
188
+ if (current) {
189
+ existing.push(current);
190
+ // Keep only last 20
191
+ if (existing.length > 20) {
192
+ existing.shift();
193
+ }
194
+ this.callHistory.set(context.sessionId, existing);
195
+ }
196
+ }
197
+ /**
198
+ * Clear session data
199
+ */
200
+ clearSession(sessionId) {
201
+ this.callHistory.delete(sessionId);
202
+ this.loopPatterns.delete(sessionId);
203
+ }
204
+ }
205
+ exports.RiskEngine = RiskEngine;
206
+ exports.riskEngine = new RiskEngine();
207
+ //# sourceMappingURL=RiskEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiskEngine.js","sourceRoot":"","sources":["../../src/aecl/RiskEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * AECL - AI Execution Control Layer
3
+ * Production-grade execution interception
4
+ *
5
+ * CORE MODULES:
6
+ * - ExecutionInterceptor: <5ms decision engine
7
+ * - RiskEngine: 0-1 risk scoring
8
+ * - PolicyEngine: simple rule evaluation
9
+ * - ExecutionMemory: hashed trace storage
10
+ * - ROITelemetry: cost savings tracking
11
+ *
12
+ * USAGE:
13
+ * ```typescript
14
+ * import { aecl } from 'ai-execution-control/aecl';
15
+ *
16
+ * const result = aecl.intercept({
17
+ * id: 'req-1',
18
+ * provider: 'openai',
19
+ * operation: 'chat.completions.create',
20
+ * estimatedTokens: 2000,
21
+ * estimatedCost: 0.06,
22
+ * context: {
23
+ * sessionId: 'sess-1',
24
+ * agentId: 'agent-1',
25
+ * stepNumber: 5,
26
+ * previousCalls: 4,
27
+ * totalTokens: 8000,
28
+ * totalCost: 0.24,
29
+ * startTime: Date.now(),
30
+ * },
31
+ * inputHash: 'hash-of-prompt',
32
+ * });
33
+ *
34
+ * if (result.decision === 'block') {
35
+ * console.log('Blocked:', result.reason);
36
+ * console.log('Saved: $', result.estimatedSavings);
37
+ * }
38
+ * ```
39
+ */
40
+ export { ExecutionInterceptor, interceptor } from './ExecutionInterceptor';
41
+ export { RiskEngine, riskEngine } from './RiskEngine';
42
+ export { PolicyEngine, policyEngine } from './PolicyEngine';
43
+ export { ExecutionMemory, executionMemory } from './ExecutionMemory';
44
+ export { ROITelemetry, roiTelemetry } from './ROITelemetry';
45
+ export interface AECLConfig {
46
+ failOpen?: boolean;
47
+ maxLatencyMs?: number;
48
+ maxCostPerSession?: number;
49
+ maxStepsPerSession?: number;
50
+ maxCostPerRequest?: number;
51
+ }
52
+ /**
53
+ * Unified AECL interface
54
+ */
55
+ export declare class AECL {
56
+ private interceptor;
57
+ private riskEngine;
58
+ private policyEngine;
59
+ private memory;
60
+ private telemetry;
61
+ intercept: (request: any) => any;
62
+ assessRisk: (input: any) => any;
63
+ evaluatePolicy: (context: any, action: any, cost: any) => any;
64
+ checkDuplicate: (sessionId: string, inputHash: string, operation: string) => any;
65
+ logDecision: (decision: any) => void;
66
+ getROI: () => any;
67
+ getDashboard: () => any;
68
+ exportCSV: () => string;
69
+ constructor(config?: AECLConfig);
70
+ /**
71
+ * Record execution trace
72
+ */
73
+ recordExecution(sessionId: string, trace: any): void;
74
+ }
75
+ export declare const aecl: AECL;
76
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aecl/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS5D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,IAAI;IACf,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAe;IAGhC,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC;IACjC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;IAChC,cAAc,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;IAC9D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,GAAG,CAAC;IACjF,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,GAAG,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,CAAC;IACxB,SAAS,EAAE,MAAM,MAAM,CAAC;gBAEZ,MAAM,GAAE,UAAe;IA2BnC;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;CAY9C;AAGD,eAAO,MAAM,IAAI,MAAa,CAAC"}