@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,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const DetectionEngine_1 = require("../core/DetectionEngine");
4
+ describe('ROI scenario proof', () => {
5
+ beforeEach(() => {
6
+ DetectionEngine_1.detectionEngine.reset();
7
+ });
8
+ test('loop scenario blocks and reports cost saved', () => {
9
+ const prompt = 'repeat-loop-scenario';
10
+ let finalDecision = 'allow';
11
+ for (let i = 0; i < 4; i++) {
12
+ const result = DetectionEngine_1.detectionEngine.analyze({
13
+ model: 'gpt-4',
14
+ prompt,
15
+ estimatedCost: 0.12,
16
+ trustMode: 'block',
17
+ });
18
+ finalDecision = result.decision;
19
+ }
20
+ const metrics = DetectionEngine_1.detectionEngine.getOperationalMetrics(24);
21
+ expect(finalDecision).toBe('block');
22
+ expect(metrics.blocked_requests_count).toBeGreaterThanOrEqual(1);
23
+ expect(metrics.total_cost_saved).toBeGreaterThan(0);
24
+ });
25
+ });
26
+ //# sourceMappingURL=roi.scenario.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roi.scenario.test.js","sourceRoot":"","sources":["../../src/tests/roi.scenario.test.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAE1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,UAAU,CAAC,GAAG,EAAE;QACd,iCAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,IAAI,aAAa,GAAG,OAAO,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,iCAAe,CAAC,OAAO,CAAC;gBACrC,KAAK,EAAE,OAAO;gBACd,MAAM;gBACN,aAAa,EAAE,IAAI;gBACnB,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC;YACH,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;QAClC,CAAC;QAED,MAAM,OAAO,GAAG,iCAAe,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Server Contract Tests
3
+ * Verifies that ProxyServer correctly implements its contract
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=server.contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.contract.test.d.ts","sourceRoot":"","sources":["../../src/tests/server.contract.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * Server Contract Tests
4
+ * Verifies that ProxyServer correctly implements its contract
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const proxy_1 = require("../proxy");
8
+ const DetectionEngine_1 = require("../core/DetectionEngine");
9
+ describe('ProxyServer Contract', () => {
10
+ let server;
11
+ const TEST_PORT = 3999;
12
+ afterEach(async () => {
13
+ if (server && server.isListening()) {
14
+ await server.stop();
15
+ }
16
+ DetectionEngine_1.detectionEngine.clear();
17
+ });
18
+ test('should expose isListening() method', () => {
19
+ server = new proxy_1.ProxyServer(TEST_PORT);
20
+ expect(typeof server.isListening).toBe('function');
21
+ });
22
+ test('isListening() should return false before start', () => {
23
+ server = new proxy_1.ProxyServer(TEST_PORT);
24
+ expect(server.isListening()).toBe(false);
25
+ });
26
+ test('isListening() should return true after start', async () => {
27
+ server = new proxy_1.ProxyServer(TEST_PORT);
28
+ await server.start();
29
+ expect(server.isListening()).toBe(true);
30
+ });
31
+ test('isListening() should return false after stop', async () => {
32
+ server = new proxy_1.ProxyServer(TEST_PORT);
33
+ await server.start();
34
+ expect(server.isListening()).toBe(true);
35
+ await server.stop();
36
+ expect(server.isListening()).toBe(false);
37
+ });
38
+ test('should expose maxRetries property', () => {
39
+ server = new proxy_1.ProxyServer(TEST_PORT);
40
+ expect(typeof server.maxRetries).toBe('number');
41
+ expect(server.maxRetries).toBeGreaterThan(0);
42
+ });
43
+ test('should expose clearRateLimits() method', () => {
44
+ server = new proxy_1.ProxyServer(TEST_PORT);
45
+ expect(typeof server.clearRateLimits).toBe('function');
46
+ });
47
+ });
48
+ //# sourceMappingURL=server.contract.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.contract.test.js","sourceRoot":"","sources":["../../src/tests/server.contract.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,oCAAuC;AACvC,6DAA0D;AAE1D,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,MAAmB,CAAC;IACxB,MAAM,SAAS,GAAG,IAAI,CAAC;IAEvB,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,iCAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,IAAI,mBAAW,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Unit tests for TokenCounter
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=tokenCounter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenCounter.test.d.ts","sourceRoot":"","sources":["../../src/tests/tokenCounter.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * Unit tests for TokenCounter
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const token_counter_1 = require("../token-counter");
7
+ describe('TokenCounter', () => {
8
+ test('should estimate tokens for empty string', () => {
9
+ const result = (0, token_counter_1.estimateTokens)('');
10
+ expect(result).toBe(0);
11
+ });
12
+ test('should estimate tokens for short text', () => {
13
+ const result = (0, token_counter_1.estimateTokens)('Hello world');
14
+ expect(result).toBeGreaterThan(0);
15
+ expect(result).toBeLessThan(10);
16
+ });
17
+ test('should estimate tokens for long text', () => {
18
+ const text = 'This is a longer piece of text that should have more tokens. '.repeat(10);
19
+ const result = (0, token_counter_1.estimateTokens)(text);
20
+ expect(result).toBeGreaterThan(50);
21
+ });
22
+ test('should use model-specific ratios', () => {
23
+ const text = 'Test text for model comparison';
24
+ const gpt4Result = (0, token_counter_1.estimateTokens)(text, 'gpt-4');
25
+ const gpt35Result = (0, token_counter_1.estimateTokens)(text, 'gpt-3.5-turbo');
26
+ // Different models should use different ratios
27
+ expect(gpt4Result).toBeGreaterThan(0);
28
+ expect(gpt35Result).toBeGreaterThan(0);
29
+ });
30
+ test('should estimate tokens for messages array', () => {
31
+ const messages = [
32
+ { role: 'user', content: 'Hello' },
33
+ { role: 'assistant', content: 'Hi there!' },
34
+ ];
35
+ const result = (0, token_counter_1.estimateMessagesTokens)(messages);
36
+ expect(result).toBeGreaterThan(0);
37
+ });
38
+ test('should handle empty messages array', () => {
39
+ const result = (0, token_counter_1.estimateMessagesTokens)([]);
40
+ // Returns base tokens for array structure
41
+ expect(result).toBe(3);
42
+ });
43
+ test('should add model-specific overhead', () => {
44
+ const messages = [
45
+ { role: 'user', content: 'Test' },
46
+ ];
47
+ const gpt4Result = (0, token_counter_1.estimateMessagesTokens)(messages, 'gpt-4');
48
+ const gpt35Result = (0, token_counter_1.estimateMessagesTokens)(messages, 'gpt-3.5-turbo');
49
+ // GPT-4 should have more overhead
50
+ expect(gpt4Result).toBeGreaterThan(gpt35Result);
51
+ });
52
+ test('should handle array content in messages', () => {
53
+ const messages = [
54
+ {
55
+ role: 'user',
56
+ content: [
57
+ { type: 'text', text: 'Hello' },
58
+ { type: 'text', text: 'World' }
59
+ ]
60
+ },
61
+ ];
62
+ const result = (0, token_counter_1.estimateMessagesTokens)(messages);
63
+ expect(result).toBeGreaterThan(0);
64
+ });
65
+ });
66
+ //# sourceMappingURL=tokenCounter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenCounter.test.js","sourceRoot":"","sources":["../../src/tests/tokenCounter.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/tests/v113/client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const client_1 = require("../../client");
4
+ describe('SaaS client', () => {
5
+ test('captures telemetry and returns dashboard metrics', () => {
6
+ const client = (0, client_1.createClient)({ apiKey: 'k_test', policy: { maxCostUsd: 0.001 } });
7
+ client.evaluate({ model: 'gpt-4o', prompt: 'test', maxOutputTokens: 1000 });
8
+ const metrics = client.metrics();
9
+ expect(metrics.totalDecisions).toBe(1);
10
+ const dashboard = JSON.parse(client.dashboardJson());
11
+ expect(dashboard.apiKey).toBe('k_test');
12
+ });
13
+ test('explains blocked decisions with rule id', () => {
14
+ const client = (0, client_1.createClient)({ apiKey: 'k_test2', policy: { loopThreshold: 2 } });
15
+ const request = { model: 'gpt-4o-mini', prompt: 'repeat', metadata: { sessionId: 's1' } };
16
+ client.evaluate(request);
17
+ const explanation = client.explainDecision(request);
18
+ expect(explanation.decision).toBe('block');
19
+ expect(explanation.ruleTriggered).toContain('loop-protection');
20
+ });
21
+ });
22
+ //# sourceMappingURL=client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/tests/v113/client.test.ts"],"names":[],"mappings":";;AAAA,yCAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACjF,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAuB,CAAC;QAC3E,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1F,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEpD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=executionGuard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionGuard.test.d.ts","sourceRoot":"","sources":["../../../src/tests/v113/executionGuard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const executionGuard_1 = require("../../firewall/executionGuard");
4
+ describe('ExecutionGuard v1.1.3', () => {
5
+ test('allows low-cost request', () => {
6
+ const guard = new executionGuard_1.ExecutionGuard();
7
+ const result = guard.evaluate({
8
+ model: 'gpt-4o-mini',
9
+ prompt: 'Summarize this note in three bullets.',
10
+ maxOutputTokens: 120,
11
+ });
12
+ expect(result.decision).toBe('allow');
13
+ expect(result.estimatedCostUsd).toBeGreaterThan(0);
14
+ });
15
+ test('blocks runaway loop', () => {
16
+ const guard = new executionGuard_1.ExecutionGuard({ loopThreshold: 3, loopWindowMs: 30000 });
17
+ const req = {
18
+ model: 'gpt-4o-mini',
19
+ prompt: 'Repeat the same request.',
20
+ metadata: { sessionId: 'abc' },
21
+ };
22
+ guard.evaluate(req);
23
+ guard.evaluate(req);
24
+ const result = guard.evaluate(req);
25
+ expect(result.decision).toBe('block');
26
+ expect(result.reason).toContain('loop detected');
27
+ });
28
+ test('blocks high-cost request before execution', () => {
29
+ const guard = new executionGuard_1.ExecutionGuard({ maxCostUsd: 0.01 });
30
+ const result = guard.evaluate({
31
+ model: 'gpt-4o',
32
+ prompt: 'Very long response',
33
+ maxOutputTokens: 20000,
34
+ });
35
+ expect(result.decision).toBe('block');
36
+ expect(result.reason).toContain('cost');
37
+ });
38
+ });
39
+ //# sourceMappingURL=executionGuard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executionGuard.test.js","sourceRoot":"","sources":["../../../src/tests/v113/executionGuard.test.ts"],"names":[],"mappings":";;AAAA,kEAA+D;AAE/D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,KAAK,GAAG,IAAI,+BAAc,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5B,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,uCAAuC;YAC/C,eAAe,EAAE,GAAG;SACrB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,+BAAc,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,KAAM,EAAE,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG;YACV,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,0BAA0B;YAClC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC/B,CAAC;QAEF,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEnC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,IAAI,+BAAc,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5B,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,oBAAoB;YAC5B,eAAe,EAAE,KAAM;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './tokenCounter';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/token-counter/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./tokenCounter"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/token-counter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Improved token counter with per-model accuracy
3
+ * Uses model-specific heuristics for better estimation
4
+ */
5
+ export interface ChatMessageContent {
6
+ role?: string;
7
+ content: string | Array<{
8
+ type: string;
9
+ text?: string;
10
+ }>;
11
+ }
12
+ /**
13
+ * Estimate tokens for text using improved heuristics
14
+ * Different models have different tokenization efficiency
15
+ */
16
+ export declare function estimateTokens(text: string, model?: string): number;
17
+ export declare function estimateMessagesTokens(messages: ChatMessageContent[], model?: string): number;
18
+ //# sourceMappingURL=tokenCounter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenCounter.d.ts","sourceRoot":"","sources":["../../src/token-counter/tokenCounter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;CACxD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAwB,GAAG,MAAM,CA0CpF;AAmBD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB7F"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ /**
3
+ * Improved token counter with per-model accuracy
4
+ * Uses model-specific heuristics for better estimation
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.estimateTokens = estimateTokens;
8
+ exports.estimateMessagesTokens = estimateMessagesTokens;
9
+ /**
10
+ * Estimate tokens for text using improved heuristics
11
+ * Different models have different tokenization efficiency
12
+ */
13
+ function estimateTokens(text, model = 'gpt-3.5-turbo') {
14
+ if (!text)
15
+ return 0;
16
+ // Model-specific token estimation ratios
17
+ // These are empirically derived from actual API behavior
18
+ const ratios = {
19
+ // OpenAI models - GPT-4 is more efficient
20
+ 'gpt-4': 3.5, // ~1 token per 3.5 chars
21
+ 'gpt-4-turbo': 3.5,
22
+ 'gpt-4-turbo-preview': 3.5,
23
+ 'gpt-4o': 3.2, // Slightly more efficient
24
+ 'gpt-4o-mini': 3.0, // Most efficient
25
+ 'gpt-4-32k': 3.5,
26
+ 'gpt-3.5-turbo': 3.8,
27
+ 'gpt-3.5-turbo-16k': 3.8,
28
+ 'gpt-3.5-turbo-instruct': 3.8,
29
+ // Claude models - typically more token-heavy
30
+ 'claude-3-opus-20240229': 4.0,
31
+ 'claude-3-sonnet-20240229': 4.0,
32
+ 'claude-3-haiku-20240307': 3.8,
33
+ 'claude-3-5-sonnet-20241022': 3.9,
34
+ 'claude-3-5-haiku-20241022': 3.7,
35
+ 'claude-2.1': 4.2,
36
+ 'claude-2': 4.2,
37
+ 'claude-instant-1.2': 4.0,
38
+ };
39
+ // Get ratio for this model, default to 3.8
40
+ const ratio = ratios[model] || 3.8;
41
+ // Count words and characters for better estimation
42
+ const charCount = text.length;
43
+ // Use character-based estimation as primary
44
+ let estimatedTokens = Math.ceil(charCount / ratio);
45
+ // Add bonus for punctuation and special tokens
46
+ const specialChars = (text.match(/[.,!?;:\-()[\]{}]/g) || []).length;
47
+ estimatedTokens += Math.ceil(specialChars / 10);
48
+ return Math.max(1, estimatedTokens);
49
+ }
50
+ function getModelOverhead(model) {
51
+ // Different models have different token overhead for message structure
52
+ if (!model)
53
+ return 10;
54
+ const lowerModel = model.toLowerCase();
55
+ if (lowerModel.includes('gpt-4')) {
56
+ return 15; // GPT-4 has more complex message structure
57
+ }
58
+ else if (lowerModel.includes('gpt-3.5')) {
59
+ return 12; // GPT-3.5 has simpler structure
60
+ }
61
+ else if (lowerModel.includes('claude')) {
62
+ return 12; // Claude has different formatting
63
+ }
64
+ else {
65
+ return 10; // Default for other models
66
+ }
67
+ }
68
+ function estimateMessagesTokens(messages, model) {
69
+ if (!messages || !Array.isArray(messages))
70
+ return 0;
71
+ let totalTokens = 0;
72
+ for (const message of messages) {
73
+ if (typeof message.content === 'string') {
74
+ totalTokens += estimateTokens(message.content, model);
75
+ }
76
+ else if (Array.isArray(message.content)) {
77
+ for (const content of message.content) {
78
+ if (content.type === 'text' && content.text) {
79
+ totalTokens += estimateTokens(content.text, model);
80
+ }
81
+ }
82
+ }
83
+ // Add overhead for role and structure (varies by model)
84
+ const overhead = getModelOverhead(model);
85
+ totalTokens += overhead;
86
+ }
87
+ // Add base tokens for the messages array structure
88
+ totalTokens += 3;
89
+ return Math.max(1, totalTokens);
90
+ }
91
+ //# sourceMappingURL=tokenCounter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenCounter.js","sourceRoot":"","sources":["../../src/token-counter/tokenCounter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * ImmutableAudit.ts - Production-Grade Trust Layer
3
+ *
4
+ * Enterprise guarantees:
5
+ * - Append-only immutable log (no in-place updates ever)
6
+ * - Cryptographic hash chaining between entries
7
+ * - Deterministic replay with bit-exact reproducibility
8
+ * - INTEGRITY_FAILURE flagging on any mismatch
9
+ * - Zero-trust verification pipeline
10
+ */
11
+ export interface AuditEntry {
12
+ entryId: string;
13
+ sequenceNumber: number;
14
+ timestamp: number;
15
+ isoTimestamp: string;
16
+ requestId: string;
17
+ userId: string;
18
+ sessionId: string;
19
+ requestHash: string;
20
+ requestPreview: string;
21
+ policySnapshotHash: string;
22
+ policySnapshot: Record<string, unknown>;
23
+ executionTrace: ExecutionTrace;
24
+ decision: 'allow' | 'block';
25
+ decisionReason: string;
26
+ decisionCategory: 'loop' | 'safe';
27
+ costBefore: number;
28
+ costAfter: number;
29
+ moneySaved: number;
30
+ savingsPercent: number;
31
+ dangerScore: number;
32
+ riskLevel: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
33
+ loopDetected: boolean;
34
+ loopCount: number;
35
+ previousEntryHash: string;
36
+ entryHash: string;
37
+ }
38
+ export interface ExecutionTrace {
39
+ steps: Array<{
40
+ step: number;
41
+ name: string;
42
+ input: unknown;
43
+ output: unknown;
44
+ timestamp: number;
45
+ }>;
46
+ finalCalculation: {
47
+ inputs: Record<string, number>;
48
+ formula: string;
49
+ result: number;
50
+ };
51
+ }
52
+ export interface IntegrityReport {
53
+ status: 'VALID' | 'INTEGRITY_FAILURE';
54
+ entriesChecked: number;
55
+ chainValid: boolean;
56
+ tamperedEntries: Array<{
57
+ entryId: string;
58
+ sequenceNumber: number;
59
+ expectedHash: string;
60
+ actualHash: string;
61
+ fieldMismatch?: string;
62
+ }>;
63
+ missingEntries: number[];
64
+ brokenChainAt: number | null;
65
+ summary: string;
66
+ }
67
+ export interface ReplayResult {
68
+ entryId: string;
69
+ replayStatus: 'EXACT_MATCH' | 'INTEGRITY_FAILURE' | 'POLICY_CHANGED';
70
+ original: {
71
+ decision: string;
72
+ costAfter: number;
73
+ moneySaved: number;
74
+ dangerScore: number;
75
+ };
76
+ replay: {
77
+ decision: string;
78
+ costAfter: number;
79
+ moneySaved: number;
80
+ dangerScore: number;
81
+ };
82
+ differences: string[];
83
+ bitExact: boolean;
84
+ }
85
+ /**
86
+ * ImmutableAudit - Production-grade audit system with cryptographic guarantees
87
+ *
88
+ * Core principles:
89
+ * 1. Append-only: Entries are NEVER modified after creation
90
+ * 2. Hash-chained: Each entry depends on previous entry's hash
91
+ * 3. Tamper-evident: Any change breaks the chain
92
+ * 4. Replay-verified: Every decision can be re-executed bit-exact
93
+ */
94
+ export declare class ImmutableAudit {
95
+ private ledgerPath;
96
+ private entries;
97
+ private sequenceCounter;
98
+ private lastHash;
99
+ constructor(customPath?: string);
100
+ /**
101
+ * Record a decision with full audit trail
102
+ * This is the ONLY way to add entries - append-only guarantee
103
+ */
104
+ recordDecision(params: {
105
+ requestId: string;
106
+ userId: string;
107
+ sessionId: string;
108
+ request: string;
109
+ policySnapshot: Record<string, unknown>;
110
+ executionTrace: ExecutionTrace;
111
+ decision: 'allow' | 'block';
112
+ decisionReason: string;
113
+ decisionCategory: 'loop' | 'safe';
114
+ costBefore: number;
115
+ costAfter: number;
116
+ moneySaved: number;
117
+ dangerScore: number;
118
+ riskLevel: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
119
+ loopDetected: boolean;
120
+ loopCount: number;
121
+ }): AuditEntry;
122
+ /**
123
+ * Verify entire ledger integrity
124
+ * Detects ANY tampering, missing entries, or chain breaks
125
+ */
126
+ verifyIntegrity(): IntegrityReport;
127
+ /**
128
+ * Replay a decision bit-exact
129
+ * Returns INTEGRITY_FAILURE if replay != original
130
+ */
131
+ replayDecision(entryId: string, replayFn: (trace: ExecutionTrace) => ReplayResult['replay']): ReplayResult;
132
+ /**
133
+ * Get entry by ID
134
+ */
135
+ getEntry(entryId: string): AuditEntry | undefined;
136
+ /**
137
+ * Get all entries for a session
138
+ */
139
+ getSessionEntries(sessionId: string): AuditEntry[];
140
+ /**
141
+ * Get total savings for a user
142
+ */
143
+ getUserSavings(userId: string): {
144
+ totalSaved: number;
145
+ requestCount: number;
146
+ };
147
+ private ensureDirectory;
148
+ private appendToDisk;
149
+ private loadExisting;
150
+ private loadAllFromDisk;
151
+ private loadEntryFromDisk;
152
+ private generateId;
153
+ private hashString;
154
+ private hashObject;
155
+ private calculateEntryHash;
156
+ }
157
+ export declare const immutableAudit: ImmutableAudit;
158
+ export declare function createImmutableAudit(customPath?: string): ImmutableAudit;
159
+ //# sourceMappingURL=ImmutableAudit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImmutableAudit.d.ts","sourceRoot":"","sources":["../../src/trust/ImmutableAudit.ts"],"names":[],"mappings":"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"}