@salimassili/ai-costguard 1.1.5 → 1.1.8

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 (494) hide show
  1. package/README.md +72 -77
  2. package/dist/core/CostGuard.d.ts +27 -0
  3. package/dist/core/CostGuard.d.ts.map +1 -0
  4. package/dist/core/CostGuard.js +191 -0
  5. package/dist/core/CostGuard.js.map +1 -0
  6. package/dist/core/types.d.ts +28 -23
  7. package/dist/core/types.d.ts.map +1 -1
  8. package/dist/core/types.js +4 -2
  9. package/dist/core/types.js.map +1 -1
  10. package/dist/index.d.ts +14 -33
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -69
  13. package/dist/index.js.map +1 -1
  14. package/package.json +28 -65
  15. package/dist/aecl/ExecutionInterceptor.d.ts +0 -111
  16. package/dist/aecl/ExecutionInterceptor.d.ts.map +0 -1
  17. package/dist/aecl/ExecutionInterceptor.js +0 -280
  18. package/dist/aecl/ExecutionInterceptor.js.map +0 -1
  19. package/dist/aecl/ExecutionMemory.d.ts +0 -103
  20. package/dist/aecl/ExecutionMemory.d.ts.map +0 -1
  21. package/dist/aecl/ExecutionMemory.js +0 -164
  22. package/dist/aecl/ExecutionMemory.js.map +0 -1
  23. package/dist/aecl/PolicyEngine.d.ts +0 -77
  24. package/dist/aecl/PolicyEngine.d.ts.map +0 -1
  25. package/dist/aecl/PolicyEngine.js +0 -170
  26. package/dist/aecl/PolicyEngine.js.map +0 -1
  27. package/dist/aecl/ROITelemetry.d.ts +0 -110
  28. package/dist/aecl/ROITelemetry.d.ts.map +0 -1
  29. package/dist/aecl/ROITelemetry.js +0 -211
  30. package/dist/aecl/ROITelemetry.js.map +0 -1
  31. package/dist/aecl/RiskEngine.d.ts +0 -90
  32. package/dist/aecl/RiskEngine.d.ts.map +0 -1
  33. package/dist/aecl/RiskEngine.js +0 -207
  34. package/dist/aecl/RiskEngine.js.map +0 -1
  35. package/dist/aecl/index.d.ts +0 -76
  36. package/dist/aecl/index.d.ts.map +0 -1
  37. package/dist/aecl/index.js +0 -111
  38. package/dist/aecl/index.js.map +0 -1
  39. package/dist/aerl/ExecutionGraph.d.ts +0 -123
  40. package/dist/aerl/ExecutionGraph.d.ts.map +0 -1
  41. package/dist/aerl/ExecutionGraph.js +0 -289
  42. package/dist/aerl/ExecutionGraph.js.map +0 -1
  43. package/dist/aerl/ExecutionInterceptor.d.ts +0 -94
  44. package/dist/aerl/ExecutionInterceptor.d.ts.map +0 -1
  45. package/dist/aerl/ExecutionInterceptor.js +0 -246
  46. package/dist/aerl/ExecutionInterceptor.js.map +0 -1
  47. package/dist/aerl/ExecutionMemory.d.ts +0 -138
  48. package/dist/aerl/ExecutionMemory.d.ts.map +0 -1
  49. package/dist/aerl/ExecutionMemory.js +0 -284
  50. package/dist/aerl/ExecutionMemory.js.map +0 -1
  51. package/dist/aerl/FailurePrediction.d.ts +0 -71
  52. package/dist/aerl/FailurePrediction.d.ts.map +0 -1
  53. package/dist/aerl/FailurePrediction.js +0 -204
  54. package/dist/aerl/FailurePrediction.js.map +0 -1
  55. package/dist/aerl/RecoveryEngine.d.ts +0 -74
  56. package/dist/aerl/RecoveryEngine.d.ts.map +0 -1
  57. package/dist/aerl/RecoveryEngine.js +0 -194
  58. package/dist/aerl/RecoveryEngine.js.map +0 -1
  59. package/dist/aerl/ReliabilityEngine.d.ts +0 -74
  60. package/dist/aerl/ReliabilityEngine.d.ts.map +0 -1
  61. package/dist/aerl/ReliabilityEngine.js +0 -205
  62. package/dist/aerl/ReliabilityEngine.js.map +0 -1
  63. package/dist/aerl/ReliabilityTelemetry.d.ts +0 -118
  64. package/dist/aerl/ReliabilityTelemetry.d.ts.map +0 -1
  65. package/dist/aerl/ReliabilityTelemetry.js +0 -247
  66. package/dist/aerl/ReliabilityTelemetry.js.map +0 -1
  67. package/dist/aerl/index.d.ts +0 -170
  68. package/dist/aerl/index.d.ts.map +0 -1
  69. package/dist/aerl/index.js +0 -223
  70. package/dist/aerl/index.js.map +0 -1
  71. package/dist/ambient/AmbientProtection.d.ts +0 -79
  72. package/dist/ambient/AmbientProtection.d.ts.map +0 -1
  73. package/dist/ambient/AmbientProtection.js +0 -251
  74. package/dist/ambient/AmbientProtection.js.map +0 -1
  75. package/dist/bin/start.d.ts +0 -14
  76. package/dist/bin/start.d.ts.map +0 -1
  77. package/dist/bin/start.js +0 -54
  78. package/dist/bin/start.js.map +0 -1
  79. package/dist/cli/index.d.ts +0 -3
  80. package/dist/cli/index.d.ts.map +0 -1
  81. package/dist/cli/index.js +0 -64
  82. package/dist/cli/index.js.map +0 -1
  83. package/dist/cli/outputContract.d.ts +0 -19
  84. package/dist/cli/outputContract.d.ts.map +0 -1
  85. package/dist/cli/outputContract.js +0 -54
  86. package/dist/cli/outputContract.js.map +0 -1
  87. package/dist/cli/storage.d.ts +0 -61
  88. package/dist/cli/storage.d.ts.map +0 -1
  89. package/dist/cli/storage.js +0 -143
  90. package/dist/cli/storage.js.map +0 -1
  91. package/dist/client.d.ts +0 -29
  92. package/dist/client.d.ts.map +0 -1
  93. package/dist/client.js +0 -58
  94. package/dist/client.js.map +0 -1
  95. package/dist/config/constants.d.ts +0 -109
  96. package/dist/config/constants.d.ts.map +0 -1
  97. package/dist/config/constants.js +0 -151
  98. package/dist/config/constants.js.map +0 -1
  99. package/dist/config/index.d.ts +0 -5
  100. package/dist/config/index.d.ts.map +0 -1
  101. package/dist/config/index.js +0 -21
  102. package/dist/config/index.js.map +0 -1
  103. package/dist/config/pricing.d.ts +0 -12
  104. package/dist/config/pricing.d.ts.map +0 -1
  105. package/dist/config/pricing.js +0 -45
  106. package/dist/config/pricing.js.map +0 -1
  107. package/dist/config/productionConfig.d.ts +0 -8
  108. package/dist/config/productionConfig.d.ts.map +0 -1
  109. package/dist/config/productionConfig.js +0 -21
  110. package/dist/config/productionConfig.js.map +0 -1
  111. package/dist/config/userConfig.d.ts +0 -31
  112. package/dist/config/userConfig.d.ts.map +0 -1
  113. package/dist/config/userConfig.js +0 -116
  114. package/dist/config/userConfig.js.map +0 -1
  115. package/dist/controlPlane/configServer.d.ts +0 -7
  116. package/dist/controlPlane/configServer.d.ts.map +0 -1
  117. package/dist/controlPlane/configServer.js +0 -47
  118. package/dist/controlPlane/configServer.js.map +0 -1
  119. package/dist/core/AgentBehaviorGraph.d.ts +0 -163
  120. package/dist/core/AgentBehaviorGraph.d.ts.map +0 -1
  121. package/dist/core/AgentBehaviorGraph.js +0 -341
  122. package/dist/core/AgentBehaviorGraph.js.map +0 -1
  123. package/dist/core/AlertManager.d.ts +0 -19
  124. package/dist/core/AlertManager.d.ts.map +0 -1
  125. package/dist/core/AlertManager.js +0 -64
  126. package/dist/core/AlertManager.js.map +0 -1
  127. package/dist/core/AuditTrail.d.ts +0 -107
  128. package/dist/core/AuditTrail.d.ts.map +0 -1
  129. package/dist/core/AuditTrail.js +0 -256
  130. package/dist/core/AuditTrail.js.map +0 -1
  131. package/dist/core/CostLedger.d.ts +0 -135
  132. package/dist/core/CostLedger.d.ts.map +0 -1
  133. package/dist/core/CostLedger.js +0 -224
  134. package/dist/core/CostLedger.js.map +0 -1
  135. package/dist/core/CostPredictionEngine.d.ts +0 -110
  136. package/dist/core/CostPredictionEngine.d.ts.map +0 -1
  137. package/dist/core/CostPredictionEngine.js +0 -225
  138. package/dist/core/CostPredictionEngine.js.map +0 -1
  139. package/dist/core/CostTruthEngine.d.ts +0 -108
  140. package/dist/core/CostTruthEngine.d.ts.map +0 -1
  141. package/dist/core/CostTruthEngine.js +0 -170
  142. package/dist/core/CostTruthEngine.js.map +0 -1
  143. package/dist/core/DetectionEngine.d.ts +0 -147
  144. package/dist/core/DetectionEngine.d.ts.map +0 -1
  145. package/dist/core/DetectionEngine.js +0 -429
  146. package/dist/core/DetectionEngine.js.map +0 -1
  147. package/dist/core/ExecutionInterceptor.d.ts +0 -135
  148. package/dist/core/ExecutionInterceptor.d.ts.map +0 -1
  149. package/dist/core/ExecutionInterceptor.js +0 -285
  150. package/dist/core/ExecutionInterceptor.js.map +0 -1
  151. package/dist/core/ExplainabilityLayer.d.ts +0 -109
  152. package/dist/core/ExplainabilityLayer.d.ts.map +0 -1
  153. package/dist/core/ExplainabilityLayer.js +0 -277
  154. package/dist/core/ExplainabilityLayer.js.map +0 -1
  155. package/dist/core/LearningSystem.d.ts +0 -124
  156. package/dist/core/LearningSystem.d.ts.map +0 -1
  157. package/dist/core/LearningSystem.js +0 -294
  158. package/dist/core/LearningSystem.js.map +0 -1
  159. package/dist/core/Logger.d.ts +0 -122
  160. package/dist/core/Logger.d.ts.map +0 -1
  161. package/dist/core/Logger.js +0 -233
  162. package/dist/core/Logger.js.map +0 -1
  163. package/dist/core/PolicyEngine.d.ts +0 -148
  164. package/dist/core/PolicyEngine.d.ts.map +0 -1
  165. package/dist/core/PolicyEngine.js +0 -336
  166. package/dist/core/PolicyEngine.js.map +0 -1
  167. package/dist/core/PricingConfig.d.ts +0 -55
  168. package/dist/core/PricingConfig.d.ts.map +0 -1
  169. package/dist/core/PricingConfig.js +0 -132
  170. package/dist/core/PricingConfig.js.map +0 -1
  171. package/dist/core/SessionStats.d.ts +0 -101
  172. package/dist/core/SessionStats.d.ts.map +0 -1
  173. package/dist/core/SessionStats.js +0 -261
  174. package/dist/core/SessionStats.js.map +0 -1
  175. package/dist/core/StateStore.d.ts +0 -100
  176. package/dist/core/StateStore.d.ts.map +0 -1
  177. package/dist/core/StateStore.js +0 -336
  178. package/dist/core/StateStore.js.map +0 -1
  179. package/dist/core/index.d.ts +0 -3
  180. package/dist/core/index.d.ts.map +0 -1
  181. package/dist/core/index.js +0 -19
  182. package/dist/core/index.js.map +0 -1
  183. package/dist/cost-guard.d.ts +0 -41
  184. package/dist/cost-guard.d.ts.map +0 -1
  185. package/dist/cost-guard.js +0 -274
  186. package/dist/cost-guard.js.map +0 -1
  187. package/dist/dashboard/roiDashboard.d.ts +0 -12
  188. package/dist/dashboard/roiDashboard.d.ts.map +0 -1
  189. package/dist/dashboard/roiDashboard.js +0 -28
  190. package/dist/dashboard/roiDashboard.js.map +0 -1
  191. package/dist/demo/compareExecution.d.ts +0 -9
  192. package/dist/demo/compareExecution.d.ts.map +0 -1
  193. package/dist/demo/compareExecution.js +0 -43
  194. package/dist/demo/compareExecution.js.map +0 -1
  195. package/dist/demo/demoRunner.d.ts +0 -16
  196. package/dist/demo/demoRunner.d.ts.map +0 -1
  197. package/dist/demo/demoRunner.js +0 -73
  198. package/dist/demo/demoRunner.js.map +0 -1
  199. package/dist/firewall/costEstimator.d.ts +0 -3
  200. package/dist/firewall/costEstimator.d.ts.map +0 -1
  201. package/dist/firewall/costEstimator.js +0 -22
  202. package/dist/firewall/costEstimator.js.map +0 -1
  203. package/dist/firewall/executionGuard.d.ts +0 -18
  204. package/dist/firewall/executionGuard.d.ts.map +0 -1
  205. package/dist/firewall/executionGuard.js +0 -80
  206. package/dist/firewall/executionGuard.js.map +0 -1
  207. package/dist/firewall/loopDetector.d.ts +0 -13
  208. package/dist/firewall/loopDetector.d.ts.map +0 -1
  209. package/dist/firewall/loopDetector.js +0 -24
  210. package/dist/firewall/loopDetector.js.map +0 -1
  211. package/dist/firewall/policy.d.ts +0 -4
  212. package/dist/firewall/policy.d.ts.map +0 -1
  213. package/dist/firewall/policy.js +0 -16
  214. package/dist/firewall/policy.js.map +0 -1
  215. package/dist/firewall/types.d.ts +0 -38
  216. package/dist/firewall/types.d.ts.map +0 -1
  217. package/dist/firewall/types.js +0 -3
  218. package/dist/firewall/types.js.map +0 -1
  219. package/dist/logger/console.d.ts +0 -27
  220. package/dist/logger/console.d.ts.map +0 -1
  221. package/dist/logger/console.js +0 -68
  222. package/dist/logger/console.js.map +0 -1
  223. package/dist/logger/database.d.ts +0 -40
  224. package/dist/logger/database.d.ts.map +0 -1
  225. package/dist/logger/database.js +0 -127
  226. package/dist/logger/database.js.map +0 -1
  227. package/dist/logger/index.d.ts +0 -3
  228. package/dist/logger/index.d.ts.map +0 -1
  229. package/dist/logger/index.js +0 -11
  230. package/dist/logger/index.js.map +0 -1
  231. package/dist/loop-shield.d.ts +0 -48
  232. package/dist/loop-shield.d.ts.map +0 -1
  233. package/dist/loop-shield.js +0 -436
  234. package/dist/loop-shield.js.map +0 -1
  235. package/dist/metrics/BusinessMetricsEngine.d.ts +0 -109
  236. package/dist/metrics/BusinessMetricsEngine.d.ts.map +0 -1
  237. package/dist/metrics/BusinessMetricsEngine.js +0 -222
  238. package/dist/metrics/BusinessMetricsEngine.js.map +0 -1
  239. package/dist/metrics/index.d.ts +0 -11
  240. package/dist/metrics/index.d.ts.map +0 -1
  241. package/dist/metrics/index.js +0 -17
  242. package/dist/metrics/index.js.map +0 -1
  243. package/dist/middleware/expressFirewall.d.ts +0 -51
  244. package/dist/middleware/expressFirewall.d.ts.map +0 -1
  245. package/dist/middleware/expressFirewall.js +0 -140
  246. package/dist/middleware/expressFirewall.js.map +0 -1
  247. package/dist/middleware/index.d.ts +0 -8
  248. package/dist/middleware/index.d.ts.map +0 -1
  249. package/dist/middleware/index.js +0 -15
  250. package/dist/middleware/index.js.map +0 -1
  251. package/dist/middleware/withFirewall.d.ts +0 -50
  252. package/dist/middleware/withFirewall.d.ts.map +0 -1
  253. package/dist/middleware/withFirewall.js +0 -155
  254. package/dist/middleware/withFirewall.js.map +0 -1
  255. package/dist/observability/logger.d.ts +0 -14
  256. package/dist/observability/logger.d.ts.map +0 -1
  257. package/dist/observability/logger.js +0 -21
  258. package/dist/observability/logger.js.map +0 -1
  259. package/dist/observability/metrics.d.ts +0 -17
  260. package/dist/observability/metrics.d.ts.map +0 -1
  261. package/dist/observability/metrics.js +0 -36
  262. package/dist/observability/metrics.js.map +0 -1
  263. package/dist/os/ExecutionOS.d.ts +0 -220
  264. package/dist/os/ExecutionOS.d.ts.map +0 -1
  265. package/dist/os/ExecutionOS.js +0 -398
  266. package/dist/os/ExecutionOS.js.map +0 -1
  267. package/dist/os/GlobalIntelligence.d.ts +0 -154
  268. package/dist/os/GlobalIntelligence.d.ts.map +0 -1
  269. package/dist/os/GlobalIntelligence.js +0 -374
  270. package/dist/os/GlobalIntelligence.js.map +0 -1
  271. package/dist/os/PolicyMarketplace.d.ts +0 -192
  272. package/dist/os/PolicyMarketplace.d.ts.map +0 -1
  273. package/dist/os/PolicyMarketplace.js +0 -384
  274. package/dist/os/PolicyMarketplace.js.map +0 -1
  275. package/dist/os/SDKInterception.d.ts +0 -115
  276. package/dist/os/SDKInterception.d.ts.map +0 -1
  277. package/dist/os/SDKInterception.js +0 -317
  278. package/dist/os/SDKInterception.js.map +0 -1
  279. package/dist/os/index.d.ts +0 -60
  280. package/dist/os/index.d.ts.map +0 -1
  281. package/dist/os/index.js +0 -82
  282. package/dist/os/index.js.map +0 -1
  283. package/dist/proxy/index.d.ts +0 -2
  284. package/dist/proxy/index.d.ts.map +0 -1
  285. package/dist/proxy/index.js +0 -18
  286. package/dist/proxy/index.js.map +0 -1
  287. package/dist/proxy/server.d.ts +0 -24
  288. package/dist/proxy/server.d.ts.map +0 -1
  289. package/dist/proxy/server.js +0 -395
  290. package/dist/proxy/server.js.map +0 -1
  291. package/dist/public/BenchmarksPage.d.ts +0 -60
  292. package/dist/public/BenchmarksPage.d.ts.map +0 -1
  293. package/dist/public/BenchmarksPage.js +0 -397
  294. package/dist/public/BenchmarksPage.js.map +0 -1
  295. package/dist/public/DocsPage.d.ts +0 -11
  296. package/dist/public/DocsPage.d.ts.map +0 -1
  297. package/dist/public/DocsPage.js +0 -496
  298. package/dist/public/DocsPage.js.map +0 -1
  299. package/dist/public/StatusPage.d.ts +0 -55
  300. package/dist/public/StatusPage.d.ts.map +0 -1
  301. package/dist/public/StatusPage.js +0 -344
  302. package/dist/public/StatusPage.js.map +0 -1
  303. package/dist/public/index.d.ts +0 -12
  304. package/dist/public/index.d.ts.map +0 -1
  305. package/dist/public/index.js +0 -20
  306. package/dist/public/index.js.map +0 -1
  307. package/dist/replacements/axios.d.ts +0 -14
  308. package/dist/replacements/axios.d.ts.map +0 -1
  309. package/dist/replacements/axios.js +0 -35
  310. package/dist/replacements/axios.js.map +0 -1
  311. package/dist/replacements/fetch.d.ts +0 -13
  312. package/dist/replacements/fetch.d.ts.map +0 -1
  313. package/dist/replacements/fetch.js +0 -20
  314. package/dist/replacements/fetch.js.map +0 -1
  315. package/dist/replacements/openai.d.ts +0 -14
  316. package/dist/replacements/openai.d.ts.map +0 -1
  317. package/dist/replacements/openai.js +0 -22
  318. package/dist/replacements/openai.js.map +0 -1
  319. package/dist/saas/CostExplosionDemo.d.ts +0 -56
  320. package/dist/saas/CostExplosionDemo.d.ts.map +0 -1
  321. package/dist/saas/CostExplosionDemo.js +0 -190
  322. package/dist/saas/CostExplosionDemo.js.map +0 -1
  323. package/dist/saas/LiveProtection.d.ts +0 -61
  324. package/dist/saas/LiveProtection.d.ts.map +0 -1
  325. package/dist/saas/LiveProtection.js +0 -187
  326. package/dist/saas/LiveProtection.js.map +0 -1
  327. package/dist/saas/ProductionSaaS.d.ts +0 -56
  328. package/dist/saas/ProductionSaaS.d.ts.map +0 -1
  329. package/dist/saas/ProductionSaaS.js +0 -831
  330. package/dist/saas/ProductionSaaS.js.map +0 -1
  331. package/dist/saas/SaaSServer.d.ts +0 -50
  332. package/dist/saas/SaaSServer.d.ts.map +0 -1
  333. package/dist/saas/SaaSServer.js +0 -669
  334. package/dist/saas/SaaSServer.js.map +0 -1
  335. package/dist/saas/UserStore.d.ts +0 -49
  336. package/dist/saas/UserStore.d.ts.map +0 -1
  337. package/dist/saas/UserStore.js +0 -137
  338. package/dist/saas/UserStore.js.map +0 -1
  339. package/dist/saas/billingMetrics.d.ts +0 -14
  340. package/dist/saas/billingMetrics.d.ts.map +0 -1
  341. package/dist/saas/billingMetrics.js +0 -23
  342. package/dist/saas/billingMetrics.js.map +0 -1
  343. package/dist/saas/index.d.ts +0 -12
  344. package/dist/saas/index.d.ts.map +0 -1
  345. package/dist/saas/index.js +0 -23
  346. package/dist/saas/index.js.map +0 -1
  347. package/dist/saas/telemetry.d.ts +0 -24
  348. package/dist/saas/telemetry.d.ts.map +0 -1
  349. package/dist/saas/telemetry.js +0 -30
  350. package/dist/saas/telemetry.js.map +0 -1
  351. package/dist/saas/usageMeter.d.ts +0 -28
  352. package/dist/saas/usageMeter.d.ts.map +0 -1
  353. package/dist/saas/usageMeter.js +0 -41
  354. package/dist/saas/usageMeter.js.map +0 -1
  355. package/dist/security/TrustBoundaryValidator.d.ts +0 -105
  356. package/dist/security/TrustBoundaryValidator.d.ts.map +0 -1
  357. package/dist/security/TrustBoundaryValidator.js +0 -305
  358. package/dist/security/TrustBoundaryValidator.js.map +0 -1
  359. package/dist/starters/express-protected.d.ts +0 -18
  360. package/dist/starters/express-protected.d.ts.map +0 -1
  361. package/dist/starters/express-protected.js +0 -93
  362. package/dist/starters/express-protected.js.map +0 -1
  363. package/dist/starters/langchain-protected.d.ts +0 -18
  364. package/dist/starters/langchain-protected.d.ts.map +0 -1
  365. package/dist/starters/langchain-protected.js +0 -85
  366. package/dist/starters/langchain-protected.js.map +0 -1
  367. package/dist/starters/openai-protected.d.ts +0 -19
  368. package/dist/starters/openai-protected.d.ts.map +0 -1
  369. package/dist/starters/openai-protected.js +0 -84
  370. package/dist/starters/openai-protected.js.map +0 -1
  371. package/dist/starters/serverless-protected.d.ts +0 -19
  372. package/dist/starters/serverless-protected.d.ts.map +0 -1
  373. package/dist/starters/serverless-protected.js +0 -83
  374. package/dist/starters/serverless-protected.js.map +0 -1
  375. package/dist/storage/adapters.d.ts +0 -24
  376. package/dist/storage/adapters.d.ts.map +0 -1
  377. package/dist/storage/adapters.js +0 -123
  378. package/dist/storage/adapters.js.map +0 -1
  379. package/dist/storage/index.d.ts +0 -2
  380. package/dist/storage/index.d.ts.map +0 -1
  381. package/dist/storage/index.js +0 -8
  382. package/dist/storage/index.js.map +0 -1
  383. package/dist/tests/b2b-hardening.test.d.ts +0 -2
  384. package/dist/tests/b2b-hardening.test.d.ts.map +0 -1
  385. package/dist/tests/b2b-hardening.test.js +0 -164
  386. package/dist/tests/b2b-hardening.test.js.map +0 -1
  387. package/dist/tests/cli.contract.test.d.ts +0 -2
  388. package/dist/tests/cli.contract.test.d.ts.map +0 -1
  389. package/dist/tests/cli.contract.test.js +0 -28
  390. package/dist/tests/cli.contract.test.js.map +0 -1
  391. package/dist/tests/cli.snapshot.test.d.ts +0 -14
  392. package/dist/tests/cli.snapshot.test.d.ts.map +0 -1
  393. package/dist/tests/cli.snapshot.test.js +0 -132
  394. package/dist/tests/cli.snapshot.test.js.map +0 -1
  395. package/dist/tests/cli.strict.test.d.ts +0 -6
  396. package/dist/tests/cli.strict.test.d.ts.map +0 -1
  397. package/dist/tests/cli.strict.test.js +0 -173
  398. package/dist/tests/cli.strict.test.js.map +0 -1
  399. package/dist/tests/cli.test.d.ts +0 -5
  400. package/dist/tests/cli.test.d.ts.map +0 -1
  401. package/dist/tests/cli.test.js +0 -54
  402. package/dist/tests/cli.test.js.map +0 -1
  403. package/dist/tests/concurrency.state.test.d.ts +0 -6
  404. package/dist/tests/concurrency.state.test.d.ts.map +0 -1
  405. package/dist/tests/concurrency.state.test.js +0 -231
  406. package/dist/tests/concurrency.state.test.js.map +0 -1
  407. package/dist/tests/detection-engine.strict.test.d.ts +0 -6
  408. package/dist/tests/detection-engine.strict.test.d.ts.map +0 -1
  409. package/dist/tests/detection-engine.strict.test.js +0 -323
  410. package/dist/tests/detection-engine.strict.test.js.map +0 -1
  411. package/dist/tests/e2e.system.test.d.ts +0 -7
  412. package/dist/tests/e2e.system.test.d.ts.map +0 -1
  413. package/dist/tests/e2e.system.test.js +0 -189
  414. package/dist/tests/e2e.system.test.js.map +0 -1
  415. package/dist/tests/edge-cases.test.d.ts +0 -6
  416. package/dist/tests/edge-cases.test.d.ts.map +0 -1
  417. package/dist/tests/edge-cases.test.js +0 -357
  418. package/dist/tests/edge-cases.test.js.map +0 -1
  419. package/dist/tests/performance.benchmark.test.d.ts +0 -2
  420. package/dist/tests/performance.benchmark.test.d.ts.map +0 -1
  421. package/dist/tests/performance.benchmark.test.js +0 -24
  422. package/dist/tests/performance.benchmark.test.js.map +0 -1
  423. package/dist/tests/proxy.production.test.d.ts +0 -6
  424. package/dist/tests/proxy.production.test.d.ts.map +0 -1
  425. package/dist/tests/proxy.production.test.js +0 -274
  426. package/dist/tests/proxy.production.test.js.map +0 -1
  427. package/dist/tests/proxy.strict.test.d.ts +0 -6
  428. package/dist/tests/proxy.strict.test.d.ts.map +0 -1
  429. package/dist/tests/proxy.strict.test.js +0 -188
  430. package/dist/tests/proxy.strict.test.js.map +0 -1
  431. package/dist/tests/proxy.test.d.ts +0 -5
  432. package/dist/tests/proxy.test.d.ts.map +0 -1
  433. package/dist/tests/proxy.test.js +0 -61
  434. package/dist/tests/proxy.test.js.map +0 -1
  435. package/dist/tests/roi.scenario.test.d.ts +0 -2
  436. package/dist/tests/roi.scenario.test.d.ts.map +0 -1
  437. package/dist/tests/roi.scenario.test.js +0 -26
  438. package/dist/tests/roi.scenario.test.js.map +0 -1
  439. package/dist/tests/server.contract.test.d.ts +0 -6
  440. package/dist/tests/server.contract.test.d.ts.map +0 -1
  441. package/dist/tests/server.contract.test.js +0 -48
  442. package/dist/tests/server.contract.test.js.map +0 -1
  443. package/dist/tests/tokenCounter.test.d.ts +0 -5
  444. package/dist/tests/tokenCounter.test.d.ts.map +0 -1
  445. package/dist/tests/tokenCounter.test.js +0 -66
  446. package/dist/tests/tokenCounter.test.js.map +0 -1
  447. package/dist/tests/v113/client.test.d.ts +0 -2
  448. package/dist/tests/v113/client.test.d.ts.map +0 -1
  449. package/dist/tests/v113/client.test.js +0 -22
  450. package/dist/tests/v113/client.test.js.map +0 -1
  451. package/dist/tests/v113/executionGuard.test.d.ts +0 -2
  452. package/dist/tests/v113/executionGuard.test.d.ts.map +0 -1
  453. package/dist/tests/v113/executionGuard.test.js +0 -39
  454. package/dist/tests/v113/executionGuard.test.js.map +0 -1
  455. package/dist/token-counter/index.d.ts +0 -2
  456. package/dist/token-counter/index.d.ts.map +0 -1
  457. package/dist/token-counter/index.js +0 -18
  458. package/dist/token-counter/index.js.map +0 -1
  459. package/dist/token-counter/tokenCounter.d.ts +0 -18
  460. package/dist/token-counter/tokenCounter.d.ts.map +0 -1
  461. package/dist/token-counter/tokenCounter.js +0 -91
  462. package/dist/token-counter/tokenCounter.js.map +0 -1
  463. package/dist/trust/ImmutableAudit.d.ts +0 -159
  464. package/dist/trust/ImmutableAudit.d.ts.map +0 -1
  465. package/dist/trust/ImmutableAudit.js +0 -340
  466. package/dist/trust/ImmutableAudit.js.map +0 -1
  467. package/dist/trust/PublicVerificationLedger.d.ts +0 -91
  468. package/dist/trust/PublicVerificationLedger.d.ts.map +0 -1
  469. package/dist/trust/PublicVerificationLedger.js +0 -223
  470. package/dist/trust/PublicVerificationLedger.js.map +0 -1
  471. package/dist/trust/index.d.ts +0 -11
  472. package/dist/trust/index.d.ts.map +0 -1
  473. package/dist/trust/index.js +0 -20
  474. package/dist/trust/index.js.map +0 -1
  475. package/dist/utils/alert.d.ts +0 -13
  476. package/dist/utils/alert.d.ts.map +0 -1
  477. package/dist/utils/alert.js +0 -49
  478. package/dist/utils/alert.js.map +0 -1
  479. package/dist/utils/index.d.ts +0 -2
  480. package/dist/utils/index.d.ts.map +0 -1
  481. package/dist/utils/index.js +0 -18
  482. package/dist/utils/index.js.map +0 -1
  483. package/dist/wrapper/aiFirewall.d.ts +0 -61
  484. package/dist/wrapper/aiFirewall.d.ts.map +0 -1
  485. package/dist/wrapper/aiFirewall.js +0 -117
  486. package/dist/wrapper/aiFirewall.js.map +0 -1
  487. package/dist/wrapper/index.d.ts +0 -3
  488. package/dist/wrapper/index.d.ts.map +0 -1
  489. package/dist/wrapper/index.js +0 -21
  490. package/dist/wrapper/index.js.map +0 -1
  491. package/dist/wrapper/sdk.d.ts +0 -49
  492. package/dist/wrapper/sdk.d.ts.map +0 -1
  493. package/dist/wrapper/sdk.js +0 -140
  494. package/dist/wrapper/sdk.js.map +0 -1
