@blockrun/clawrouter 0.12.101 → 0.12.103

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 (281) hide show
  1. package/dist/cli.d.ts +0 -15
  2. package/dist/cli.js +80069 -273
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +1406 -34
  5. package/dist/index.js +81085 -1075
  6. package/dist/index.js.map +1 -1
  7. package/package.json +1 -1
  8. package/dist/auth.d.ts +0 -82
  9. package/dist/auth.d.ts.map +0 -1
  10. package/dist/auth.js +0 -388
  11. package/dist/auth.js.map +0 -1
  12. package/dist/balance.d.ts +0 -97
  13. package/dist/balance.d.ts.map +0 -1
  14. package/dist/balance.js +0 -157
  15. package/dist/balance.js.map +0 -1
  16. package/dist/cli.d.ts.map +0 -1
  17. package/dist/compression/codebook.d.ts +0 -24
  18. package/dist/compression/codebook.d.ts.map +0 -1
  19. package/dist/compression/codebook.js +0 -119
  20. package/dist/compression/codebook.js.map +0 -1
  21. package/dist/compression/index.d.ts +0 -33
  22. package/dist/compression/index.d.ts.map +0 -1
  23. package/dist/compression/index.js +0 -246
  24. package/dist/compression/index.js.map +0 -1
  25. package/dist/compression/layers/deduplication.d.ts +0 -28
  26. package/dist/compression/layers/deduplication.d.ts.map +0 -1
  27. package/dist/compression/layers/deduplication.js +0 -101
  28. package/dist/compression/layers/deduplication.js.map +0 -1
  29. package/dist/compression/layers/dictionary.d.ts +0 -21
  30. package/dist/compression/layers/dictionary.d.ts.map +0 -1
  31. package/dist/compression/layers/dictionary.js +0 -73
  32. package/dist/compression/layers/dictionary.js.map +0 -1
  33. package/dist/compression/layers/dynamic-codebook.d.ts +0 -26
  34. package/dist/compression/layers/dynamic-codebook.d.ts.map +0 -1
  35. package/dist/compression/layers/dynamic-codebook.js +0 -149
  36. package/dist/compression/layers/dynamic-codebook.js.map +0 -1
  37. package/dist/compression/layers/json-compact.d.ts +0 -23
  38. package/dist/compression/layers/json-compact.d.ts.map +0 -1
  39. package/dist/compression/layers/json-compact.js +0 -79
  40. package/dist/compression/layers/json-compact.js.map +0 -1
  41. package/dist/compression/layers/observation.d.ts +0 -21
  42. package/dist/compression/layers/observation.d.ts.map +0 -1
  43. package/dist/compression/layers/observation.js +0 -130
  44. package/dist/compression/layers/observation.js.map +0 -1
  45. package/dist/compression/layers/paths.d.ts +0 -24
  46. package/dist/compression/layers/paths.d.ts.map +0 -1
  47. package/dist/compression/layers/paths.js +0 -110
  48. package/dist/compression/layers/paths.js.map +0 -1
  49. package/dist/compression/layers/whitespace.d.ts +0 -27
  50. package/dist/compression/layers/whitespace.d.ts.map +0 -1
  51. package/dist/compression/layers/whitespace.js +0 -60
  52. package/dist/compression/layers/whitespace.js.map +0 -1
  53. package/dist/compression/types.d.ts +0 -84
  54. package/dist/compression/types.d.ts.map +0 -1
  55. package/dist/compression/types.js +0 -27
  56. package/dist/compression/types.js.map +0 -1
  57. package/dist/config.d.ts +0 -12
  58. package/dist/config.d.ts.map +0 -1
  59. package/dist/config.js +0 -22
  60. package/dist/config.js.map +0 -1
  61. package/dist/dedup.d.ts +0 -34
  62. package/dist/dedup.d.ts.map +0 -1
  63. package/dist/dedup.js +0 -150
  64. package/dist/dedup.js.map +0 -1
  65. package/dist/doctor.d.ts +0 -8
  66. package/dist/doctor.d.ts.map +0 -1
  67. package/dist/doctor.js +0 -375
  68. package/dist/doctor.js.map +0 -1
  69. package/dist/error-classification.test.d.ts +0 -2
  70. package/dist/error-classification.test.d.ts.map +0 -1
  71. package/dist/error-classification.test.js +0 -59
  72. package/dist/error-classification.test.js.map +0 -1
  73. package/dist/errors.d.ts +0 -54
  74. package/dist/errors.d.ts.map +0 -1
  75. package/dist/errors.js +0 -85
  76. package/dist/errors.js.map +0 -1
  77. package/dist/exclude-models.d.ts +0 -28
  78. package/dist/exclude-models.d.ts.map +0 -1
  79. package/dist/exclude-models.integration.test.d.ts +0 -2
  80. package/dist/exclude-models.integration.test.d.ts.map +0 -1
  81. package/dist/exclude-models.integration.test.js +0 -46
  82. package/dist/exclude-models.integration.test.js.map +0 -1
  83. package/dist/exclude-models.js +0 -70
  84. package/dist/exclude-models.js.map +0 -1
  85. package/dist/exclude-models.test.d.ts +0 -5
  86. package/dist/exclude-models.test.d.ts.map +0 -1
  87. package/dist/exclude-models.test.js +0 -95
  88. package/dist/exclude-models.test.js.map +0 -1
  89. package/dist/fs-read.d.ts +0 -11
  90. package/dist/fs-read.d.ts.map +0 -1
  91. package/dist/fs-read.js +0 -47
  92. package/dist/fs-read.js.map +0 -1
  93. package/dist/index.d.ts.map +0 -1
  94. package/dist/journal.d.ts +0 -67
  95. package/dist/journal.d.ts.map +0 -1
  96. package/dist/journal.js +0 -184
  97. package/dist/journal.js.map +0 -1
  98. package/dist/journal.test.d.ts +0 -2
  99. package/dist/journal.test.d.ts.map +0 -1
  100. package/dist/journal.test.js +0 -201
  101. package/dist/journal.test.js.map +0 -1
  102. package/dist/logger.d.ts +0 -33
  103. package/dist/logger.d.ts.map +0 -1
  104. package/dist/logger.js +0 -35
  105. package/dist/logger.js.map +0 -1
  106. package/dist/models.d.ts +0 -107
  107. package/dist/models.d.ts.map +0 -1
  108. package/dist/models.js +0 -941
  109. package/dist/models.js.map +0 -1
  110. package/dist/models.test.d.ts +0 -2
  111. package/dist/models.test.d.ts.map +0 -1
  112. package/dist/models.test.js +0 -38
  113. package/dist/models.test.js.map +0 -1
  114. package/dist/partners/index.d.ts +0 -8
  115. package/dist/partners/index.d.ts.map +0 -1
  116. package/dist/partners/index.js +0 -6
  117. package/dist/partners/index.js.map +0 -1
  118. package/dist/partners/registry.d.ts +0 -51
  119. package/dist/partners/registry.d.ts.map +0 -1
  120. package/dist/partners/registry.js +0 -256
  121. package/dist/partners/registry.js.map +0 -1
  122. package/dist/partners/tools.d.ts +0 -24
  123. package/dist/partners/tools.d.ts.map +0 -1
  124. package/dist/partners/tools.js +0 -97
  125. package/dist/partners/tools.js.map +0 -1
  126. package/dist/payment-preauth.d.ts +0 -17
  127. package/dist/payment-preauth.d.ts.map +0 -1
  128. package/dist/payment-preauth.js +0 -102
  129. package/dist/payment-preauth.js.map +0 -1
  130. package/dist/provider.d.ts +0 -19
  131. package/dist/provider.d.ts.map +0 -1
  132. package/dist/provider.js +0 -45
  133. package/dist/provider.js.map +0 -1
  134. package/dist/proxy.d.ts +0 -210
  135. package/dist/proxy.d.ts.map +0 -1
  136. package/dist/proxy.debrand.test.d.ts +0 -2
  137. package/dist/proxy.debrand.test.d.ts.map +0 -1
  138. package/dist/proxy.debrand.test.js +0 -101
  139. package/dist/proxy.debrand.test.js.map +0 -1
  140. package/dist/proxy.degraded-response.test.d.ts +0 -2
  141. package/dist/proxy.degraded-response.test.d.ts.map +0 -1
  142. package/dist/proxy.degraded-response.test.js +0 -105
  143. package/dist/proxy.degraded-response.test.js.map +0 -1
  144. package/dist/proxy.image-download.test.d.ts +0 -2
  145. package/dist/proxy.image-download.test.d.ts.map +0 -1
  146. package/dist/proxy.image-download.test.js +0 -92
  147. package/dist/proxy.image-download.test.js.map +0 -1
  148. package/dist/proxy.js +0 -3810
  149. package/dist/proxy.js.map +0 -1
  150. package/dist/proxy.models-endpoint.test.d.ts +0 -2
  151. package/dist/proxy.models-endpoint.test.d.ts.map +0 -1
  152. package/dist/proxy.models-endpoint.test.js +0 -19
  153. package/dist/proxy.models-endpoint.test.js.map +0 -1
  154. package/dist/proxy.multiturn-thinking.test.d.ts +0 -2
  155. package/dist/proxy.multiturn-thinking.test.d.ts.map +0 -1
  156. package/dist/proxy.multiturn-thinking.test.js +0 -82
  157. package/dist/proxy.multiturn-thinking.test.js.map +0 -1
  158. package/dist/proxy.payment-chain-reuse.test.d.ts +0 -2
  159. package/dist/proxy.payment-chain-reuse.test.d.ts.map +0 -1
  160. package/dist/proxy.payment-chain-reuse.test.js +0 -30
  161. package/dist/proxy.payment-chain-reuse.test.js.map +0 -1
  162. package/dist/proxy.solana-resilience.test.d.ts +0 -12
  163. package/dist/proxy.solana-resilience.test.d.ts.map +0 -1
  164. package/dist/proxy.solana-resilience.test.js +0 -39
  165. package/dist/proxy.solana-resilience.test.js.map +0 -1
  166. package/dist/report.d.ts +0 -6
  167. package/dist/report.d.ts.map +0 -1
  168. package/dist/report.js +0 -44
  169. package/dist/report.js.map +0 -1
  170. package/dist/response-cache.advanced.test.d.ts +0 -2
  171. package/dist/response-cache.advanced.test.d.ts.map +0 -1
  172. package/dist/response-cache.advanced.test.js +0 -566
  173. package/dist/response-cache.advanced.test.js.map +0 -1
  174. package/dist/response-cache.d.ts +0 -85
  175. package/dist/response-cache.d.ts.map +0 -1
  176. package/dist/response-cache.edge-cases.test.d.ts +0 -2
  177. package/dist/response-cache.edge-cases.test.d.ts.map +0 -1
  178. package/dist/response-cache.edge-cases.test.js +0 -488
  179. package/dist/response-cache.edge-cases.test.js.map +0 -1
  180. package/dist/response-cache.extreme.test.d.ts +0 -2
  181. package/dist/response-cache.extreme.test.d.ts.map +0 -1
  182. package/dist/response-cache.extreme.test.js +0 -561
  183. package/dist/response-cache.extreme.test.js.map +0 -1
  184. package/dist/response-cache.js +0 -240
  185. package/dist/response-cache.js.map +0 -1
  186. package/dist/response-cache.test.d.ts +0 -2
  187. package/dist/response-cache.test.d.ts.map +0 -1
  188. package/dist/response-cache.test.js +0 -242
  189. package/dist/response-cache.test.js.map +0 -1
  190. package/dist/retry.d.ts +0 -42
  191. package/dist/retry.d.ts.map +0 -1
  192. package/dist/retry.js +0 -99
  193. package/dist/retry.js.map +0 -1
  194. package/dist/router/config.d.ts +0 -11
  195. package/dist/router/config.d.ts.map +0 -1
  196. package/dist/router/config.js +0 -1215
  197. package/dist/router/config.js.map +0 -1
  198. package/dist/router/index.d.ts +0 -18
  199. package/dist/router/index.d.ts.map +0 -1
  200. package/dist/router/index.js +0 -19
  201. package/dist/router/index.js.map +0 -1
  202. package/dist/router/llm-classifier.d.ts +0 -29
  203. package/dist/router/llm-classifier.d.ts.map +0 -1
  204. package/dist/router/llm-classifier.js +0 -99
  205. package/dist/router/llm-classifier.js.map +0 -1
  206. package/dist/router/rules.d.ts +0 -12
  207. package/dist/router/rules.d.ts.map +0 -1
  208. package/dist/router/rules.js +0 -202
  209. package/dist/router/rules.js.map +0 -1
  210. package/dist/router/selector.d.ts +0 -58
  211. package/dist/router/selector.d.ts.map +0 -1
  212. package/dist/router/selector.js +0 -165
  213. package/dist/router/selector.js.map +0 -1
  214. package/dist/router/selector.test.d.ts +0 -2
  215. package/dist/router/selector.test.d.ts.map +0 -1
  216. package/dist/router/selector.test.js +0 -67
  217. package/dist/router/selector.test.js.map +0 -1
  218. package/dist/router/strategy.d.ts +0 -19
  219. package/dist/router/strategy.d.ts.map +0 -1
  220. package/dist/router/strategy.js +0 -138
  221. package/dist/router/strategy.js.map +0 -1
  222. package/dist/router/strategy.test.d.ts +0 -2
  223. package/dist/router/strategy.test.d.ts.map +0 -1
  224. package/dist/router/strategy.test.js +0 -131
  225. package/dist/router/strategy.test.js.map +0 -1
  226. package/dist/router/types.d.ts +0 -127
  227. package/dist/router/types.d.ts.map +0 -1
  228. package/dist/router/types.js +0 -11
  229. package/dist/router/types.js.map +0 -1
  230. package/dist/session.d.ts +0 -124
  231. package/dist/session.d.ts.map +0 -1
  232. package/dist/session.js +0 -256
  233. package/dist/session.js.map +0 -1
  234. package/dist/session.test.d.ts +0 -2
  235. package/dist/session.test.d.ts.map +0 -1
  236. package/dist/session.test.js +0 -163
  237. package/dist/session.test.js.map +0 -1
  238. package/dist/solana-balance.d.ts +0 -48
  239. package/dist/solana-balance.d.ts.map +0 -1
  240. package/dist/solana-balance.js +0 -142
  241. package/dist/solana-balance.js.map +0 -1
  242. package/dist/spend-control.d.ts +0 -112
  243. package/dist/spend-control.d.ts.map +0 -1
  244. package/dist/spend-control.js +0 -278
  245. package/dist/spend-control.js.map +0 -1
  246. package/dist/spend-control.test.d.ts +0 -5
  247. package/dist/spend-control.test.d.ts.map +0 -1
  248. package/dist/spend-control.test.js +0 -210
  249. package/dist/spend-control.test.js.map +0 -1
  250. package/dist/stats.d.ts +0 -64
  251. package/dist/stats.d.ts.map +0 -1
  252. package/dist/stats.js +0 -295
  253. package/dist/stats.js.map +0 -1
  254. package/dist/types.d.ts +0 -150
  255. package/dist/types.d.ts.map +0 -1
  256. package/dist/types.js +0 -9
  257. package/dist/types.js.map +0 -1
  258. package/dist/update-hint.test.d.ts +0 -9
  259. package/dist/update-hint.test.d.ts.map +0 -1
  260. package/dist/update-hint.test.js +0 -156
  261. package/dist/update-hint.test.js.map +0 -1
  262. package/dist/updater.d.ts +0 -10
  263. package/dist/updater.d.ts.map +0 -1
  264. package/dist/updater.js +0 -55
  265. package/dist/updater.js.map +0 -1
  266. package/dist/version.d.ts +0 -3
  267. package/dist/version.d.ts.map +0 -1
  268. package/dist/version.js +0 -16
  269. package/dist/version.js.map +0 -1
  270. package/dist/wallet.d.ts +0 -52
  271. package/dist/wallet.d.ts.map +0 -1
  272. package/dist/wallet.js +0 -94
  273. package/dist/wallet.js.map +0 -1
  274. package/dist/wallet.test.d.ts +0 -6
  275. package/dist/wallet.test.d.ts.map +0 -1
  276. package/dist/wallet.test.js +0 -117
  277. package/dist/wallet.test.js.map +0 -1
  278. package/dist/x402-sdk.test.d.ts +0 -6
  279. package/dist/x402-sdk.test.d.ts.map +0 -1
  280. package/dist/x402-sdk.test.js +0 -161
  281. package/dist/x402-sdk.test.js.map +0 -1
