@xandout/libra-harness 0.1.34 → 0.1.91

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 (453) hide show
  1. package/README.md +30 -30
  2. package/dist/agent.d.ts +8 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +205 -193
  5. package/dist/agent.js.map +1 -1
  6. package/dist/ai-sdk-model.d.ts.map +1 -1
  7. package/dist/ai-sdk-model.js +91 -78
  8. package/dist/ai-sdk-model.js.map +1 -1
  9. package/dist/context.d.ts +2 -0
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/{extras/extensions → extensions}/auto-steer/extension.d.ts +1 -1
  12. package/dist/extensions/auto-steer/extension.d.ts.map +1 -0
  13. package/dist/extensions/auto-steer/extension.js.map +1 -0
  14. package/dist/extensions/auto-steer/index.d.ts.map +1 -0
  15. package/dist/extensions/auto-steer/index.js.map +1 -0
  16. package/dist/extensions/code-tools/extension.d.ts +15 -0
  17. package/dist/extensions/code-tools/extension.d.ts.map +1 -0
  18. package/dist/extensions/code-tools/extension.js +73 -0
  19. package/dist/extensions/code-tools/extension.js.map +1 -0
  20. package/dist/extensions/code-tools/extension.test.d.ts.map +1 -0
  21. package/dist/extensions/code-tools/extension.test.js +504 -0
  22. package/dist/extensions/code-tools/extension.test.js.map +1 -0
  23. package/dist/extensions/code-tools/index.d.ts.map +1 -0
  24. package/dist/extensions/code-tools/index.js.map +1 -0
  25. package/dist/{extras/extensions → extensions}/code-tools/tools/code-search.d.ts +2 -2
  26. package/dist/extensions/code-tools/tools/code-search.d.ts.map +1 -0
  27. package/dist/{extras/extensions → extensions}/code-tools/tools/code-search.js +1 -1
  28. package/dist/extensions/code-tools/tools/code-search.js.map +1 -0
  29. package/dist/extensions/code-tools/tools/find.d.ts.map +1 -0
  30. package/dist/extensions/code-tools/tools/find.js +83 -0
  31. package/dist/extensions/code-tools/tools/find.js.map +1 -0
  32. package/dist/extensions/code-tools/tools/grep.d.ts.map +1 -0
  33. package/dist/extensions/code-tools/tools/grep.js +90 -0
  34. package/dist/extensions/code-tools/tools/grep.js.map +1 -0
  35. package/dist/extensions/code-tools/tools/read.d.ts.map +1 -0
  36. package/dist/{extras/extensions → extensions}/code-tools/tools/read.js +17 -25
  37. package/dist/extensions/code-tools/tools/read.js.map +1 -0
  38. package/dist/{extras/extensions → extensions}/code-tools/tools/shared.d.ts +5 -1
  39. package/dist/extensions/code-tools/tools/shared.d.ts.map +1 -0
  40. package/dist/{extras/extensions → extensions}/code-tools/tools/shared.js +68 -0
  41. package/dist/extensions/code-tools/tools/shared.js.map +1 -0
  42. package/dist/extensions/code-tools/tools/shell.d.ts +39 -0
  43. package/dist/extensions/code-tools/tools/shell.d.ts.map +1 -0
  44. package/dist/extensions/code-tools/tools/shell.js +441 -0
  45. package/dist/extensions/code-tools/tools/shell.js.map +1 -0
  46. package/dist/{extras/extensions → extensions}/code-tools/tools/todo.d.ts +0 -3
  47. package/dist/extensions/code-tools/tools/todo.d.ts.map +1 -0
  48. package/dist/{extras/extensions → extensions}/code-tools/tools/todo.js +0 -8
  49. package/dist/extensions/code-tools/tools/todo.js.map +1 -0
  50. package/dist/extensions/code-tools/tools/view-image.d.ts +10 -0
  51. package/dist/extensions/code-tools/tools/view-image.d.ts.map +1 -0
  52. package/dist/extensions/code-tools/tools/view-image.js +87 -0
  53. package/dist/extensions/code-tools/tools/view-image.js.map +1 -0
  54. package/dist/extensions/code-tools/tools/write.d.ts.map +1 -0
  55. package/dist/{extras/extensions → extensions}/code-tools/tools/write.js +47 -37
  56. package/dist/extensions/code-tools/tools/write.js.map +1 -0
  57. package/dist/{extras/extensions → extensions}/disk-session/extension.d.ts +45 -2
  58. package/dist/extensions/disk-session/extension.d.ts.map +1 -0
  59. package/dist/extensions/disk-session/extension.js +818 -0
  60. package/dist/extensions/disk-session/extension.js.map +1 -0
  61. package/dist/extensions/disk-session/extension.test.d.ts.map +1 -0
  62. package/dist/{extras/extensions → extensions}/disk-session/extension.test.js +445 -16
  63. package/dist/extensions/disk-session/extension.test.js.map +1 -0
  64. package/dist/extensions/disk-session/index.d.ts +3 -0
  65. package/dist/extensions/disk-session/index.d.ts.map +1 -0
  66. package/dist/extensions/disk-session/index.js +2 -0
  67. package/dist/extensions/disk-session/index.js.map +1 -0
  68. package/dist/{extras/extensions → extensions}/emoji/extension.d.ts +1 -1
  69. package/dist/extensions/emoji/extension.d.ts.map +1 -0
  70. package/dist/extensions/emoji/extension.js.map +1 -0
  71. package/dist/extensions/emoji/index.d.ts.map +1 -0
  72. package/dist/extensions/emoji/index.js.map +1 -0
  73. package/dist/extensions/filesystem/extension.d.ts.map +1 -0
  74. package/dist/extensions/filesystem/extension.js.map +1 -0
  75. package/dist/extensions/filesystem/extension.test.d.ts.map +1 -0
  76. package/dist/extensions/filesystem/extension.test.js.map +1 -0
  77. package/dist/extensions/filesystem/index.d.ts.map +1 -0
  78. package/dist/extensions/filesystem/index.js.map +1 -0
  79. package/dist/extensions/index.d.ts +3 -0
  80. package/dist/extensions/index.d.ts.map +1 -0
  81. package/dist/extensions/index.js +2 -0
  82. package/dist/extensions/index.js.map +1 -0
  83. package/dist/{extras/extensions → extensions}/keyword-extractor/extension.d.ts +1 -1
  84. package/dist/extensions/keyword-extractor/extension.d.ts.map +1 -0
  85. package/dist/{extras/extensions → extensions}/keyword-extractor/extension.js +1 -1
  86. package/dist/extensions/keyword-extractor/extension.js.map +1 -0
  87. package/dist/extensions/keyword-extractor/extension.test.d.ts.map +1 -0
  88. package/dist/extensions/keyword-extractor/extension.test.js.map +1 -0
  89. package/dist/extensions/keyword-extractor/index.d.ts.map +1 -0
  90. package/dist/extensions/keyword-extractor/index.js.map +1 -0
  91. package/dist/extensions/keyword-extractor/nlp.d.ts.map +1 -0
  92. package/dist/extensions/keyword-extractor/nlp.js.map +1 -0
  93. package/dist/extensions/keyword-extractor/nlp.test.d.ts.map +1 -0
  94. package/dist/extensions/keyword-extractor/nlp.test.js.map +1 -0
  95. package/dist/{extras/extension-loader.d.ts → extensions/loader.d.ts} +1 -1
  96. package/dist/extensions/loader.d.ts.map +1 -0
  97. package/dist/{extras/extension-loader.js → extensions/loader.js} +2 -2
  98. package/dist/extensions/loader.js.map +1 -0
  99. package/dist/{extras/extensions → extensions}/logger/extension.d.ts +1 -1
  100. package/dist/extensions/logger/extension.d.ts.map +1 -0
  101. package/dist/{extras/extensions → extensions}/logger/extension.js +1 -1
  102. package/dist/extensions/logger/extension.js.map +1 -0
  103. package/dist/extensions/logger/index.d.ts.map +1 -0
  104. package/dist/extensions/logger/index.js.map +1 -0
  105. package/dist/{extras/extensions → extensions}/mcp/extension.d.ts +1 -1
  106. package/dist/extensions/mcp/extension.d.ts.map +1 -0
  107. package/dist/extensions/mcp/extension.js.map +1 -0
  108. package/dist/extensions/mcp/extension.test.d.ts.map +1 -0
  109. package/dist/{extras/extensions → extensions}/mcp/extension.test.js +1 -1
  110. package/dist/extensions/mcp/extension.test.js.map +1 -0
  111. package/dist/extensions/mcp/index.d.ts.map +1 -0
  112. package/dist/extensions/mcp/index.js.map +1 -0
  113. package/dist/{extras/extensions → extensions}/mem-session/extension.d.ts +2 -2
  114. package/dist/extensions/mem-session/extension.d.ts.map +1 -0
  115. package/dist/extensions/mem-session/extension.js.map +1 -0
  116. package/dist/extensions/mem-session/index.d.ts.map +1 -0
  117. package/dist/extensions/mem-session/index.js.map +1 -0
  118. package/dist/{extras/extensions → extensions}/memory/extension.d.ts +1 -1
  119. package/dist/extensions/memory/extension.d.ts.map +1 -0
  120. package/dist/{extras/extensions → extensions}/memory/extension.js +1 -1
  121. package/dist/extensions/memory/extension.js.map +1 -0
  122. package/dist/extensions/memory/index.d.ts +4 -0
  123. package/dist/extensions/memory/index.d.ts.map +1 -0
  124. package/dist/extensions/memory/index.js.map +1 -0
  125. package/dist/{extras/extensions → extensions}/memory/llm-extractor.d.ts +1 -1
  126. package/dist/extensions/memory/llm-extractor.d.ts.map +1 -0
  127. package/dist/{extras/extensions → extensions}/memory/llm-extractor.js +1 -1
  128. package/dist/extensions/memory/llm-extractor.js.map +1 -0
  129. package/dist/{extras/extensions → extensions}/memory/types.d.ts +2 -2
  130. package/dist/extensions/memory/types.d.ts.map +1 -0
  131. package/dist/extensions/memory/types.js.map +1 -0
  132. package/dist/{extras/extensions → extensions}/otel/extension.d.ts +1 -1
  133. package/dist/extensions/otel/extension.d.ts.map +1 -0
  134. package/dist/{extras/extensions → extensions}/otel/extension.js +1 -1
  135. package/dist/extensions/otel/extension.js.map +1 -0
  136. package/dist/extensions/otel/extension.test.d.ts.map +1 -0
  137. package/dist/{extras/extensions → extensions}/otel/extension.test.js +1 -1
  138. package/dist/extensions/otel/extension.test.js.map +1 -0
  139. package/dist/extensions/otel/index.d.ts.map +1 -0
  140. package/dist/extensions/otel/index.js.map +1 -0
  141. package/dist/extensions/otel/jsonl-span-exporter.d.ts.map +1 -0
  142. package/dist/extensions/otel/jsonl-span-exporter.js.map +1 -0
  143. package/dist/{extras/extensions → extensions}/scripts/extension.d.ts +1 -1
  144. package/dist/extensions/scripts/extension.d.ts.map +1 -0
  145. package/dist/extensions/scripts/extension.js.map +1 -0
  146. package/dist/extensions/scripts/extension.test.d.ts.map +1 -0
  147. package/dist/extensions/scripts/extension.test.js.map +1 -0
  148. package/dist/extensions/scripts/index.d.ts.map +1 -0
  149. package/dist/extensions/scripts/index.js.map +1 -0
  150. package/dist/{extras/extensions → extensions}/skills/extension.d.ts +1 -1
  151. package/dist/extensions/skills/extension.d.ts.map +1 -0
  152. package/dist/extensions/skills/extension.js.map +1 -0
  153. package/dist/extensions/skills/extension.test.d.ts.map +1 -0
  154. package/dist/{extras/extensions → extensions}/skills/extension.test.js +1 -1
  155. package/dist/extensions/skills/extension.test.js.map +1 -0
  156. package/dist/extensions/skills/index.d.ts.map +1 -0
  157. package/dist/extensions/skills/index.js.map +1 -0
  158. package/dist/{extras/extensions → extensions}/streaming/extension.d.ts +1 -1
  159. package/dist/extensions/streaming/extension.d.ts.map +1 -0
  160. package/dist/extensions/streaming/extension.js.map +1 -0
  161. package/dist/extensions/streaming/index.d.ts.map +1 -0
  162. package/dist/extensions/streaming/index.js.map +1 -0
  163. package/dist/{extras/extensions → extensions}/structured-output/extension.d.ts +1 -1
  164. package/dist/extensions/structured-output/extension.d.ts.map +1 -0
  165. package/dist/extensions/structured-output/extension.js.map +1 -0
  166. package/dist/extensions/structured-output/index.d.ts.map +1 -0
  167. package/dist/extensions/structured-output/index.js.map +1 -0
  168. package/dist/{extras/extensions → extensions}/timestamp/extension.d.ts +1 -1
  169. package/dist/extensions/timestamp/extension.d.ts.map +1 -0
  170. package/dist/extensions/timestamp/extension.js.map +1 -0
  171. package/dist/extensions/timestamp/index.d.ts.map +1 -0
  172. package/dist/extensions/timestamp/index.js.map +1 -0
  173. package/dist/{extras/extensions → extensions}/token-stats/extension.d.ts +1 -1
  174. package/dist/extensions/token-stats/extension.d.ts.map +1 -0
  175. package/dist/extensions/token-stats/extension.js.map +1 -0
  176. package/dist/extensions/token-stats/extension.test.d.ts.map +1 -0
  177. package/dist/{extras/extensions → extensions}/token-stats/extension.test.js +1 -1
  178. package/dist/extensions/token-stats/extension.test.js.map +1 -0
  179. package/dist/extensions/token-stats/index.d.ts.map +1 -0
  180. package/dist/extensions/token-stats/index.js.map +1 -0
  181. package/dist/{extras/extensions → extensions}/tool-buffer/extension.d.ts +1 -1
  182. package/dist/extensions/tool-buffer/extension.d.ts.map +1 -0
  183. package/dist/extensions/tool-buffer/extension.js.map +1 -0
  184. package/dist/extensions/tool-buffer/extension.test.d.ts.map +1 -0
  185. package/dist/{extras/extensions → extensions}/tool-buffer/extension.test.js +1 -1
  186. package/dist/extensions/tool-buffer/extension.test.js.map +1 -0
  187. package/dist/extensions/tool-buffer/index.d.ts.map +1 -0
  188. package/dist/extensions/tool-buffer/index.js.map +1 -0
  189. package/dist/{extras/extensions → extensions}/weather-tool/extension.d.ts +1 -1
  190. package/dist/extensions/weather-tool/extension.d.ts.map +1 -0
  191. package/dist/extensions/weather-tool/extension.js.map +1 -0
  192. package/dist/extensions/weather-tool/index.d.ts.map +1 -0
  193. package/dist/extensions/weather-tool/index.js.map +1 -0
  194. package/dist/handle.d.ts +4 -0
  195. package/dist/handle.d.ts.map +1 -1
  196. package/dist/{extras/models → models}/ai-sdk-resolver.d.ts +1 -1
  197. package/dist/models/ai-sdk-resolver.d.ts.map +1 -0
  198. package/dist/{extras/models → models}/ai-sdk-resolver.js +1 -1
  199. package/dist/models/ai-sdk-resolver.js.map +1 -0
  200. package/dist/models/index.d.ts.map +1 -0
  201. package/dist/models/index.js.map +1 -0
  202. package/dist/{extras/models → models}/routing-model.d.ts +1 -1
  203. package/dist/models/routing-model.d.ts.map +1 -0
  204. package/dist/{extras/models → models}/routing-model.js +1 -1
  205. package/dist/models/routing-model.js.map +1 -0
  206. package/dist/openai-provider/index.d.ts.map +1 -0
  207. package/dist/openai-provider/index.js.map +1 -0
  208. package/dist/{extras/openai-provider → openai-provider}/server.d.ts +1 -1
  209. package/dist/openai-provider/server.d.ts.map +1 -0
  210. package/dist/openai-provider/server.js.map +1 -0
  211. package/package.json +108 -83
  212. package/dist/extras/extension-loader.d.ts.map +0 -1
  213. package/dist/extras/extension-loader.js.map +0 -1
  214. package/dist/extras/extensions/auto-steer/extension.d.ts.map +0 -1
  215. package/dist/extras/extensions/auto-steer/extension.js.map +0 -1
  216. package/dist/extras/extensions/auto-steer/index.d.ts.map +0 -1
  217. package/dist/extras/extensions/auto-steer/index.js.map +0 -1
  218. package/dist/extras/extensions/code-tools/extension.d.ts +0 -83
  219. package/dist/extras/extensions/code-tools/extension.d.ts.map +0 -1
  220. package/dist/extras/extensions/code-tools/extension.js +0 -93
  221. package/dist/extras/extensions/code-tools/extension.js.map +0 -1
  222. package/dist/extras/extensions/code-tools/extension.test.d.ts.map +0 -1
  223. package/dist/extras/extensions/code-tools/extension.test.js +0 -656
  224. package/dist/extras/extensions/code-tools/extension.test.js.map +0 -1
  225. package/dist/extras/extensions/code-tools/index.d.ts.map +0 -1
  226. package/dist/extras/extensions/code-tools/index.js.map +0 -1
  227. package/dist/extras/extensions/code-tools/tools/code-search.d.ts.map +0 -1
  228. package/dist/extras/extensions/code-tools/tools/code-search.js.map +0 -1
  229. package/dist/extras/extensions/code-tools/tools/find.d.ts.map +0 -1
  230. package/dist/extras/extensions/code-tools/tools/find.js +0 -161
  231. package/dist/extras/extensions/code-tools/tools/find.js.map +0 -1
  232. package/dist/extras/extensions/code-tools/tools/grep.d.ts.map +0 -1
  233. package/dist/extras/extensions/code-tools/tools/grep.js +0 -307
  234. package/dist/extras/extensions/code-tools/tools/grep.js.map +0 -1
  235. package/dist/extras/extensions/code-tools/tools/read.d.ts.map +0 -1
  236. package/dist/extras/extensions/code-tools/tools/read.js.map +0 -1
  237. package/dist/extras/extensions/code-tools/tools/shared.d.ts.map +0 -1
  238. package/dist/extras/extensions/code-tools/tools/shared.js.map +0 -1
  239. package/dist/extras/extensions/code-tools/tools/shell.d.ts +0 -49
  240. package/dist/extras/extensions/code-tools/tools/shell.d.ts.map +0 -1
  241. package/dist/extras/extensions/code-tools/tools/shell.js +0 -623
  242. package/dist/extras/extensions/code-tools/tools/shell.js.map +0 -1
  243. package/dist/extras/extensions/code-tools/tools/todo.d.ts.map +0 -1
  244. package/dist/extras/extensions/code-tools/tools/todo.js.map +0 -1
  245. package/dist/extras/extensions/code-tools/tools/write.d.ts.map +0 -1
  246. package/dist/extras/extensions/code-tools/tools/write.js.map +0 -1
  247. package/dist/extras/extensions/disk-session/extension.d.ts.map +0 -1
  248. package/dist/extras/extensions/disk-session/extension.js +0 -640
  249. package/dist/extras/extensions/disk-session/extension.js.map +0 -1
  250. package/dist/extras/extensions/disk-session/extension.test.d.ts.map +0 -1
  251. package/dist/extras/extensions/disk-session/extension.test.js.map +0 -1
  252. package/dist/extras/extensions/disk-session/index.d.ts +0 -3
  253. package/dist/extras/extensions/disk-session/index.d.ts.map +0 -1
  254. package/dist/extras/extensions/disk-session/index.js +0 -2
  255. package/dist/extras/extensions/disk-session/index.js.map +0 -1
  256. package/dist/extras/extensions/emoji/extension.d.ts.map +0 -1
  257. package/dist/extras/extensions/emoji/extension.js.map +0 -1
  258. package/dist/extras/extensions/emoji/index.d.ts.map +0 -1
  259. package/dist/extras/extensions/emoji/index.js.map +0 -1
  260. package/dist/extras/extensions/filesystem/extension.d.ts.map +0 -1
  261. package/dist/extras/extensions/filesystem/extension.js.map +0 -1
  262. package/dist/extras/extensions/filesystem/extension.test.d.ts.map +0 -1
  263. package/dist/extras/extensions/filesystem/extension.test.js.map +0 -1
  264. package/dist/extras/extensions/filesystem/index.d.ts.map +0 -1
  265. package/dist/extras/extensions/filesystem/index.js.map +0 -1
  266. package/dist/extras/extensions/keyword-extractor/extension.d.ts.map +0 -1
  267. package/dist/extras/extensions/keyword-extractor/extension.js.map +0 -1
  268. package/dist/extras/extensions/keyword-extractor/extension.test.d.ts.map +0 -1
  269. package/dist/extras/extensions/keyword-extractor/extension.test.js.map +0 -1
  270. package/dist/extras/extensions/keyword-extractor/index.d.ts.map +0 -1
  271. package/dist/extras/extensions/keyword-extractor/index.js.map +0 -1
  272. package/dist/extras/extensions/keyword-extractor/nlp.d.ts.map +0 -1
  273. package/dist/extras/extensions/keyword-extractor/nlp.js.map +0 -1
  274. package/dist/extras/extensions/keyword-extractor/nlp.test.d.ts.map +0 -1
  275. package/dist/extras/extensions/keyword-extractor/nlp.test.js.map +0 -1
  276. package/dist/extras/extensions/logger/extension.d.ts.map +0 -1
  277. package/dist/extras/extensions/logger/extension.js.map +0 -1
  278. package/dist/extras/extensions/logger/index.d.ts.map +0 -1
  279. package/dist/extras/extensions/logger/index.js.map +0 -1
  280. package/dist/extras/extensions/mcp/extension.d.ts.map +0 -1
  281. package/dist/extras/extensions/mcp/extension.js.map +0 -1
  282. package/dist/extras/extensions/mcp/extension.test.d.ts.map +0 -1
  283. package/dist/extras/extensions/mcp/extension.test.js.map +0 -1
  284. package/dist/extras/extensions/mcp/index.d.ts.map +0 -1
  285. package/dist/extras/extensions/mcp/index.js.map +0 -1
  286. package/dist/extras/extensions/mem-session/extension.d.ts.map +0 -1
  287. package/dist/extras/extensions/mem-session/extension.js.map +0 -1
  288. package/dist/extras/extensions/mem-session/index.d.ts.map +0 -1
  289. package/dist/extras/extensions/mem-session/index.js.map +0 -1
  290. package/dist/extras/extensions/memory/extension.d.ts.map +0 -1
  291. package/dist/extras/extensions/memory/extension.js.map +0 -1
  292. package/dist/extras/extensions/memory/index.d.ts +0 -5
  293. package/dist/extras/extensions/memory/index.d.ts.map +0 -1
  294. package/dist/extras/extensions/memory/index.js.map +0 -1
  295. package/dist/extras/extensions/memory/llm-extractor.d.ts.map +0 -1
  296. package/dist/extras/extensions/memory/llm-extractor.js.map +0 -1
  297. package/dist/extras/extensions/memory/types.d.ts.map +0 -1
  298. package/dist/extras/extensions/memory/types.js.map +0 -1
  299. package/dist/extras/extensions/otel/extension.d.ts.map +0 -1
  300. package/dist/extras/extensions/otel/extension.js.map +0 -1
  301. package/dist/extras/extensions/otel/extension.test.d.ts.map +0 -1
  302. package/dist/extras/extensions/otel/extension.test.js.map +0 -1
  303. package/dist/extras/extensions/otel/index.d.ts.map +0 -1
  304. package/dist/extras/extensions/otel/index.js.map +0 -1
  305. package/dist/extras/extensions/otel/jsonl-span-exporter.d.ts.map +0 -1
  306. package/dist/extras/extensions/otel/jsonl-span-exporter.js.map +0 -1
  307. package/dist/extras/extensions/scripts/extension.d.ts.map +0 -1
  308. package/dist/extras/extensions/scripts/extension.js.map +0 -1
  309. package/dist/extras/extensions/scripts/extension.test.d.ts.map +0 -1
  310. package/dist/extras/extensions/scripts/extension.test.js.map +0 -1
  311. package/dist/extras/extensions/scripts/index.d.ts.map +0 -1
  312. package/dist/extras/extensions/scripts/index.js.map +0 -1
  313. package/dist/extras/extensions/skills/extension.d.ts.map +0 -1
  314. package/dist/extras/extensions/skills/extension.js.map +0 -1
  315. package/dist/extras/extensions/skills/extension.test.d.ts.map +0 -1
  316. package/dist/extras/extensions/skills/extension.test.js.map +0 -1
  317. package/dist/extras/extensions/skills/index.d.ts.map +0 -1
  318. package/dist/extras/extensions/skills/index.js.map +0 -1
  319. package/dist/extras/extensions/streaming/extension.d.ts.map +0 -1
  320. package/dist/extras/extensions/streaming/extension.js.map +0 -1
  321. package/dist/extras/extensions/streaming/index.d.ts.map +0 -1
  322. package/dist/extras/extensions/streaming/index.js.map +0 -1
  323. package/dist/extras/extensions/structured-output/extension.d.ts.map +0 -1
  324. package/dist/extras/extensions/structured-output/extension.js.map +0 -1
  325. package/dist/extras/extensions/structured-output/index.d.ts.map +0 -1
  326. package/dist/extras/extensions/structured-output/index.js.map +0 -1
  327. package/dist/extras/extensions/timestamp/extension.d.ts.map +0 -1
  328. package/dist/extras/extensions/timestamp/extension.js.map +0 -1
  329. package/dist/extras/extensions/timestamp/index.d.ts.map +0 -1
  330. package/dist/extras/extensions/timestamp/index.js.map +0 -1
  331. package/dist/extras/extensions/token-stats/extension.d.ts.map +0 -1
  332. package/dist/extras/extensions/token-stats/extension.js.map +0 -1
  333. package/dist/extras/extensions/token-stats/extension.test.d.ts.map +0 -1
  334. package/dist/extras/extensions/token-stats/extension.test.js.map +0 -1
  335. package/dist/extras/extensions/token-stats/index.d.ts.map +0 -1
  336. package/dist/extras/extensions/token-stats/index.js.map +0 -1
  337. package/dist/extras/extensions/tool-buffer/extension.d.ts.map +0 -1
  338. package/dist/extras/extensions/tool-buffer/extension.js.map +0 -1
  339. package/dist/extras/extensions/tool-buffer/extension.test.d.ts.map +0 -1
  340. package/dist/extras/extensions/tool-buffer/extension.test.js.map +0 -1
  341. package/dist/extras/extensions/tool-buffer/index.d.ts.map +0 -1
  342. package/dist/extras/extensions/tool-buffer/index.js.map +0 -1
  343. package/dist/extras/extensions/weather-tool/extension.d.ts.map +0 -1
  344. package/dist/extras/extensions/weather-tool/extension.js.map +0 -1
  345. package/dist/extras/extensions/weather-tool/index.d.ts.map +0 -1
  346. package/dist/extras/extensions/weather-tool/index.js.map +0 -1
  347. package/dist/extras/models/ai-sdk-resolver.d.ts.map +0 -1
  348. package/dist/extras/models/ai-sdk-resolver.js.map +0 -1
  349. package/dist/extras/models/index.d.ts.map +0 -1
  350. package/dist/extras/models/index.js.map +0 -1
  351. package/dist/extras/models/routing-model.d.ts.map +0 -1
  352. package/dist/extras/models/routing-model.js.map +0 -1
  353. package/dist/extras/openai-provider/index.d.ts.map +0 -1
  354. package/dist/extras/openai-provider/index.js.map +0 -1
  355. package/dist/extras/openai-provider/server.d.ts.map +0 -1
  356. package/dist/extras/openai-provider/server.js.map +0 -1
  357. /package/dist/{extras/extensions → extensions}/auto-steer/extension.js +0 -0
  358. /package/dist/{extras/extensions → extensions}/auto-steer/extension.json +0 -0
  359. /package/dist/{extras/extensions → extensions}/auto-steer/index.d.ts +0 -0
  360. /package/dist/{extras/extensions → extensions}/auto-steer/index.js +0 -0
  361. /package/dist/{extras/extensions → extensions}/code-tools/extension.json +0 -0
  362. /package/dist/{extras/extensions → extensions}/code-tools/extension.test.d.ts +0 -0
  363. /package/dist/{extras/extensions → extensions}/code-tools/index.d.ts +0 -0
  364. /package/dist/{extras/extensions → extensions}/code-tools/index.js +0 -0
  365. /package/dist/{extras/extensions → extensions}/code-tools/tools/find.d.ts +0 -0
  366. /package/dist/{extras/extensions → extensions}/code-tools/tools/grep.d.ts +0 -0
  367. /package/dist/{extras/extensions → extensions}/code-tools/tools/read.d.ts +0 -0
  368. /package/dist/{extras/extensions → extensions}/code-tools/tools/write.d.ts +0 -0
  369. /package/dist/{extras/extensions → extensions}/disk-session/extension.json +0 -0
  370. /package/dist/{extras/extensions → extensions}/disk-session/extension.test.d.ts +0 -0
  371. /package/dist/{extras/extensions → extensions}/emoji/extension.js +0 -0
  372. /package/dist/{extras/extensions → extensions}/emoji/extension.json +0 -0
  373. /package/dist/{extras/extensions → extensions}/emoji/index.d.ts +0 -0
  374. /package/dist/{extras/extensions → extensions}/emoji/index.js +0 -0
  375. /package/dist/{extras/extensions → extensions}/filesystem/extension.d.ts +0 -0
  376. /package/dist/{extras/extensions → extensions}/filesystem/extension.js +0 -0
  377. /package/dist/{extras/extensions → extensions}/filesystem/extension.json +0 -0
  378. /package/dist/{extras/extensions → extensions}/filesystem/extension.test.d.ts +0 -0
  379. /package/dist/{extras/extensions → extensions}/filesystem/extension.test.js +0 -0
  380. /package/dist/{extras/extensions → extensions}/filesystem/index.d.ts +0 -0
  381. /package/dist/{extras/extensions → extensions}/filesystem/index.js +0 -0
  382. /package/dist/{extras/extensions → extensions}/keyword-extractor/extension.json +0 -0
  383. /package/dist/{extras/extensions → extensions}/keyword-extractor/extension.test.d.ts +0 -0
  384. /package/dist/{extras/extensions → extensions}/keyword-extractor/extension.test.js +0 -0
  385. /package/dist/{extras/extensions → extensions}/keyword-extractor/index.d.ts +0 -0
  386. /package/dist/{extras/extensions → extensions}/keyword-extractor/index.js +0 -0
  387. /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.d.ts +0 -0
  388. /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.js +0 -0
  389. /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.test.d.ts +0 -0
  390. /package/dist/{extras/extensions → extensions}/keyword-extractor/nlp.test.js +0 -0
  391. /package/dist/{extras/extensions → extensions}/logger/extension.json +0 -0
  392. /package/dist/{extras/extensions → extensions}/logger/index.d.ts +0 -0
  393. /package/dist/{extras/extensions → extensions}/logger/index.js +0 -0
  394. /package/dist/{extras/extensions → extensions}/mcp/extension.js +0 -0
  395. /package/dist/{extras/extensions → extensions}/mcp/extension.json +0 -0
  396. /package/dist/{extras/extensions → extensions}/mcp/extension.test.d.ts +0 -0
  397. /package/dist/{extras/extensions → extensions}/mcp/index.d.ts +0 -0
  398. /package/dist/{extras/extensions → extensions}/mcp/index.js +0 -0
  399. /package/dist/{extras/extensions → extensions}/mem-session/extension.js +0 -0
  400. /package/dist/{extras/extensions → extensions}/mem-session/extension.json +0 -0
  401. /package/dist/{extras/extensions → extensions}/mem-session/index.d.ts +0 -0
  402. /package/dist/{extras/extensions → extensions}/mem-session/index.js +0 -0
  403. /package/dist/{extras/extensions → extensions}/memory/extension.json +0 -0
  404. /package/dist/{extras/extensions → extensions}/memory/index.js +0 -0
  405. /package/dist/{extras/extensions → extensions}/memory/types.js +0 -0
  406. /package/dist/{extras/extensions → extensions}/otel/extension.json +0 -0
  407. /package/dist/{extras/extensions → extensions}/otel/extension.test.d.ts +0 -0
  408. /package/dist/{extras/extensions → extensions}/otel/index.d.ts +0 -0
  409. /package/dist/{extras/extensions → extensions}/otel/index.js +0 -0
  410. /package/dist/{extras/extensions → extensions}/otel/jsonl-span-exporter.d.ts +0 -0
  411. /package/dist/{extras/extensions → extensions}/otel/jsonl-span-exporter.js +0 -0
  412. /package/dist/{extras/extensions → extensions}/scripts/extension.js +0 -0
  413. /package/dist/{extras/extensions → extensions}/scripts/extension.json +0 -0
  414. /package/dist/{extras/extensions → extensions}/scripts/extension.test.d.ts +0 -0
  415. /package/dist/{extras/extensions → extensions}/scripts/extension.test.js +0 -0
  416. /package/dist/{extras/extensions → extensions}/scripts/index.d.ts +0 -0
  417. /package/dist/{extras/extensions → extensions}/scripts/index.js +0 -0
  418. /package/dist/{extras/extensions → extensions}/skills/extension.js +0 -0
  419. /package/dist/{extras/extensions → extensions}/skills/extension.json +0 -0
  420. /package/dist/{extras/extensions → extensions}/skills/extension.test.d.ts +0 -0
  421. /package/dist/{extras/extensions → extensions}/skills/index.d.ts +0 -0
  422. /package/dist/{extras/extensions → extensions}/skills/index.js +0 -0
  423. /package/dist/{extras/extensions → extensions}/streaming/extension.js +0 -0
  424. /package/dist/{extras/extensions → extensions}/streaming/extension.json +0 -0
  425. /package/dist/{extras/extensions → extensions}/streaming/index.d.ts +0 -0
  426. /package/dist/{extras/extensions → extensions}/streaming/index.js +0 -0
  427. /package/dist/{extras/extensions → extensions}/structured-output/extension.js +0 -0
  428. /package/dist/{extras/extensions → extensions}/structured-output/extension.json +0 -0
  429. /package/dist/{extras/extensions → extensions}/structured-output/index.d.ts +0 -0
  430. /package/dist/{extras/extensions → extensions}/structured-output/index.js +0 -0
  431. /package/dist/{extras/extensions → extensions}/timestamp/extension.js +0 -0
  432. /package/dist/{extras/extensions → extensions}/timestamp/extension.json +0 -0
  433. /package/dist/{extras/extensions → extensions}/timestamp/index.d.ts +0 -0
  434. /package/dist/{extras/extensions → extensions}/timestamp/index.js +0 -0
  435. /package/dist/{extras/extensions → extensions}/token-stats/extension.js +0 -0
  436. /package/dist/{extras/extensions → extensions}/token-stats/extension.json +0 -0
  437. /package/dist/{extras/extensions → extensions}/token-stats/extension.test.d.ts +0 -0
  438. /package/dist/{extras/extensions → extensions}/token-stats/index.d.ts +0 -0
  439. /package/dist/{extras/extensions → extensions}/token-stats/index.js +0 -0
  440. /package/dist/{extras/extensions → extensions}/tool-buffer/extension.js +0 -0
  441. /package/dist/{extras/extensions → extensions}/tool-buffer/extension.json +0 -0
  442. /package/dist/{extras/extensions → extensions}/tool-buffer/extension.test.d.ts +0 -0
  443. /package/dist/{extras/extensions → extensions}/tool-buffer/index.d.ts +0 -0
  444. /package/dist/{extras/extensions → extensions}/tool-buffer/index.js +0 -0
  445. /package/dist/{extras/extensions → extensions}/weather-tool/extension.js +0 -0
  446. /package/dist/{extras/extensions → extensions}/weather-tool/extension.json +0 -0
  447. /package/dist/{extras/extensions → extensions}/weather-tool/index.d.ts +0 -0
  448. /package/dist/{extras/extensions → extensions}/weather-tool/index.js +0 -0
  449. /package/dist/{extras/models → models}/index.d.ts +0 -0
  450. /package/dist/{extras/models → models}/index.js +0 -0
  451. /package/dist/{extras/openai-provider → openai-provider}/index.d.ts +0 -0
  452. /package/dist/{extras/openai-provider → openai-provider}/index.js +0 -0
  453. /package/dist/{extras/openai-provider → openai-provider}/server.js +0 -0
