@blockrun/clawrouter 0.12.102 → 0.12.104

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 (283) hide show
  1. package/dist/cli.d.ts +0 -15
  2. package/dist/cli.js +80068 -407
  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/scripts/reinstall.sh +43 -7
  9. package/scripts/update.sh +35 -1
  10. package/dist/auth.d.ts +0 -82
  11. package/dist/auth.d.ts.map +0 -1
  12. package/dist/auth.js +0 -388
  13. package/dist/auth.js.map +0 -1
  14. package/dist/balance.d.ts +0 -97
  15. package/dist/balance.d.ts.map +0 -1
  16. package/dist/balance.js +0 -157
  17. package/dist/balance.js.map +0 -1
  18. package/dist/cli.d.ts.map +0 -1
  19. package/dist/compression/codebook.d.ts +0 -24
  20. package/dist/compression/codebook.d.ts.map +0 -1
  21. package/dist/compression/codebook.js +0 -119
  22. package/dist/compression/codebook.js.map +0 -1
  23. package/dist/compression/index.d.ts +0 -33
  24. package/dist/compression/index.d.ts.map +0 -1
  25. package/dist/compression/index.js +0 -246
  26. package/dist/compression/index.js.map +0 -1
  27. package/dist/compression/layers/deduplication.d.ts +0 -28
  28. package/dist/compression/layers/deduplication.d.ts.map +0 -1
  29. package/dist/compression/layers/deduplication.js +0 -101
  30. package/dist/compression/layers/deduplication.js.map +0 -1
  31. package/dist/compression/layers/dictionary.d.ts +0 -21
  32. package/dist/compression/layers/dictionary.d.ts.map +0 -1
  33. package/dist/compression/layers/dictionary.js +0 -73
  34. package/dist/compression/layers/dictionary.js.map +0 -1
  35. package/dist/compression/layers/dynamic-codebook.d.ts +0 -26
  36. package/dist/compression/layers/dynamic-codebook.d.ts.map +0 -1
  37. package/dist/compression/layers/dynamic-codebook.js +0 -149
  38. package/dist/compression/layers/dynamic-codebook.js.map +0 -1
  39. package/dist/compression/layers/json-compact.d.ts +0 -23
  40. package/dist/compression/layers/json-compact.d.ts.map +0 -1
  41. package/dist/compression/layers/json-compact.js +0 -79
  42. package/dist/compression/layers/json-compact.js.map +0 -1
  43. package/dist/compression/layers/observation.d.ts +0 -21
  44. package/dist/compression/layers/observation.d.ts.map +0 -1
  45. package/dist/compression/layers/observation.js +0 -130
  46. package/dist/compression/layers/observation.js.map +0 -1
  47. package/dist/compression/layers/paths.d.ts +0 -24
  48. package/dist/compression/layers/paths.d.ts.map +0 -1
  49. package/dist/compression/layers/paths.js +0 -110
  50. package/dist/compression/layers/paths.js.map +0 -1
  51. package/dist/compression/layers/whitespace.d.ts +0 -27
  52. package/dist/compression/layers/whitespace.d.ts.map +0 -1
  53. package/dist/compression/layers/whitespace.js +0 -60
  54. package/dist/compression/layers/whitespace.js.map +0 -1
  55. package/dist/compression/types.d.ts +0 -84
  56. package/dist/compression/types.d.ts.map +0 -1
  57. package/dist/compression/types.js +0 -27
  58. package/dist/compression/types.js.map +0 -1
  59. package/dist/config.d.ts +0 -12
  60. package/dist/config.d.ts.map +0 -1
  61. package/dist/config.js +0 -22
  62. package/dist/config.js.map +0 -1
  63. package/dist/dedup.d.ts +0 -34
  64. package/dist/dedup.d.ts.map +0 -1
  65. package/dist/dedup.js +0 -150
  66. package/dist/dedup.js.map +0 -1
  67. package/dist/doctor.d.ts +0 -8
  68. package/dist/doctor.d.ts.map +0 -1
  69. package/dist/doctor.js +0 -375
  70. package/dist/doctor.js.map +0 -1
  71. package/dist/error-classification.test.d.ts +0 -2
  72. package/dist/error-classification.test.d.ts.map +0 -1
  73. package/dist/error-classification.test.js +0 -59
  74. package/dist/error-classification.test.js.map +0 -1
  75. package/dist/errors.d.ts +0 -54
  76. package/dist/errors.d.ts.map +0 -1
  77. package/dist/errors.js +0 -85
  78. package/dist/errors.js.map +0 -1
  79. package/dist/exclude-models.d.ts +0 -28
  80. package/dist/exclude-models.d.ts.map +0 -1
  81. package/dist/exclude-models.integration.test.d.ts +0 -2
  82. package/dist/exclude-models.integration.test.d.ts.map +0 -1
  83. package/dist/exclude-models.integration.test.js +0 -46
  84. package/dist/exclude-models.integration.test.js.map +0 -1
  85. package/dist/exclude-models.js +0 -70
  86. package/dist/exclude-models.js.map +0 -1
  87. package/dist/exclude-models.test.d.ts +0 -5
  88. package/dist/exclude-models.test.d.ts.map +0 -1
  89. package/dist/exclude-models.test.js +0 -95
  90. package/dist/exclude-models.test.js.map +0 -1
  91. package/dist/fs-read.d.ts +0 -11
  92. package/dist/fs-read.d.ts.map +0 -1
  93. package/dist/fs-read.js +0 -47
  94. package/dist/fs-read.js.map +0 -1
  95. package/dist/index.d.ts.map +0 -1
  96. package/dist/journal.d.ts +0 -67
  97. package/dist/journal.d.ts.map +0 -1
  98. package/dist/journal.js +0 -184
  99. package/dist/journal.js.map +0 -1
  100. package/dist/journal.test.d.ts +0 -2
  101. package/dist/journal.test.d.ts.map +0 -1
  102. package/dist/journal.test.js +0 -201
  103. package/dist/journal.test.js.map +0 -1
  104. package/dist/logger.d.ts +0 -33
  105. package/dist/logger.d.ts.map +0 -1
  106. package/dist/logger.js +0 -35
  107. package/dist/logger.js.map +0 -1
  108. package/dist/models.d.ts +0 -107
  109. package/dist/models.d.ts.map +0 -1
  110. package/dist/models.js +0 -941
  111. package/dist/models.js.map +0 -1
  112. package/dist/models.test.d.ts +0 -2
  113. package/dist/models.test.d.ts.map +0 -1
  114. package/dist/models.test.js +0 -38
  115. package/dist/models.test.js.map +0 -1
  116. package/dist/partners/index.d.ts +0 -8
  117. package/dist/partners/index.d.ts.map +0 -1
  118. package/dist/partners/index.js +0 -6
  119. package/dist/partners/index.js.map +0 -1
  120. package/dist/partners/registry.d.ts +0 -51
  121. package/dist/partners/registry.d.ts.map +0 -1
  122. package/dist/partners/registry.js +0 -256
  123. package/dist/partners/registry.js.map +0 -1
  124. package/dist/partners/tools.d.ts +0 -24
  125. package/dist/partners/tools.d.ts.map +0 -1
  126. package/dist/partners/tools.js +0 -97
  127. package/dist/partners/tools.js.map +0 -1
  128. package/dist/payment-preauth.d.ts +0 -17
  129. package/dist/payment-preauth.d.ts.map +0 -1
  130. package/dist/payment-preauth.js +0 -102
  131. package/dist/payment-preauth.js.map +0 -1
  132. package/dist/provider.d.ts +0 -19
  133. package/dist/provider.d.ts.map +0 -1
  134. package/dist/provider.js +0 -45
  135. package/dist/provider.js.map +0 -1
  136. package/dist/proxy.d.ts +0 -210
  137. package/dist/proxy.d.ts.map +0 -1
  138. package/dist/proxy.debrand.test.d.ts +0 -2
  139. package/dist/proxy.debrand.test.d.ts.map +0 -1
  140. package/dist/proxy.debrand.test.js +0 -101
  141. package/dist/proxy.debrand.test.js.map +0 -1
  142. package/dist/proxy.degraded-response.test.d.ts +0 -2
  143. package/dist/proxy.degraded-response.test.d.ts.map +0 -1
  144. package/dist/proxy.degraded-response.test.js +0 -105
  145. package/dist/proxy.degraded-response.test.js.map +0 -1
  146. package/dist/proxy.image-download.test.d.ts +0 -2
  147. package/dist/proxy.image-download.test.d.ts.map +0 -1
  148. package/dist/proxy.image-download.test.js +0 -92
  149. package/dist/proxy.image-download.test.js.map +0 -1
  150. package/dist/proxy.js +0 -3810
  151. package/dist/proxy.js.map +0 -1
  152. package/dist/proxy.models-endpoint.test.d.ts +0 -2
  153. package/dist/proxy.models-endpoint.test.d.ts.map +0 -1
  154. package/dist/proxy.models-endpoint.test.js +0 -19
  155. package/dist/proxy.models-endpoint.test.js.map +0 -1
  156. package/dist/proxy.multiturn-thinking.test.d.ts +0 -2
  157. package/dist/proxy.multiturn-thinking.test.d.ts.map +0 -1
  158. package/dist/proxy.multiturn-thinking.test.js +0 -82
  159. package/dist/proxy.multiturn-thinking.test.js.map +0 -1
  160. package/dist/proxy.payment-chain-reuse.test.d.ts +0 -2
  161. package/dist/proxy.payment-chain-reuse.test.d.ts.map +0 -1
  162. package/dist/proxy.payment-chain-reuse.test.js +0 -30
  163. package/dist/proxy.payment-chain-reuse.test.js.map +0 -1
  164. package/dist/proxy.solana-resilience.test.d.ts +0 -12
  165. package/dist/proxy.solana-resilience.test.d.ts.map +0 -1
  166. package/dist/proxy.solana-resilience.test.js +0 -39
  167. package/dist/proxy.solana-resilience.test.js.map +0 -1
  168. package/dist/report.d.ts +0 -6
  169. package/dist/report.d.ts.map +0 -1
  170. package/dist/report.js +0 -44
  171. package/dist/report.js.map +0 -1
  172. package/dist/response-cache.advanced.test.d.ts +0 -2
  173. package/dist/response-cache.advanced.test.d.ts.map +0 -1
  174. package/dist/response-cache.advanced.test.js +0 -566
  175. package/dist/response-cache.advanced.test.js.map +0 -1
  176. package/dist/response-cache.d.ts +0 -85
  177. package/dist/response-cache.d.ts.map +0 -1
  178. package/dist/response-cache.edge-cases.test.d.ts +0 -2
  179. package/dist/response-cache.edge-cases.test.d.ts.map +0 -1
  180. package/dist/response-cache.edge-cases.test.js +0 -488
  181. package/dist/response-cache.edge-cases.test.js.map +0 -1
  182. package/dist/response-cache.extreme.test.d.ts +0 -2
  183. package/dist/response-cache.extreme.test.d.ts.map +0 -1
  184. package/dist/response-cache.extreme.test.js +0 -561
  185. package/dist/response-cache.extreme.test.js.map +0 -1
  186. package/dist/response-cache.js +0 -240
  187. package/dist/response-cache.js.map +0 -1
  188. package/dist/response-cache.test.d.ts +0 -2
  189. package/dist/response-cache.test.d.ts.map +0 -1
  190. package/dist/response-cache.test.js +0 -242
  191. package/dist/response-cache.test.js.map +0 -1
  192. package/dist/retry.d.ts +0 -42
  193. package/dist/retry.d.ts.map +0 -1
  194. package/dist/retry.js +0 -99
  195. package/dist/retry.js.map +0 -1
  196. package/dist/router/config.d.ts +0 -11
  197. package/dist/router/config.d.ts.map +0 -1
  198. package/dist/router/config.js +0 -1215
  199. package/dist/router/config.js.map +0 -1
  200. package/dist/router/index.d.ts +0 -18
  201. package/dist/router/index.d.ts.map +0 -1
  202. package/dist/router/index.js +0 -19
  203. package/dist/router/index.js.map +0 -1
  204. package/dist/router/llm-classifier.d.ts +0 -29
  205. package/dist/router/llm-classifier.d.ts.map +0 -1
  206. package/dist/router/llm-classifier.js +0 -99
  207. package/dist/router/llm-classifier.js.map +0 -1
  208. package/dist/router/rules.d.ts +0 -12
  209. package/dist/router/rules.d.ts.map +0 -1
  210. package/dist/router/rules.js +0 -202
  211. package/dist/router/rules.js.map +0 -1
  212. package/dist/router/selector.d.ts +0 -58
  213. package/dist/router/selector.d.ts.map +0 -1
  214. package/dist/router/selector.js +0 -165
  215. package/dist/router/selector.js.map +0 -1
  216. package/dist/router/selector.test.d.ts +0 -2
  217. package/dist/router/selector.test.d.ts.map +0 -1
  218. package/dist/router/selector.test.js +0 -67
  219. package/dist/router/selector.test.js.map +0 -1
  220. package/dist/router/strategy.d.ts +0 -19
  221. package/dist/router/strategy.d.ts.map +0 -1
  222. package/dist/router/strategy.js +0 -138
  223. package/dist/router/strategy.js.map +0 -1
  224. package/dist/router/strategy.test.d.ts +0 -2
  225. package/dist/router/strategy.test.d.ts.map +0 -1
  226. package/dist/router/strategy.test.js +0 -131
  227. package/dist/router/strategy.test.js.map +0 -1
  228. package/dist/router/types.d.ts +0 -127
  229. package/dist/router/types.d.ts.map +0 -1
  230. package/dist/router/types.js +0 -11
  231. package/dist/router/types.js.map +0 -1
  232. package/dist/session.d.ts +0 -124
  233. package/dist/session.d.ts.map +0 -1
  234. package/dist/session.js +0 -256
  235. package/dist/session.js.map +0 -1
  236. package/dist/session.test.d.ts +0 -2
  237. package/dist/session.test.d.ts.map +0 -1
  238. package/dist/session.test.js +0 -163
  239. package/dist/session.test.js.map +0 -1
  240. package/dist/solana-balance.d.ts +0 -48
  241. package/dist/solana-balance.d.ts.map +0 -1
  242. package/dist/solana-balance.js +0 -142
  243. package/dist/solana-balance.js.map +0 -1
  244. package/dist/spend-control.d.ts +0 -112
  245. package/dist/spend-control.d.ts.map +0 -1
  246. package/dist/spend-control.js +0 -278
  247. package/dist/spend-control.js.map +0 -1
  248. package/dist/spend-control.test.d.ts +0 -5
  249. package/dist/spend-control.test.d.ts.map +0 -1
  250. package/dist/spend-control.test.js +0 -210
  251. package/dist/spend-control.test.js.map +0 -1
  252. package/dist/stats.d.ts +0 -64
  253. package/dist/stats.d.ts.map +0 -1
  254. package/dist/stats.js +0 -295
  255. package/dist/stats.js.map +0 -1
  256. package/dist/types.d.ts +0 -150
  257. package/dist/types.d.ts.map +0 -1
  258. package/dist/types.js +0 -9
  259. package/dist/types.js.map +0 -1
  260. package/dist/update-hint.test.d.ts +0 -9
  261. package/dist/update-hint.test.d.ts.map +0 -1
  262. package/dist/update-hint.test.js +0 -156
  263. package/dist/update-hint.test.js.map +0 -1
  264. package/dist/updater.d.ts +0 -10
  265. package/dist/updater.d.ts.map +0 -1
  266. package/dist/updater.js +0 -55
  267. package/dist/updater.js.map +0 -1
  268. package/dist/version.d.ts +0 -3
  269. package/dist/version.d.ts.map +0 -1
  270. package/dist/version.js +0 -16
  271. package/dist/version.js.map +0 -1
  272. package/dist/wallet.d.ts +0 -52
  273. package/dist/wallet.d.ts.map +0 -1
  274. package/dist/wallet.js +0 -94
  275. package/dist/wallet.js.map +0 -1
  276. package/dist/wallet.test.d.ts +0 -6
  277. package/dist/wallet.test.d.ts.map +0 -1
  278. package/dist/wallet.test.js +0 -117
  279. package/dist/wallet.test.js.map +0 -1
  280. package/dist/x402-sdk.test.d.ts +0 -6
  281. package/dist/x402-sdk.test.d.ts.map +0 -1
  282. package/dist/x402-sdk.test.js +0 -161
  283. package/dist/x402-sdk.test.js.map +0 -1
