@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,305 @@
1
+ "use strict";
2
+ /**
3
+ * TrustBoundaryValidator.ts - Enterprise API Security Layer
4
+ *
5
+ * Stripe-level API discipline:
6
+ * - HMAC-signed API requests (prevents tampering)
7
+ * - Request expiration timestamps (prevents replay attacks)
8
+ * - Rate limiting per API key (hard enforcement)
9
+ * - Idempotency keys (prevents duplicate processing)
10
+ * - Environment isolation (dev/staging/production)
11
+ * - Schema validation at runtime
12
+ * - Unsafe payload blocking
13
+ *
14
+ * Core principle: Trust nothing, validate everything
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.trustBoundary = exports.TrustBoundaryValidator = void 0;
51
+ exports.createTrustBoundary = createTrustBoundary;
52
+ const crypto = __importStar(require("crypto"));
53
+ /**
54
+ * TrustBoundaryValidator - Enterprise-grade API security
55
+ *
56
+ * Behaves like Stripe: every request is signed, timestamped, and rate-limited.
57
+ * No request crosses the boundary without validation.
58
+ */
59
+ class TrustBoundaryValidator {
60
+ constructor() {
61
+ this.apiKeySecrets = new Map();
62
+ this.rateLimits = new Map();
63
+ this.idempotencyStore = new Map();
64
+ this.environments = new Map();
65
+ this.requestLog = new Set();
66
+ this.setupEnvironments();
67
+ }
68
+ /**
69
+ * Validate incoming request against trust boundary
70
+ * This is the ONLY entry point for API requests
71
+ */
72
+ validateRequest(params) {
73
+ const env = this.detectEnvironment(params.apiKey);
74
+ const config = this.environments.get(env);
75
+ // 1. Validate API key format
76
+ const keyId = this.extractKeyId(params.apiKey);
77
+ if (!keyId) {
78
+ return this.reject('INVALID_SIGNATURE', 'Invalid API key format', env);
79
+ }
80
+ // 2. Check request age (prevent replay attacks)
81
+ const now = Date.now();
82
+ const requestAge = now - params.timestamp;
83
+ if (requestAge > config.requestMaxAgeMs || requestAge < -5000) {
84
+ return this.reject('EXPIRED_REQUEST', `Request expired or future-dated (${requestAge}ms)`, env);
85
+ }
86
+ // 3. Validate HMAC signature
87
+ const secret = this.apiKeySecrets.get(params.apiKey);
88
+ if (!secret) {
89
+ return this.reject('INVALID_SIGNATURE', 'Unknown API key', env);
90
+ }
91
+ const expectedSignature = this.computeHMAC(params, secret);
92
+ if (!crypto.timingSafeEqual(Buffer.from(params.signature), Buffer.from(expectedSignature))) {
93
+ return this.reject('INVALID_SIGNATURE', 'Signature mismatch', env);
94
+ }
95
+ // 4. Verify body hash (if required)
96
+ if (config.requireBodyHash && params.body && params.bodyHash) {
97
+ const computedHash = crypto.createHash('sha256').update(params.body).digest('hex');
98
+ if (computedHash !== params.bodyHash) {
99
+ return this.reject('MALFORMED_PAYLOAD', 'Body hash mismatch', env);
100
+ }
101
+ }
102
+ // 5. Rate limiting (hard enforcement)
103
+ const rateLimit = this.checkRateLimit(params.apiKey, config);
104
+ if (rateLimit.exceeded) {
105
+ return this.reject('RATE_LIMITED', `Rate limit exceeded. Reset at ${new Date(rateLimit.resetAt).toISOString()}`, env, undefined, rateLimit.remaining);
106
+ }
107
+ // 6. Idempotency check
108
+ if (config.requireIdempotency && params.idempotencyKey) {
109
+ if (this.idempotencyStore.has(params.idempotencyKey)) {
110
+ return {
111
+ valid: false,
112
+ rejected: true,
113
+ code: 'IDEMPOTENCY_CONFLICT',
114
+ reason: 'Idempotency key already used',
115
+ environment: env,
116
+ idempotencyKey: params.idempotencyKey,
117
+ };
118
+ }
119
+ }
120
+ // 7. Payload schema validation (in production)
121
+ if (config.strictMode && params.body) {
122
+ const schemaCheck = this.validatePayloadSchema(params.body, params.path);
123
+ if (!schemaCheck.valid) {
124
+ return this.reject('MALFORMED_PAYLOAD', schemaCheck.error || 'Invalid payload', env);
125
+ }
126
+ }
127
+ // All checks passed
128
+ return {
129
+ valid: true,
130
+ rejected: false,
131
+ code: 'VALID',
132
+ apiKeyId: keyId,
133
+ userId: this.extractUserId(params.apiKey),
134
+ environment: env,
135
+ rateLimitRemaining: rateLimit.remaining,
136
+ idempotencyKey: params.idempotencyKey,
137
+ };
138
+ }
139
+ /**
140
+ * Register idempotency key as processed
141
+ */
142
+ recordIdempotency(key, result) {
143
+ this.idempotencyStore.set(key, {
144
+ processedAt: Date.now(),
145
+ result,
146
+ });
147
+ // Cleanup old entries after 24 hours
148
+ setTimeout(() => this.idempotencyStore.delete(key), 24 * 60 * 60 * 1000);
149
+ }
150
+ /**
151
+ * Register API key with its signing secret
152
+ */
153
+ registerApiKey(apiKey, userId, environment) {
154
+ // Generate deterministic secret from key
155
+ const secret = crypto.createHmac('sha256', 'master-secret').update(apiKey).digest('hex');
156
+ this.apiKeySecrets.set(apiKey, secret);
157
+ }
158
+ /**
159
+ * Generate signed request (for client SDK)
160
+ */
161
+ generateSignedRequest(apiKey, body, idempotencyKey) {
162
+ const timestamp = Date.now();
163
+ const bodyHash = crypto.createHash('sha256').update(body).digest('hex');
164
+ const secret = this.apiKeySecrets.get(apiKey);
165
+ if (!secret)
166
+ throw new Error('Unknown API key');
167
+ const signaturePayload = `${apiKey}:${timestamp}:${bodyHash}:${idempotencyKey || ''}`;
168
+ const signature = crypto.createHmac('sha256', secret).update(signaturePayload).digest('hex');
169
+ return {
170
+ apiKey,
171
+ timestamp,
172
+ signature,
173
+ idempotencyKey,
174
+ bodyHash,
175
+ };
176
+ }
177
+ /**
178
+ * Get current rate limit status
179
+ */
180
+ getRateLimitStatus(apiKey) {
181
+ const state = this.rateLimits.get(apiKey);
182
+ const env = this.detectEnvironment(apiKey);
183
+ const config = this.environments.get(env);
184
+ if (!state || Date.now() > state.resetAt) {
185
+ return {
186
+ remaining: config.rateLimitMaxRequests,
187
+ resetAt: Date.now() + config.rateLimitWindowMs,
188
+ windowMs: config.rateLimitWindowMs,
189
+ };
190
+ }
191
+ return {
192
+ remaining: Math.max(0, config.rateLimitMaxRequests - state.count),
193
+ resetAt: state.resetAt,
194
+ windowMs: config.rateLimitWindowMs,
195
+ };
196
+ }
197
+ // Private methods
198
+ setupEnvironments() {
199
+ this.environments.set('dev', {
200
+ name: 'dev',
201
+ strictMode: false,
202
+ requestMaxAgeMs: 5 * 60 * 1000, // 5 minutes
203
+ rateLimitWindowMs: 60 * 1000,
204
+ rateLimitMaxRequests: 1000,
205
+ requireIdempotency: false,
206
+ requireBodyHash: false,
207
+ });
208
+ this.environments.set('staging', {
209
+ name: 'staging',
210
+ strictMode: true,
211
+ requestMaxAgeMs: 2 * 60 * 1000, // 2 minutes
212
+ rateLimitWindowMs: 60 * 1000,
213
+ rateLimitMaxRequests: 500,
214
+ requireIdempotency: true,
215
+ requireBodyHash: true,
216
+ });
217
+ this.environments.set('production', {
218
+ name: 'production',
219
+ strictMode: true,
220
+ requestMaxAgeMs: 60 * 1000, // 1 minute
221
+ rateLimitWindowMs: 60 * 1000,
222
+ rateLimitMaxRequests: 100,
223
+ requireIdempotency: true,
224
+ requireBodyHash: true,
225
+ });
226
+ }
227
+ detectEnvironment(apiKey) {
228
+ if (apiKey.startsWith('ak_live_prod_'))
229
+ return 'production';
230
+ if (apiKey.startsWith('ak_live_staging_'))
231
+ return 'staging';
232
+ return 'dev';
233
+ }
234
+ extractKeyId(apiKey) {
235
+ const parts = apiKey.split('_');
236
+ return parts[parts.length - 1]?.substring(0, 12);
237
+ }
238
+ extractUserId(apiKey) {
239
+ // In real implementation, would decode from key
240
+ return 'user_' + this.extractKeyId(apiKey);
241
+ }
242
+ computeHMAC(params, secret) {
243
+ const bodyHash = params.bodyHash || crypto.createHash('sha256').update(params.body || '').digest('hex');
244
+ const payload = `${params.apiKey}:${params.timestamp}:${bodyHash}:${params.idempotencyKey || ''}:${params.path}:${params.method}`;
245
+ return crypto.createHmac('sha256', secret).update(payload).digest('hex');
246
+ }
247
+ checkRateLimit(apiKey, config) {
248
+ const now = Date.now();
249
+ let state = this.rateLimits.get(apiKey);
250
+ if (!state || now > state.resetAt) {
251
+ state = {
252
+ count: 0,
253
+ resetAt: now + config.rateLimitWindowMs,
254
+ windowMs: config.rateLimitWindowMs,
255
+ };
256
+ this.rateLimits.set(apiKey, state);
257
+ }
258
+ state.count++;
259
+ const remaining = Math.max(0, config.rateLimitMaxRequests - state.count);
260
+ const exceeded = state.count > config.rateLimitMaxRequests;
261
+ return { exceeded, remaining, resetAt: state.resetAt };
262
+ }
263
+ validatePayloadSchema(body, path) {
264
+ try {
265
+ const parsed = JSON.parse(body);
266
+ // Basic schema checks based on path
267
+ if (path.includes('/api/protection/')) {
268
+ if (!parsed.model || typeof parsed.model !== 'string') {
269
+ return { valid: false, error: 'Missing or invalid model field' };
270
+ }
271
+ if (!parsed.requestId || typeof parsed.requestId !== 'string') {
272
+ return { valid: false, error: 'Missing or invalid requestId field' };
273
+ }
274
+ }
275
+ // Check for unsafe payloads
276
+ const bodyStr = JSON.stringify(parsed).toLowerCase();
277
+ const unsafePatterns = ['__proto__', 'constructor', 'prototype', '<script'];
278
+ if (unsafePatterns.some(p => bodyStr.includes(p))) {
279
+ return { valid: false, error: 'Unsafe payload detected' };
280
+ }
281
+ return { valid: true };
282
+ }
283
+ catch {
284
+ return { valid: false, error: 'Invalid JSON payload' };
285
+ }
286
+ }
287
+ reject(code, reason, environment, apiKeyId, rateLimitRemaining) {
288
+ return {
289
+ valid: false,
290
+ rejected: true,
291
+ code,
292
+ reason,
293
+ environment,
294
+ apiKeyId,
295
+ rateLimitRemaining,
296
+ };
297
+ }
298
+ }
299
+ exports.TrustBoundaryValidator = TrustBoundaryValidator;
300
+ // Singleton
301
+ exports.trustBoundary = new TrustBoundaryValidator();
302
+ function createTrustBoundary() {
303
+ return new TrustBoundaryValidator();
304
+ }
305
+ //# sourceMappingURL=TrustBoundaryValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrustBoundaryValidator.js","sourceRoot":"","sources":["../../src/security/TrustBoundaryValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Starter Template: Express Protected Server
3
+ *
4
+ * Full working Express server with automatic protection.
5
+ * Already protected. Zero configuration. Production ready.
6
+ */
7
+ export declare const STARTER_EXPRESS_PROTECTED: {
8
+ name: string;
9
+ description: string;
10
+ files: {
11
+ 'package.json': string;
12
+ 'server.js': string;
13
+ '.env.example': string;
14
+ 'README.md': string;
15
+ };
16
+ };
17
+ export declare function generateExpressStarter(): string;
18
+ //# sourceMappingURL=express-protected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-protected.d.ts","sourceRoot":"","sources":["../../src/starters/express-protected.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,yBAAyB;;;;;;;;;CAkFrC,CAAC;AAEF,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Starter Template: Express Protected Server
4
+ *
5
+ * Full working Express server with automatic protection.
6
+ * Already protected. Zero configuration. Production ready.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.STARTER_EXPRESS_PROTECTED = void 0;
10
+ exports.generateExpressStarter = generateExpressStarter;
11
+ exports.STARTER_EXPRESS_PROTECTED = {
12
+ name: 'express-protected',
13
+ description: 'Express server with automatic AI cost protection',
14
+ files: {
15
+ 'package.json': JSON.stringify({
16
+ name: 'express-ai-server',
17
+ version: '1.0.0',
18
+ type: 'module',
19
+ dependencies: {
20
+ 'ai-costguard': '^2.0.0',
21
+ 'express': '^4.18.0',
22
+ 'openai': '^4.0.0',
23
+ },
24
+ scripts: {
25
+ start: 'node server.js',
26
+ dev: 'node --watch server.js',
27
+ },
28
+ }, null, 2),
29
+ 'server.js': `// AI Cost Guard automatically activates on import
30
+ // All AI calls in this server are protected
31
+ import express from 'express';
32
+ import { OpenAI } from 'ai-costguard/openai';
33
+
34
+ const app = express();
35
+ app.use(express.json());
36
+
37
+ const openai = new OpenAI({
38
+ apiKey: process.env.OPENAI_API_KEY,
39
+ });
40
+
41
+ // This endpoint is automatically protected
42
+ app.post('/chat', async (req, res) => {
43
+ const { message } = req.body;
44
+
45
+ // Protection is automatic - no code changes needed
46
+ const response = await openai.chat.completions.create({
47
+ model: 'gpt-4',
48
+ messages: [{ role: 'user', content: message }],
49
+ });
50
+
51
+ res.json({
52
+ reply: response.choices[0].message.content,
53
+ protected: true,
54
+ });
55
+ });
56
+
57
+ app.listen(3000, () => {
58
+ console.log('Server running on port 3000');
59
+ console.log('AI Cost Guard: Execution secured');
60
+ });
61
+ `,
62
+ '.env.example': `OPENAI_API_KEY=sk-...
63
+ AI_COSTGUARD_API_KEY=ak-...
64
+ PORT=3000
65
+ `,
66
+ 'README.md': `# Protected Express Server
67
+
68
+ Express server with automatic AI cost explosion protection.
69
+
70
+ ## Usage
71
+
72
+ \`\`\`bash
73
+ npm install
74
+ npm start
75
+ \`\`\`
76
+
77
+ All AI calls are automatically protected.
78
+
79
+ ## API
80
+
81
+ \`\`\`
82
+ POST /chat
83
+ { "message": "Hello" }
84
+ \`\`\`
85
+
86
+ Protection is automatic. No configuration required.
87
+ `,
88
+ },
89
+ };
90
+ function generateExpressStarter() {
91
+ return JSON.stringify(exports.STARTER_EXPRESS_PROTECTED, null, 2);
92
+ }
93
+ //# sourceMappingURL=express-protected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-protected.js","sourceRoot":"","sources":["../../src/starters/express-protected.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAsFH,wDAEC;AAtFY,QAAA,yBAAyB,GAAG;IACvC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,kDAAkD;IAE/D,KAAK,EAAE;QACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE;gBACZ,cAAc,EAAE,QAAQ;gBACxB,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,gBAAgB;gBACvB,GAAG,EAAE,wBAAwB;aAC9B;SACF,EAAE,IAAI,EAAE,CAAC,CAAC;QAEX,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgChB;QAEG,cAAc,EAAE;;;CAGnB;QAEG,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;CAqBhB;KACE;CACF,CAAC;AAEF,SAAgB,sBAAsB;IACpC,OAAO,IAAI,CAAC,SAAS,CAAC,iCAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Starter Template: LangChain Protected Project
3
+ *
4
+ * Full working LangChain app with automatic cost protection.
5
+ * Already protected. Zero configuration. Production ready.
6
+ */
7
+ export declare const STARTER_LANGCHAIN_PROTECTED: {
8
+ name: string;
9
+ description: string;
10
+ files: {
11
+ 'package.json': string;
12
+ 'app.js': string;
13
+ '.env.example': string;
14
+ 'README.md': string;
15
+ };
16
+ };
17
+ export declare function generateLangChainStarter(): string;
18
+ //# sourceMappingURL=langchain-protected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-protected.d.ts","sourceRoot":"","sources":["../../src/starters/langchain-protected.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;CA0EvC,CAAC;AAEF,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Starter Template: LangChain Protected Project
4
+ *
5
+ * Full working LangChain app with automatic cost protection.
6
+ * Already protected. Zero configuration. Production ready.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.STARTER_LANGCHAIN_PROTECTED = void 0;
10
+ exports.generateLangChainStarter = generateLangChainStarter;
11
+ exports.STARTER_LANGCHAIN_PROTECTED = {
12
+ name: 'langchain-protected',
13
+ description: 'LangChain project with automatic AI cost protection',
14
+ files: {
15
+ 'package.json': JSON.stringify({
16
+ name: 'langchain-ai-app',
17
+ version: '1.0.0',
18
+ type: 'module',
19
+ dependencies: {
20
+ 'ai-costguard': '^2.0.0',
21
+ 'langchain': '^0.1.0',
22
+ '@langchain/openai': '^0.0.14',
23
+ },
24
+ scripts: {
25
+ start: 'node app.js',
26
+ dev: 'node --watch app.js',
27
+ },
28
+ }, null, 2),
29
+ 'app.js': `// AI Cost Guard automatically activates on import
30
+ // All LangChain AI calls are protected
31
+ import 'ai-costguard';
32
+ import { ChatOpenAI } from '@langchain/openai';
33
+ import { ChatPromptTemplate } from '@langchain/core/prompts';
34
+
35
+ const model = new ChatOpenAI({
36
+ modelName: 'gpt-4',
37
+ openAIApiKey: process.env.OPENAI_API_KEY,
38
+ });
39
+
40
+ const prompt = ChatPromptTemplate.fromMessages([
41
+ ['system', 'You are a helpful assistant.'],
42
+ ['user', '{input}'],
43
+ ]);
44
+
45
+ const chain = prompt.pipe(model);
46
+
47
+ // This call is automatically protected
48
+ const response = await chain.invoke({
49
+ input: 'What is the weather like?',
50
+ });
51
+
52
+ console.log(response.content);
53
+ `,
54
+ '.env.example': `OPENAI_API_KEY=sk-...
55
+ AI_COSTGUARD_API_KEY=ak-...
56
+ `,
57
+ 'README.md': `# Protected LangChain Project
58
+
59
+ LangChain application with automatic AI cost explosion protection.
60
+
61
+ ## Usage
62
+
63
+ \`\`\`bash
64
+ npm install
65
+ npm start
66
+ \`\`\`
67
+
68
+ That's it. Protection is automatically active.
69
+
70
+ ## How It Works
71
+
72
+ The import \`'ai-costguard'\` at the top of the file automatically:
73
+ 1. Activates runtime protection
74
+ 2. Intercepts all AI calls (including LangChain's)
75
+ 3. Blocks cost explosions
76
+ 4. Logs all activity
77
+
78
+ No configuration. No setup. Already protected.
79
+ `,
80
+ },
81
+ };
82
+ function generateLangChainStarter() {
83
+ return JSON.stringify(exports.STARTER_LANGCHAIN_PROTECTED, null, 2);
84
+ }
85
+ //# sourceMappingURL=langchain-protected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-protected.js","sourceRoot":"","sources":["../../src/starters/langchain-protected.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA8EH,4DAEC;AA9EY,QAAA,2BAA2B,GAAG;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qDAAqD;IAElE,KAAK,EAAE;QACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE;gBACZ,cAAc,EAAE,QAAQ;gBACxB,WAAW,EAAE,QAAQ;gBACrB,mBAAmB,EAAE,SAAS;aAC/B;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,aAAa;gBACpB,GAAG,EAAE,qBAAqB;aAC3B;SACF,EAAE,IAAI,EAAE,CAAC,CAAC;QAEX,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;CAwBb;QAEG,cAAc,EAAE;;CAEnB;QAEG,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBhB;KACE;CACF,CAAC;AAEF,SAAgB,wBAAwB;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,mCAA2B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Starter Template: OpenAI Protected Project
3
+ *
4
+ * Full working repo structure for instant deployment.
5
+ * Already protected. Zero configuration. Production ready.
6
+ */
7
+ export declare const STARTER_OPENAI_PROTECTED: {
8
+ name: string;
9
+ description: string;
10
+ files: {
11
+ 'package.json': string;
12
+ 'index.js': string;
13
+ '.env.example': string;
14
+ 'README.md': string;
15
+ };
16
+ instructions: string;
17
+ };
18
+ export declare function generateOpenAIStarter(): string;
19
+ //# sourceMappingURL=openai-protected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-protected.d.ts","sourceRoot":"","sources":["../../src/starters/openai-protected.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;CA0EpC,CAAC;AAEF,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * Starter Template: OpenAI Protected Project
4
+ *
5
+ * Full working repo structure for instant deployment.
6
+ * Already protected. Zero configuration. Production ready.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.STARTER_OPENAI_PROTECTED = void 0;
10
+ exports.generateOpenAIStarter = generateOpenAIStarter;
11
+ exports.STARTER_OPENAI_PROTECTED = {
12
+ name: 'openai-protected',
13
+ description: 'OpenAI project with automatic cost protection',
14
+ files: {
15
+ 'package.json': JSON.stringify({
16
+ name: 'my-ai-project',
17
+ version: '1.0.0',
18
+ type: 'module',
19
+ dependencies: {
20
+ 'ai-costguard': '^2.0.0',
21
+ 'openai': '^4.0.0',
22
+ },
23
+ scripts: {
24
+ start: 'node index.js',
25
+ dev: 'node --watch index.js',
26
+ },
27
+ }, null, 2),
28
+ 'index.js': `// AI Cost Guard automatically activates on import
29
+ // No configuration required. No setup needed.
30
+ import { OpenAI } from 'ai-costguard/openai';
31
+
32
+ const openai = new OpenAI({
33
+ apiKey: process.env.OPENAI_API_KEY,
34
+ });
35
+
36
+ // This call is automatically protected
37
+ const response = await openai.chat.completions.create({
38
+ model: 'gpt-4',
39
+ messages: [{ role: 'user', content: 'Hello' }],
40
+ });
41
+
42
+ console.log(response.choices[0].message.content);
43
+ `,
44
+ '.env.example': `# Copy to .env and fill in your keys
45
+ OPENAI_API_KEY=sk-...
46
+ AI_COSTGUARD_API_KEY=ak-...
47
+ `,
48
+ 'README.md': `# Protected OpenAI Project
49
+
50
+ This project has automatic cost explosion protection built-in.
51
+
52
+ ## Usage
53
+
54
+ \`\`\`bash
55
+ npm install
56
+ npm start
57
+ \`\`\`
58
+
59
+ That's it. Protection is automatically active.
60
+
61
+ ## How It Works
62
+
63
+ The import \`from 'ai-costguard/openai'\` automatically:
64
+ 1. Activates runtime protection
65
+ 2. Intercepts all AI calls
66
+ 3. Blocks cost explosions
67
+ 4. Logs all activity
68
+
69
+ No configuration. No setup. Already protected.
70
+ `,
71
+ },
72
+ instructions: [
73
+ '1. Copy these files to a new directory',
74
+ '2. Run: npm install',
75
+ '3. Copy .env.example to .env and add your keys',
76
+ '4. Run: npm start',
77
+ '',
78
+ 'Result: Project is running with automatic cost protection',
79
+ ].join('\n'),
80
+ };
81
+ function generateOpenAIStarter() {
82
+ return JSON.stringify(exports.STARTER_OPENAI_PROTECTED, null, 2);
83
+ }
84
+ //# sourceMappingURL=openai-protected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-protected.js","sourceRoot":"","sources":["../../src/starters/openai-protected.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA8EH,sDAEC;AA9EY,QAAA,wBAAwB,GAAG;IACtC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,+CAA+C;IAE5D,KAAK,EAAE;QACL,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE;gBACZ,cAAc,EAAE,QAAQ;gBACxB,QAAQ,EAAE,QAAQ;aACnB;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,eAAe;gBACtB,GAAG,EAAE,uBAAuB;aAC7B;SACF,EAAE,IAAI,EAAE,CAAC,CAAC;QAEX,UAAU,EAAE;;;;;;;;;;;;;;;CAef;QAEG,cAAc,EAAE;;;CAGnB;QAEG,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBhB;KACE;IAED,YAAY,EAAE;QACZ,wCAAwC;QACxC,qBAAqB;QACrB,gDAAgD;QAChD,mBAAmB;QACnB,EAAE;QACF,2DAA2D;KAC5D,CAAC,IAAI,CAAC,IAAI,CAAC;CACb,CAAC;AAEF,SAAgB,qBAAqB;IACnC,OAAO,IAAI,CAAC,SAAS,CAAC,gCAAwB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}