package/README.md CHANGED
@@ -1,112 +1,107 @@
1
- # OpenAI Agent Cost Explosion Prevention Layer
1
+ # AI CostGuard
2
2
 
3
- Stop OpenAI agent cost explosions before they happen.
3
+ The kill-switch for AI agents.
4
4
 
5
- A pre-execution firewall that detects and blocks runaway AI agent patterns—saving 60-90% on production API costs.
5
+ Prevent runaway AI agent loops, token bombs, and budget explosions before they happen.
6
6
 
7
- ## The 3 Problems We Solve
7
+ ```bash
8
+ npm install @salimassili/ai-costguard
9
+ ```
8
10
 
9
- 1. **Runaway agent loops** Infinite recursive calls draining budget
10
- 2. **Uncontrolled API spending** → No visibility into per-request costs
11
- 3. **Production LLM cost spikes** → Sudden $10K+ surprises at month-end
11
+ ## Install & Protect (30 seconds)
12
12
 
13
- ## Try It (No Install Required)
13
+ ```ts
14
+ import { withCostGuard } from '@salimassili/ai-costguard';
14
15
 
15
- ```bash
16
- # Run interactive demo
17
- npx ai-firewall demo
16
+ const openai = withCostGuard(client, {
17
+ maxTotalCostPerDay: 5
18
+ });
19
+ ```
18
20
 
19
- # Or try the web demo
20
- open https://ai-firewall.io/demo
21
+ ## What You Get
22
+
23
+ When your agent spirals:
24
+
25
+ ```
26
+ [CostGuard] BLOCKED LOOP → 12 recursive cycles detected → estimated save: $18.42
21
27
  ```
22
28
 
23
- See live simulations of cost explosions—and how much you save by blocking them.
29
+ A financial save event. Not a vague error.
24
30
 
25
- ## Integration Example
31
+ ## Why This Exists
26
32
 
27
- ```ts
28
- import OpenAI from 'openai';
29
- import { initFirewall, withFirewall } from 'ai-firewall';
33
+ AI agents don't fail gracefully. They fail exponentially.
30
34
 