@@ -0,0 +1,83 @@
1
+ import { existsSync, statSync } from 'node:fs';
2
+ import { execSync } from 'node:child_process';
3
+ import { makeToolName, getChildProcessEnv } from './shared.js';
4
+ let fdBinary;
5
+ function getFdCommand() {
6
+ if (fdBinary)
7
+ return fdBinary;
8
+ const env = getChildProcessEnv();
9
+ try {
10
+ execSync('fd --version', { stdio: 'ignore', env });
11
+ fdBinary = 'fd';
12
+ return fdBinary;
13
+ }
14
+ catch { }
15
+ try {
16
+ execSync('fdfind --version', { stdio: 'ignore', env });
17
+ fdBinary = 'fdfind';
18
+ return fdBinary;
19
+ }
20
+ catch { }
21
+ return 'fd';
22
+ }
23
+ export const findFileByNameTool = (cfg) => ({
24
+ name: makeToolName(cfg.toolPrefix, 'find_file_by_name'),
25
+ description: 'Search for files and subdirectories within a specified directory using fd. ' +
26
+ 'Search uses smart case and will ignore gitignored files by default. ' +
27
+ 'Returns the relative paths of up to 200 matches.',
28
+ parameters: {
29
+ type: 'object',
30
+ properties: {
31
+ pattern: {
32
+ type: 'string',
33
+ description: 'Glob pattern to match file paths against.',
34
+ },
35
+ path: {
36
+ type: 'string',
37
+ description: 'Directory to search in. Default: current working directory.',
38
+ },
39
+ },
40
+ required: ['pattern'],
41
+ },
42
+ async execute(args) {
43
+ const pattern = String(args.pattern ?? '');
44
+ if (!pattern) {
45
+ return { toolCallId: '', content: 'Error: pattern is required' };
46
+ }
47
+ const searchDir = String(args.path ?? process.cwd());
48
+ if (!existsSync(searchDir)) {
49
+ return { toolCallId: '', content: `Directory not found: ${searchDir}` };
50
+ }
51
+ const stat = statSync(searchDir);
52
+ if (!stat.isDirectory()) {
53
+ return { toolCallId: '', content: `Path is not a directory: ${searchDir}` };
54
+ }
55
+ try {
56
+ const bin = getFdCommand();
57
+ const env = getChildProcessEnv();
58
+ const output = execSync(`${bin} -g "${pattern}" -c never`, { cwd: searchDir, env, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
59
+ const files = output.split('\n').map(f => f.trim()).filter(Boolean);
60
+ if (files.length === 0) {
61
+ return { toolCallId: '', content: `No files matching "${pattern}" found in ${searchDir}` };
62
+ }
63
+ const maxResults = 200;
64
+ const truncated = files.length > maxResults;
65
+ const displayed = files.slice(0, maxResults);
66
+ const header = `Found ${files.length} file${files.length === 1 ? '' : 's'} matching "${pattern}" in ${searchDir}:`;
67
+ const footer = truncated ? `\n\n[showing first ${maxResults} of ${files.length} results]` : '';
68
+ return {
69
+ toolCallId: '',
70
+ content: `${header}\n${displayed.join('\n')}${footer}`,
71
+ };
72
+ }
73
+ catch (err) {
74
+ // execSync throws if exit code is non-zero
75
+ // fd exits with 1 if no files are found.
76
+ if (err.status === 1) {
77
+ return { toolCallId: '', content: `No files matching "${pattern}" found in ${searchDir}` };
78
+ }
79
+ return { toolCallId: '', content: `Error running fd: ${err.message || String(err)}` };
80
+ }
81
+ },
82
+ });
83
+ //# sourceMappingURL=find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/find.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/grep.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEjF,eAAO,MAAM,QAAQ,EAAE,WA6FrB,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { existsSync, statSync } from 'node:fs';
2
+ import { execSync } from 'node:child_process';
3
+ import { makeToolName, getChildProcessEnv } from './shared.js';
4
+ export const grepTool = (cfg) => ({
5
+ name: makeToolName(cfg.toolPrefix, 'grep'),
6
+ description: 'Search file contents using ripgrep (rg). ' +
7
+ 'Automatically skips node_modules, .git, and respects .gitignore. ' +
8
+ 'Returns matching lines.',
9
+ parameters: {
10
+ type: 'object',
11
+ properties: {
12
+ pattern: {
13
+ type: 'string',
14
+ description: 'Regular expression pattern to search for.',
15
+ },
16
+ path: {
17
+ type: 'string',
18
+ description: 'Directory or file to search in. Default: current working directory.',
19
+ },
20
+ glob_pattern: {
21
+ type: 'string',
22
+ description: 'Glob pattern to filter files (e.g. "*.ts", "src/**/*.py"). Default: search all files.',
23
+ },
24
+ context_lines: {
25
+ type: 'integer',
26
+ description: 'Number of lines to show before and after each match. Default: 0.',
27
+ },
28
+ case_insensitive: {
29
+ type: 'boolean',
30
+ description: 'If true, perform case-insensitive matching (-i). Default: false.',
31
+ },
32
+ },
33
+ required: ['pattern'],
34
+ },
35
+ async execute(args) {
36
+ const pattern = String(args.pattern ?? '');
37
+ if (!pattern) {
38
+ return { toolCallId: '', content: 'Error: pattern is required' };
39
+ }
40
+ const searchPath = String(args.path ?? process.cwd());
41
+ const contextLines = Math.max(0, Number(args.context_lines ?? 0));
42
+ const caseInsensitive = args.case_insensitive === true;
43
+ const globPattern = args.glob_pattern ? String(args.glob_pattern) : undefined;
44
+ if (!existsSync(searchPath)) {
45
+ return { toolCallId: '', content: `Path not found: ${searchPath}` };
46
+ }
47
+ const stat = statSync(searchPath);
48
+ let target = searchPath;
49
+ let cwd = process.cwd();
50
+ if (stat.isDirectory()) {
51
+ cwd = searchPath;
52
+ target = '.';
53
+ }
54
+ // Build rg command args
55
+ const cmdArgs = ['rg', '--line-number', '--heading', '--max-count=100'];
56
+ if (caseInsensitive)
57
+ cmdArgs.push('-i');
58
+ if (contextLines > 0)
59
+ cmdArgs.push(`-C ${contextLines}`);
60
+ if (globPattern) {
61
+ cmdArgs.push('-g', `"${globPattern}"`);
62
+ }
63
+ // Add pattern and target
64
+ // Use single quotes around the pattern to prevent shell expansion
65
+ cmdArgs.push(`'${pattern.replace(/'/g, "'\\''")}'`, target);
66
+ try {
67
+ const env = getChildProcessEnv();
68
+ const output = execSync(cmdArgs.join(' '), { cwd, env, encoding: 'utf-8', stdio: ['pipe', 'pipe', 'ignore'] });
69
+ const lines = output.trim();
70
+ if (!lines) {
71
+ return { toolCallId: '', content: `No matches found for "${pattern}" in ${searchPath}` };
72
+ }
73
+ // Output size safety
74
+ const maxLen = 100000;
75
+ const truncated = lines.length > maxLen ? lines.slice(0, maxLen) + '\n\n[...truncated]' : lines;
76
+ return {
77
+ toolCallId: '',
78
+ content: `Search results for "${pattern}":\n\n${truncated}`,
79
+ };
80
+ }
81
+ catch (err) {
82
+ // rg exits with 1 if no matches are found
83
+ if (err.status === 1) {
84
+ return { toolCallId: '', content: `No matches found for "${pattern}" in ${searchPath}` };
85
+ }
86
+ return { toolCallId: '', content: `Error running ripgrep: ${err.message || String(err)}` };
87
+ }
88
+ },
89
+ });
90
+ //# sourceMappingURL=grep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/grep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/read.ts"],"names":[],"mappings":"AACA,OAAO,EAAgE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7G,eAAO,MAAM,QAAQ,EAAE,WAoGrB,CAAC"}
@@ -5,7 +5,7 @@ export const readTool = (cfg) => ({
5
5
  description: 'Read a file from the local filesystem. Returns file contents with line numbers. ' +
6
6
  'Text files are returned as text; binary files as base64; images are returned as base64 data URLs. ' +
7
7
  'You MUST read a file before editing or overwriting it. ' +
8
- 'Use absolute paths. For large files, use offset (1-based line number) and limit (line count) to read a portion.',
8
+ 'Use absolute paths. For large files, specify startLine and endLine to view a portion.',
9
9
  parameters: {
10
10
  type: 'object',
11
11
  properties: {
@@ -13,13 +13,13 @@ export const readTool = (cfg) => ({
13
13
  type: 'string',
14
14
  description: 'The absolute path to the file to read.',
15
15
  },
16
- offset: {
16
+ startLine: {
17
17
  type: 'integer',
18
- description: 'The line number to start reading from (1-based). Default: 1.',
18
+ description: 'The line number to start reading from (1-based, inclusive).',
19
19
  },
20
- limit: {
20
+ endLine: {
21
21
  type: 'integer',
22
- description: 'Maximum number of lines to read. Default: 2000.',
22
+ description: 'The line number to stop reading at (1-based, inclusive).',
23
23
  },
24
24
  },
25
25
  required: ['file_path'],
@@ -36,19 +36,12 @@ export const readTool = (cfg) => ({
36
36
  if (stat.isDirectory()) {
37
37
  return {
38
38
  toolCallId: '',
39
- content: `Path is a directory, not a file: ${filePath}. Use find_file_by_name or exec with ls to list directory contents.`,
40
- };
41
- }
42
- if (stat.size > cfg.maxReadSize) {
43
- return {
44
- toolCallId: '',
45
- content: `File is too large (${stat.size} bytes, max ${cfg.maxReadSize}). Use offset and limit to read a portion, or use exec with head/tail.`,
39
+ content: `Path is a directory, not a file: ${filePath}.`,
46
40
  };
47
41
  }
48
42
  // Track that this file was read — edit and write require it.
49
43
  getReadSet(ctx.metadata).add(filePath);
50
44
  const buf = readFileSync(filePath);
51
- // ── Image files: return as base64 data URL ──────────────────────
52
45
  if (isImageFile(filePath)) {
53
46
  const mime = imageMime(filePath);
54
47
  const base64 = buf.toString('base64');
@@ -57,7 +50,6 @@ export const readTool = (cfg) => ({
57
50
  content: `File: ${filePath} (${stat.size}b, ${mime})\ndata:${mime};base64,${base64}`,
58
51
  };
59
52
  }
60
- // ── Binary files: return as base64 ──────────────────────────────
61
53
  if (!isTextFile(filePath)) {
62
54
  const base64 = buf.toString('base64');
63
55
  return {
@@ -65,18 +57,18 @@ export const readTool = (cfg) => ({
65
57
  content: `File: ${filePath} (${stat.size}b, binary)\nbase64: ${base64}`,
66
58
  };
67
59
  }
68
- // ── Text files: return with line numbers ────────────────────────
69
60
  const text = buf.toString('utf-8');
70
61
  const allLines = text.split('\n');
71
- // Apply offset (1-based)
72
- const offset = Math.max(1, Number(args.offset ?? 1));
73
- const startIdx = offset - 1;
74
- let lines = allLines.slice(startIdx);
75
- // Apply limit
76
- const limit = Math.min(Number(args.limit ?? cfg.maxReadLines), cfg.maxReadLines);
77
- const truncated = lines.length > limit;
78
- lines = lines.slice(0, limit);
79
- // Format with line numbers, truncating long lines
62
+ const start = args.startLine !== undefined ? Math.max(1, Number(args.startLine)) : 1;
63
+ let end = args.endLine !== undefined ? Number(args.endLine) : start + cfg.maxReadLines - 1;
64
+ // Enforce max read size
65
+ if (end - start + 1 > cfg.maxReadLines) {
66
+ end = start + cfg.maxReadLines - 1;
67
+ }
68
+ const startIdx = start - 1;
69
+ const endIdx = end; // slice is exclusive
70
+ const lines = allLines.slice(startIdx, endIdx);
71
+ const truncated = allLines.length > endIdx;
80
72
  const formatted = lines.map((line, i) => {
81
73
  const lineNum = startIdx + i + 1;
82
74
  const truncatedLine = line.length > cfg.maxLineLength
@@ -86,7 +78,7 @@ export const readTool = (cfg) => ({
86
78
  }).join('\n');
87
79
  const header = `File: ${filePath} (${stat.size}b)`;
88
80
  const footer = truncated
89
- ? `\n\n[showing lines ${offset}-${offset + limit - 1} of ${allLines.length} total]`
81
+ ? `\n\n[showing lines ${start}-${end} of ${allLines.length} total]`
90
82
  : '';
91
83
  return {
92
84
  toolCallId: '',
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/read.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
- import type { Tool } from '../../../../tool.js';
1
+ import type { Tool } from '../../../tool.js';
2
2
  export declare function makeToolName(prefix: string, name: string): string;
3
3
  export declare function getReadSet(metadata: Record<string, unknown>): Set<string>;
4
4
  export declare function isTextFile(path: string): boolean;
5
5
  export declare function isImageFile(path: string): boolean;
6
6
  export declare function imageMime(path: string): string;
7
+ export declare function getChildProcessEnv(): NodeJS.ProcessEnv;
8
+ export declare function isNoiseDir(name: string): boolean;
9
+ export declare function escapeRegex(s: string): string;
10
+ export declare function globToRegex(pattern: string): RegExp;
7
11
  export interface ResolvedConfig {
8
12
  toolPrefix: string;
9
13
  maxReadSize: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG7C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AAOD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAOzE;AAaD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMhD;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAWD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAGD,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,UAAU,CAatD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwCnD;AAGD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC"}
@@ -50,4 +50,72 @@ const MIME_MAP = {
50
50
  export function imageMime(path) {
51
51
  return MIME_MAP[extname(path).toLowerCase()] ?? 'application/octet-stream';
52
52
  }
53
+ // ── Shared Utilities ──────────────────────────────────────────────────
54
+ export function getChildProcessEnv() {
55
+ const defaultPaths = ['/usr/local/bin', '/opt/homebrew/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin'];
56
+ const currentPath = process.env.PATH || '';
57
+ const currentParts = currentPath.split(':').filter(Boolean);
58
+ for (const p of defaultPaths) {
59
+ if (!currentParts.includes(p)) {
60
+ currentParts.push(p);
61
+ }
62
+ }
63
+ return {
64
+ ...process.env,
65
+ PATH: currentParts.join(':'),
66
+ };
67
+ }
68
+ export function isNoiseDir(name) {
69
+ return name === 'node_modules' || name === '.git' || name === 'dist' || name === '.next' || name === 'coverage' ||
70
+ name === '.cache' || name === '.npm' || name === '.local' || name === '.config' || name === '.libra';
71
+ }
72
+ export function escapeRegex(s) {
73
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
74
+ }
75
+ export function globToRegex(pattern) {
76
+ let i = 0;
77
+ let regex = '';
78
+ while (i < pattern.length) {
79
+ const c = pattern[i];
80
+ if (c === '*' && pattern[i + 1] === '*') {
81
+ regex += '.*';
82
+ i += 2;
83
+ if (pattern[i] === '/')
84
+ i++;
85
+ }
86
+ else if (c === '*') {
87
+ regex += '[^/]*';
88
+ i++;
89
+ }
90
+ else if (c === '?') {
91
+ regex += '[^/]';
92
+ i++;
93
+ }
94
+ else if (c === '{') {
95
+ const end = pattern.indexOf('}', i);
96
+ if (end === -1) {
97
+ regex += '\\{';
98
+ i++;
99
+ }
100
+ else {
101
+ const options = pattern.slice(i + 1, end).split(',').map((s) => escapeRegex(s));
102
+ regex += `(?:${options.join('|')})`;
103
+ i = end + 1;
104
+ }
105
+ }
106
+ else if (c === '.') {
107
+ regex += '\\.';
108
+ i++;
109
+ }
110
+ else if ('+()|^$\\'.includes(c)) {
111
+ regex += '\\' + c;
112
+ i++;
113
+ }
114
+ else {
115
+ regex += c;
116
+ i++;
117
+ }
118
+ }
119
+ return new RegExp(`^${regex}$`);
120
+ }
53
121
  //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { ChildProcess } from 'node:child_process';
2
+ import { type ToolFactory } from './shared.js';
3
+ export interface ShellToolConfig {
4
+ toolPrefix: string;
5
+ registry: ShellRegistry;
6
+ }
7
+ export type ShellToolFactory = (cfg: ShellToolConfig) => ReturnType<ToolFactory>;
8
+ export interface ShellEntry {
9
+ id: string;
10
+ process?: ChildProcess;
11
+ pid: number;
12
+ output: string;
13
+ done: boolean;
14
+ exitCode: number | null;
15
+ startedAt: number;
16
+ command: string;
17
+ cwd: string;
18
+ outputFile?: string;
19
+ inputFifo?: string;
20
+ detached: boolean;
21
+ readOffset?: number;
22
+ }
23
+ export declare class ShellRegistry {
24
+ private shells;
25
+ private counter;
26
+ private shellsDir;
27
+ onTaskComplete?: (id: string, code: number, output: string) => void;
28
+ constructor(shellsDir?: string);
29
+ private nextId;
30
+ private metaPath;
31
+ create(command: string, cwd: string, env: Record<string, string>, background?: boolean): Promise<ShellEntry>;
32
+ get(id: string): ShellEntry | undefined;
33
+ delete(id: string): boolean;
34
+ close(): void;
35
+ }
36
+ export declare const runCommandTool: ShellToolFactory;
37
+ export declare const execTool: ShellToolFactory;
38
+ export declare const manageTaskTool: ShellToolFactory;
39
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../src/extensions/code-tools/tools/shell.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC;AAEjF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,SAAS,CAAS;IACnB,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3E,YAAY,SAAS,CAAC,EAAE,MAAM,EAE7B;IAED,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAIV,MAAM,CACV,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,UAAU,GAAE,OAAe,GAC1B,OAAO,CAAC,UAAU,CAAC,CA4HrB;IAED,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAyEtC;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAqB1B;IAED,KAAK,SAcJ;CACF;AAGD,eAAO,MAAM,cAAc,EAAE,gBAqF3B,CAAC;AAEH,eAAO,MAAM,QAAQ,EAAE,gBAOtB,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,gBAmG3B,CAAC"}