@@ -1,46 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { filterByExcludeList, getFallbackChain } from "./router/selector.js";
3
- import { DEFAULT_ROUTING_CONFIG } from "./router/config.js";
4
- describe("excludeModels integration", () => {
5
- it("filters nvidia/gpt-oss-120b from eco SIMPLE chain", () => {
6
- const chain = getFallbackChain("SIMPLE", DEFAULT_ROUTING_CONFIG.ecoTiers);
7
- const excluded = new Set(["nvidia/gpt-oss-120b"]);
8
- const filtered = filterByExcludeList(chain, excluded);
9
- expect(filtered).not.toContain("nvidia/gpt-oss-120b");
10
- expect(filtered.length).toBeGreaterThan(0);
11
- });
12
- it("excludes multiple models across all eco tiers", () => {
13
- const exclude = new Set(["nvidia/gpt-oss-120b", "xai/grok-4-0709"]);
14
- for (const tier of ["SIMPLE", "MEDIUM", "COMPLEX", "REASONING"]) {
15
- const chain = getFallbackChain(tier, DEFAULT_ROUTING_CONFIG.ecoTiers);
16
- const filtered = filterByExcludeList(chain, exclude);
17
- for (const model of exclude) {
18
- if (chain.includes(model)) {
19
- expect(filtered).not.toContain(model);
20
- }
21
- }
22
- expect(filtered.length).toBeGreaterThan(0);
23
- }
24
- });
25
- it("gracefully handles excluding ALL models in a tier (safety net)", () => {
26
- const chain = getFallbackChain("SIMPLE", DEFAULT_ROUTING_CONFIG.ecoTiers);
27
- const excludeAll = new Set(chain);
28
- const filtered = filterByExcludeList(chain, excludeAll);
29
- expect(filtered).toEqual(chain);
30
- });
31
- it("works across auto tiers too", () => {
32
- const exclude = new Set(["nvidia/gpt-oss-120b"]);
33
- const chain = getFallbackChain("SIMPLE", DEFAULT_ROUTING_CONFIG.tiers);
34
- const filtered = filterByExcludeList(chain, exclude);
35
- if (chain.includes("nvidia/gpt-oss-120b")) {
36
- expect(filtered).not.toContain("nvidia/gpt-oss-120b");
37
- }
38
- expect(filtered.length).toBeGreaterThan(0);
39
- });
40
- it("empty exclude list returns chain unchanged", () => {
41
- const chain = getFallbackChain("COMPLEX", DEFAULT_ROUTING_CONFIG.tiers);
42
- const filtered = filterByExcludeList(chain, new Set());
43
- expect(filtered).toEqual(chain);
44
- });
45
- });
46
- //# sourceMappingURL=exclude-models.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclude-models.integration.test.js","sourceRoot":"","sources":["../src/exclude-models.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- /**
2
- * Exclude-models persistence module.
3
- *
4
- * Manages a user-configurable list of model IDs that the smart router
5
- * should never select. Stored as a sorted JSON array on disk.
6
- */
7
- import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
8
- import { join, dirname } from "node:path";
9
- import { homedir } from "node:os";
10
- import { resolveModelAlias } from "./models.js";
11
- const DEFAULT_FILE_PATH = join(homedir(), ".openclaw", "blockrun", "exclude-models.json");
12
- /**
13
- * Load the exclude list from disk.
14
- * Returns an empty set if the file does not exist.
15
- */
16
- export function loadExcludeList(filePath = DEFAULT_FILE_PATH) {
17
- try {
18
- const raw = readFileSync(filePath, "utf-8");
19
- const arr = JSON.parse(raw);
20
- if (Array.isArray(arr)) {
21
- return new Set(arr.filter((x) => typeof x === "string"));
22
- }
23
- return new Set();
24
- }
25
- catch {
26
- return new Set();
27
- }
28
- }
29
- /**
30
- * Save a set of model IDs to disk as a sorted JSON array.
31
- */
32
- function saveExcludeList(set, filePath) {
33
- const sorted = [...set].sort();
34
- const dir = dirname(filePath);
35
- mkdirSync(dir, { recursive: true });
36
- writeFileSync(filePath, JSON.stringify(sorted, null, 2) + "\n", "utf-8");
37
- }
38
- /**
39
- * Add a model to the exclude list.
40
- * Resolves aliases before persisting.
41
- * @returns The resolved model ID.
42
- */
43
- export function addExclusion(model, filePath = DEFAULT_FILE_PATH) {
44
- const resolved = resolveModelAlias(model);
45
- const set = loadExcludeList(filePath);
46
- set.add(resolved);
47
- saveExcludeList(set, filePath);
48
- return resolved;
49
- }
50
- /**
51
- * Remove a model from the exclude list.
52
- * Resolves aliases before removing.
53
- * @returns true if the model was present and removed, false otherwise.
54
- */
55
- export function removeExclusion(model, filePath = DEFAULT_FILE_PATH) {
56
- const resolved = resolveModelAlias(model);
57
- const set = loadExcludeList(filePath);
58
- const had = set.delete(resolved);
59
- if (had) {
60
- saveExcludeList(set, filePath);
61
- }
62
- return had;
63
- }
64
- /**
65
- * Clear the entire exclude list.
66
- */
67
- export function clearExclusions(filePath = DEFAULT_FILE_PATH) {
68
- saveExcludeList(new Set(), filePath);
69
- }
70
- //# sourceMappingURL=exclude-models.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclude-models.js","sourceRoot":"","sources":["../src/exclude-models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAC;AAE1F;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,iBAAiB;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAgB,EAAE,QAAgB;IACzD,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9B,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,WAAmB,iBAAiB;IAC9E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,WAAmB,iBAAiB;IACjF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,GAAG,EAAE,CAAC;QACR,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,iBAAiB;IAClE,eAAe,CAAC,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * ExcludeModels persistence tests — load, add, remove, clear, aliases.
3
- */
4
- export {};
5
- //# sourceMappingURL=exclude-models.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclude-models.test.d.ts","sourceRoot":"","sources":["../src/exclude-models.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,95 +0,0 @@
1
- /**
2
- * ExcludeModels persistence tests — load, add, remove, clear, aliases.
3
- */
4
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
5
- import { mkdtempSync, rmSync, readFileSync } from "node:fs";
6
- import { join } from "node:path";
7
- import { tmpdir } from "node:os";
8
- import { loadExcludeList, addExclusion, removeExclusion, clearExclusions, } from "./exclude-models.js";
9
- describe("ExcludeModels", () => {
10
- let tempDir;
11
- let filePath;
12
- beforeEach(() => {
13
- tempDir = mkdtempSync(join(tmpdir(), "exclude-models-test-"));
14
- filePath = join(tempDir, "exclude-models.json");
15
- });
16
- afterEach(() => {
17
- rmSync(tempDir, { recursive: true, force: true });
18
- });
19
- it("returns empty set when file does not exist", () => {
20
- const set = loadExcludeList(filePath);
21
- expect(set.size).toBe(0);
22
- });
23
- it("add persists to disk and load returns it", () => {
24
- const resolved = addExclusion("openai/gpt-4o", filePath);
25
- expect(resolved).toBe("openai/gpt-4o");
26
- const set = loadExcludeList(filePath);
27
- expect(set.has("openai/gpt-4o")).toBe(true);
28
- expect(set.size).toBe(1);
29
- });
30
- it("add multiple models", () => {
31
- addExclusion("openai/gpt-4o", filePath);
32
- addExclusion("anthropic/claude-sonnet-4.6", filePath);
33
- const set = loadExcludeList(filePath);
34
- expect(set.size).toBe(2);
35
- expect(set.has("openai/gpt-4o")).toBe(true);
36
- expect(set.has("anthropic/claude-sonnet-4.6")).toBe(true);
37
- });
38
- it("remove returns true when model was present", () => {
39
- addExclusion("openai/gpt-4o", filePath);
40
- const removed = removeExclusion("openai/gpt-4o", filePath);
41
- expect(removed).toBe(true);
42
- const set = loadExcludeList(filePath);
43
- expect(set.size).toBe(0);
44
- });
45
- it("remove returns false when model was not present", () => {
46
- const removed = removeExclusion("openai/gpt-4o", filePath);
47
- expect(removed).toBe(false);
48
- });
49
- it("clear empties the list", () => {
50
- addExclusion("openai/gpt-4o", filePath);
51
- addExclusion("anthropic/claude-sonnet-4.6", filePath);
52
- clearExclusions(filePath);
53
- const set = loadExcludeList(filePath);
54
- expect(set.size).toBe(0);
55
- });
56
- it("deduplication — adding same model twice results in one entry", () => {
57
- addExclusion("openai/gpt-4o", filePath);
58
- addExclusion("openai/gpt-4o", filePath);
59
- const set = loadExcludeList(filePath);
60
- expect(set.size).toBe(1);
61
- });
62
- it("resolves aliases — 'nvidia' becomes 'free/gpt-oss-120b'", () => {
63
- const resolved = addExclusion("nvidia", filePath);
64
- expect(resolved).toBe("free/gpt-oss-120b");
65
- const set = loadExcludeList(filePath);
66
- expect(set.has("free/gpt-oss-120b")).toBe(true);
67
- expect(set.size).toBe(1);
68
- });
69
- it("resolves aliases — 'claude' becomes 'anthropic/claude-sonnet-4.6'", () => {
70
- const resolved = addExclusion("claude", filePath);
71
- expect(resolved).toBe("anthropic/claude-sonnet-4.6");
72
- const set = loadExcludeList(filePath);
73
- expect(set.has("anthropic/claude-sonnet-4.6")).toBe(true);
74
- });
75
- it("remove resolves aliases too", () => {
76
- addExclusion("nvidia", filePath); // "nvidia" alias → "free/gpt-oss-120b"
77
- const removed = removeExclusion("gpt-120b", filePath); // different alias for same model
78
- expect(removed).toBe(true);
79
- const set = loadExcludeList(filePath);
80
- expect(set.size).toBe(0);
81
- });
82
- it("file contains sorted JSON array", () => {
83
- addExclusion("openai/gpt-4o", filePath);
84
- addExclusion("anthropic/claude-sonnet-4.6", filePath);
85
- const raw = JSON.parse(readFileSync(filePath, "utf-8"));
86
- expect(raw).toEqual(["anthropic/claude-sonnet-4.6", "openai/gpt-4o"]);
87
- });
88
- it("creates parent directories if they do not exist", () => {
89
- const nestedPath = join(tempDir, "a", "b", "c", "exclude-models.json");
90
- addExclusion("openai/gpt-4o", nestedPath);
91
- const set = loadExcludeList(nestedPath);
92
- expect(set.has("openai/gpt-4o")).toBe(true);
93
- });
94
- });
95
- //# sourceMappingURL=exclude-models.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclude-models.test.js","sourceRoot":"","sources":["../src/exclude-models.test.ts"],"names":[],"mappings":"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"}
package/dist/fs-read.d.ts DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * Scanner-safe file reading utilities.
3
- *
4
- * Uses open() + read() to avoid false positives from openclaw's
5
- * potential-exfiltration heuristic in bundled output.
6
- */
7
- /** Read file contents as UTF-8 string (async). */
8
- export declare function readTextFile(filePath: string): Promise<string>;
9
- /** Read file contents as UTF-8 string (sync). */
10
- export declare function readTextFileSync(filePath: string): string;
11
- //# sourceMappingURL=fs-read.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-read.d.ts","sourceRoot":"","sources":["../src/fs-read.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,kDAAkD;AAClD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAepE;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAezD"}
package/dist/fs-read.js DELETED
@@ -1,47 +0,0 @@
1
- /**
2
- * Scanner-safe file reading utilities.
3
- *
4
- * Uses open() + read() to avoid false positives from openclaw's
5
- * potential-exfiltration heuristic in bundled output.
6
- */
7
- import { open } from "node:fs/promises";
8
- import { openSync, readSync, closeSync, fstatSync } from "node:fs";
9
- /** Read file contents as UTF-8 string (async). */
10
- export async function readTextFile(filePath) {
11
- const fh = await open(filePath, "r");
12
- try {
13
- const size = (await fh.stat()).size;
14
- const buf = Buffer.alloc(size);
15
- let offset = 0;
16
- while (offset < size) {
17
- const { bytesRead } = await fh.read(buf, offset, size - offset, offset);
18
- if (bytesRead === 0)
19
- break;
20
- offset += bytesRead;
21
- }
22
- return buf.subarray(0, offset).toString("utf-8");
23
- }
24
- finally {
25
- await fh.close();
26
- }
27
- }
28
- /** Read file contents as UTF-8 string (sync). */
29
- export function readTextFileSync(filePath) {
30
- const fd = openSync(filePath, "r");
31
- try {
32
- const size = fstatSync(fd).size;
33
- const buf = Buffer.alloc(size);
34
- let offset = 0;
35
- while (offset < size) {
36
- const bytesRead = readSync(fd, buf, offset, size - offset, offset);
37
- if (bytesRead === 0)
38
- break;
39
- offset += bytesRead;
40
- }
41
- return buf.subarray(0, offset).toString("utf-8");
42
- }
43
- finally {
44
- closeSync(fd);
45
- }
46
- }
47
- //# sourceMappingURL=fs-read.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs-read.js","sourceRoot":"","sources":["../src/fs-read.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEnE,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;YACxE,IAAI,SAAS,KAAK,CAAC;gBAAE,MAAM;YAC3B,MAAM,IAAI,SAAS,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,IAAI,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC;YACnE,IAAI,SAAS,KAAK,CAAC;gBAAE,MAAM;YAC3B,MAAM,IAAI,SAAS,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/journal.d.ts DELETED
@@ -1,67 +0,0 @@
1
- /**
2
- * Session Journal - Memory layer for ClawRouter
3
- *
4
- * Maintains a compact record of key actions per session, enabling agents
5
- * to recall earlier work even when OpenClaw's sessions_history is truncated.
6
- *
7
- * How it works:
8
- * 1. As LLM responses flow through, extracts key actions ("I created X", "I fixed Y")
9
- * 2. Stores them in a compact journal per session
10
- * 3. When a request mentions past work ("what did you do today?"), injects the journal
11
- */
12
- export interface JournalEntry {
13
- timestamp: number;
14
- action: string;
15
- model?: string;
16
- }
17
- export interface SessionJournalConfig {
18
- /** Maximum entries per session (default: 100) */
19
- maxEntries?: number;
20
- /** Maximum age of entries in ms (default: 24 hours) */
21
- maxAgeMs?: number;
22
- /** Maximum events to extract per response (default: 5) */
23
- maxEventsPerResponse?: number;
24
- }
25
- export declare class SessionJournal {
26
- private journals;
27
- private config;
28
- constructor(config?: SessionJournalConfig);
29
- /**
30
- * Extract key events from assistant response content.
31
- * Looks for patterns like "I created...", "I fixed...", "Successfully..."
32
- */
33
- extractEvents(content: string): string[];
34
- /**
35
- * Record events to the session journal.
36
- */
37
- record(sessionId: string, events: string[], model?: string): void;
38
- /**
39
- * Check if the user message indicates a need for historical context.
40
- */
41
- needsContext(lastUserMessage: string): boolean;
42
- /**
43
- * Format the journal for injection into system message.
44
- * Returns null if journal is empty.
45
- */
46
- format(sessionId: string): string | null;
47
- /**
48
- * Get the raw journal entries for a session (for debugging/testing).
49
- */
50
- getEntries(sessionId: string): JournalEntry[];
51
- /**
52
- * Clear journal for a specific session.
53
- */
54
- clear(sessionId: string): void;
55
- /**
56
- * Clear all journals.
57
- */
58
- clearAll(): void;
59
- /**
60
- * Get stats about the journal.
61
- */
62
- getStats(): {
63
- sessions: number;
64
- totalEntries: number;
65
- };
66
- }
67
- //# sourceMappingURL=journal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAQD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,MAAM,CAAiC;gBAEnC,MAAM,CAAC,EAAE,oBAAoB;IAIzC;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IA2DxC;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAuBjE;;OAEG;IACH,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO;IAqC9C;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkBxC;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE;IAI7C;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,QAAQ,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;CAUvD"}
package/dist/journal.js DELETED
@@ -1,184 +0,0 @@
1
- /**
2
- * Session Journal - Memory layer for ClawRouter
3
- *
4
- * Maintains a compact record of key actions per session, enabling agents
5
- * to recall earlier work even when OpenClaw's sessions_history is truncated.
6
- *
7
- * How it works:
8
- * 1. As LLM responses flow through, extracts key actions ("I created X", "I fixed Y")
9
- * 2. Stores them in a compact journal per session
10
- * 3. When a request mentions past work ("what did you do today?"), injects the journal
11
- */
12
- const DEFAULT_CONFIG = {
13
- maxEntries: 100,
14
- maxAgeMs: 24 * 60 * 60 * 1000, // 24 hours
15
- maxEventsPerResponse: 5,
16
- };
17
- export class SessionJournal {
18
- journals = new Map();
19
- config;
20
- constructor(config) {
21
- this.config = { ...DEFAULT_CONFIG, ...config };
22
- }
23
- /**
24
- * Extract key events from assistant response content.
25
- * Looks for patterns like "I created...", "I fixed...", "Successfully..."
26
- */
27
- extractEvents(content) {
28
- if (!content || typeof content !== "string") {
29
- return [];
30
- }
31
- const events = [];
32
- const seen = new Set();
33
- // Patterns for identifying key actions
34
- // Note: Patterns allow optional words like "also", "then", "have" between "I" and verb
35
- const patterns = [
36
- // Creation patterns
37
- /I (?:also |then |have |)?(?:created|implemented|added|wrote|built|generated|set up|initialized) ([^.!?\n]{10,150})/gi,
38
- // Fix patterns
39
- /I (?:also |then |have |)?(?:fixed|resolved|solved|patched|corrected|addressed|debugged) ([^.!?\n]{10,150})/gi,
40
- // Completion patterns
41
- /I (?:also |then |have |)?(?:completed|finished|done with|wrapped up) ([^.!?\n]{10,150})/gi,
42
- // Update patterns
43
- /I (?:also |then |have |)?(?:updated|modified|changed|refactored|improved|enhanced|optimized) ([^.!?\n]{10,150})/gi,
44
- // Success patterns
45
- /Successfully ([^.!?\n]{10,150})/gi,
46
- // Tool usage patterns (when agent uses tools)
47
- /I (?:also |then |have |)?(?:ran|executed|called|invoked) ([^.!?\n]{10,100})/gi,
48
- ];
49
- for (const pattern of patterns) {
50
- // Reset pattern lastIndex for each iteration
51
- pattern.lastIndex = 0;
52
- let match;
53
- while ((match = pattern.exec(content)) !== null) {
54
- const action = match[0].trim();
55
- // Skip if already seen (dedup)
56
- const normalized = action.toLowerCase();
57
- if (seen.has(normalized)) {
58
- continue;
59
- }
60
- // Validate length (not too short or too long)
61
- if (action.length >= 15 && action.length <= 200) {
62
- events.push(action);
63
- seen.add(normalized);
64
- }
65
- // Stop if we have enough events
66
- if (events.length >= this.config.maxEventsPerResponse) {
67
- break;
68
- }
69
- }
70
- if (events.length >= this.config.maxEventsPerResponse) {
71
- break;
72
- }
73
- }
74
- return events;
75
- }
76
- /**
77
- * Record events to the session journal.
78
- */
79
- record(sessionId, events, model) {
80
- if (!sessionId || !events.length) {
81
- return;
82
- }
83
- const journal = this.journals.get(sessionId) || [];
84
- const now = Date.now();
85
- for (const action of events) {
86
- journal.push({
87
- timestamp: now,
88
- action,
89
- model,
90
- });
91
- }
92
- // Trim old entries and enforce max count
93
- const cutoff = now - this.config.maxAgeMs;
94
- const trimmed = journal.filter((e) => e.timestamp > cutoff).slice(-this.config.maxEntries);
95
- this.journals.set(sessionId, trimmed);
96
- }
97
- /**
98
- * Check if the user message indicates a need for historical context.
99
- */
100
- needsContext(lastUserMessage) {
101
- if (!lastUserMessage || typeof lastUserMessage !== "string") {
102
- return false;
103
- }
104
- const lower = lastUserMessage.toLowerCase();
105
- // Trigger phrases that indicate user wants to recall past work
106
- const triggers = [
107
- // Direct questions about past work
108
- "what did you do",
109
- "what have you done",
110
- "what did we do",
111
- "what have we done",
112
- // Temporal references
113
- "earlier",
114
- "before",
115
- "previously",
116
- "this session",
117
- "today",
118
- "so far",
119
- // Summary requests
120
- "remind me",
121
- "summarize",
122
- "summary of",
123
- "recap",
124
- // Progress inquiries
125
- "your work",
126
- "your progress",
127
- "accomplished",
128
- "achievements",
129
- "completed tasks",
130
- ];
131
- return triggers.some((t) => lower.includes(t));
132
- }
133
- /**
134
- * Format the journal for injection into system message.
135
- * Returns null if journal is empty.
136
- */
137
- format(sessionId) {
138
- const journal = this.journals.get(sessionId);
139
- if (!journal?.length) {
140
- return null;
141
- }
142
- const lines = journal.map((e) => {
143
- const time = new Date(e.timestamp).toLocaleTimeString("en-US", {
144
- hour: "2-digit",
145
- minute: "2-digit",
146
- hour12: true,
147
- });
148
- return `- ${time}: ${e.action}`;
149
- });
150
- return `[Session Memory - Key Actions]\n${lines.join("\n")}`;
151
- }
152
- /**
153
- * Get the raw journal entries for a session (for debugging/testing).
154
- */
155
- getEntries(sessionId) {
156
- return this.journals.get(sessionId) || [];
157
- }
158
- /**
159
- * Clear journal for a specific session.
160
- */
161
- clear(sessionId) {
162
- this.journals.delete(sessionId);
163
- }
164
- /**
165
- * Clear all journals.
166
- */
167
- clearAll() {
168
- this.journals.clear();
169
- }
170
- /**
171
- * Get stats about the journal.
172
- */
173
- getStats() {
174
- let totalEntries = 0;
175
- for (const entries of this.journals.values()) {
176
- totalEntries += entries.length;
177
- }
178
- return {
179
- sessions: this.journals.size,
180
- totalEntries,
181
- };
182
- }
183
- }
184
- //# sourceMappingURL=journal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal.js","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=journal.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal.test.d.ts","sourceRoot":"","sources":["../src/journal.test.ts"],"names":[],"mappings":""}