31
- const firewall = initFirewall({ apiKey: process.env.FIREWALL_API_KEY! });
32
- const openai = withFirewall(new OpenAI({ apiKey: process.env.OPENAI_API_KEY! }));
35
+ A stuck agent can burn hundreds of dollars in API credits overnight. Not because it's fast. Because it's relentless.
33
36
 
34
- const decision = firewall.evaluate({
35
- model: 'gpt-4o-mini',
36
- prompt: 'Summarize these tickets',
37
- maxOutputTokens: 240,
38
- });
37
+ Your agent framework has no kill-switch. Rate limiters don't detect semantic loops. Cost alerts tell you after the money is gone.
39
38
 
40
- if (decision.decision !== 'block') {
41
- await openai.chat.completions.create({
42
- model: 'gpt-4o-mini',
43
- messages: [{ role: 'user', content: 'Summarize these tickets' }],
44
- });
45
- }
46
- ```
39
+ This is the missing layer.
47
40
 
48
- ## Enterprise Trust Features
41
+ ## Real-World Protection
49
42
 
50
- **Audit & Compliance:**
51
- - Every decision logged with cryptographic integrity
52
- - Hash-chained audit trail (tamper-evident)
53
- - Replay any execution for debugging
54
- - Compliance certificates for audits
43
+ ### 1. Recursive Loop
44
+ Agent repeats the same reasoning forever.
55
45
 
56
- **Production Safety:**
57
- - Circuit breaker on engine failures
58
- - Always returns a decision (never crashes execution)
59
- - Automatic fallback to safe defaults
60
- - Sub-100ms decision latency guaranteed
46
+ ### 2. Tool Retry Explosion
47
+ Agent retries a failing tool endlessly.
61
48
 
62
- **Deterministic Replay:**
63
- ```ts
64
- import { replaySession, generateComplianceReport } from 'ai-firewall';
49
+ ### 3. Budget Breach
50
+ Agent burns tokens rapidly until blocked.
65
51
 
