@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/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":"AAAA;;;;;;;;;;GAUG;AAiBH,MAAM,cAAc,GAAmC;IACrD,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;IAC1C,oBAAoB,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAgC,IAAI,GAAG,EAAE,CAAC;IAClD,MAAM,CAAiC;IAE/C,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,uCAAuC;QACvC,uFAAuF;QACvF,MAAM,QAAQ,GAAG;YACf,oBAAoB;YACpB,sHAAsH;YACtH,eAAe;YACf,8GAA8G;YAC9G,sBAAsB;YACtB,2FAA2F;YAC3F,kBAAkB;YAClB,mHAAmH;YACnH,mBAAmB;YACnB,mCAAmC;YACnC,8CAA8C;YAC9C,+EAA+E;SAChF,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,6CAA6C;YAC7C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YAEtB,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAE/B,+BAA+B;gBAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBACzB,SAAS;gBACX,CAAC;gBAED,8CAA8C;gBAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBAChD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACvB,CAAC;gBAED,gCAAgC;gBAChC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;oBACtD,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBACtD,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAiB,EAAE,MAAgB,EAAE,KAAc;QACxD,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,GAAG;gBACd,MAAM;gBACN,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,yCAAyC;QACzC,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE3F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,eAAuB;QAClC,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;QAE5C,+DAA+D;QAC/D,MAAM,QAAQ,GAAG;YACf,mCAAmC;YACnC,iBAAiB;YACjB,oBAAoB;YACpB,gBAAgB;YAChB,mBAAmB;YACnB,sBAAsB;YACtB,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,cAAc;YACd,OAAO;YACP,QAAQ;YACR,mBAAmB;YACnB,WAAW;YACX,WAAW;YACX,YAAY;YACZ,OAAO;YACP,qBAAqB;YACrB,WAAW;YACX,eAAe;YACf,cAAc;YACd,cAAc;YACd,iBAAiB;SAClB,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAiB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;gBAC7D,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,OAAO,mCAAmC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAiB;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;QACjC,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC5B,YAAY;SACb,CAAC;IACJ,CAAC;CACF"}
@@ -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":""}
@@ -1,201 +0,0 @@
1
- import { describe, it, expect, beforeEach } from "vitest";
2
- import { SessionJournal } from "./journal.js";
3
- describe("SessionJournal", () => {
4
- let journal;
5
- beforeEach(() => {
6
- journal = new SessionJournal();
7
- });
8
- describe("extractEvents", () => {
9
- it("should extract creation events", () => {
10
- const content = `I created a new login component for the authentication system.`;
11
- const events = journal.extractEvents(content);
12
- expect(events).toHaveLength(1);
13
- expect(events[0]).toContain("created");
14
- expect(events[0]).toContain("login component");
15
- });
16
- it("should extract fix events", () => {
17
- const content = `I fixed the authentication bug that was causing users to be logged out.`;
18
- const events = journal.extractEvents(content);
19
- expect(events).toHaveLength(1);
20
- expect(events[0]).toContain("fixed");
21
- });
22
- it("should extract multiple events from one response", () => {
23
- const content = `I created a new login component. Then I fixed the authentication bug that was causing issues. I also updated the user profile page.`;
24
- const events = journal.extractEvents(content);
25
- expect(events).toHaveLength(3);
26
- expect(events.some((e) => e.includes("created"))).toBe(true);
27
- expect(events.some((e) => e.includes("fixed"))).toBe(true);
28
- expect(events.some((e) => e.includes("updated"))).toBe(true);
29
- });
30
- it("should extract success events", () => {
31
- const content = `Successfully deployed the application to production.`;
32
- const events = journal.extractEvents(content);
33
- expect(events).toHaveLength(1);
34
- expect(events[0]).toContain("Successfully deployed");
35
- });
36
- it("should limit to max 5 events per response by default", () => {
37
- const content = `
38
- I created component A.
39
- I fixed bug B.
40
- I implemented feature C.
41
- I resolved issue D.
42
- I added function E.
43
- I wrote test F.
44
- I built module G.
45
- `;
46
- const events = journal.extractEvents(content);
47
- expect(events.length).toBeLessThanOrEqual(5);
48
- });
49
- it("should skip events that are too short", () => {
50
- const content = `I fixed it.`; // Too short to be meaningful
51
- const events = journal.extractEvents(content);
52
- expect(events).toHaveLength(0);
53
- });
54
- it("should handle empty content", () => {
55
- const events = journal.extractEvents("");
56
- expect(events).toHaveLength(0);
57
- });
58
- it("should handle null/undefined content", () => {
59
- const events = journal.extractEvents(null);
60
- expect(events).toHaveLength(0);
61
- });
62
- it("should deduplicate similar events", () => {
63
- const content = `I created a new login component. I also created a new login component for testing.`;
64
- const events = journal.extractEvents(content);
65
- // Should deduplicate based on normalized content
66
- expect(events.length).toBeLessThanOrEqual(2);
67
- });
68
- });
69
- describe("record", () => {
70
- it("should record events to a session", () => {
71
- journal.record("session1", ["Created login component", "Fixed auth bug"]);
72
- const entries = journal.getEntries("session1");
73
- expect(entries).toHaveLength(2);
74
- });
75
- it("should not record empty events", () => {
76
- journal.record("session1", []);
77
- const entries = journal.getEntries("session1");
78
- expect(entries).toHaveLength(0);
79
- });
80
- it("should not record if sessionId is empty", () => {
81
- journal.record("", ["Some event"]);
82
- const entries = journal.getEntries("");
83
- expect(entries).toHaveLength(0);
84
- });
85
- it("should store model with events", () => {
86
- journal.record("session1", ["Created component"], "gpt-4");
87
- const entries = journal.getEntries("session1");
88
- expect(entries[0].model).toBe("gpt-4");
89
- });
90
- it("should append to existing session", () => {
91
- journal.record("session1", ["Event 1"]);
92
- journal.record("session1", ["Event 2"]);
93
- const entries = journal.getEntries("session1");
94
- expect(entries).toHaveLength(2);
95
- });
96
- it("should trim entries when exceeding maxEntries", () => {
97
- const customJournal = new SessionJournal({ maxEntries: 3 });
98
- customJournal.record("session1", ["Event 1"]);
99
- customJournal.record("session1", ["Event 2"]);
100
- customJournal.record("session1", ["Event 3"]);
101
- customJournal.record("session1", ["Event 4"]);
102
- const entries = customJournal.getEntries("session1");
103
- expect(entries).toHaveLength(3);
104
- // Should keep the most recent
105
- expect(entries[2].action).toBe("Event 4");
106
- });
107
- });
108
- describe("needsContext", () => {
109
- it("should detect 'what did you do' questions", () => {
110
- expect(journal.needsContext("what did you do today?")).toBe(true);
111
- expect(journal.needsContext("What did you do earlier?")).toBe(true);
112
- });
113
- it("should detect 'what have you done' questions", () => {
114
- expect(journal.needsContext("what have you done so far?")).toBe(true);
115
- });
116
- it("should detect temporal references", () => {
117
- expect(journal.needsContext("show me what we did earlier")).toBe(true);
118
- expect(journal.needsContext("what happened before this?")).toBe(true);
119
- expect(journal.needsContext("what did we do previously?")).toBe(true);
120
- });
121
- it("should detect summary requests", () => {
122
- expect(journal.needsContext("can you summarize your work?")).toBe(true);
123
- expect(journal.needsContext("remind me what we accomplished")).toBe(true);
124
- expect(journal.needsContext("give me a recap")).toBe(true);
125
- });
126
- it("should detect progress inquiries", () => {
127
- expect(journal.needsContext("what's your progress?")).toBe(true);
128
- expect(journal.needsContext("what have you accomplished?")).toBe(true);
129
- });
130
- it("should return false for normal requests", () => {
131
- expect(journal.needsContext("please fix this bug")).toBe(false);
132
- expect(journal.needsContext("create a new component")).toBe(false);
133
- expect(journal.needsContext("what is JavaScript?")).toBe(false);
134
- });
135
- it("should handle empty input", () => {
136
- expect(journal.needsContext("")).toBe(false);
137
- expect(journal.needsContext(null)).toBe(false);
138
- });
139
- });
140
- describe("format", () => {
141
- it("should return null for empty journal", () => {
142
- expect(journal.format("nonexistent")).toBeNull();
143
- });
144
- it("should format journal entries with timestamps", () => {
145
- journal.record("session1", ["Created login component", "Fixed auth bug"]);
146
- const formatted = journal.format("session1");
147
- expect(formatted).not.toBeNull();
148
- expect(formatted).toContain("[Session Memory");
149
- expect(formatted).toContain("Created login component");
150
- expect(formatted).toContain("Fixed auth bug");
151
- // Should contain time format like "10:30 AM"
152
- expect(formatted).toMatch(/\d{2}:\d{2}\s*(AM|PM)/i);
153
- });
154
- it("should format as bullet list", () => {
155
- journal.record("session1", ["Event 1"]);
156
- const formatted = journal.format("session1");
157
- expect(formatted).toContain("- ");
158
- });
159
- });
160
- describe("clear", () => {
161
- it("should clear specific session", () => {
162
- journal.record("session1", ["Event 1"]);
163
- journal.record("session2", ["Event 2"]);
164
- journal.clear("session1");
165
- expect(journal.getEntries("session1")).toHaveLength(0);
166
- expect(journal.getEntries("session2")).toHaveLength(1);
167
- });
168
- });
169
- describe("clearAll", () => {
170
- it("should clear all sessions", () => {
171
- journal.record("session1", ["Event 1"]);
172
- journal.record("session2", ["Event 2"]);
173
- journal.clearAll();
174
- expect(journal.getEntries("session1")).toHaveLength(0);
175
- expect(journal.getEntries("session2")).toHaveLength(0);
176
- });
177
- });
178
- describe("getStats", () => {
179
- it("should return correct stats", () => {
180
- journal.record("session1", ["Event 1", "Event 2"]);
181
- journal.record("session2", ["Event 3"]);
182
- const stats = journal.getStats();
183
- expect(stats.sessions).toBe(2);
184
- expect(stats.totalEntries).toBe(3);
185
- });
186
- it("should return zero stats for empty journal", () => {
187
- const stats = journal.getStats();
188
- expect(stats.sessions).toBe(0);
189
- expect(stats.totalEntries).toBe(0);
190
- });
191
- });
192
- describe("config options", () => {
193
- it("should respect custom maxEventsPerResponse", () => {
194
- const customJournal = new SessionJournal({ maxEventsPerResponse: 2 });
195
- const content = `I created A. I fixed B. I implemented C. I built D.`;
196
- const events = customJournal.extractEvents(content);
197
- expect(events.length).toBeLessThanOrEqual(2);
198
- });
199
- });
200
- });
201
- //# sourceMappingURL=journal.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal.test.js","sourceRoot":"","sources":["../src/journal.test.ts"],"names":[],"mappings":"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"}
package/dist/logger.d.ts DELETED
@@ -1,33 +0,0 @@
1
- /**
2
- * Usage Logger
3
- *
4
- * Logs every LLM request as a JSON line to a daily log file.
5
- * Files: ~/.openclaw/blockrun/logs/usage-YYYY-MM-DD.jsonl
6
- *
7
- * MVP: append-only JSON lines. No rotation, no cleanup.
8
- * Logging never breaks the request flow — all errors are swallowed.
9
- */
10
- export type UsageEntry = {
11
- timestamp: string;
12
- model: string;
13
- tier: string;
14
- cost: number;
15
- baselineCost: number;
16
- savings: number;
17
- latencyMs: number;
18
- /** Whether the request completed successfully or ended in an error */
19
- status?: "success" | "error";
20
- /** Input (prompt) tokens reported by the provider */
21
- inputTokens?: number;
22
- /** Output (completion) tokens reported by the provider */
23
- outputTokens?: number;
24
- /** Partner service ID (e.g., "x_users_lookup") — only set for partner API calls */
25
- partnerId?: string;
26
- /** Partner service name (e.g., "AttentionVC") — only set for partner API calls */
27
- service?: string;
28
- };
29
- /**
30
- * Log a usage entry as a JSON line.
31
- */
32
- export declare function logUsage(entry: UsageEntry): Promise<void>;
33
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC7B,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAWF;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/D"}
package/dist/logger.js DELETED
@@ -1,35 +0,0 @@
1
- /**
2
- * Usage Logger
3
- *
4
- * Logs every LLM request as a JSON line to a daily log file.
5
- * Files: ~/.openclaw/blockrun/logs/usage-YYYY-MM-DD.jsonl
6
- *
7
- * MVP: append-only JSON lines. No rotation, no cleanup.
8
- * Logging never breaks the request flow — all errors are swallowed.
9
- */
10
- import { appendFile, mkdir } from "node:fs/promises";
11
- import { join } from "node:path";
12
- import { homedir } from "node:os";
13
- const LOG_DIR = join(homedir(), ".openclaw", "blockrun", "logs");
14
- let dirReady = false;
15
- async function ensureDir() {
16
- if (dirReady)
17
- return;
18
- await mkdir(LOG_DIR, { recursive: true });
19
- dirReady = true;
20
- }
21
- /**
22
- * Log a usage entry as a JSON line.
23
- */
24
- export async function logUsage(entry) {
25
- try {
26
- await ensureDir();
27
- const date = entry.timestamp.slice(0, 10); // YYYY-MM-DD
28
- const file = join(LOG_DIR, `usage-${date}.jsonl`);
29
- await appendFile(file, JSON.stringify(entry) + "\n");
30
- }
31
- catch {
32
- // Never break the request flow
33
- }
34
- }
35
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAsBlC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACjE,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,KAAK,UAAU,SAAS;IACtB,IAAI,QAAQ;QAAE,OAAO;IACrB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,KAAiB;IAC9C,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,QAAQ,CAAC,CAAC;QAClD,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC"}
package/dist/models.d.ts DELETED
@@ -1,107 +0,0 @@
1
- /**
2
- * BlockRun Model Definitions for OpenClaw
3
- *
4
- * Maps BlockRun's 55+ AI models to OpenClaw's ModelDefinitionConfig format.
5
- * All models use the "openai-completions" API since BlockRun is OpenAI-compatible.
6
- *
7
- * Pricing is in USD per 1M tokens. Operators pay these rates via x402;
8
- * they set their own markup when reselling to end users (Phase 2).
9
- */
10
- import type { ModelDefinitionConfig, ModelProviderConfig } from "./types.js";
11
- /**
12
- * Model aliases for convenient shorthand access.
13
- * Users can type `/model claude` instead of `/model blockrun/anthropic/claude-sonnet-4-6`.
14
- */
15
- export declare const MODEL_ALIASES: Record<string, string>;
16
- /**
17
- * Resolve a model alias to its full model ID.
18
- * Also strips "blockrun/" prefix for direct model paths.
19
- * Examples:
20
- * - "claude" -> "anthropic/claude-sonnet-4-6" (alias)
21
- * - "blockrun/claude" -> "anthropic/claude-sonnet-4-6" (alias with prefix)
22
- * - "blockrun/anthropic/claude-sonnet-4-6" -> "anthropic/claude-sonnet-4-6" (prefix stripped)
23
- * - "openai/gpt-4o" -> "openai/gpt-4o" (unchanged)
24
- */
25
- export declare function resolveModelAlias(model: string): string;
26
- type BlockRunModel = {
27
- id: string;
28
- name: string;
29
- /** Model version (e.g., "4.6", "3.1", "5.2") for tracking updates */
30
- version?: string;
31
- inputPrice: number;
32
- outputPrice: number;
33
- contextWindow: number;
34
- maxOutput: number;
35
- reasoning?: boolean;
36
- vision?: boolean;
37
- /** Models optimized for agentic workflows (multi-step autonomous tasks) */
38
- agentic?: boolean;
39
- /**
40
- * Model supports OpenAI-compatible structured function/tool calling.
41
- * Models without this flag output tool invocations as plain text JSON,
42
- * which leaks raw {"command":"..."} into visible chat messages.
43
- * Default: false (must opt-in to prevent silent regressions on new models).
44
- */
45
- toolCalling?: boolean;
46
- /** Model is deprecated — will be routed to fallbackModel if set */
47
- deprecated?: boolean;
48
- /** Model ID to route to when this model is deprecated */
49
- fallbackModel?: string;
50
- /** Time-limited promotional pricing — auto-expires after endDate */
51
- promo?: {
52
- /** Flat price per request in USD (replaces token-based pricing) */
53
- flatPrice: number;
54
- /** ISO date, promo starts (inclusive). e.g. "2026-04-01" */
55
- startDate: string;
56
- /** ISO date, promo ends (exclusive). e.g. "2026-04-15" */
57
- endDate: string;
58
- };
59
- };
60
- export declare const BLOCKRUN_MODELS: BlockRunModel[];
61
- /**
62
- * Get the active flat promo price for a model, or undefined if no promo / expired.
63
- */
64
- export declare function getActivePromoPrice(model: BlockRunModel, now?: Date): number | undefined;
65
- /**
66
- * All BlockRun models in OpenClaw format (including aliases).
67
- */
68
- export declare const OPENCLAW_MODELS: ModelDefinitionConfig[];
69
- /**
70
- * Build a ModelProviderConfig for BlockRun.
71
- *
72
- * @param baseUrl - The proxy's local base URL (e.g., "http://127.0.0.1:12345")
73
- */
74
- export declare function buildProviderModels(baseUrl: string): ModelProviderConfig;
75
- /**
76
- * Check if a model is optimized for agentic workflows.
77
- * Agentic models continue autonomously with multi-step tasks
78
- * instead of stopping and waiting for user input.
79
- */
80
- export declare function isAgenticModel(modelId: string): boolean;
81
- /**
82
- * Get all agentic-capable models.
83
- */
84
- export declare function getAgenticModels(): string[];
85
- /**
86
- * Check if a model supports OpenAI-compatible structured tool/function calling.
87
- * Models without this flag (e.g. grok-code-fast-1) output tool invocations as
88
- * plain text JSON, which leaks {"command":"..."} into visible chat messages.
89
- */
90
- export declare function supportsToolCalling(modelId: string): boolean;
91
- /**
92
- * Check if a model supports vision (image inputs).
93
- * Models without this flag cannot process image_url content parts.
94
- */
95
- export declare function supportsVision(modelId: string): boolean;
96
- /**
97
- * Get context window size for a model.
98
- * Returns undefined if model not found.
99
- */
100
- export declare function getModelContextWindow(modelId: string): number | undefined;
101
- /**
102
- * Check if a model has reasoning/thinking capabilities.
103
- * Reasoning models may require reasoning_content in assistant tool_call messages.
104
- */
105
- export declare function isReasoningModel(modelId: string): boolean;
106
- export {};
107
- //# sourceMappingURL=models.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmHhD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8BvD;AAED,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,KAAK,CAAC,EAAE;QACN,mEAAmE;QACnE,SAAS,EAAE,MAAM,CAAC;QAClB,4DAA4D;QAC5D,SAAS,EAAE,MAAM,CAAC;QAClB,0DAA0D;QAC1D,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAAa,EAyqB1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,GAAG,GAAE,IAAiB,GACrB,MAAM,GAAG,SAAS,CAMpB;AAmCD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,qBAAqB,EAGlD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIvD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIzE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIzD"}