@@ -1,85 +0,0 @@
1
- /**
2
- * Response Cache for LLM Completions
3
- *
4
- * Caches LLM responses by request hash (model + messages + params).
5
- * Inspired by LiteLLM's caching system. Returns cached responses for
6
- * identical requests, saving both cost and latency.
7
- *
8
- * Features:
9
- * - TTL-based expiration (default 10 minutes)
10
- * - LRU eviction when cache is full
11
- * - Size limits per item (1MB max)
12
- * - Heap-based expiration tracking for efficient pruning
13
- */
14
- export type CachedLLMResponse = {
15
- body: Buffer;
16
- status: number;
17
- headers: Record<string, string>;
18
- model: string;
19
- cachedAt: number;
20
- expiresAt: number;
21
- };
22
- export type ResponseCacheConfig = {
23
- /** Maximum number of cached responses. Default: 200 */
24
- maxSize?: number;
25
- /** Default TTL in seconds. Default: 600 (10 minutes) */
26
- defaultTTL?: number;
27
- /** Maximum size per cached item in bytes. Default: 1MB */
28
- maxItemSize?: number;
29
- /** Enable/disable cache. Default: true */
30
- enabled?: boolean;
31
- };
32
- export declare class ResponseCache {
33
- private cache;
34
- private expirationHeap;
35
- private config;
36
- private stats;
37
- constructor(config?: ResponseCacheConfig);
38
- /**
39
- * Generate cache key from request body.
40
- * Hashes: model + messages + temperature + max_tokens + other params
41
- */
42
- static generateKey(body: Buffer | string): string;
43
- /**
44
- * Check if caching is enabled for this request.
45
- * Respects cache control headers and request params.
46
- */
47
- shouldCache(body: Buffer | string, headers?: Record<string, string>): boolean;
48
- /**
49
- * Get cached response if available and not expired.
50
- */
51
- get(key: string): CachedLLMResponse | undefined;
52
- /**
53
- * Cache a response with optional custom TTL.
54
- */
55
- set(key: string, response: {
56
- body: Buffer;
57
- status: number;
58
- headers: Record<string, string>;
59
- model: string;
60
- }, ttlSeconds?: number): void;
61
- /**
62
- * Evict expired and oldest entries to make room.
63
- */
64
- private evict;
65
- /**
66
- * Get cache statistics.
67
- */
68
- getStats(): {
69
- size: number;
70
- maxSize: number;
71
- hits: number;
72
- misses: number;
73
- evictions: number;
74
- hitRate: string;
75
- };
76
- /**
77
- * Clear all cached entries.
78
- */
79
- clear(): void;
80
- /**
81
- * Check if cache is enabled.
82
- */
83
- isEnabled(): boolean;
84
- }
85
- //# sourceMappingURL=response-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-cache.d.ts","sourceRoot":"","sources":["../src/response-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA+DF,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,MAAM,CAAgC;IAG9C,OAAO,CAAC,KAAK,CAIX;gBAEU,MAAM,GAAE,mBAAwB;IAQ5C;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAcjD;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAqB7E;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAkB/C;;OAEG;IACH,GAAG,CACD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC;KACf,EACD,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAkCP;;OAEG;IACH,OAAO,CAAC,KAAK;IAsCb;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB;IAcD;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=response-cache.edge-cases.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-cache.edge-cases.test.d.ts","sourceRoot":"","sources":["../src/response-cache.edge-cases.test.ts"],"names":[],"mappings":""}
@@ -1,488 +0,0 @@
1
- import { describe, it, expect, beforeEach, vi } from "vitest";
2
- import { ResponseCache } from "./response-cache.js";
3
- describe("ResponseCache Edge Cases", () => {
4
- let cache;
5
- beforeEach(() => {
6
- cache = new ResponseCache();
7
- });
8
- describe("generateKey edge cases", () => {
9
- it("should handle empty body", () => {
10
- expect(() => ResponseCache.generateKey("")).not.toThrow();
11
- expect(ResponseCache.generateKey("")).toHaveLength(32);
12
- });
13
- it("should handle invalid JSON", () => {
14
- expect(() => ResponseCache.generateKey("not json {{{")).not.toThrow();
15
- expect(ResponseCache.generateKey("not json {{{")).toHaveLength(32);
16
- });
17
- it("should handle empty object", () => {
18
- expect(ResponseCache.generateKey("{}")).toHaveLength(32);
19
- });
20
- it("should handle null values in messages", () => {
21
- const body = JSON.stringify({
22
- model: "gpt-4",
23
- messages: [{ role: "user", content: null }],
24
- });
25
- expect(() => ResponseCache.generateKey(body)).not.toThrow();
26
- });
27
- it("should handle empty messages array", () => {
28
- const body = JSON.stringify({ model: "gpt-4", messages: [] });
29
- expect(ResponseCache.generateKey(body)).toHaveLength(32);
30
- });
31
- it("should handle missing model field", () => {
32
- const body = JSON.stringify({ messages: [{ role: "user", content: "hi" }] });
33
- expect(ResponseCache.generateKey(body)).toHaveLength(32);
34
- });
35
- it("should handle unicode characters", () => {
36
- const body = JSON.stringify({
37
- model: "gpt-4",
38
- messages: [{ role: "user", content: "你好世界 🚀 émoji" }],
39
- });
40
- expect(ResponseCache.generateKey(body)).toHaveLength(32);
41
- });
42
- it("should handle very long content", () => {
43
- const longContent = "a".repeat(100000);
44
- const body = JSON.stringify({
45
- model: "gpt-4",
46
- messages: [{ role: "user", content: longContent }],
47
- });
48
- expect(ResponseCache.generateKey(body)).toHaveLength(32);
49
- });
50
- it("should handle nested objects in messages", () => {
51
- const body = JSON.stringify({
52
- model: "gpt-4",
53
- messages: [
54
- {
55
- role: "user",
56
- content: [
57
- { type: "text", text: "hello" },
58
- { type: "image_url", image_url: { url: "data:..." } },
59
- ],
60
- },
61
- ],
62
- });
63
- expect(ResponseCache.generateKey(body)).toHaveLength(32);
64
- });
65
- it("should handle special characters in content", () => {
66
- const body = JSON.stringify({
67
- model: "gpt-4",
68
- messages: [{ role: "user", content: 'line1\nline2\ttab\\backslash"quote' }],
69
- });
70
- expect(ResponseCache.generateKey(body)).toHaveLength(32);
71
- });
72
- it("should produce same key regardless of field order", () => {
73
- const body1 = JSON.stringify({ model: "gpt-4", temperature: 0.7 });
74
- const body2 = JSON.stringify({ temperature: 0.7, model: "gpt-4" });
75
- expect(ResponseCache.generateKey(body1)).toBe(ResponseCache.generateKey(body2));
76
- });
77
- });
78
- describe("shouldCache edge cases", () => {
79
- it("should handle empty headers object", () => {
80
- const body = JSON.stringify({ model: "gpt-4" });
81
- expect(cache.shouldCache(body, {})).toBe(true);
82
- });
83
- it("should handle undefined headers", () => {
84
- const body = JSON.stringify({ model: "gpt-4" });
85
- expect(cache.shouldCache(body, undefined)).toBe(true);
86
- });
87
- it("should handle mixed case Cache-Control header", () => {
88
- const body = JSON.stringify({ model: "gpt-4" });
89
- // Headers should be lowercase in HTTP/2, but test robustness
90
- expect(cache.shouldCache(body, { "cache-control": "NO-CACHE" })).toBe(true); // only checks "no-cache"
91
- expect(cache.shouldCache(body, { "cache-control": "no-cache, no-store" })).toBe(false);
92
- });
93
- it("should handle cache-control with extra spaces", () => {
94
- const body = JSON.stringify({ model: "gpt-4" });
95
- expect(cache.shouldCache(body, { "cache-control": " no-cache " })).toBe(false);
96
- });
97
- it("should handle invalid JSON in body gracefully", () => {
98
- expect(cache.shouldCache("not json")).toBe(true);
99
- });
100
- it("should handle Buffer body", () => {
101
- const body = Buffer.from(JSON.stringify({ model: "gpt-4" }));
102
- expect(cache.shouldCache(body)).toBe(true);
103
- });
104
- });
105
- describe("set/get edge cases", () => {
106
- it("should handle zero-byte response body", () => {
107
- cache.set("empty", {
108
- body: Buffer.from(""),
109
- status: 200,
110
- headers: {},
111
- model: "gpt-4",
112
- });
113
- const cached = cache.get("empty");
114
- expect(cached).toBeDefined();
115
- expect(cached.body.length).toBe(0);
116
- });
117
- it("should handle binary response body", () => {
118
- const binaryData = Buffer.from([0x00, 0x01, 0x02, 0xff, 0xfe]);
119
- cache.set("binary", {
120
- body: binaryData,
121
- status: 200,
122
- headers: {},
123
- model: "gpt-4",
124
- });
125
- const cached = cache.get("binary");
126
- expect(cached.body).toEqual(binaryData);
127
- });
128
- it("should handle all 4xx status codes", () => {
129
- for (const status of [400, 401, 403, 404, 429, 499]) {
130
- cache.set(`error-${status}`, {
131
- body: Buffer.from("error"),
132
- status,
133
- headers: {},
134
- model: "gpt-4",
135
- });
136
- expect(cache.get(`error-${status}`)).toBeUndefined();
137
- }
138
- });
139
- it("should handle all 5xx status codes", () => {
140
- for (const status of [500, 502, 503, 504]) {
141
- cache.set(`error-${status}`, {
142
- body: Buffer.from("error"),
143
- status,
144
- headers: {},
145
- model: "gpt-4",
146
- });
147
- expect(cache.get(`error-${status}`)).toBeUndefined();
148
- }
149
- });
150
- it("should cache 2xx status codes", () => {
151
- for (const status of [200, 201, 204]) {
152
- cache.set(`ok-${status}`, {
153
- body: Buffer.from("ok"),
154
- status,
155
- headers: {},
156
- model: "gpt-4",
157
- });
158
- expect(cache.get(`ok-${status}`)).toBeDefined();
159
- }
160
- });
161
- it("should handle 3xx status codes (redirects)", () => {
162
- // 3xx are < 400, so they should be cached
163
- cache.set("redirect", {
164
- body: Buffer.from("redirect"),
165
- status: 302,
166
- headers: {},
167
- model: "gpt-4",
168
- });
169
- expect(cache.get("redirect")).toBeDefined();
170
- });
171
- it("should handle empty string key", () => {
172
- cache.set("", {
173
- body: Buffer.from("test"),
174
- status: 200,
175
- headers: {},
176
- model: "gpt-4",
177
- });
178
- expect(cache.get("")).toBeDefined();
179
- });
180
- it("should handle very long key", () => {
181
- const longKey = "k".repeat(10000);
182
- cache.set(longKey, {
183
- body: Buffer.from("test"),
184
- status: 200,
185
- headers: {},
186
- model: "gpt-4",
187
- });
188
- expect(cache.get(longKey)).toBeDefined();
189
- });
190
- it("should handle special characters in key", () => {
191
- const specialKey = "key/with:special?chars&more=stuff";
192
- cache.set(specialKey, {
193
- body: Buffer.from("test"),
194
- status: 200,
195
- headers: {},
196
- model: "gpt-4",
197
- });
198
- expect(cache.get(specialKey)).toBeDefined();
199
- });
200
- it("should overwrite existing key", () => {
201
- cache.set("key", {
202
- body: Buffer.from("first"),
203
- status: 200,
204
- headers: {},
205
- model: "gpt-4",
206
- });
207
- cache.set("key", {
208
- body: Buffer.from("second"),
209
- status: 200,
210
- headers: {},
211
- model: "gpt-4",
212
- });
213
- expect(cache.get("key").body.toString()).toBe("second");
214
- });
215
- it("should preserve headers with special values", () => {
216
- const headers = {
217
- "content-type": "application/json; charset=utf-8",
218
- "x-custom": "value with spaces",
219
- "x-empty": "",
220
- };
221
- cache.set("headers", {
222
- body: Buffer.from("test"),
223
- status: 200,
224
- headers,
225
- model: "gpt-4",
226
- });
227
- expect(cache.get("headers").headers).toEqual(headers);
228
- });
229
- });
230
- describe("TTL edge cases", () => {
231
- it("should handle zero TTL (immediate expiration)", () => {
232
- vi.useFakeTimers();
233
- cache.set("zero-ttl", {
234
- body: Buffer.from("test"),
235
- status: 200,
236
- headers: {},
237
- model: "gpt-4",
238
- }, 0);
239
- // With 0 TTL, should expire immediately on next tick
240
- vi.advanceTimersByTime(1);
241
- expect(cache.get("zero-ttl")).toBeUndefined();
242
- vi.useRealTimers();
243
- });
244
- it("should handle very large TTL", () => {
245
- vi.useFakeTimers();
246
- const oneYear = 365 * 24 * 60 * 60; // seconds
247
- cache.set("long-ttl", {
248
- body: Buffer.from("test"),
249
- status: 200,
250
- headers: {},
251
- model: "gpt-4",
252
- }, oneYear);
253
- // Advance 364 days
254
- vi.advanceTimersByTime(364 * 24 * 60 * 60 * 1000);
255
- expect(cache.get("long-ttl")).toBeDefined();
256
- // Advance past 1 year
257
- vi.advanceTimersByTime(2 * 24 * 60 * 60 * 1000);
258
- expect(cache.get("long-ttl")).toBeUndefined();
259
- vi.useRealTimers();
260
- });
261
- it("should handle negative TTL as immediate expiration", () => {
262
- vi.useFakeTimers();
263
- cache.set("negative-ttl", {
264
- body: Buffer.from("test"),
265
- status: 200,
266
- headers: {},
267
- model: "gpt-4",
268
- }, -100);
269
- // Negative TTL means already expired
270
- expect(cache.get("negative-ttl")).toBeUndefined();
271
- vi.useRealTimers();
272
- });
273
- it("should handle fractional TTL", () => {
274
- vi.useFakeTimers();
275
- cache.set("fractional-ttl", {
276
- body: Buffer.from("test"),
277
- status: 200,
278
- headers: {},
279
- model: "gpt-4",
280
- }, 0.5);
281
- vi.advanceTimersByTime(400);
282
- expect(cache.get("fractional-ttl")).toBeDefined();
283
- vi.advanceTimersByTime(200);
284
- expect(cache.get("fractional-ttl")).toBeUndefined();
285
- vi.useRealTimers();
286
- });
287
- });
288
- describe("capacity edge cases", () => {
289
- it("should handle maxSize of 0", () => {
290
- const zeroCache = new ResponseCache({ maxSize: 0 });
291
- zeroCache.set("key", {
292
- body: Buffer.from("test"),
293
- status: 200,
294
- headers: {},
295
- model: "gpt-4",
296
- });
297
- // With maxSize 0, nothing should be cached
298
- expect(zeroCache.getStats().size).toBe(0);
299
- });
300
- it("should handle maxSize of 1", () => {
301
- const tinyCache = new ResponseCache({ maxSize: 1 });
302
- tinyCache.set("first", {
303
- body: Buffer.from("first"),
304
- status: 200,
305
- headers: {},
306
- model: "gpt-4",
307
- });
308
- tinyCache.set("second", {
309
- body: Buffer.from("second"),
310
- status: 200,
311
- headers: {},
312
- model: "gpt-4",
313
- });
314
- expect(tinyCache.getStats().size).toBe(1);
315
- expect(tinyCache.get("second")).toBeDefined();
316
- });
317
- it("should handle rapid sequential sets", () => {
318
- const smallCache = new ResponseCache({ maxSize: 10 });
319
- for (let i = 0; i < 100; i++) {
320
- smallCache.set(`key-${i}`, {
321
- body: Buffer.from(`response-${i}`),
322
- status: 200,
323
- headers: {},
324
- model: "gpt-4",
325
- });
326
- }
327
- expect(smallCache.getStats().size).toBeLessThanOrEqual(10);
328
- expect(smallCache.getStats().evictions).toBeGreaterThan(0);
329
- });
330
- it("should handle exact capacity boundary", () => {
331
- const cache5 = new ResponseCache({ maxSize: 5 });
332
- for (let i = 0; i < 5; i++) {
333
- cache5.set(`key-${i}`, {
334
- body: Buffer.from(`response-${i}`),
335
- status: 200,
336
- headers: {},
337
- model: "gpt-4",
338
- });
339
- }
340
- expect(cache5.getStats().size).toBe(5);
341
- expect(cache5.getStats().evictions).toBe(0);
342
- // Add one more to trigger eviction
343
- cache5.set("key-5", {
344
- body: Buffer.from("response-5"),
345
- status: 200,
346
- headers: {},
347
- model: "gpt-4",
348
- });
349
- expect(cache5.getStats().size).toBe(5);
350
- expect(cache5.getStats().evictions).toBeGreaterThan(0);
351
- });
352
- });
353
- describe("size limit edge cases", () => {
354
- it("should handle item exactly at maxItemSize", () => {
355
- // maxItemSize is in bytes
356
- const cache1kb = new ResponseCache({ maxItemSize: 1024 }); // 1024 bytes = 1KB
357
- const exactSize = Buffer.alloc(1024); // Exactly 1024 bytes
358
- cache1kb.set("exact", {
359
- body: exactSize,
360
- status: 200,
361
- headers: {},
362
- model: "gpt-4",
363
- });
364
- // Should be cached (at limit, not over)
365
- expect(cache1kb.get("exact")).toBeDefined();
366
- });
367
- it("should reject item just over maxItemSize", () => {
368
- // maxItemSize is in bytes
369
- const cache1kb = new ResponseCache({ maxItemSize: 1024 }); // 1024 bytes
370
- const overSize = Buffer.alloc(1025); // 1 byte over limit
371
- cache1kb.set("over", {
372
- body: overSize,
373
- status: 200,
374
- headers: {},
375
- model: "gpt-4",
376
- });
377
- expect(cache1kb.get("over")).toBeUndefined();
378
- });
379
- });
380
- describe("concurrent access patterns", () => {
381
- it("should handle interleaved get/set operations", () => {
382
- for (let i = 0; i < 50; i++) {
383
- cache.set(`key-${i % 10}`, {
384
- body: Buffer.from(`value-${i}`),
385
- status: 200,
386
- headers: {},
387
- model: "gpt-4",
388
- });
389
- const result = cache.get(`key-${(i + 5) % 10}`);
390
- // Result may or may not exist depending on order
391
- if (result) {
392
- expect(result.body).toBeDefined();
393
- }
394
- }
395
- // Should not crash and should have some entries
396
- expect(cache.getStats().size).toBeGreaterThan(0);
397
- });
398
- });
399
- describe("stats edge cases", () => {
400
- it("should handle stats with no operations", () => {
401
- const stats = cache.getStats();
402
- expect(stats.hits).toBe(0);
403
- expect(stats.misses).toBe(0);
404
- expect(stats.hitRate).toBe("0%");
405
- });
406
- it("should handle 100% miss rate", () => {
407
- cache.get("miss1");
408
- cache.get("miss2");
409
- cache.get("miss3");
410
- const stats = cache.getStats();
411
- expect(stats.hits).toBe(0);
412
- expect(stats.misses).toBe(3);
413
- expect(stats.hitRate).toBe("0.0%");
414
- });
415
- it("should handle 100% hit rate", () => {
416
- cache.set("key", {
417
- body: Buffer.from("test"),
418
- status: 200,
419
- headers: {},
420
- model: "gpt-4",
421
- });
422
- cache.get("key");
423
- cache.get("key");
424
- cache.get("key");
425
- const stats = cache.getStats();
426
- expect(stats.hits).toBe(3);
427
- expect(stats.misses).toBe(0);
428
- expect(stats.hitRate).toBe("100.0%");
429
- });
430
- });
431
- describe("clear edge cases", () => {
432
- it("should handle clear on empty cache", () => {
433
- expect(() => cache.clear()).not.toThrow();
434
- expect(cache.getStats().size).toBe(0);
435
- });
436
- it("should handle double clear", () => {
437
- cache.set("key", {
438
- body: Buffer.from("test"),
439
- status: 200,
440
- headers: {},
441
- model: "gpt-4",
442
- });
443
- cache.clear();
444
- cache.clear();
445
- expect(cache.getStats().size).toBe(0);
446
- });
447
- it("should allow new entries after clear", () => {
448
- cache.set("before", {
449
- body: Buffer.from("before"),
450
- status: 200,
451
- headers: {},
452
- model: "gpt-4",
453
- });
454
- cache.clear();
455
- cache.set("after", {
456
- body: Buffer.from("after"),
457
- status: 200,
458
- headers: {},
459
- model: "gpt-4",
460
- });
461
- expect(cache.get("before")).toBeUndefined();
462
- expect(cache.get("after")).toBeDefined();
463
- });
464
- });
465
- describe("config edge cases", () => {
466
- it("should handle all config options as undefined", () => {
467
- const defaultCache = new ResponseCache({
468
- maxSize: undefined,
469
- defaultTTL: undefined,
470
- maxItemSize: undefined,
471
- enabled: undefined,
472
- });
473
- // Should use defaults
474
- expect(defaultCache.isEnabled()).toBe(true);
475
- });
476
- it("should handle partial config", () => {
477
- const partialCache = new ResponseCache({ maxSize: 50 });
478
- partialCache.set("key", {
479
- body: Buffer.from("test"),
480
- status: 200,
481
- headers: {},
482
- model: "gpt-4",
483
- });
484
- expect(partialCache.get("key")).toBeDefined();
485
- });
486
- });
487
- });
488
- //# sourceMappingURL=response-cache.edge-cases.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-cache.edge-cases.test.js","sourceRoot":"","sources":["../src/response-cache.edge-cases.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=response-cache.extreme.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"response-cache.extreme.test.d.ts","sourceRoot":"","sources":["../src/response-cache.extreme.test.ts"],"names":[],"mappings":""}