66
- // Replay any past decision
67
- const result = replaySession('session-123');
68
- console.log(result.summary); // "All 50 decisions replayed identically"
52
+ ## API
69
53
 
70
- // Generate compliance certificate
71
- const report = generateComplianceReport('session-123');
72
- console.log(report.certificate); // Tamper-evident proof
54
+ ```ts
55
+ withCostGuard(client, {
56
+ maxTotalCostPerDay: 10, // Hard USD limit
57
+ maxTokensPerRequest: 4000, // Per-call limit
58
+ maxRequestsPerMinute: 30, // Rate limit
59
+ loopDetection: true // Catch repeated prompts
60
+ })
73
61
  ```
74
62
 
75
- ## Distribution & Sharing
63
+ ## Example
76
64
 
77
- **Shareable Demo Links:**
78
65
  ```ts
79
- import { quickDemo, generateViralPayload } from 'ai-firewall';
66
+ import { withCostGuard, CostGuardError } from '@salimassili/ai-costguard';
80
67
 
81
- // Create shareable demo
82
- const { session, link } = quickDemo('Runaway Chatbot');
83
- console.log(link.url); // https://ai-firewall.io/demo/abc123
68
+ const openai = withCostGuard(
69
+ new OpenAI({ apiKey: process.env.OPENAI_API_KEY }),
70
+ { maxTotalCostPerDay: 5 }
71
+ );
84
72
 
85
- // Generate tweet-ready content
86
- const payload = generateViralPayload(session);
87
- console.log(payload.tweet); // Copy-paste ready
73
+ try {
74
+ const response = await openai.chat.completions.create({
75
+ model: 'gpt-4',
76
+ messages: [{ role: 'user', content: 'Hello' }],
77
+ });
78
+ } catch (err) {
79
+ if (err instanceof CostGuardError) {
80
+ console.log('Agent blocked:', err.message);
81
+ // Handle gracefully
82
+ }
83
+ }
88
84
  ```
