@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
package/dist/errors.d.ts DELETED
@@ -1,54 +0,0 @@
1
- /**
2
- * Typed Error Classes for ClawRouter
3
- *
4
- * Provides structured errors for balance-related failures with
5
- * all necessary information for user-friendly error messages.
6
- */
7
- /**
8
- * Thrown when wallet has insufficient USDC balance for a request.
9
- */
10
- export declare class InsufficientFundsError extends Error {
11
- readonly code: "INSUFFICIENT_FUNDS";
12
- readonly currentBalanceUSD: string;
13
- readonly requiredUSD: string;
14
- readonly walletAddress: string;
15
- constructor(opts: {
16
- currentBalanceUSD: string;
17
- requiredUSD: string;
18
- walletAddress: string;
19
- });
20
- }
21
- /**
22
- * Thrown when wallet has no USDC balance (or effectively zero).
23
- */
24
- export declare class EmptyWalletError extends Error {
25
- readonly code: "EMPTY_WALLET";
26
- readonly walletAddress: string;
27
- constructor(walletAddress: string);
28
- }
29
- /**
30
- * Type guard to check if an error is InsufficientFundsError.
31
- */
32
- export declare function isInsufficientFundsError(error: unknown): error is InsufficientFundsError;
33
- /**
34
- * Type guard to check if an error is EmptyWalletError.
35
- */
36
- export declare function isEmptyWalletError(error: unknown): error is EmptyWalletError;
37
- /**
38
- * Type guard to check if an error is a balance-related error.
39
- */
40
- export declare function isBalanceError(error: unknown): error is InsufficientFundsError | EmptyWalletError;
41
- /**
42
- * Thrown when RPC call fails (network error, node down, etc).
43
- * Distinguishes infrastructure failures from actual empty wallets.
44
- */
45
- export declare class RpcError extends Error {
46
- readonly code: "RPC_ERROR";
47
- readonly originalError: unknown;
48
- constructor(message: string, originalError?: unknown);
49
- }
50
- /**
51
- * Type guard to check if an error is RpcError.
52
- */
53
- export declare function isRpcError(error: unknown): error is RpcError;
54
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,oBAAoB,CAAU;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEnB,IAAI,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;CAa5F;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEnB,aAAa,EAAE,MAAM;CAYlC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,CAExF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAE5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,sBAAsB,GAAG,gBAAgB,CAEjG;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO;CAKrD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D"}
package/dist/errors.js DELETED
@@ -1,85 +0,0 @@
1
- /**
2
- * Typed Error Classes for ClawRouter
3
- *
4
- * Provides structured errors for balance-related failures with
5
- * all necessary information for user-friendly error messages.
6
- */
7
- /**
8
- * Thrown when wallet has insufficient USDC balance for a request.
9
- */
10
- export class InsufficientFundsError extends Error {
11
- code = "INSUFFICIENT_FUNDS";
12
- currentBalanceUSD;
13
- requiredUSD;
14
- walletAddress;
15
- constructor(opts) {
16
- const msg = [
17
- `Insufficient balance. Current: ${opts.currentBalanceUSD}, Required: ${opts.requiredUSD}`,
18
- `Options:`,
19
- ` 1. Fund wallet: ${opts.walletAddress}`,
20
- ` 2. Use free model: /model free`,
21
- ].join("\n");
22
- super(msg);
23
- this.name = "InsufficientFundsError";
24
- this.currentBalanceUSD = opts.currentBalanceUSD;
25
- this.requiredUSD = opts.requiredUSD;
26
- this.walletAddress = opts.walletAddress;
27
- }
28
- }
29
- /**
30
- * Thrown when wallet has no USDC balance (or effectively zero).
31
- */
32
- export class EmptyWalletError extends Error {
33
- code = "EMPTY_WALLET";
34
- walletAddress;
35
- constructor(walletAddress) {
36
- const msg = [
37
- `No USDC balance.`,
38
- `Options:`,
39
- ` 1. Fund wallet: ${walletAddress}`,
40
- ` 2. Use free model: /model free`,
41
- ` 3. Uninstall: bash ~/.openclaw/extensions/clawrouter/scripts/uninstall.sh`,
42
- ].join("\n");
43
- super(msg);
44
- this.name = "EmptyWalletError";
45
- this.walletAddress = walletAddress;
46
- }
47
- }
48
- /**
49
- * Type guard to check if an error is InsufficientFundsError.
50
- */
51
- export function isInsufficientFundsError(error) {
52
- return error instanceof Error && error.code === "INSUFFICIENT_FUNDS";
53
- }
54
- /**
55
- * Type guard to check if an error is EmptyWalletError.
56
- */
57
- export function isEmptyWalletError(error) {
58
- return error instanceof Error && error.code === "EMPTY_WALLET";
59
- }
60
- /**
61
- * Type guard to check if an error is a balance-related error.
62
- */
63
- export function isBalanceError(error) {
64
- return isInsufficientFundsError(error) || isEmptyWalletError(error);
65
- }
66
- /**
67
- * Thrown when RPC call fails (network error, node down, etc).
68
- * Distinguishes infrastructure failures from actual empty wallets.
69
- */
70
- export class RpcError extends Error {
71
- code = "RPC_ERROR";
72
- originalError;
73
- constructor(message, originalError) {
74
- super(`RPC error: ${message}. Check network connectivity.`);
75
- this.name = "RpcError";
76
- this.originalError = originalError;
77
- }
78
- }
79
- /**
80
- * Type guard to check if an error is RpcError.
81
- */
82
- export function isRpcError(error) {
83
- return error instanceof Error && error.code === "RPC_ERROR";
84
- }
85
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,IAAI,GAAG,oBAA6B,CAAC;IACrC,iBAAiB,CAAS;IAC1B,WAAW,CAAS;IACpB,aAAa,CAAS;IAE/B,YAAY,IAA+E;QACzF,MAAM,GAAG,GAAG;YACV,kCAAkC,IAAI,CAAC,iBAAiB,eAAe,IAAI,CAAC,WAAW,EAAE;YACzF,UAAU;YACV,qBAAqB,IAAI,CAAC,aAAa,EAAE;YACzC,kCAAkC;SACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,GAAG,cAAuB,CAAC;IAC/B,aAAa,CAAS;IAE/B,YAAY,aAAqB;QAC/B,MAAM,GAAG,GAAG;YACV,kBAAkB;YAClB,UAAU;YACV,qBAAqB,aAAa,EAAE;YACpC,kCAAkC;YAClC,6EAA6E;SAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,OAAO,KAAK,YAAY,KAAK,IAAK,KAAgC,CAAC,IAAI,KAAK,oBAAoB,CAAC;AACnG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,KAAK,YAAY,KAAK,IAAK,KAA0B,CAAC,IAAI,KAAK,cAAc,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,GAAG,WAAoB,CAAC;IAC5B,aAAa,CAAU;IAEhC,YAAY,OAAe,EAAE,aAAuB;QAClD,KAAK,CAAC,cAAc,OAAO,+BAA+B,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,KAAK,IAAK,KAAkB,CAAC,IAAI,KAAK,WAAW,CAAC;AAC5E,CAAC"}
@@ -1,28 +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
- /**
8
- * Load the exclude list from disk.
9
- * Returns an empty set if the file does not exist.
10
- */
11
- export declare function loadExcludeList(filePath?: string): Set<string>;
12
- /**
13
- * Add a model to the exclude list.
14
- * Resolves aliases before persisting.
15
- * @returns The resolved model ID.
16
- */
17
- export declare function addExclusion(model: string, filePath?: string): string;
18
- /**
19
- * Remove a model from the exclude list.
20
- * Resolves aliases before removing.
21
- * @returns true if the model was present and removed, false otherwise.
22
- */
23
- export declare function removeExclusion(model: string, filePath?: string): boolean;
24
- /**
25
- * Clear the entire exclude list.
26
- */
27
- export declare function clearExclusions(filePath?: string): void;
28
- //# sourceMappingURL=exclude-models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclude-models.d.ts","sourceRoot":"","sources":["../src/exclude-models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAA0B,GAAG,GAAG,CAAC,MAAM,CAAC,CAWjF;AAYD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAMxF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA0B,GAAG,OAAO,CAQ5F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAA0B,GAAG,IAAI,CAE1E"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=exclude-models.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exclude-models.integration.test.d.ts","sourceRoot":"","sources":["../src/exclude-models.integration.test.ts"],"names":[],"mappings":""}
@@ -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"}