89
85
 
90
- **Hosted Demo Server:**
91
- ```bash
92
- # Start self-serve demo server
93
- npx ai-firewall demo-server
86
+ ## Express Middleware
87
+
88
+ ```ts
89
+ import { costGuardMiddleware } from '@salimassili/ai-costguard';
94
90
 
95
- # Users can now try without installing:
96
- # → http://localhost:3001/demo
91
+ app.use(costGuardMiddleware({ maxTotalCostPerDay: 10 }));
97
92
  ```
98
93
 
99
- ## What This Is NOT
94
+ ## Features
100
95
 
101
- General AI safety platform
102
- Model evaluation framework
103
- Generic "AI guardrails" tool
104
- ❌ Multi-cloud abstraction layer
96
+ - **Loop detection** kills repeated prompts and recursive cycles
97
+ - **Daily cost caps** — hard USD limits, no overages
98
+ - **Token limits** block oversized single requests
99
+ - **RPM limits** — catch agents hammering the API
105
100
 
106
- **Only OpenAI cost explosion prevention**
107
- ✅ **Only production API spending control**
108
- ✅ **Only runaway agent detection**
101
+ ## Install Before You Deploy
109
102
 
110
- ---
103
+ ```bash
104
+ npm install @salimassili/ai-costguard
105
+ ```
111
106
 
112
- **One-sentence pitch:** *We stop AI agents from wasting money in production.*
107
+ MIT | [GitHub](https://github.com/salimassili62-afk/ai-costguard)
@@ -0,0 +1,27 @@
1
+ /**
2
+ * CostGuard.ts — AI Agent Loop & Cost Firewall
3
+ *
4
+ * Wraps your AI client and kills runaway loops before they burn money.
5
+ * When it blocks, it tells you exactly how much it saved.
6
+ */
7
+ import { CostGuardConfig, RequestContext, GuardState } from './types.js';
8
+ /**
9
+ * Wraps any AI client. Detects loops. Enforces hard limits.
10
+ * Throws on block so your app handles it.
11
+ */
12
+ export declare function withCostGuard(client: any, config: any, sharedState?: GuardState): any;
13
+ /**
14
+ * Standalone middleware for Express/Fastify
15
+ */
16
+ export declare function costGuardMiddleware(config?: Partial<CostGuardConfig>): (req: any, res: any, next: any) => void;
17
+ /** Custom error so users can catch it specifically */
18
+ export declare class CostGuardError extends Error {
19
+ context: RequestContext;
20
+ constructor(message: string, context: RequestContext);
21
+ }
22
+ /** Get current pricing for a model (cents per 1K tokens) */
23
+ export declare function getPricing(model: string): {
24
+ input: number;
25
+ output: number;
26
+ } | undefined;
27
+ //# sourceMappingURL=CostGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostGuard.d.ts","sourceRoot":"","sources":["../../src/core/CostGuard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAYxF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,UAAU,OAmE/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,IAiB/D,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,UAgBtC;AAoFD,sDAAsD;AACtD,qBAAa,cAAe,SAAQ,KAAK;IACvC,OAAO,EAAE,cAAc,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;CAKrD;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEvF"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * CostGuard.ts — AI Agent Loop & Cost Firewall
3
+ *
4
+ * Wraps your AI client and kills runaway loops before they burn money.
5
+ * When it blocks, it tells you exactly how much it saved.
6
+ */
7
+ const MODEL_PRICING = {
8
+ 'gpt-4': { input: 0.03, output: 0.06 },
9
+ 'gpt-4o': { input: 0.005, output: 0.015 },
10
+ 'gpt-4o-mini': { input: 0.00015, output: 0.0006 },
11
+ 'gpt-3.5-turbo': { input: 0.0005, output: 0.0015 },
12
+ 'claude-3-opus': { input: 0.015, output: 0.075 },
13
+ 'claude-3-sonnet': { input: 0.003, output: 0.015 },
14
+ 'claude-3-haiku': { input: 0.00025, output: 0.00125 },
15
+ };
16
+ /**
17
+ * Wraps any AI client. Detects loops. Enforces hard limits.
18
+ * Throws on block so your app handles it.
19
+ */
20
+ export function withCostGuard(client, config, sharedState) {
21
+ const defaults = {
22
+ maxTokensPerRequest: 4000,
23
+ maxRequestsPerMinute: 30,
24
+ maxTotalCostPerDay: 10.00,
25
+ loopDetection: true,
26
+ };
27
+ const guard = { ...defaults, ...config };
28
+ // Use shared state if provided (for nested objects), otherwise create new
29
+ const state = sharedState || {
30
+ requestCount: 0,
31
+ totalCost: 0,
32
+ lastRequestTime: 0,
33
+ recentPrompts: [],
34
+ blockedCount: 0,
35
+ };
36
+ return new Proxy(client, {
37
+ get(target, prop) {
38
+ const value = target[prop];
39
+ // If it's a function (like .create), wrap it
40
+ if (typeof value === 'function') {
41
+ return (...args) => {
42
+ // Extract request details from args
43
+ const ctx = extractContext(args, prop);
44
+ // Evaluate against limits
45
+ const decision = evaluate(guard, state, ctx);
46
+ if (decision === 'block') {
47
+ state.blockedCount++;
48
+ // Build a financial save message
49
+ const saveMsg = buildSaveMessage(state, ctx);
50
+ console.error(saveMsg);
51
+ if (guard.onLimitHit)
52
+ guard.onLimitHit('Limit exceeded', ctx.estimatedCost);
53
+ throw new CostGuardError(saveMsg.replace('[AI CostGuard] ', ''), ctx);
54
+ }
55
+ // Update state
56
+ state.requestCount++;
57
+ state.totalCost += ctx.estimatedCost;
58
+ state.lastRequestTime = Date.now();
59
+ if (guard.loopDetection)
60
+ state.recentPrompts.push(ctx.prompt);
61
+ if (state.recentPrompts.length > 20)
62
+ state.recentPrompts.shift();
63
+ console.log(`[AI CostGuard] ALLOW: ${ctx.model} | ${ctx.tokens}t | $${ctx.estimatedCost.toFixed(4)} | Total: $${state.totalCost.toFixed(2)}`);
64
+ // Pass through to actual API call
65
+ return value.apply(target, args);
66
+ };
67
+ }
68
+ // If it's a nested object (like .chat.completions), recurse with shared state
69
+ if (value && typeof value === 'object') {
70
+ return withCostGuard(value, guard, state);
71
+ }
72
+ return value;
73
+ },
74
+ });
75
+ }
76
+ /**
77
+ * Standalone middleware for Express/Fastify
78
+ */
79
+ export function costGuardMiddleware(config = {}) {
80
+ const guard = {
81
+ maxTokensPerRequest: 4000,
82
+ maxRequestsPerMinute: 30,
83
+ maxTotalCostPerDay: 10.00,
84
+ loopDetection: true,
85
+ ...config,
86
+ };
87
+ const state = {
88
+ requestCount: 0,
89
+ totalCost: 0,
90
+ lastRequestTime: 0,
91
+ recentPrompts: [],
92
+ blockedCount: 0,
93
+ };
94
+ return (req, res, next) => {
95
+ req.costGuard = {
96
+ state,
97
+ evaluate: (ctx) => {
98
+ const decision = evaluate(guard, state, ctx);
99
+ if (decision === 'block') {
100
+ state.blockedCount++;
101
+ throw new CostGuardError('Request blocked by cost guard', ctx);
102
+ }
103
+ state.requestCount++;
104
+ state.totalCost += ctx.estimatedCost;
105
+ state.lastRequestTime = Date.now();
106
+ },
107
+ };
108
+ next();
109
+ };
110
+ }
111
+ /** Extract request context from API call args */
112
+ function extractContext(args, prop) {
113
+ const params = args[0] || {};
114
+ const model = params.model || 'unknown';
115
+ const messages = params.messages || [];
116
+ const prompt = messages.map((m) => m.content).join(' ').slice(0, 200);
117
+ // Estimate tokens (rough: 1 token ≈ 4 chars for English)
118
+ const inputText = JSON.stringify(messages);
119
+ const estimatedInputTokens = Math.ceil(inputText.length / 4);
120
+ const maxOutputTokens = params.max_tokens || 1000;
121
+ const tokens = estimatedInputTokens + maxOutputTokens;
122
+ // Estimate cost
123
+ const pricing = MODEL_PRICING[model] || { input: 0.01, output: 0.03 };
124
+ const estimatedCost = (estimatedInputTokens / 1000) * pricing.input +
125
+ (maxOutputTokens / 1000) * pricing.output;
126
+ return {
127
+ model,
128
+ tokens,
129
+ estimatedCost,
130
+ timestamp: Date.now(),
131
+ prompt,
132
+ };
133
+ }
134
+ /** Build a human-readable "financial save" message */
135
+ function buildSaveMessage(state, ctx) {
136
+ const duplicates = state.recentPrompts.filter(p => p === ctx.prompt).length;
137
+ const isLoop = duplicates >= 2;
138
+ // Estimate how much we saved by blocking this + projected future calls
139
+ // Assume a runaway loop would repeat ~50 more times if unchecked
140
+ const projectedCycles = isLoop ? 50 : 10;
141
+ const estimatedSave = (ctx.estimatedCost * projectedCycles) + ctx.estimatedCost;
142
+ if (isLoop) {
143
+ return `[AI CostGuard] BLOCKED LOOP → ${duplicates + 1} recursive cycles detected → estimated save: $${estimatedSave.toFixed(2)}`;
144
+ }
145
+ if (ctx.tokens > 4000) {
146
+ return `[AI CostGuard] BLOCKED TOKEN BOMB → ${ctx.tokens} tokens → estimated save: $${ctx.estimatedCost.toFixed(2)}`;
147
+ }
148
+ if (state.totalCost + ctx.estimatedCost > 5) {
149
+ const remaining = (state.totalCost + ctx.estimatedCost) - 5;
150
+ return `[AI CostGuard] BLOCKED BUDGET BREACH → daily cap reached → estimated save: $${remaining.toFixed(2)}`;
151
+ }
152
+ return `[AI CostGuard] BLOCKED → estimated save: $${ctx.estimatedCost.toFixed(2)}`;
153
+ }
154
+ /** Evaluate request against all limits */
155
+ function evaluate(guard, state, ctx) {
156
+ // 1. Token limit
157
+ if (ctx.tokens > guard.maxTokensPerRequest) {
158
+ return 'block';
159
+ }
160
+ // 2. RPM limit
161
+ const oneMinuteAgo = Date.now() - 60000;
162
+ if (state.lastRequestTime > oneMinuteAgo && state.requestCount >= guard.maxRequestsPerMinute) {
163
+ return 'block';
164
+ }
165
+ // 3. Daily cost limit
166
+ if (state.totalCost + ctx.estimatedCost > guard.maxTotalCostPerDay) {
167
+ return 'block';
168
+ }
169
+ // 4. Loop detection (simple: same prompt repeated)
170
+ if (guard.loopDetection && state.recentPrompts.length > 0) {
171
+ const duplicates = state.recentPrompts.filter(p => p === ctx.prompt).length;
172
+ if (duplicates >= 2) {
173
+ return 'block';
174
+ }
175
+ }
176
+ return 'allow';
177
+ }
178
+ /** Custom error so users can catch it specifically */
179
+ export class CostGuardError extends Error {
180
+ context;
181
+ constructor(message, context) {
182
+ super(message);
183
+ this.name = 'CostGuardError';
184
+ this.context = context;
185
+ }
186
+ }
187
+ /** Get current pricing for a model (cents per 1K tokens) */
188
+ export function getPricing(model) {
189
+ return MODEL_PRICING[model];
190
+ }
191
+ //# sourceMappingURL=CostGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostGuard.js","sourceRoot":"","sources":["../../src/core/CostGuard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,aAAa,GAAsD;IACvE,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACtC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IACzC,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IACjD,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAClD,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IAChD,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;IAClD,gBAAgB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;CACtD,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAW,EAAE,MAAW,EAAE,WAAwB;IAC9E,MAAM,QAAQ,GAAoB;QAChC,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,EAAE;QACxB,kBAAkB,EAAE,KAAK;QACzB,aAAa,EAAE,IAAI;KACpB,CAAC;IAEF,MAAM,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;IACzC,0EAA0E;IAC1E,MAAM,KAAK,GAAe,WAAW,IAAI;QACvC,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,MAAM,KAAK,GAAG,MAAM,CAAC,IAAc,CAAC,CAAC;YAErC,6CAA6C;YAC7C,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE;oBACxB,oCAAoC;oBACpC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,IAAc,CAAC,CAAC;oBAEjD,0BAA0B;oBAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;oBAE7C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;wBACzB,KAAK,CAAC,YAAY,EAAE,CAAC;wBAErB,iCAAiC;wBACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAC7C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAEvB,IAAI,KAAK,CAAC,UAAU;4BAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC5E,MAAM,IAAI,cAAc,CACtB,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,EACtC,GAAG,CACJ,CAAC;oBACJ,CAAC;oBAED,eAAe;oBACf,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC;oBACrC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACnC,IAAI,KAAK,CAAC,aAAa;wBAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC9D,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE;wBAAE,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;oBAEjE,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAE9I,kCAAkC;oBAClC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACnC,CAAC,CAAC;YACJ,CAAC;YAED,8EAA8E;YAC9E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvC,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAmC,EAAE;IACvE,MAAM,KAAK,GAAG;QACZ,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,EAAE;QACxB,kBAAkB,EAAE,KAAK;QACzB,aAAa,EAAE,IAAI;QACnB,GAAG,MAAM;KACV,CAAC;IAEF,MAAM,KAAK,GAAe;QACxB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;QACvC,GAAG,CAAC,SAAS,GAAG;YACd,KAAK;YACL,QAAQ,EAAE,CAAC,GAAmB,EAAE,EAAE;gBAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC7C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACzB,KAAK,CAAC,YAAY,EAAE,CAAC;oBACrB,MAAM,IAAI,cAAc,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;gBACjE,CAAC;gBACD,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC;gBACrC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;SACF,CAAC;QACF,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,SAAS,cAAc,CAAC,IAAW,EAAE,IAAY;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3E,yDAAyD;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;IAClD,MAAM,MAAM,GAAG,oBAAoB,GAAG,eAAe,CAAC;IAEtD,gBAAgB;IAChB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtE,MAAM,aAAa,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK;QAC7C,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAEhE,OAAO;QACL,KAAK;QACL,MAAM;QACN,aAAa;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,MAAM;KACP,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,SAAS,gBAAgB,CAAC,KAAiB,EAAE,GAAmB;IAC9D,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAC5E,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,CAAC;IAE/B,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,aAAa,GAAG,eAAe,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC;IAEhF,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,iCAAiC,UAAU,GAAG,CAAC,iDAAiD,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACpI,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACtB,OAAO,uCAAuC,GAAG,CAAC,MAAM,8BAA8B,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACvH,CAAC;IAED,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC5D,OAAO,+EAA+E,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/G,CAAC;IAED,OAAO,6CAA6C,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,0CAA0C;AAC1C,SAAS,QAAQ,CAAC,KAAsB,EAAE,KAAiB,EAAE,GAAmB;IAC9E,iBAAiB;IACjB,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,eAAe;IACf,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IACxC,IAAI,KAAK,CAAC,eAAe,GAAG,YAAY,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7F,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACnE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,mDAAmD;IACnD,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAC5E,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sDAAsD;AACtD,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,OAAO,CAAiB;IACxB,YAAY,OAAe,EAAE,OAAuB;QAClD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,26 +1,31 @@
1
- export interface FirewallMetadata {
2
- orgId?: string;
3
- teamId?: string;
4
- appId?: string;
5
- userId?: string;
6
- sessionId?: string;
7
- agentId?: string;
8
- workflowId?: string;
9
- apiKeyId?: string;
10
- requestId?: string;
11
- provider?: string;
12
- integration?: string;
13
- model?: string;
14
- [key: string]: string | number | boolean | undefined;
1
+ /**
2
+ * Minimal types for AI CostGuard MVP
3
+ */
4
+ export interface CostGuardConfig {
5
+ /** Max tokens per single request */
6
+ maxTokensPerRequest: number;
7
+ /** Max requests per minute */
8
+ maxRequestsPerMinute: number;
9
+ /** Max total cost per day in USD */
10
+ maxTotalCostPerDay: number;
11
+ /** Enable loop detection */
12
+ loopDetection: boolean;
13
+ /** Alert callback when limit hit */
14
+ onLimitHit?: (reason: string, cost: number) => void;
15
15
  }
16
- export interface TokenBreakdown {
17
- inputTokens?: number;
18
- outputTokens?: number;
19
- totalTokens?: number;
20
- cachedInputTokens?: number;
21
- reasoningTokens?: number;
22
- audioInputTokens?: number;
23
- audioOutputTokens?: number;
24
- imageUnits?: number;
16
+ export interface RequestContext {
17
+ model: string;
18
+ tokens: number;
19
+ estimatedCost: number;
20
+ timestamp: number;
21
+ prompt: string;
25
22
  }
23
+ export interface GuardState {
24
+ requestCount: number;
25
+ totalCost: number;
26
+ lastRequestTime: number;
27
+ recentPrompts: string[];
28
+ blockedCount: number;
29
+ }
30
+ export type GuardDecision = 'allow' | 'block';
26
31
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8BAA8B;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oCAAoC;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,4BAA4B;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAC"}
@@ -1,3 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ /**
2
+ * Minimal types for AI CostGuard MVP
3
+ */
4
+ export {};
3
5
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/dist/index.d.ts CHANGED
@@ -1,40 +1,21 @@
1
1
  /**
2
- * AI Cost Guard - Ambient Execution Safety Constraint for AI Systems
2
+ * AI CostGuard AI Agent Loop & Cost Firewall
3
3
  *
4
- * Runtime enforcement layer that activates automatically.
4
+ * Detects infinite loops in autonomous AI agents and kills them
5
+ * before they burn your API budget.
5
6
  *
6
- * Usage:
7
- * import 'ai-costguard'
7
+ * Wraps your AI client. Enforces hard limits.
8
+ * When it blocks, it tells you exactly how much it saved.
8
9
  *
9
- * That's it. Protection is now active. All AI calls are intercepted.
10
+ * @example
11
+ * import { OpenAI } from 'openai';
12
+ * import { withCostGuard } from '@salimassili/ai-costguard';
10
13
  *
11
- * System identity: "Ambient execution safety constraint for AI systems"
12
- * NOT: tool, SDK, framework, product, middleware
13
- * YES: runtime enforcement layer (like TLS for AI)
14
- *
15
- * Removing this import makes your AI execution unsafe.
14
+ * const openai = withCostGuard(
15
+ * new OpenAI({ apiKey: 'sk-...' }),
16
+ * { maxTotalCostPerDay: 5.00 }
17
+ * );
16
18
  */
17
- import { ambientProtection, getAmbientStatus } from './ambient/AmbientProtection';
18
- export { OpenAI } from './replacements/openai';
19
- export { fetch } from './replacements/fetch';
20
- export { default as axios } from './replacements/axios';
21
- export { getAmbientStatus };
22
- export { STARTER_OPENAI_PROTECTED, generateOpenAIStarter } from './starters/openai-protected';
23
- export { STARTER_EXPRESS_PROTECTED, generateExpressStarter } from './starters/express-protected';
24
- export { STARTER_SERVERLESS_PROTECTED, generateServerlessStarter } from './starters/serverless-protected';
25
- export { STARTER_LANGCHAIN_PROTECTED, generateLangChainStarter } from './starters/langchain-protected';
26
- export { ProductionSaaS, startProductionSaaS } from './saas';
27
- export { publicLedger } from './trust/PublicVerificationLedger';
28
- export declare const protection: {
29
- active: boolean;
30
- status: {
31
- active: boolean;
32
- mode: string;
33
- interceptCount: number;
34
- blockCount: number;
35
- aiUsageDetected: boolean;
36
- };
37
- message: string;
38
- };
39
- export default ambientProtection;
19
+ export { withCostGuard, costGuardMiddleware, CostGuardError, getPricing } from './core/CostGuard.js';
20
+ export type { CostGuardConfig, RequestContext, GuardState } from './core/types.js';
40
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAWlF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAI/C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAI5B,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAIvG,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAI7D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAIhE,eAAO,MAAM,UAAU;;;;;;;;;;CAItB,CAAC;AAGF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACrG,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}